Sfoglia il codice sorgente

Merge branch 'feature-201832-wangcz' into dev

wangcz 8 anni fa
parent
commit
2bad521d30
80 ha cambiato i file con 5262 aggiunte e 2021 eliminazioni
  1. 2 0
      src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsHistoryService.java
  2. 15 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsHistoryServiceImpl.java
  3. 28 14
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  4. 4 4
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java
  5. 50 175
      src/main/webapp/resources/css/common.css
  6. 11 6
      src/main/webapp/resources/js/admin/controllers/statsDataCtrl.js
  7. 12 0
      src/main/webapp/resources/js/usercenter/app.js
  8. 1 1
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcInquiryCtrl.js
  9. 1 1
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/inquiryInfo_detail.js
  10. 1 1
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/inquiry_unapply.js
  11. 1 1
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/purchaseInquiryCtrl.js
  12. 11 3
      src/main/webapp/resources/js/usercenter/controllers/b2b/sale_badIn.js
  13. 2 2
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_materialCtrl.js
  14. 993 0
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_storageCtrl.js
  15. 1 7
      src/main/webapp/resources/js/vendor/app.js
  16. 8 1
      src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_accept.js
  17. 8 1
      src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_badOut.js
  18. 8 1
      src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_accept.js
  19. 7 1
      src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_returns.js
  20. 8 1
      src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_returns.js
  21. 2 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js
  22. 2 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl_old.js
  23. 13 4
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_storageCtrl.js
  24. 2 2
      src/main/webapp/resources/view/admin/stats_data.html
  25. 1 1
      src/main/webapp/resources/view/sso/rolePermission.html
  26. 8 72
      src/main/webapp/resources/view/usercenter/b2b/Purc/inquiry_unapply.html
  27. 9 71
      src/main/webapp/resources/view/usercenter/b2b/Purc/purchaseInquiryCtrl.html
  28. 2 2
      src/main/webapp/resources/view/usercenter/b2b/Purc/tender_answer_list.html
  29. 2 2
      src/main/webapp/resources/view/usercenter/b2b/Purc/tenderlist.html
  30. 1 1
      src/main/webapp/resources/view/usercenter/b2b/Purc/vendor.html
  31. 1 1
      src/main/webapp/resources/view/usercenter/b2b/fa/arCheck.html
  32. 3 3
      src/main/webapp/resources/view/usercenter/b2b/order/changeList.html
  33. 3 3
      src/main/webapp/resources/view/usercenter/b2b/order/deputyOrder.html
  34. 2 4
      src/main/webapp/resources/view/usercenter/b2b/order/outorder.html
  35. 3 3
      src/main/webapp/resources/view/usercenter/b2b/order/usercenter_order.html
  36. 659 0
      src/main/webapp/resources/view/usercenter/b2b/sale_badIn.html
  37. 3 3
      src/main/webapp/resources/view/usercenter/forstore/buyer_material.html
  38. 3 3
      src/main/webapp/resources/view/usercenter/forstore/buyer_order.html
  39. 1645 0
      src/main/webapp/resources/view/usercenter/forstore/buyer_storage.html
  40. 21 79
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  41. 2 2
      src/main/webapp/resources/view/usercenter/left_nav.html
  42. 1 1
      src/main/webapp/resources/view/vendor/b2b/apBill.html
  43. 3 3
      src/main/webapp/resources/view/vendor/b2b/apCheck.html
  44. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale/approval.html
  45. 5 11
      src/main/webapp/resources/view/vendor/b2b/sale/customer.html
  46. 319 151
      src/main/webapp/resources/view/vendor/b2b/sale/sale_accept.html
  47. 0 490
      src/main/webapp/resources/view/vendor/b2b/sale/sale_badIn.html
  48. 323 168
      src/main/webapp/resources/view/vendor/b2b/sale/sale_badOut.html
  49. 317 180
      src/main/webapp/resources/view/vendor/b2b/sale/sale_make_accept.html
  50. 302 141
      src/main/webapp/resources/view/vendor/b2b/sale/sale_make_returns.html
  51. 311 150
      src/main/webapp/resources/view/vendor/b2b/sale/sale_returns.html
  52. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale/sample.html
  53. 5 11
      src/main/webapp/resources/view/vendor/b2b/sale/vendorPerformanceAssess.html
  54. 4 4
      src/main/webapp/resources/view/vendor/b2b/sale_change.html
  55. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale_inquiry.html
  56. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale_inquiryMould.html
  57. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale_makechange.html
  58. 3 3
      src/main/webapp/resources/view/vendor/b2b/sale_maketodo.html
  59. 5 5
      src/main/webapp/resources/view/vendor/b2b/sale_notice.html
  60. 3 3
      src/main/webapp/resources/view/vendor/b2b/sale_order.html
  61. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale_quotationList.html
  62. 4 4
      src/main/webapp/resources/view/vendor/b2b/sale_send.html
  63. 2 2
      src/main/webapp/resources/view/vendor/b2b/sale_tenderList.html
  64. 1 1
      src/main/webapp/resources/view/vendor/forstore/product_file.html
  65. 6 8
      src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html
  66. 8 10
      src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html
  67. 8 10
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html
  68. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_component_apply.html
  69. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_component_applylist.html
  70. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_component_batchapply.html
  71. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_goods.html
  72. 4 4
      src/main/webapp/resources/view/vendor/forstore/vendor_material.html
  73. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_material_old.html
  74. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html
  75. 5 128
      src/main/webapp/resources/view/vendor/forstore/vendor_order.html
  76. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_proRepository.html
  77. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_productOn.html
  78. 37 25
      src/main/webapp/resources/view/vendor/forstore/vendor_storage.html
  79. 3 3
      src/main/webapp/resources/view/vendor/forstore/vendor_undercarriage.html
  80. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_upload.html

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

@@ -56,6 +56,8 @@ public interface GoodsHistoryService {
      *
      * @param goods the goods 库存的信息
      * @param type  操作类型
+     *              @see GoodsHistory.OperateType
+     * @param isERP  是否ERP
      * @return goods history
      */
     GoodsHistory converTGoodsHist(Goods goods, String type, Boolean isERP);

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

@@ -31,7 +31,13 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 
 @Service
 public class GoodsHistoryServiceImpl implements GoodsHistoryService {
@@ -131,6 +137,14 @@ public class GoodsHistoryServiceImpl implements GoodsHistoryService {
 		return pageGHistory;
 	}
 
+	/**
+	 *
+	 * @param goods the goods 库存的信息
+	 * @param type  操作类型
+	 *              @see GoodsHistory.OperateType
+	 * @param isERP 是否ERP
+	 * @return GoodsHistory
+	 */
 	@Override
 	public GoodsHistory converTGoodsHist(Goods goods, String type, Boolean isERP) {
 		GoodsHistory goodsHistory = new GoodsHistory(goods);

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

@@ -17,6 +17,7 @@ import com.uas.platform.b2c.core.constant.ShortConstant;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.RegexConstant;
@@ -92,6 +93,7 @@ import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.util.BoundedExecutor;
 import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
@@ -103,8 +105,6 @@ import javassist.NotFoundException;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -156,7 +156,10 @@ import java.util.regex.Pattern;
 @Service
 public class ProductServiceImpl implements ProductService {
 
-    private final Logger logger = LoggerFactory.getLogger(ProductServiceImpl.class);
+    /**
+     * 系统操作日志
+     */
+    private static final UsageBufferedLogger LOGGER = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
     @Autowired
     private ProductDao productDao;
@@ -2403,17 +2406,17 @@ public class ProductServiceImpl implements ProductService {
         if (null == productObject) {
             return ResultMap.error(new IllegalOperatorException("物料信息不能为空"));
         }
+        // 库存信息
+        Object goodsObject = jsonObject.get("goods");
+        if (null == goodsObject) {
+            return ResultMap.error(new IllegalOperatorException("库存信息不能为空"));
+        }
         Product product = JSONObject.parseObject(productObject.toString(), Product.class);
         // 检验物料信息
         ResultMap resultMap = checkProductInfo(product);
         if (Objects.equals(CodeType.ERROR.code(), resultMap.getCode())) {
             return resultMap;
         }
-        // 库存信息
-        Object goodsObject = jsonObject.get("goods");
-        if (null == goodsObject) {
-            return ResultMap.error(new IllegalOperatorException("库存信息不能为空"));
-        }
         Goods goods = JSONObject.parseObject(goodsObject.toString(), Goods.class);
         // PCB
         Object pcbObject = jsonObject.get("isPcb");
@@ -2492,7 +2495,7 @@ public class ProductServiceImpl implements ProductService {
                 detail.setCommodityInOutbound(inOutbound);
             }
             inOutbound = commodityInOutboundDao.save(inOutbound);
-            logger.info("出入库历史", "卖家中心单个物料上传进行入库操作", inOutbound.getType(), "", inOutbound.getId());
+            LOGGER.log("出入库历史", "卖家中心单个物料上传进行入库操作", inOutbound.getType(), "", inOutbound.getId());
         }
         // 添加到个人物料库
         bindToPerson(productInfo, userUU, enUU);
@@ -2529,7 +2532,7 @@ public class ProductServiceImpl implements ProductService {
         goods.setReserve(productInfo.getErpReserve());
         goodsService.setGoodsDefault(goods);
         goods = goodsDao.save(goods);
-        logger.info("上架商品库存操作", "卖家中心单个物料上传进行入库操作", "增加库存: " + productInfo.getErpReserve(), goods.getCode(), goods.getId());
+        LOGGER.log("上架商品库存操作", "卖家中心单个物料上传进行入库操作", "增加库存: " + productInfo.getErpReserve(), goods.getCode(), goods.getId());
         CommodityInOutbound inOutbound = new CommodityInOutbound(InOutBoundType.OTHER_INBOUND);
         String inOutboundId = createNumberService.generateOrderNumber(com.uas.platform.b2c.core.constant.EncodingRulesConstant.INOUTBOUND_NUM, "trade$commodity_in_outbound", 8);
         inOutbound.setInOutId(inOutboundId);
@@ -2689,7 +2692,7 @@ public class ProductServiceImpl implements ProductService {
                 Double reserve = goods.getReserve() != null ? goods.getReserve() : 0D + addQty;
                 goods.setReserve(reserve);
                 goods = goodsDao.save(goods);
-                logger.info("上架商品库存操作", "卖家中心单个物料上传进行入库操作", "增加库存: " + addQty, goods.getCode(), goods.getId());
+                LOGGER.log("上架商品库存操作", "卖家中心单个物料上传进行入库操作", "增加库存: " + addQty, goods.getCode(), goods.getId());
             } else if (InOutBoundType.OTHER_OUTBOUND.equals(type)) {
                 // 出库
                 int index = goodsList.size() - 1;
@@ -2706,7 +2709,7 @@ public class ProductServiceImpl implements ProductService {
                     Double reserve = subQty >= 0 ? 0 : subQty;
                     goods.setReserve(Math.abs(reserve));
                     goods = goodsDao.save(goods);
-                    logger.info("上架商品库存操作", "卖家中心单个物料上传进行出库操作", existQty + "->" + goods.getReserve(), goods.getCode(), goods.getId());
+                    LOGGER.log("上架商品库存操作", "卖家中心单个物料上传进行出库操作", existQty + "->" + goods.getReserve(), goods.getCode(), goods.getId());
                     if (reserve <= 0) {
                         break;
                     }
@@ -2749,7 +2752,7 @@ public class ProductServiceImpl implements ProductService {
         if (CollectionUtils.isEmpty(productPersonList)) {
             ProductPerson productPerson = new ProductPerson(enUU, userUU, productInfo.getId());
             productPerson = productPersonDao.save(productPerson);
-            logger.info("个人物料", "新增个人物料", "通过卖家中心单个物料上传绑定个人物料", productInfo.getProdNum(), productPerson.getId());
+            LOGGER.log("个人物料", "新增个人物料", "通过卖家中心单个物料上传绑定个人物料", productInfo.getProdNum(), productPerson.getId());
         }
     }
 
@@ -2760,6 +2763,7 @@ public class ProductServiceImpl implements ProductService {
      * @param productInfo 物料信息
      */
     private void assignmentGoods(Goods goods, Product productInfo) {
+        GoodsHistory goodsHistory;
         goods = Goods.productConvertGoods(goods, productInfo);
         if (productInfo.getId() != null) {
             List<Goods> goodsList = goodsDao.findByProductId(productInfo.getId());
@@ -2803,7 +2807,17 @@ public class ProductServiceImpl implements ProductService {
             }
         }
         goodsService.setGoodsDefault(goods);
+        String type;
+        if (null != goods.getId()) {
+            type = GoodsHistory.OperateType.Update.getPhrase();
+            goodsHistory = goodsHistoryService.converTGoodsHist(goods, type, false);
+        } else  {
+            type = GoodsHistory.OperateType.Publish.getPhrase();
+            goodsHistory = goodsHistoryService.converTGoodsHist(goods, type, false);
+        }
+        goodsHistory = goodsHistoryService.save(goodsHistory);
+        LOGGER.log("库存操作", "单个物料上传更新库存操作", "操作方式-> " + type, goodsHistory.getCode(), goodsHistory.getId());
         goods = goodsDao.save(goods);
-        logger.info("上架商品", "新增上架商品", "通过卖家中心单个物料上传新增上架商品", goods.getCode(), goods.getId());
+        LOGGER.log("上架商品", "新增上架商品", "通过卖家中心单个物料上传新增上架商品", goods.getCode(), goods.getId());
     }
 }

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

@@ -285,7 +285,7 @@ public class OrderServiceImpl implements OrderService {
             list.add(orderDetail);
             detailIds.add(orderDetail.getDetailid());
         }
-        if(list.size() == 0) {
+        if (list.size() == 0) {
             return new ResultMap(ResultMapType.ORDERDETAIL_UNVALIABLE.getCode(), ResultMapType.ORDERDETAIL_UNVALIABLE.getPhrase());
         }
         Order order = generateSimpleOrder(list);
@@ -298,10 +298,10 @@ public class OrderServiceImpl implements OrderService {
 
         //组装返回给前台的信息
         String str = "";
-        if(unavailable != 0){
+        if (unavailable != 0) {
             str = unavailable + "个失效产品已删除";
         }
-        if(infoUpdate != 0) {
+        if (infoUpdate != 0) {
             if(StringUtils.hasText(str)) {
                 str = str + "," + infoUpdate + "个产品有更新";
             }else {
@@ -359,7 +359,7 @@ public class OrderServiceImpl implements OrderService {
 
         // 发送生成订单站内信
 //        internalMessageService.saveMessage("订单信息", "您已经成功下单", null);
-        if(isInfoUpdate) {//对于在售商品修改了自营等方式
+        if (isInfoUpdate) {//对于在售商品修改了自营等方式
             return new ResultMap(ResultMapType.OK.getCode(), "该产品的信息有更新", order);
         }else {
             return ResultMap.success(order);

+ 50 - 175
src/main/webapp/resources/css/common.css

@@ -37,7 +37,7 @@ a:hover {
 }
 
 dl a:hover,li>a:hover,p>a:hover {
-	color: #f50
+	/*color: #f50;*/
 }
 
 /* IE10 viewport bug workaround */
@@ -1148,97 +1148,54 @@ select {
 }
 
 /* 页面的tab切换样式和搜索部分样式 */
+.com_tab {
+	height:40px;
+	margin-bottom: 10px;
+}
 
- .tab_top{
-	 height: 40px;
-	 margin-bottom:10px;
- }
-.tab_top ul{
+.com_tab {
+	height:40px;
+	margin-bottom: 10px;
+}
+.com_tab ul {
+	width: 100%;
 	margin: 0 auto;
-	height: 40px;
-	line-height: 40px;
+	height:40px;
+	line-height:40px;
 	background: #fff;
 }
-.tab_top ul li{
-	margin-left: 0;
+.com_tab ul li {
 	position: relative;
-	height: 40px;
+	height:40px;
 	text-align: center;
 	float: left;
 }
-.tab_top ul li a {
-	font-size: 14px;
-	height: 40px;
+.com_tab ul li > a {
 	min-width: 110px;
+	font-size: 14px;
+	height:40px;
 	padding: 0 20px;
 	display: inline-block;
 }
-.tab_top ul li.active a {
-	border-bottom: #fff;
+.com_tab ul li.active > a {
 	background: #5078cb;
-	color: #fff !important;
-}
-.tab_top ul li.active:after {
-	display:block;
-}
-.tab_top ul li::after {
-	background: url(../img/vendor/images/downicon.png);
-	width: 11px;
-	height: 6px;
-	position: absolute;
-	bottom: 0px;
-	left: 50%;
-	content: ' ';
-	margin-left: -5px;
-	display: none;
-}
-
-.oder01 ul {
-	border-bottom: 1px solid #f15601
-}
-.oder01 ul li {
-	margin-left: 10px;
-}
-
-.oder01 ul li a{
-	font-size: 13px;
-	font-weight: bold;
-	border-top: 3px solid #fff;
-	min-width: 110px;
-}
-.oder01 ul li:nth-child(1){
-	margin-left: 0px
-}
-.oder01 ul li.active a{
-	border-top: 3px solid #f15601;
-	border-left: 1px solid #f15601;
-	border-right: 1px solid #f15601;
-	border-bottom: 1px solid #fff;
-	/*padding: 0 8px;*/
-	color: #f15601!important;
-}
-.oder01 ul li a em{
-	color: #323232
+	color: #fff;
 }
-.oder01 ul li.active a em{
-	color: #f15601 !important;
+.com_tab ul li:hover > a {
+	color: #5078cb;
 }
-.oder01 ul li:hover a em {
-	color: #5078cb !important;
+.com_tab ul li:hover > a em {
+	color: #5078cb;
 }
-.oder01 ul li.active:hover a em {
-	color: #f15601 !important;
+.com_tab ul li.active:hover > a {
+	color: #fff;
 }
-
-.com_tab ul li {
-	margin-left: 0px;
-	position: relative;
-	min-width: 110px
+.com_tab ul li.active:hover > a em {
+	color: #fff;
 }
-.com_tab ul li > a {
-	min-width: 110px
+.com_tab ul li > a em {
+	color: #e64040;
 }
-
 .com_tab ul li::after{
 	background: url('../img/vendor/images/downicon.png');
 	width: 11px;
@@ -1253,22 +1210,36 @@ select {
 .com_tab ul li.active:after{
 	display: block
 }
-.com_tab ul li.active > a {
-	border-bottom: #fff;
-	background: #5078cb;
-	color: #fff;
-}
 .com_tab ul li.down-purchase {
 	float: right;
 	margin-right: 24px;
 	font-size: 14px;
 	color: #5078cb;
 }
-
 .com_tab ul li.down-purchase span:hover {
 	cursor: pointer;
 	text-decoration: underline;
 }
+.tab_top ul {
+	border-bottom: 1px solid #f15601
+}
+.tab_top ul li > a {
+	padding:0;
+	font-weight: bold;
+}
+.tab_top ul li.active > a{
+	background: #fff;
+	border-top: 3px solid #f15601;
+	border-left: 1px solid #f15601;
+	border-right: 1px solid #f15601;
+	border-bottom: 1px solid #fff;
+	color: #f15601!important;
+	line-height: 34px;
+}
+.tab_top ul li.active > a em{
+	color: #f15601 !important;
+}
+
 
 .screen{
 	background: #fff;
@@ -1390,102 +1361,6 @@ i.must {
 	display: inline-block;
 	vertical-align: middle;
 }
-/*卖家中心补充的样式*/
-.com_tab {
-	height:40px;
-	margin-bottom: 16px;
-}
-.com_tab ul {
-	width: 100%;
-	margin: 0 auto;
-	height:40px;
-	line-height:40px;
-	background: #fff;
-}
-.com_tab ul li {
-	height:40px;
-	text-align: center;
-	float: left;
-	margin-left: 25px;
-}
-.com_tab ul li > a {
-	font-size: 14px;
-	height:40px;
-	padding: 0 20px;
-	display: inline-block;
-}
-.com_tab ul li.active > a {
-	color: #f15601;
-	border-bottom: 3px #5078cb solid;
-}
-.com_tab ul li:hover > a {
-	color: #5078cb;
-	/*border-bottom: 3px #5078cb solid;*/
-}
-.com_tab ul li > a em {
-	color: #e64040;
-}
-.com_tab ul li.active a,.oder01 ul li.active a em {
-	color: #f15601;
-}
-
-.com_tab:nth-of-type(1) ul li{
-	margin-left: 0px;
-	position: relative;
-}
-.com_tab:nth-of-type(1) ul li.active > a{
-	border-bottom: #fff;
-	background: #5078cb;
-	color: #fff !important;
-}
-.com_tab:nth-of-type(1) ul li::after{
-	background: url('../img/vendor/images/downicon.png');
-	width: 11px;
-	height: 6px;
-	position: absolute;
-	bottom: 0px;
-	left: 50%;
-	content: ' ';
-	margin-left: -5px;
-	display: none;
-}
-.com_tab ul li.active::after{
-	display: block;
-}
-.com_tab:nth-of-type(1) ul li.active:hover > a{
-	color: #fff !important;
-}
-.com_tab:nth-of-type(2) ul li a {
-	color: #666 !important;
-}
-.com_tab:nth-of-type(2) ul li.active a,.com_tab:nth-of-type(2) ul li.active > a em{
-	color: #f15601 !important;
-}
-.com_tab:nth-of-type(2) ul li:hover a,.com_tab:nth-of-type(2) ul li:hover > a em{
-	color: #f15601 !important;
-}
-.com_tab:nth-of-type(2) ul li > a{
-	border-top: 3px solid #fff;
-}
-.com_tab:nth-of-type(2) ul li.active > a{
-	border-top: 3px solid #f15601;
-	border-left: 1px solid #f15601;
-	border-right: 1px solid #f15601;
-	border-bottom: 1px solid #fff
-}
-.com_tab:nth-of-type(2) ul{
-	/*border-top: 3px solid #f15601;*/
-	border-bottom: 1px solid #f15601;
-}
-.com_tab:nth-of-type(2) ul li{
-	margin-left: 0px !important;
-}
-.com_tab:nth-of-type(2) ul li:first-child{
-	margin-left: 0px
-}
-.com_tab:nth-of-type(1) ul li.active:after{
-	display: block
-}
 
 /*开关按钮*/
 .switch .checkbox{

+ 11 - 6
src/main/webapp/resources/js/admin/controllers/statsDataCtrl.js

@@ -64,8 +64,8 @@ define([ 'app/app' ], function(app) {
             if (val != 'autoMonth') {
                 initData();
             } else {
-                $scope.startDate = null;
-                $scope.endDate = null;
+                // $scope.startDate = '';
+                // $scope.endDate = '';
             }
         };
 
@@ -86,7 +86,12 @@ define([ 'app/app' ], function(app) {
             item[openParam].open = !item[openParam].open;
         };
 
-        $scope.onDateCondition = function (bool) {
+        $scope.onDateCondition = function (bool, date) {
+            if (bool == 1) {
+                $scope.startDate = date;
+            } else {
+                $scope.endDate = date;
+            }
             var startTime = $scope.startDate ? $scope.startDate.getTime() : null;
             var endTime = $scope.endDate ? $scope.endDate.getTime() : null;
             if (startTime && endTime && startTime > endTime) {
@@ -174,7 +179,7 @@ define([ 'app/app' ], function(app) {
         var getProductData = function () {
             // 上传产品个数
             var defer = $q.defer();
-            Goods.getProductsCmp({fromDate: $scope.startDate.getTime(), toDate: $scope.endDate.getTime()}, function (data) {
+            Goods.getProductsCmp({fromDate: $scope.startDate && $scope.startDate.getTime(), toDate: $scope.endDate && $scope.endDate.getTime()}, function (data) {
                 defer.resolve(data.data);
             }, function (err) {
                 defer.reject(err);
@@ -205,8 +210,8 @@ define([ 'app/app' ], function(app) {
         };
         // 获取不同时间阶段的相关数据
         var initData = function () {
-            var addStartDate = new Date($scope.startDate.getTime() + 24 * 60 * 60 * 1000),
-            addEndDate = new Date($scope.endDate.getTime() + 24 * 60 * 60 * 1000);
+            var addStartDate = $scope.startDate && new Date($scope.startDate.getTime() + 24 * 60 * 60 * 1000),
+            addEndDate = $scope.endDate && new Date($scope.endDate.getTime() + 24 * 60 * 60 * 1000);
             $scope.addStartFormatDate = _formatDate(addStartDate, 'yyyy-MM-dd');
             $scope.addEndFormatDate = _formatDate(addEndDate, 'yyyy-MM-dd');
             $scope.startFormatDate = _formatDate($scope.startDate, 'yyyy-MM-dd');

+ 12 - 0
src/main/webapp/resources/js/usercenter/app.js

@@ -465,6 +465,18 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
             templateUrl : 'static/view/usercenter/forstore/buyer_material.html',
             controllerUrl : "app/controllers/forstore/buyer_materialCtrl",
             controller : 'buyer_materialCtrl'
+        })).state('buyer_storage', angularAMD.route({
+            title : '物料资料产品管理入库部分',
+            url : '/buyer_storage?type&ids',
+            templateUrl : 'static/view/usercenter/forstore/buyer_storage.html',
+            controllerUrl : "app/controllers/forstore/buyer_storageCtrl",
+            controller : 'buyer_storageCtrl'
+        })).state('sale_badIn', angularAMD.route({
+            url: '/badIn',
+            title: 'b2b客户出入库-不良品入库单',
+            templateUrl: 'static/view/usercenter/b2b/sale_badIn.html',
+            controller: 'SaleBadInCtrl',
+            controllerUrl: 'app/controllers/b2b/sale_badIn'
 		})).state('purc_vendor', angularAMD.route({
 			url: "/purc/vendor",
 			templateUrl: "static/view/usercenter/b2b/Purc/vendor.html",

+ 1 - 1
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcInquiryCtrl.js

@@ -4,7 +4,7 @@ define(['app/app'], function(app) {
         function ($scope, PurchaseInquiry, toaster, BaseService, $upload, $filter, $modal, $rootScope, ngTableParams, PurcProduct, PurcProductNewest, $timeout, $http, ShipAddress, Search, ComponentActiveAPI, $state) {
             $scope.status = 'InquiryNew';
             $scope.active = 'all';
-          $rootScope.active = 'purc_haseinquiry'
+          $rootScope.active = 'seek_purchase'
             $rootScope.tenderVendor = null;// 清除掉已选择的
             $scope.searchMethod = false;
             var getService = function () {

+ 1 - 1
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/inquiryInfo_detail.js

@@ -2,7 +2,7 @@ define(['app/app'], function(app) {
   // 询价单明细(发出)
   app.register.controller('PurcInquiryInfoDetailCtrl', ['BaseService', '$rootScope', '$scope', '$stateParams', 'B2bPurchaseInquiry', '$filter', 'toaster', 'B2bCurrentRole', function (BaseService, $rootScope, $scope, $stateParams, PurchaseInquiry, $filter, toaster, CurrentRole) {
     // 获取当前用户是否为普通用户
-    $rootScope.active = 'purc_haseinquiry'
+    $rootScope.active = 'seek_purchase'
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });

+ 1 - 1
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/inquiry_unapply.js

@@ -2,7 +2,7 @@ define(['app/app'], function(app) {
   // 平台询价单(未提交)
   app.register.controller('UnapplyInquiryCtrl', ['$scope', 'B2bPurchaseInquiry', 'ngTableParams', 'BaseService', 'toaster', '$rootScope', function ($scope, PurchaseInquiry, ngTableParams, BaseService, toaster, $rootScope) {
     BaseService.scrollBackToTop();
-    $rootScope.active = 'purc_haseinquiry'
+    $rootScope.active = 'seek_purchase'
     // if ($rootScope.active = 'done') {
     //   $scope.active = 'done';
     //   $rootScope.active = '';

+ 1 - 1
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/purchaseInquiryCtrl.js

@@ -1,7 +1,7 @@
 define(['app/app'], function(app) {
   // 平台询价单(已提交)
   app.register.controller('PurchaseInquiryCtrl', ['$scope', '$filter', 'ngTableParams', 'toaster', 'BaseService', 'B2bPurchaseInquiry', '$rootScope', 'B2bCurrentRole', function ($scope, $filter, ngTableParams, toaster, BaseService, PurchaseInquiry, $rootScope, CurrentRole) {
-    $rootScope.active = 'purc_haseinquiry'
+    $rootScope.active = 'seek_purchase'
     $scope.status = 'InquirySubmit';
     BaseService.scrollBackToTop();
     // 获取当前用户是否为普通用户

+ 11 - 3
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_badIn.js → src/main/webapp/resources/js/usercenter/controllers/b2b/sale_badIn.js

@@ -8,14 +8,16 @@ define(['app/app'], function (app) {
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });
-    $scope.tab = 'B2b';
-    $scope.storeType = 'badIn'
-    $rootScope.active = "vendor_material"
+    $scope.tab = 'storage';
+    $rootScope.active = "buyer_material"
     $scope.active = 'all';
     $scope.agreedText = '全部';
     $scope.dateZoneText = '一个月内';
     $scope.condition = {dateZone: 1};
 
+    $scope.toggleType = function(type) {
+      window.location.href = '/user#/buyer_storage?type=' + type
+    };
     /* 时间筛选初始化*/
     var fromDate = new Date();
     var toDate = new Date();
@@ -206,6 +208,12 @@ define(['app/app'], function (app) {
         condition.dateTo = null;
       }
     };
+      // 展开收起
+      $scope.unfoldClick = function (data, type) {
+          angular.forEach(data, function(key) {
+              type.id !== key.id ? key.seleted = false : key.seleted = true;
+          })
+      };
   }]);
 
 

+ 2 - 2
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_materialCtrl.js

@@ -4027,7 +4027,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要入库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=inBound&ids=' + ids, '_top')
+      window.open('user#/buyer_storage?type=1&ids=' + ids, '_top')
     }
     //  出库
     $scope.sendGoodsOut= function() {
@@ -4037,7 +4037,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要出库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=outBound&ids=' + ids, '_top')
+      window.open('vendor#/vendor_storage?type=1&ids=' + ids, '_top')
     }
     // 物料修改确认按钮
     $scope.updateMaterialSave = function () {

+ 993 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_storageCtrl.js

@@ -0,0 +1,993 @@
+define([ 'app/app' ], function(app) {
+    'use strict';
+    app.register.controller('buyer_storageCtrl', ['$location', '$scope', '$rootScope', '$stateParams', 'BaseService', 'Goods', 'KdnLogistics', '$modal', 'toaster', 'Loading', 'AuthenticationService', '$q', '$upload', '$http', 'ngTableParams', 'InvoiceFPurchase', 'ShippingAddress', 'Enterprise',
+        function ($location, $scope, $rootScope, $stateParams, BaseService, Goods, KdnLogistics, $modal, toaster, Loading, AuthenticationService, $q, $upload, $http, ngTableParams, InvoiceFPurchase, ShippingAddress, Enterprise) {
+        $rootScope.active = 'buyer_material';
+        $scope.keyword = '';
+        $scope.type = '';
+        $scope.tab = 'storage';
+        $scope.isInt = /^[0-9]*[1-9][0-9]*$/;
+        document.title = '买家入库-优软商城';
+        $scope.storage_tab = 'inBound';
+        $scope.countData = 10;
+        $scope.userInfo = $rootScope.userInfo || {};
+
+
+        // 更多操作数据和记录
+        $scope.handleLink = [
+            {name: '查看入库记录', tab: 'inBound', id: 0},
+            {name: '采购入库', tab: 'inBound', id: 2},
+            {name: '其它入库', tab: 'inBound', id: 1},
+            {name: '查看出库记录', tab: 'outBound', id: 0},
+            {name: '销售出库', tab: 'outBound', id: 2},
+            {name: '其它出库', tab: 'outBound', id: 1}];
+        $scope.handleItem = $stateParams.type || 0;
+
+        // 销售方式数据
+        $scope.boundType = {
+            INBOUND: '全部类型',
+            OTHER_INBOUND: '其它入库',
+            PURCHASE_INBOUND: '采购入库',
+            OUTBOUND: '全部类型',
+            OTHER_OUTBOUND: '其它出库',
+            SELL_OUTBOUND: '销售出库'
+        };
+        // 时间格式化
+        var _formatDate = function (date, fmt) {
+            if(!date) {
+                return null;
+            }
+            if (typeof date === 'string') {
+                date = new Date(Date.parse(date.replace(/-/g, '/')));
+            }
+            var o = {
+                'M+': date.getMonth() + 1,
+                'd+': date.getDate(),
+                'h+': date.getHours(),
+                'm+': date.getMinutes(),
+                's+': date.getSeconds(),
+                'q+': Math.floor((date.getMonth() + 4) / 3),
+                's': date.getMilliseconds()
+            }
+            if (/(y+)/.test(fmt)) {
+                fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
+            }
+            for (var k in o) {
+                if (new RegExp('(' + k + ')').test(fmt)) {
+                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
+                }
+            }
+            return fmt;
+        };
+
+        var _getClearDay = function (date) {
+            return new Date(_formatDate(date, 'yyyy-MM-dd')).getTime() - 8 * 60 * 60 * 1000
+        };
+
+        var getRealLen = function (str) {
+            var len = 0;
+            for (var i = 0; i < str.length; i++) {
+                if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
+                    len += 2;
+                } else {
+                    len++;
+                }
+            }
+            return len;
+        }
+        var cutOutString = function (str, length) {
+            for (var i = 1; i <= str.length; i++) {
+                if (getRealLen(str.substr(0, i)) > length){
+                    str = str.substr(0, i-1);
+                    break;
+                }
+            }
+            return str;
+        };
+
+        // 清空数据初始化数据
+        var clearRecordParams = function () {
+            $scope.dateArea = 'oneMonth'
+            $scope.keyword = null;
+            $scope.type = $scope.storage_tab === 'inBound'? 'INBOUND' : 'OUTBOUND'
+            $scope.selfSupport = $scope.storage_tab === 'inBound'? $scope.boundType.INBOUND : $scope.boundType.OUTBOUND;
+            var currentTime = _getClearDay(new Date());
+            var endDate = currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+            $scope.startDate = currentTime - 30 * 24 * 60 * 60 * 1000;
+            $scope.endDate = endDate;
+        };
+        clearRecordParams();
+
+        //获取币别信息
+        Enterprise.getCurrencyByRegisterAddress(null, function (data) {
+            if(data.code === 1) {
+                $scope.currency = data.data;
+            }else {
+                toaster.pop('info', '提示', '您公司的注册地址为空,无法确定币别,系统默认为人民币');
+                $scope.currency = 'RMB';
+            }
+        }, function (response) {
+            toaster.pop('info', '提示', '获取不到公司的币别信息');
+        });
+
+        // 其它出入库默认数据
+        $scope.othenParam = {
+            enName: '',
+            detail: []
+        };
+        var initOtherData = function () {
+            $scope.othenParam = {
+                enName: '',
+                detail: []
+            }
+            $scope.newDate = _formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+            $scope.otherData = [];
+            if($stateParams.ids){
+                Goods.findAllProduct({ids: $stateParams.ids}, function(data) {
+                    $scope.otherData = data;
+                })
+            } else {
+                for (var i = 0; i< $scope.countData; i++) {
+                    $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true})
+                }
+            }
+        }
+        initOtherData();
+
+        //出入库切换
+        $scope.toggleStorage = function (type) {
+            $scope.storage_tab = type;
+            $scope.type = $scope.storage_tab === 'inBound'? 'INBOUND' : 'OUTBOUND';
+            getLoadStorageData();
+            initOtherData();
+        };
+
+        // 操作类型切换
+        $scope.toggleType = function (type) {
+            $scope.handleItem = type;
+            if(type !== 1) {
+                getLoadStorageData();
+            }
+            initOtherData();
+            clearRecordParams();
+        };
+        // 销售方式筛选
+        $scope.changeSupportType = function (type) {
+            if (!type) return ;
+            $scope.selfSupport = $scope.boundType[type];
+            $scope.type = type;
+            getLoadStorageData();
+        };
+
+        // 时间选择操作
+        $scope.setFilters = function (type, val) {
+            $scope[type] = val;
+            if (type === 'dateArea') {
+                // 时间筛选
+                var currentTime = _getClearDay(new Date());
+                var endDate = currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+                if (val === 'oneMonth') {
+                    $scope.startDate = currentTime - 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else if (val === 'threeMonth') {
+                    $scope.startDate = currentTime - 3 * 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else if (val === 'sixMonth') {
+                    $scope.startDate = currentTime - 6 * 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else {
+                    $scope.startDate = null;
+                    $scope.endDate = null;
+                }
+            }
+            if(val !== 'autoMonth') {
+                getLoadStorageData();
+            }
+        };
+
+        // 初始化时间变量
+        $scope.condition = [];
+        var start = {
+            open : false
+        };
+        var end = {
+            open : false
+        };
+        $scope.condition.push(start);
+        $scope.condition.push(end);
+
+        // 打开日期选择框
+        $scope.openDatePicker = function ($event, item, openParam) {
+            $event.preventDefault();
+            $event.stopPropagation();
+            openParam === 0 ? $scope.condition[1].open = false : $scope.condition[0].open = false;
+            item[openParam].open = !item[openParam].open;
+        };
+
+        // 日期选择框选择时间显示
+        $scope.onDateCondition = function (bool, autoStartDate, autoEndDate) {
+            $scope.startDate = autoStartDate ? autoStartDate.getTime() : null;
+            $scope.endDate = autoEndDate ? autoEndDate.getTime() + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000 : null;
+            if ($scope.startDate && $scope.endDate && $scope.startDate > $scope.endDate) {
+                if (bool === 1) {
+                    toaster.pop('info', '起始时间不能大于结束时间')
+                    $scope.startDate = null;
+                } else {
+                    toaster.pop('info', '结束时间不能小于起始时间');
+                    $scope.endDate = null;
+                }
+            }
+            /*   if ($scope.endDate && bool === 2) {
+             $scope.endDate = $scope.endDate + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+             }*/
+            getLoadStorageData();
+        };
+
+        // 获取查看出入库记录
+        var getUrl = function() {
+            if($scope.handleItem === 0) {
+                return 'getLoadStorageData'
+            } else if($scope.handleItem === 2) {
+                if($scope.storage_tab === 'inBound') {
+                    return 'getByEnterpriseData'
+                } else {
+                    return 'getByStatusAndInternal'
+                }
+            }
+        };
+        var getLoadStorageData = function () {
+            $scope.storageTableParams = new ngTableParams({
+                page: 1,
+                count:10
+            }, {
+                total: 0,
+                getData: function ($defer, params) {
+                    var param = BaseService.parseParams(params.url())
+                    if($scope.keyword){
+                        param.keyword = $scope.keyword
+                    }
+                    if($scope.handleItem === 0) {
+                        param.type = $scope.type;
+                    }
+                    // 出库
+                    if($scope.storage_tab === 'outBound' && $scope.handleItem === 2) {
+                        param.sorting = {"createtime":"DESC"};
+                        param.status = '502-406';
+                        param.startMils = $scope.startDate;
+                        param.endMils = $scope.endDate;
+                    } else {
+                        // 入库
+                        param.fromDate = $scope.startDate;
+                        param.toDate = $scope.endDate;
+                    }
+                    if ($scope.handleItem !== 1) {
+                        // 不等于其他出库或者入库
+                        Goods[getUrl()](param, function(data) {
+                            $scope.storageList = data.content
+                            params.total(data.totalElements);
+                            $defer.resolve(data.content);
+                        }, function(err) {
+                            toaster.pop('error', '获取信息失败')
+                        })
+                    }
+                }
+            })
+        };
+
+        if ($location.$$search.type !== undefined) {
+            $scope.toggleType(Number($location.$$search.type))
+        } else {
+            getLoadStorageData();
+        }
+
+        // 搜索功能
+        $scope.onSearch = function (type) {
+            $scope.keyword = type;
+            getLoadStorageData();
+        };
+
+        // 展开收起
+        $scope.unfoldClick = function (data, type) {
+            $scope.logistics.number = '';
+            $scope.logistics.companyName = '';
+            angular.forEach(data, function(key) {
+                type.id !== key.id ? key.seleted = false : key.seleted = true;
+            })
+        };
+
+        // 点击外面清除弹窗
+        $scope.clearOtherData = function() {
+            angular.forEach($scope.otherData, function(val) {
+                val.show = false;
+                if(!val.id){
+                    val.pbranden = '';
+                    val.key = '';
+                    val.kind = '';
+                    val.spec = '';
+                    val.qty = '';
+                    val.price = '';
+                    val.erpReserve = '';
+                }
+            })
+        }
+
+        $scope.chickAmountBlur = function (item, num) {
+            if($scope.storage_tab === 'outBound') {
+                if(num === 0) {
+                    toaster.pop('info', '提示', '该型号在产品库中库存数量为0,不能出库!');
+                } else if(item.erpReserve && (num > item.erpReserve)) {
+                    toaster.pop('info', '提示', '出库量数量不能大于库存数!');
+                }
+            }
+        }
+
+        $scope.onChange = function (type) {
+            angular.forEach($scope.otherData, function(val) {
+                val.show = false;
+            })
+            type.show = true;
+            Goods.getKeywordToProductId({keyword: type.key}, function(data) {
+                if(data.length <= 0) {
+                    toaster.pop('info', '提示', '该型号不存在你的产品库中!');
+                    type.pbranden = '';
+                    type.key = '';
+                    type.kind = '';
+                    type.spec = '';
+                    type.qty = '';
+                    type.price = '';
+                    type.erpReserve = '',
+                    $scope.listData = [];
+                    type.show = false;
+                } else {
+                    $scope.listData = data
+                }
+            }, function (res) {
+                $scope.listData = [];
+                type.show = false;
+                toaster.pop('info', '提示', '该型号不存在你的产品库中!');
+            })
+        };
+        $scope.addProductId = function (key, type) {
+            type.show = false;
+            type.key = key.pcmpcode;
+            type.pbranden = key.pbranden;
+            type.kind = key.kind;
+            type.spec = key.spec;
+            type.id = key.id;
+            type.price = key.price;
+            type.erpReserve = key.erpReserve;
+            if((type.erpReserve <= 0) && $scope.storage_tab === 'outBound'){
+                toaster.pop('info', '提示', '该型号在产品库中库存数量为0,不能出库!');
+            }
+        };
+
+        $scope.addOneTable = function (type) {
+            if(type === 'clear') {
+                initOtherData()
+            } else if(type === 'one') {
+                $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true});
+            } else if(type === 'ten') {
+                for (var i = 0; i< 10; i++) {
+                    $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true})
+                }
+            }
+        };
+
+        // 确认提交
+        $scope.otherAddClick = function (type) {
+            if(type === 'clear'){
+                $scope.toggleType(0);
+                return false
+            }
+            $scope.othenParam.detail = [];
+            var flag = 0;
+            angular.forEach($scope.otherData, function(val) {
+                if(val.id) {
+                    if((val.erpReserve <= 0) && $scope.storage_tab === 'outBound'){
+                        flag = 1
+                    } else if((val.erpReserve < val.qty) && $scope.storage_tab === 'outBound') {
+                        flag = 2
+                    } else if(val.qty && Number(val.qty) <= 0) {
+                        flag = 4
+                    } else if(val.qty) {
+                        val.price ?
+                            $scope.othenParam.detail.push({productId: val.id, qty: Number(val.qty), price: Number(val.price)}) :
+                            $scope.othenParam.detail.push({productId: val.id, qty: Number(val.qty)});
+                    } else {
+                        flag = 3
+                    }
+                }
+            })
+            if(flag === 1) {
+                toaster.pop('info', '提示', '产品库中库存数量为0将不能出库!');
+                return;
+            }
+            if(flag === 2) {
+                toaster.pop('info', '提示', '出库量数量不能大于库存数!');
+                return;
+            }
+            if(flag === 3) {
+                toaster.pop('info', '提示', '请填写数量!');
+                return;
+            }
+            if(flag === 4) {
+                toaster.pop('info', '提示', '填写的数量不能小于0!');
+                return;
+            }
+            if($scope.othenParam.detail.length <= 0) {
+                toaster.pop('info', '提示', '至少填写一条数据!');
+                return;
+            }
+            Goods.saveOtherProductData({storage_tab: $scope.storage_tab, enName: $scope.othenParam.enName ? $scope.othenParam.enName : null}, $scope.othenParam.detail, function(data) {
+                if(data.code === 1) {
+                    toaster.pop('success', '申请成功!');
+                    initOtherData();
+                    $scope.toggleType(0);
+                }
+            }, function(res) {
+                toaster.pop('error', '申请失败,请检查再试')
+            })
+        };
+
+
+        //加载发货地址
+        var loadAddrs = function() {
+            ShippingAddress.getListEnterprise({ship : false}, function(data) {
+                $scope.addresss = data;
+                $scope.total = $scope.addresss.length;
+                $scope.jsonSdAddress = {};
+                if($scope.addresss.length > 0) {
+                    $scope.jsonSdAddress = $scope.addresss[0];
+                    $scope.jsonSdAddress.area = $scope.jsonSdAddress.area.replace(/,/g,' ');
+                }
+            }, function(res) {
+                toaster.pop('error', '错误', res.data);
+            });
+        };
+
+        loadAddrs();
+
+        // 获取物流公司信息
+        $scope.initData = function () {
+            Goods.findAllSelected({},function (data) {
+                if (data){
+                    $scope.data_list = data;
+                }
+                angular.forEach($scope.data_list, function (data) {
+                    data.isOpen = false;
+                })
+            })
+        };
+        $scope.initData();
+
+        $scope.findAllKdnList = function () {
+            KdnLogistics.getCompanyName({}, function (data) {
+                if (data){
+                    $scope.allKdnList = data;
+                }
+                angular.forEach($scope.allKdnList, function (data) {
+                    data.isChoosed = false;
+                });
+            }, function (error) {
+
+            })
+        };
+        $scope.findAllKdnList();
+
+        $scope.logistics = {};
+        $scope.showText = function (data) {
+            $scope.logistics.companyName = data.companyName;
+            $scope.companyObject = data;
+            $scope.showCompanyName = false;
+        };
+
+        //显示默认的选项
+        $scope.showDefaultText = function () {
+            $scope.logistics.companyName = '请选择物流公司';
+            $scope.companyObject = {};
+        };
+
+        // 物流管理公司选择功能部分
+        var initIndex = function () {
+            $scope.selectIndex = -1;
+            $scope.downIndex = 0;
+        };
+
+        // 表单获取焦点,显示下拉框
+        $scope.getItemFocus = function() {
+            $scope.showCompanyName = true;
+            initIndex();
+        };
+
+        //表单失去焦点
+        $scope.onItemBlur = function() {
+            if($scope.time) {
+                clearTimeout($scope.time);
+            }
+            $scope.time = setTimeout(function() {
+                $scope.$apply(function() {
+                    $scope.showCompanyName = false;
+                })
+            }, 200)
+        };
+
+        // 按键操作功能
+        $scope.onKeyup = function() {
+            var dom = document.getElementById("ulContent");
+            if($scope.showCompanyName){
+                if(event.keyCode === 40){
+                    $scope.selectIndex++;
+                    if($scope.downIndex === 5){
+                        dom.scrollTop += 23;
+                    } else if($scope.downIndex <=4){
+                        $scope.selectIndex++;
+                    } else if($scope.selectIndex >= $scope.data_list.length){
+                        $scope.selectIndex = 0;
+                        $scope.downIndex =1;
+                        dom.scrollTop = 0;
+                    }
+                    $scope.logistics.companyName = $scope.data_list[$scope.selectIndex].companyName;
+                } else if(event.keyCode === 38) {
+                    $scope.selectIndex --;
+                    if ($scope.downIndex === 1){
+                        dom.scrollTop -= 22.67;
+                    }
+                    if ($scope.downIndex >= 2){
+                        $scope.downIndex--;
+                    }
+                    if($scope.selectIndex < 0){
+                        $scope.selectIndex = $scope.data_list.length - 1;
+                        dom.scrollTop = 2400;
+                        $scope.downIndex = 5;
+                    }
+                    $scope.logistics.companyName = $scope.data_list[$scope.selectIndex].companyName;
+                } else if(event.keyCode === 13){
+                    $scope.showCompanyName = false;
+                }
+            }
+        };
+        $scope.addDistributor = function () {
+            $modal.open({
+                templateUrl : $rootScope.rootPath + '/static/view/vendor/modal/vendor_distributor_manage.html',
+                controller : 'vendorDistributorModalCtrl',
+                size : 'lg',
+                resolve : {
+                    allKdnList : function () {
+                        return $scope.allKdnList;
+                    },
+                    selectedList : function () {
+                        return $scope.data_list;
+                    }
+                }
+            }).result.then(function(data){
+                if (data) {
+                    $scope.initData();
+                }
+            }, function(){
+                // toaster.pop('info', '提示 ' + '您已取消配送商的编辑');
+            });
+        };
+
+        //数量进行验证
+        $scope.onAmountChange = function (item, val, type, key, deg) {
+            if (deg) {
+                if (angular.isNumber(Number(val))) {
+                    if (val >= 10000) {
+                        item[type] = Number(val.toString().substring(0, key));
+                    } else if (val.toString().indexOf('.') > -1) {
+                        var arr = val.toString().split(".");
+                        if (arr[0].length > key) {
+                            item[type] = Number(arr[0].substring(0, key) + '.' + arr[1]);
+                        } else if (arr[1].length > deg) {
+                            item[type] = Number(arr[0] + '.' + arr[1].substring(0, deg));
+                        }
+                    }
+                } else {
+                    item[type] = ''
+                }
+            } else {
+                if (!(/^[0-9]*$/).test(val)) {
+                    var chineseIndex = -1;
+                    for (var i = 0; i < val.length; i++) {
+                        if (!(/^[0-9]*$/).test(val.charAt(i))) {
+                            chineseIndex = i;
+                            break;
+                        }
+                    }
+                    item[type] = cutOutString(val, chineseIndex);
+                } else if (val.length > key) {
+                    item[type] = cutOutString(val, key);
+                }
+            }
+        };
+
+        $scope.checkAmount = function (item, val, type) {
+            $scope.validObj.amount = $scope.applyObj.amount === '' ? true
+                : $scope.applyObj.amount > 0 && $scope.applyObj.amount
+                < 1000000000;
+            return $scope.validObj.amount;
+        }
+
+        $scope.outBlurSendCount = function(details, val) {
+            var newShipQty = details.shipQty ? details.shipQty : 0
+            if (val > details.number - newShipQty) {
+                toaster.pop('warning', '提示', '本次发货数量不能大于已剩数量')
+                val = details.number - newShipQty
+            }
+            details.sendCount = val
+        };
+
+        var inSaveOtherCheck = function(type) {
+            Goods.getByEnterpriseId({invoiceId: type.invoiceid}, null, function(data) {
+                if(data.code === 1) {
+                    toaster.pop("success", "信息保存成功");
+                    getLoadStorageData();
+                }
+            }, function(response) {
+                toaster.pop('error', '错误', response.data);
+            })
+        };
+
+        var outSaveOtherCheck = function (data) {
+            if(!$scope.jsonSdAddress || angular.equals({}, $scope.jsonSdAddress)) {
+                toaster.pop("info", "提示", "发货地址不能为空,请前往物流管理新增发货地址");
+                return ;
+            }
+            var sendInfo = {};
+            sendInfo.sendType = data.sendType;
+            if ($scope.logistics.companyName && $scope.logistics.number){
+                sendInfo.logisticsInfo = {};
+                sendInfo.logisticsInfo.companyName = $scope.logistics.companyName;
+                sendInfo.logisticsInfo.number = $scope.logistics.number;
+            }
+            var HasCount = false
+            var _obj = []
+            for (var i = 0; i < data.purchaseDetails.length; i++) {
+                if (Math.abs(data.purchaseDetails[i].sendCount) > 0) {
+                    HasCount = true
+                    var _id = data.purchaseDetails[i].id
+                    _obj.push({
+                        id: _id,
+                        qty: Number(data.purchaseDetails[i].sendCount)
+                    })
+                }
+            }
+            if (!HasCount) {
+                toaster.pop("info", "提示", "最少填写一个发货数量");
+                return ;
+            }
+            sendInfo.map = _obj
+            sendInfo.jsonSdAddress = angular.toJson($scope.jsonSdAddress);
+            InvoiceFPurchase.saveInvoiceFPurchase({id : data.id}, sendInfo, function(res) {
+
+                // TODO 这边要停5秒钟之后,在跳转到出货单管理界面
+                /*var fromPage = window.sessionStorage.getItem("orderAdmin");
+                 if(fromPage == "invoiceProofing") {
+                 $state.go('invoiceProofing');
+                 }else {
+                 $state.go('invoice');
+                 }*/
+                // TODO huxz 跳转到订单管理页面
+                if (res.success) {
+                    toaster.pop("success", "信息", "发货成功");
+                    getLoadStorageData();
+                } else {
+                    toaster.pop("error", res.message);
+                }
+            }, function(response) {
+                toaster.pop('error', '错误', response.data);
+            });
+        };
+
+        // 采购入库与销售出库确认发货
+        $scope.saveOtherCheck = function (data, tab) {
+            if (tab === 'inBound') {
+                inSaveOtherCheck(data);
+            } else {
+                outSaveOtherCheck(data);
+            }
+        };
+
+        //获取登录的信息
+        var getAuthentication = function () {
+            return AuthenticationService.getAuthentication().success(function(data) {
+                if(data && data.enterprises) {
+                    data.enterprise = data.enterprises[data.enterprises.length - 1];
+                    if(data.enterprises.length > 1) {
+                        var enSelect = [];
+                        angular.forEach(data.enterprises, function(e){
+                            if(e.current)
+                                data.enterprise = e;
+                            else
+                                enSelect.push(e);
+                        });
+                        data.enSelect = enSelect;
+                    }
+                }
+                $rootScope.userInfo = data;
+            }).error(function(response) {
+                toaster.pop('info', '获取定单的信息' + response);
+            });
+        };
+    }]);
+
+    // 设置物流公司
+    app.register.controller('vendorDistributorModalCtrl', ['$scope','$rootScope','$modal','toaster','KdnLogistics','Distributor','BaseService','ngTableParams','$modalInstance','$q','selectedList','allKdnList', function ($scope, $rootScope, $modal, toaster, KdnLogistics, Distributor, BaseService, ngTableParams, $modalInstance, $q, selectedList, allKdnList) {
+        //获取快递鸟信息
+        $scope.$$kdnData = {};
+        $scope.selectedList = selectedList;
+        $scope.allKdnList = allKdnList;
+        $scope.chooseList = [];
+        $scope.selectFlag = [];
+
+        $scope.initArrayData = function () {
+            angular.forEach(allKdnList, function (data) {
+                $scope.selectFlag[data.code] = {};
+                $scope.selectFlag[data.code].isChoosed = false;
+            });
+            angular.forEach(selectedList, function (data, index) {
+                $scope.chooseList[index] = {};
+                if (data.code){
+                    $scope.chooseList[index].code = data.code;
+                    $scope.selectFlag[data.code].isChoosed = true;
+                }
+                $scope.chooseList[index].companyName = data.companyName;
+            });
+        };
+        $scope.initArrayData();
+
+        $scope.distributorTableParams = new ngTableParams({
+            page : 1,
+            count : 30
+        },{
+            total : 0,
+            getData : function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                KdnLogistics.findKdnPage(param, function (page) {
+                    $scope.$$kdnData.totalElements = page.totalElements;
+                    if(Number(page.totalElements) > 0) {
+                        $scope.$$kdnData.start = Number(page.size) * (Number(page.number) - 1) + 1;
+                    }else {
+                        $scope.$$kdnData.start = 0;
+                    }
+                    $scope.$$kdnData.end = Number(page.size) * (Number(page.number) - 1) + Number(page.numberOfElements);
+                    $scope.pageList = page.content;
+                    params.total(page.totalElements);
+                    $defer.resolve(page.content);
+                    //划分数据
+                    var row = Math.ceil(page.numberOfElements/6.0);
+                    $scope.showList = [];
+                    var count = 0;
+                    for (var i = 0; i<row; i++){
+                        $scope.showList[i] = [];
+                        for (var j = 0; j<6; j++){
+                            // var code = $scope.pageList[count].code;
+                            // $scope.pageList[count].isChoosed = $scope.selectFlag[code].isChoosed;
+                            $scope.showList[i].push($scope.pageList[count]);
+                            count++;
+                            if (count == page.numberOfElements){
+                                return;
+                            }
+                        }
+                    }
+                }, function () {
+                    toaster.pop('error', '获取快递鸟信息失败');
+                });
+            }
+        });
+
+        var countLength = function (string) {
+            return string.replace(/[^x00-xFF]/g,'**').length;
+        };
+
+        $scope.inputContent = function () {
+            for (var i=0; i<$scope.keyword.length;i++){
+                if (countLength($scope.keyword.substr(0, i)) >= 26){
+                    $scope.keyword = $scope.keyword.substr(0, i);
+                    break;
+                }
+            }
+            var addrPatt = new RegExp("^[A-Za-z0-9\u4e00-\u9fa5]+$");
+            if (!addrPatt.test($scope.keyword) && $scope.keyword.length > 0){
+                $scope.companyError = true;
+            }else {
+                $scope.companyError = false;
+            }
+            initIndex();
+            $scope.showDownFrame = true;
+            matchArray();
+            $scope.containsAttr($scope.keyword);
+        };
+
+        var initIndex = function () {
+            $scope.selectIndex = -1;
+            $scope.downIndex = 0;
+        };
+
+        $scope.getFocus = function() {
+            initIndex();
+        };
+
+        /**
+         * 根据输入内容获取匹配数据的长度
+         */
+        var matchArray = function () {
+            $scope.resultList = $scope.allKdnList.filter(function (data) {
+                if (data.companyName.indexOf($scope.keyword) >= 0){
+                    return data;
+                }
+            });
+            if ($scope.resultList.length > 0){
+                $scope.matchData = true;
+            }else{
+                $scope.matchData = false;
+            }
+        };
+
+        $scope.onBlur = function () {
+            setTimeout(function () {
+                $scope.showDownFrame = false;
+            }, 120);
+        };
+
+        $scope.onKeyDown = function () {
+            var dom = document.getElementById("ulContent");
+            if ($scope.showDownFrame && $scope.matchData){
+                if(event.keyCode == 40) { //监听到按下键
+                    $scope.selectIndex ++;
+                    if ($scope.downIndex == 5){
+                        dom.scrollTop += 23;
+                    }
+                    if ($scope.downIndex <= 4){
+                        $scope.downIndex++;
+                    }
+                    if($scope.selectIndex >= $scope.resultList.length){
+                        $scope.selectIndex = 0;
+                        dom.scrollTop = 0;
+                        $scope.downIndex = 1;
+                    }
+                    $scope.inputObject = $scope.resultList[$scope.selectIndex];
+                    $scope.keyword = $scope.inputObject.companyName;
+                    $scope.containsAttr($scope.keyword);
+                } else if(event.keyCode == 38) { //监听到按上键
+                    $scope.selectIndex --;
+                    if ($scope.downIndex == 1){
+                        dom.scrollTop -= 22.67 ;
+                    }
+                    if ($scope.downIndex >= 2){
+                        $scope.downIndex--;
+                    }
+                    if($scope.selectIndex < 0){
+                        $scope.selectIndex = $scope.resultList.length - 1;
+                        dom.scrollTop = 2400;
+                        $scope.downIndex = 5;
+                    }
+                    $scope.inputObject = $scope.resultList[$scope.selectIndex];
+                    $scope.keyword = $scope.inputObject.companyName;
+                    $scope.containsAttr($scope.keyword);
+                } else if(event.keyCode == 13) { //确定键
+                    $scope.showDownFrame = false;
+                }
+            }
+        };
+
+        $scope.clickItem = function (data) {
+            // $scope.inputObject = data;
+            $scope.keyword = data.companyName;
+            $scope.containsAttr($scope.keyword);
+            $scope.showDownFrame = false;
+        };
+
+        /**
+         * 判断快递鸟是否包含输入的快递
+         * @param value
+         */
+        $scope.containsAttr = function (value) {
+            var key = 1;
+            if (value){
+                angular.forEach($scope.allKdnList, function (data) {
+                    if (data.companyName == value){
+                        key = 0;
+                        return;
+                    }
+                });
+                if (key == 1){
+                    $scope.containsItem = false;
+                }else {
+                    $scope.containsItem = true;
+                }
+            }
+        };
+
+        $scope.addItemInSelected = function () {
+            if ($scope.containsItem){
+                angular.forEach($scope.allKdnList, function (data) {
+                    if (data.companyName == $scope.keyword){
+                        if ($scope.selectFlag[data.code].isChoosed){
+                            var indexItem = null;
+                            if ($scope.chooseList){
+                                angular.forEach($scope.chooseList, function (item, index) {
+                                    if (item.code == data.code){
+                                        indexItem = index;
+                                    }
+                                });
+                            }
+                            $scope.chooseList.splice(indexItem, 1);
+                            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+                        }
+                        $scope.ChooseDistributor(data);
+                    }
+                });
+            }else {
+                var indexItem = null;
+                angular.forEach($scope.chooseList, function (item, index) {
+                    if (item.companyName == $scope.keyword){
+                        indexItem = index;
+                    }
+                });
+                if (indexItem){
+                    $scope.chooseList.splice(indexItem, 1);
+                }
+                var item = {};
+                item.companyName = $scope.keyword;
+                $scope.chooseList.push(item);
+            }
+            $scope.keyword = "";
+        };
+
+        $scope.removeDistributor = function (data, index) {
+            $scope.chooseList.splice(index, 1);
+            if (data.code){
+                $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+            }
+        };
+
+        $scope.ChooseDistributor = function (data) {
+            if ($scope.selectFlag[data.code].isChoosed){
+                if ($scope.chooseList){
+                    angular.forEach($scope.chooseList, function (item, index) {
+                        if (item.code == data.code){
+                            $scope.index = index;
+                        }
+                    });
+                }
+                $scope.chooseList.splice($scope.index, 1);
+            }else {
+                $scope.chooseList.push(data);
+            }
+            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+        };
+
+        $scope.saveChooseList = function () {
+            Distributor.saveDistributor({}, $scope.chooseList ,function (data) {
+                if(data){
+                    toaster.pop('success', '成功', '保存配送商成功');
+                }
+                $modalInstance.close(data);
+            },function (error) {
+                toaster.pop('error', '成功', '保存配送商失败 '+ error);
+            });
+        };
+
+        $scope.cancel = function() {
+            $modalInstance.dismiss();
+        };
+    }]);
+    // 上传批次图片
+    app.register.controller('editPictureCtrl', ['$scope', 'pic', '$modalInstance', function ($scope, pic, $modalInstance) {
+        $scope.pic = pic;
+        $scope.cancel = function () {
+            $modalInstance.close();
+        };
+
+        // 图片上传成功之后
+        $scope.onUploadSuccess = function(data){
+            $scope.pic = data.path;
+        };
+
+        $scope.confirm = function() {
+            $modalInstance.close($scope.pic);
+        }
+    }]);
+
+});

+ 1 - 7
src/main/webapp/resources/js/vendor/app.js

@@ -552,7 +552,7 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
             controller : 'vendor_onSaleCtrl'
         })).state('vendor_storage', angularAMD.route({
             title : '出入库',
-            url : '/vendor_storage?storage_tab&ids',
+            url : '/vendor_storage?type&ids',
             templateUrl : 'static/view/vendor/forstore/vendor_storage.html',
             controllerUrl : "app/controllers/forstore/vendor_storageCtrl",
             controller : 'vendor_storageCtrl'
@@ -798,12 +798,6 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
       templateUrl: 'static/view/vendor/b2b/sale/sale_badOut.html',
       controller: 'SaleBadOutCtrl',
       controllerUrl: 'app/controllers/b2b/sale/sale_badOut'
-    })).state('sale_badIn', angularAMD.route({
-      url: '/badIn',
-      title: 'b2b客户出入库-不良品入库单',
-      templateUrl: 'static/view/vendor/b2b/sale/sale_badIn.html',
-      controller: 'SaleBadInCtrl',
-      controllerUrl: 'app/controllers/b2b/sale/sale_badIn'
     })).state('sale_accept', angularAMD.route({
       url: '/accept',
       title: 'b2b客户出入库-客户采购验收单',

+ 8 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_accept.js

@@ -8,7 +8,7 @@ define(['app/app'], function (app) {
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });
-    $scope.tab = 'B2b';
+    $scope.tab = 'storage';
     $scope.storeType = 'accept'
     $rootScope.active = "vendor_material"
 
@@ -220,6 +220,13 @@ define(['app/app'], function (app) {
         condition.dateTo = null;
       }
     };
+
+      // 展开收起
+      $scope.unfoldClick = function (data, type) {
+          angular.forEach(data, function(key) {
+              type.id !== key.id ? key.seleted = false : key.seleted = true;
+          })
+      };
   }]);
 
 })

+ 8 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_badOut.js

@@ -8,7 +8,7 @@ define(['app/app'], function (app) {
         function ($rootScope, $scope, $filter, PurcBadOut, ngTableParams, toaster,
             BaseService, Symbol, CurrentRole) {
           BaseService.scrollBackToTop();
-          $scope.tab = 'B2b';
+          $scope.tab = 'storage';
           $rootScope.active = "vendor_material"
           $scope.storeType = 'badOut'
           // 获取当前用户是否为普通用户
@@ -216,5 +216,12 @@ define(['app/app'], function (app) {
               condition.dateTo = null;
             }
           };
+
+            // 展开收起
+            $scope.unfoldClick = function (data, type) {
+                angular.forEach(data, function(key) {
+                    type.id !== key.id ? key.seleted = false : key.seleted = true;
+                })
+            };
         }]);
 })

+ 8 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_accept.js

@@ -11,7 +11,7 @@ define(['app/app'], function (app) {
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });
-    $scope.tab = 'B2b';
+    $scope.tab = 'storage';
     $scope.storeType = 'makeaccept'
     $rootScope.active = "vendor_material"
     $scope.active = 'all';
@@ -205,6 +205,13 @@ define(['app/app'], function (app) {
         condition.dateTo = null;
       }
     };
+
+      // 展开收起
+      $scope.unfoldClick = function (data, type) {
+          angular.forEach(data, function(key) {
+              type.id !== key.id ? key.seleted = false : key.seleted = true;
+          })
+      };
   }]);
 
 })

+ 7 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_returns.js

@@ -8,7 +8,7 @@ define(['app/app'], function (app) {
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });
-    $scope.tab = 'B2b';
+    $scope.tab = 'storage';
     $scope.storeType = 'makereturns'
     $rootScope.active = "vendor_material"
     $scope.active = 'all';
@@ -212,6 +212,12 @@ define(['app/app'], function (app) {
         condition.dateTo = null;
       }
     };
+      // 展开收起
+      $scope.unfoldClick = function (data, type) {
+          angular.forEach(data, function(key) {
+              type.id !== key.id ? key.seleted = false : key.seleted = true;
+          })
+      };
   }]);
 
 })

+ 8 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_returns.js

@@ -3,7 +3,7 @@ define(['app/app'], function (app) {
    * 客户采购验退
    */
   app.register.controller('SaleReturnsCtrl', ['$rootScope', '$scope', '$filter', 'B2bPurcReturn', 'ngTableParams', 'toaster', 'BaseService', 'Symbol', 'B2bCurrentRole', function ($rootScope, $scope, $filter, PurcReturn, ngTableParams, toaster, BaseService, Symbol, CurrentRole) {
-    $scope.tab = 'B2b';
+    $scope.tab = 'storage';
     $scope.storeType = 'returns'
     $rootScope.active = "vendor_material"
     BaseService.scrollBackToTop();
@@ -213,6 +213,13 @@ define(['app/app'], function (app) {
         condition.dateTo = null;
       }
     };
+
+      // 展开收起
+      $scope.unfoldClick = function (data, type) {
+          angular.forEach(data, function(key) {
+              type.id !== key.id ? key.seleted = false : key.seleted = true;
+          })
+      };
   }]);
 
 })

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

@@ -4025,7 +4025,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要入库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=inBound&ids=' + ids, '_top')
+      window.open('user#/buyer_storage?type=1&ids=' + ids, '_top')
     }
     //  出库
     $scope.sendGoodsOut= function() {
@@ -4035,7 +4035,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要出库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=outBound&ids=' + ids, '_top')
+      window.open('vendor#/vendor_storage?type=1&ids=' + ids, '_top')
     }
     // 物料修改确认按钮
     $scope.updateMaterialSave = function () {

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

@@ -4154,7 +4154,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要入库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=inBound&ids=' + ids, '_top')
+      window.open('user#/buyer_storage?type=1&ids=' + ids, '_top')
     }
     //  出库
     $scope.sendGoodsOut= function() {
@@ -4164,7 +4164,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         toaster.pop('warning', '提示', '请先选择要出库的物料');
         return
       }
-      window.open('vendor#/vendor_storage?storage_tab=outBound&ids=' + ids, '_top')
+      window.open('vendor#/vendor_storage?type=1&ids=' + ids, '_top')
     }
     // 物料修改确认按钮
     $scope.updateMaterialSave = function () {

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

@@ -1,16 +1,17 @@
 define([ 'app/app' ], function(app) {
     'use strict';
-    app.register.controller('vendor_storageCtrl', ['$scope', '$rootScope', '$stateParams', 'BaseService', 'Goods', 'KdnLogistics', '$modal', 'toaster', 'Loading', 'AuthenticationService', '$q', '$upload', '$http', 'ngTableParams', 'InvoiceFPurchase', 'ShippingAddress', 'Enterprise', function ($scope, $rootScope, $stateParams, BaseService, Goods, KdnLogistics, $modal, toaster, Loading, AuthenticationService, $q, $upload, $http, ngTableParams, InvoiceFPurchase, ShippingAddress, Enterprise) {
+    app.register.controller('vendor_storageCtrl', ['$location', '$scope', '$rootScope', '$stateParams', 'BaseService', 'Goods', 'KdnLogistics', '$modal', 'toaster', 'Loading', 'AuthenticationService', '$q', '$upload', '$http', 'ngTableParams', 'InvoiceFPurchase', 'ShippingAddress', 'Enterprise', function ($location, $scope, $rootScope, $stateParams, BaseService, Goods, KdnLogistics, $modal, toaster, Loading, AuthenticationService, $q, $upload, $http, ngTableParams, InvoiceFPurchase, ShippingAddress, Enterprise) {
         $rootScope.active = 'vendor_material';
         $scope.keyword = '';
         $scope.type = '';
         $scope.tab = 'storage';
         $scope.isInt = /^[0-9]*[1-9][0-9]*$/;
         document.title = '卖家出入库-优软商城';
-        $scope.storage_tab = $stateParams.storage_tab? $stateParams.storage_tab : 'inBound';
+        $scope.storage_tab = 'outBound';
         $scope.countData = 10;
         $scope.userInfo = $rootScope.userInfo || {};
 
+
         // 更多操作数据和记录
         $scope.handleLink = [
             {name: '查看入库记录', tab: 'inBound', id: 0},
@@ -19,7 +20,7 @@ define([ 'app/app' ], function(app) {
             {name: '查看出库记录', tab: 'outBound', id: 0},
             {name: '销售出库', tab: 'outBound', id: 2},
             {name: '其它出库', tab: 'outBound', id: 1}];
-        $scope.handleItem = $stateParams.storage_tab ? 1 : ($scope.storage_tab === 'inBound'? $scope.handleLink[0].id : $scope.handleLink[3].id);
+        $scope.handleItem = $stateParams.type || 0;
 
         // 销售方式数据
         $scope.boundType = {
@@ -247,16 +248,19 @@ define([ 'app/app' ], function(app) {
                     if($scope.handleItem === 0) {
                         param.type = $scope.type;
                     }
+                    // 出库
                     if($scope.storage_tab === 'outBound' && $scope.handleItem === 2) {
                         param.sorting = {"createtime":"DESC"};
                         param.status = '502-406';
                         param.startMils = $scope.startDate;
                         param.endMils = $scope.endDate;
                     } else {
+                        // 入库
                         param.fromDate = $scope.startDate;
                         param.toDate = $scope.endDate;
                     }
                     if ($scope.handleItem !== 1) {
+                        // 不等于其他出库或者入库
                         Goods[getUrl()](param, function(data) {
                             $scope.storageList = data.content
                             params.total(data.totalElements);
@@ -268,7 +272,12 @@ define([ 'app/app' ], function(app) {
                 }
             })
         };
-        getLoadStorageData();
+
+        if ($location.$$search.type !== undefined) {
+            $scope.toggleType(Number($location.$$search.type))
+        } else {
+            getLoadStorageData();
+        }
 
         // 搜索功能
         $scope.onSearch = function (type) {

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

@@ -341,7 +341,7 @@
                                    current-text="今天" clear-text="清除" close-text="关闭"
                                    datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
                                    ng-click="openDatePicker($event, condition, 0,1)"
-                                   ng-change="onDateCondition(1)"/>
+                                   ng-change="onDateCondition(1, startDate)"/>
                             <button class="open" ng-click="openDatePicker($event, condition, 0)"></button>
                         </div>
                         <strong>–</strong>
@@ -353,7 +353,7 @@
                                    current-text="今天" clear-text="清除" close-text="关闭"
                                    datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
                                    ng-click="openDatePicker($event, condition, 1, 2)"
-                                   ng-change="onDateCondition(2)"/>
+                                   ng-change="onDateCondition(2, endDate)"/>
                             <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
                         </div>
                     </div>

+ 1 - 1
src/main/webapp/resources/view/sso/rolePermission.html

@@ -904,7 +904,7 @@
 </style>
 <!--右侧主体部分-->
 <div class="count user_right fr" ng-click="hideList()">
-    <div class="tab_top" style="margin-bottom: 16px;">
+    <div class="com_tab">
         <ul>
             <li ng-class="{active: tab == 'b2c'}" ng-click="setTab('b2c')"><a href="javascript:void(0)">商城角色</a></li>
             <li ng-class="{active: tab == 'b2b'}" ng-click="setTab('b2b')"><a href="javascript:void(0)">B2B角色</a></li>

+ 8 - 72
src/main/webapp/resources/view/usercenter/b2b/Purc/inquiry_unapply.html

@@ -281,73 +281,6 @@
   }
 </style>
 <style>
-  .com_tab {
-    height: 40px;
-    margin-bottom: 10px;
-  }
-  .com_tab ul {
-    width: 100%;
-    margin: 0 auto;
-    height: 40px;
-    line-height: 40px;
-    background: #fff;
-  }
-  .com_tab ul li {
-    height: 40px;
-    text-align: center;
-    float: left;
-    position: relative;
-    min-width: 110px;
-  }
-  .com_tab:nth-of-type(1) ul li.active > a {
-    border-bottom: #fff;
-    background: #5078cb;
-    color: #fff !important;
-  }
-  .com_tab ul li a {
-    min-width: 110px;
-  }
-  .com_tab ul li > a {
-    font-size: 14px;
-    height: 40px;
-    padding: 0 20px;
-    display: inline-block;
-  }
-  .com_tab:nth-of-type(1) ul li::after {
-    background:url('static/img/vendor/images/downicon.png');
-    width: 11px;
-    height: 6px;
-    position: absolute;
-    bottom: 0px;
-    left: 50%;
-    content: ' ';
-    margin-left: -5px;
-    display: none;
-  }
-  .com_tab ul li::after {
-    background:url('static/img/vendor/images/downicon.png');
-    width: 11px;
-    height: 6px;
-    position: absolute;
-    bottom: 0px;
-    left: 50%;
-    content: ' ';
-    margin-left: -5px;
-    display: none;
-  }
-  .com_tab ul li.active:after {
-    display: block;
-  }
-  .oder01 ul li.active a{
-    border-bottom: 1px solid #fff;
-    color: #f15601;
-  }
-  .oder01 ul li.active a em {
-    color: #f15601;
-  }
-  .oder01 ul li a em {
-    color: #323232
-  }
   .screen {
     background: #fff;
     padding-top: 10px;
@@ -642,9 +575,6 @@
     top: 50%;
     margin: -20px 0 0 -40px;
   }
-  .oder01 ul li {
-    margin-left: 0px
-  }
   .order-table .inquiry-bd .order-number {
     position: absolute;
     top: -1px;
@@ -661,7 +591,13 @@
 </style>
 <!--<link rel="stylesheet" href="static/css/public.css">-->
 <div class="user_right fr" style="position: relative">
-  <div class="com_tab" style="margin-bottom: 10px">
+  <div class="com_tab">
+    <ul class="fl" style="width: 100%">
+      <li class="active"><a ui-sref="purc_haseinquiry">定向询价</a></li>
+      <li><a ui-sref="buyerSeekPurchase">公共询价</a></li>
+    </ul>
+  </div>
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li><a ui-sref="purc_haseinquiry">采购询价</a></li>
       <li class="active"><a>待发布</a></li>
@@ -671,7 +607,7 @@
 
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 10px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已发布</a></li>
       <li ng-class="{'active': active=='todo'}" ng-click="setActive('todo')"><a>待发布</a></li>

+ 9 - 71
src/main/webapp/resources/view/usercenter/b2b/Purc/purchaseInquiryCtrl.html

@@ -299,73 +299,6 @@
   }
 </style>
 <style>
-  .com_tab {
-    height: 40px;
-    margin-bottom: 10px;
-  }
-  .com_tab ul {
-    width: 100%;
-    margin: 0 auto;
-    height: 40px;
-    line-height: 40px;
-    background: #fff;
-  }
-  .com_tab ul li {
-    height: 40px;
-    text-align: center;
-    float: left;
-    position: relative;
-    min-width: 110px;
-  }
-  .com_tab:nth-of-type(1) ul li.active > a {
-    border-bottom: #fff;
-    background: #5078cb;
-    color: #fff !important;
-  }
-  .com_tab ul li a {
-    min-width: 110px;
-  }
-  .com_tab ul li > a {
-    font-size: 14px;
-    height: 40px;
-    padding: 0 20px;
-    display: inline-block;
-  }
-  .com_tab:nth-of-type(1) ul li::after {
-    background:url('static/img/vendor/images/downicon.png');
-    width: 11px;
-    height: 6px;
-    position: absolute;
-    bottom: 0px;
-    left: 50%;
-    content: ' ';
-    margin-left: -5px;
-    display: none;
-  }
-  .com_tab ul li::after {
-    background:url('static/img/vendor/images/downicon.png');
-    width: 11px;
-    height: 6px;
-    position: absolute;
-    bottom: 0px;
-    left: 50%;
-    content: ' ';
-    margin-left: -5px;
-    display: none;
-  }
-  .com_tab ul li.active:after {
-    display: block;
-  }
-  .oder01 ul li.active a{
-    border-bottom: 1px solid #fff;
-    color: #f15601;
-  }
-  .oder01 ul li.active a em {
-    color: #f15601;
-  }
-  .oder01 ul li a em {
-    color: #323232
-  }
   .screen {
     background: #fff;
     padding-top: 10px;
@@ -663,10 +596,15 @@
   }
 </style>
 <div class="user_right fr" style="position: relative">
-
-  <div class="com_tab" style="margin-bottom: 10px">
+  <div class="com_tab">
+    <ul class="fl" style="width: 100%">
+      <li class="active"><a ui-sref="purc_haseinquiry">定向询价</a></li>
+      <li><a ui-sref="buyerSeekPurchase">公共询价</a></li>
+    </ul>
+  </div>
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
-      <li class="active"><a >采购询价</a></li>
+      <li class="active"><a>采购询价</a></li>
       <li><a ui-sref="purc_inquiry_unapply">待发布</a></li>
       <li class="down-purchase" style="margin-right: 0;color: #fff;min-width: 80px">
         <a href="#" style="color: #5078cb;padding: 0;min-width: 80px" ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i style="color: #5078cb;" class="fa fa-file-text fa-fw"></i>导出</a>
@@ -680,7 +618,7 @@
 
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 0px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部<span ng-if="unread.replied>0">(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</span></a></li>
       <li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已报价<span  ng-if="unread.replied>0">(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</span></a></li>

+ 2 - 2
src/main/webapp/resources/view/usercenter/b2b/Purc/tender_answer_list.html

@@ -587,7 +587,7 @@
 </style>
 <div class="user_right fr" style="position: relative">
   <!-- 顶部导航及搜索框 -->
-  <div class="com_tab" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li ><a ui-sref="purc_tenderlist">采购招标</a></li>
       <li class="active"><a >招标提问列表</a></li>
@@ -602,7 +602,7 @@
       <!--</li>-->
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 0px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
       <li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已回复</a></li>

+ 2 - 2
src/main/webapp/resources/view/usercenter/b2b/Purc/tenderlist.html

@@ -516,7 +516,7 @@
 <div class="user_right fr" style="position: relative">
   <!-- 顶部导航及搜索框 -->
   <div class="block main-content sellOder oder">
-    <div class="com_tab" style="margin-bottom: 10px">
+    <div class="com_tab">
       <ul class="fl" style="width: 100%">
         <li class="active"><a >采购招标</a></li>
         <li><a ui-sref="purc_tenderanswerlist">招标提问列表</a></li>
@@ -531,7 +531,7 @@
         <!--</li>-->
       </ul>
     </div>
-    <div class="oder01" style="margin-bottom: 0px">
+    <div class="com_tab tab_top" style="margin-bottom: 0px">
       <ul>
         <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
         <li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>待评标(<em ng-class="{'color-black': !unread.notReply }" ng-bind="unread.notReply || 0"></em>)</a></li>

+ 1 - 1
src/main/webapp/resources/view/usercenter/b2b/Purc/vendor.html

@@ -79,7 +79,7 @@
 	}
 </style>
 <div class="user_right fr">
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl">
 			<li class="active">
 				<a>供应商资料</a>

+ 1 - 1
src/main/webapp/resources/view/usercenter/b2b/fa/arCheck.html

@@ -489,7 +489,7 @@
   }
 </style>
 <div class="user_right fr" style="position: relative">
-  <div class="com_tab" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li class="active"><a href="javascript:void(0)">B2B</a></li>
       <li><a ui-sref="pay_center" href="javascript:void(0)">优软商城</a></li>

+ 3 - 3
src/main/webapp/resources/view/usercenter/b2b/order/changeList.html

@@ -485,13 +485,13 @@
 			<!--<a href="#" ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i class="fa fa-file-text fa-fw"></i>导出</a>-->
 		<!--</div>-->
 	<!--</div>-->
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li class="active"><a ui-sref="purc_usercenter_order" href="#/purc/order">B2B</a></li>
 			<li><a ui-sref="buyer_order" href="#/order">优软商城</a></li>
 		</ul>
 	</div>
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul style="width: 100%">
 			<li ng-class="{'active': storeType=='purcOrder'}"><a ui-sref="purc_usercenter_order">采购订单</a></li>
 			<li ng-class="{'active': storeType=='purcChange'}"><a ui-sref="purc_change_list">采购变更单</a></li>
@@ -511,7 +511,7 @@
 
 		</ul>
 	</div>
-	<div class="oder01">
+	<div class="com_tab tab_top">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部<span ng-if="unread.all>0">(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</span></a></li>
 			<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已处理<span  ng-if="unread.replied>0">(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</span></a></li>

+ 3 - 3
src/main/webapp/resources/view/usercenter/b2b/order/deputyOrder.html

@@ -578,13 +578,13 @@
 		<!--<a ui-sref="purc.deputylog" type="button" title="错误日志"><i class="fa fa-file-text"></i> 错误日志</a>-->
 	<!--</div>-->
 <!--</div>-->
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li class="active"><a ui-sref="purc_usercenter_order" href="#/purc/order">B2B</a></li>
 			<li><a ui-sref="buyer_order" href="#/order">优软商城</a></li>
 		</ul>
 	</div>
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul style="width: 100%">
 			<li ng-class="{'active': storeType=='purcOrder'}"><a ui-sref="purc_usercenter_order">采购订单</a></li>
 			<li ng-class="{'active': storeType=='purcChange'}"><a ui-sref="purc_change_list">采购变更单</a></li>
@@ -604,7 +604,7 @@
 		</ul>
 	</div>
 
-	<div class="oder01">
+	<div class="com_tab tab_top">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
 			<li ng-class="{'active': active=='todo'}" ng-click="setActive('todo')"><a>待提交</a></li>

+ 2 - 4
src/main/webapp/resources/view/usercenter/b2b/order/outorder.html

@@ -480,14 +480,14 @@
 					<!--class="fa fa-file-text fa-fw"></i>导出</a>-->
 		<!--</div>-->
 	<!--</div>-->
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li class="active"><a ui-sref="purc_usercenter_order" href="#/purc/order">B2B</a></li>
 			<li><a ui-sref="buyer_order" href="#/order">优软商城</a></li>
 		</ul>
 	</div>
 
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul style="width: 100%">
 			<li ng-class="{'active': storeType=='purcOrder'}"><a ui-sref="purc_usercenter_order">采购订单</a></li>
 			<li ng-class="{'active': storeType=='purcChange'}"><a ui-sref="purc_change_list">采购变更单</a></li>
@@ -501,8 +501,6 @@
 					<input type="hidden" name="ids" ng-value="localInfo.ids">
 				</form>
 			</li>
-
-
 		</ul>
 	</div>
 

+ 3 - 3
src/main/webapp/resources/view/usercenter/b2b/order/usercenter_order.html

@@ -567,14 +567,14 @@
 		<!--<a href="#" ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i class="fa fa-file-text fa-fw"></i>导出</a>-->
 	<!--</div>-->
 <!--</div>-->
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li class="active"><a ui-sref="purc_usercenter_order" href="#/purc/order">B2B</a></li>
 			<li><a ui-sref="buyer_order" href="#/order">优软商城</a></li>
 		</ul>
 	</div>
 
-	<div class="com_tab" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul style="width: 100%">
 			<li ng-class="{'active': storeType=='purcOrder'}"><a ui-sref="purc_usercenter_order">采购订单</a></li>
 			<li ng-class="{'active': storeType=='purcChange'}"><a ui-sref="purc_change_list">采购变更单</a></li>
@@ -616,7 +616,7 @@
 		<!--</ul>-->
 	<!--</div>-->
 
-	<div class="oder01">
+	<div class="com_tab tab_top">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部<span ng-if="unread.all>0">(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</span></a></li>
 			<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已回复<span  ng-if="unread.replied>0">(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</span></a></li>

+ 659 - 0
src/main/webapp/resources/view/usercenter/b2b/sale_badIn.html

@@ -0,0 +1,659 @@
+<style>
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    border-bottom: 1px solid #e8e8e8;
+  }
+
+  .order-table .sep-row {
+    height: 10px;
+  }
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    background: #f5f5f5;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-code {
+    font-style: normal;
+    font-family: verdana;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid transparent;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #56a022;
+    border-width: 2px;
+  }
+
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-bottom: 1px solid #e6e6e6;
+  }
+
+  .order-table .order-bd>td {
+    padding: 10px 5px;
+    vertical-align: top;
+    position: relative;
+    text-align: center;
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 20px;
+  }
+
+  .input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
+  {
+    height: 26px;
+    padding: 0 5px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px;
+  }
+
+  .input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+
+</style>
+<style>
+  .order-table {
+    background: #fff;
+    width: 100%;
+    /*margin-bottom: 10px;*/
+  }
+  .order-table thead tr {
+    background: #fff;
+  }
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e8e8e8;*/
+    font-size: 14px;
+  }
+
+  /*.order-table .sep-row {*/
+  /*height: 10px;*/
+  /*}*/
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    /*background: #f5f5f5;*/
+    background: #f9f9f9;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-code {
+    font-style: normal;
+    font-family: verdana;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table .order-info {
+    padding-left: 20px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid #e8e8e8;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #3f84f6;
+    border-width: 2px;
+  }
+
+  .order-table>tbody:hover tr.order-bd {
+    background:#f8fafe
+  }
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e6e6e6;*/
+  }
+
+  .order-table .order-bd>td {
+    /*height: 140px;*/
+    vertical-align: middle;
+    position: relative;
+    padding: 25px 0;
+    border-right: 1px solid #e8e8e8;
+  }
+  .order-table .order-bd>td:nth-last-of-type(1) {
+    border-right: 0px
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 31px;
+  }
+
+  .menu .new-dot{
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    font-size: 12px;
+    color: #fff;
+    font-weight: inherit;
+    top: -2px;
+  }
+  .screen .radio-block.date-radio {
+    width: auto
+  }
+  .order-table span,.order-table div {
+    font-size: 14px;
+    color: #333;
+  }
+  .clearfix::after {
+    clear:both;
+    zoom: 1;
+    content: ' ';
+    display: block;
+    visibility: hidden;
+  }
+  .order-table .order-bd .order-number {
+    position: absolute;
+    top: -1px;
+    left: -1px;
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    text-align: center;
+    background: #f9f9f9;
+    font-weight: 500;
+    border: solid 1px #d5d5d5;
+    border-radius: 0 0 10px 0;
+  }
+  .text-trans {
+    top: 30px;
+    right: 25px;
+  }
+  .oder{
+    /*background: #fff;*/
+    /*padding-bottom: 60px;*/
+    position: relative;
+  }
+  .ng-table-pager::after {
+    clear: both;
+    content: ' ';
+    zoom: 1;
+    display: block;
+    visibility: hidden;
+  }
+  .ng-table-pager {
+    padding-right: 20px;
+    padding-top: 50px;
+    margin-right: 0 !important;
+  }
+  .text-mns {
+    padding-right: 15px;
+    position: absolute;
+    bottom: 64px;
+    right: 20px;
+  }
+  .order-table>tbody:hover .operates-status {
+    display: none;
+  }
+  .Boom18 {
+    bottom: 18px
+  }
+</style>
+<div class="block fr user_right"  id="public" style="position: relative">
+  <div class="pro_management device">
+    <div class="com_tab">
+      <ul class="fl">
+        <li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
+        <li class="down-purchase">
+          <span ng-click="exportXls()" style="cursor:pointer">
+              <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
+          </span>
+          <form style="display: none;" id="down-load-purchase" method="get" class="ng-pristine ng-valid">
+            <input type="hidden" name="ids" ng-value="localInfo.ids">
+          </form>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li ng-click="toggleType(0)">查看入库记录</li>
+        <li ng-click="toggleType(2)">采购入库</li>
+        <li class="active" ui-sref="sale_badIn">不良品入库单</li>
+        <li ng-click="toggleType(1)">其它入库</li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+    </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
+
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
+        </div>
+      </div>
+    </div>
+  </div>
+  <table class="order-table block" ng-table="tableParams">
+    <thead>
+    <tr class="header">
+      <th width="175">日期</th>
+      <th width="255">客户</th>
+      <th width="200">流水号</th>
+      <th width="210">送货单号</th>
+      <th>操作</th>
+    </tr>
+    </thead>
+    <tbody ng-repeat="badIn in $data" ng-class="{'toggle-mode': badIn.seleted}" class="outBody">
+    <tr class="outTr">
+      <td class="text-num" title="{{::badIn.date | date: 'yyyy年MM月dd日 hh:mm'}}" >
+        {{::badIn.date | date:'yyyy年MM月dd日   '}}
+      </td>
+      <td title="{{::badIn.badInItems[0].orderItem.order.enterprise.enName}}">
+        {{::badIn.badInItems[0].orderItem.order.enterprise.enName}}
+      </td>
+      <td title="{{::badIn.code}}"  class="text-num">
+        {{::badIn.code}}
+      </td>
+      <td title="{{badIn.sendCode}}">
+        {{badIn.sendCode}}
+      </td>
+      <td style="cursor: pointer;">
+        <span class="btn-toggle" ng-show="badIn.seleted" ng-click="badIn.seleted = !badIn.seleted">收起 <i class="fa fa-angle-up"></i></span>
+        <span ng-click="unfoldClick($data,badIn)" class="btn-toggle" ng-show="!badIn.seleted">展开 <i class="fa fa-angle-down"></i></span>
+      </td>
+
+    <tr ng-if="badIn.seleted">
+      <td colspan="5">
+        <div class="sub-table-head">
+          <table class="wanted-sub-tab table">
+            <thead>
+            <tr>
+              <th width="60">序号</th>
+              <th width="406">产品</th>
+              <th width="120">单价</th>
+              <th width="100">出库数量</th>
+              <th width="120">批号</th>
+              <th width="230">单据信息</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="item in badIn.badInItems">
+              <td style="font-size: 14px;text-align: center">
+                {{$index + 1}}
+              </td>
+              <td class="product" style="text-align: left">
+                <div class="text-num" title="{{::item.orderItem.product.code}}">
+                      <span style="color: #333">
+                        物料编号:{{::item.orderItem.product.code || '-'}}
+                      </span>
+                </div>
+                <div title="{{::item.orderItem.product.title}}">
+                      <span style="color: #333">
+                        物料名称:{{::item.orderItem.product.title || '-'}}
+                      </span>
+                </div>
+                <div style="color: #333 !important;" class="text-muted" title="{{::item.orderItem.product.spec}}" >
+                  物料规格:{{::item.orderItem.product.spec || '-'}}
+                </div>
+              </td>
+              <td>
+                <div class="text-num" title="{{::item.orderPrice}}">
+                  <span ng-if="!isUser" ng-bind="::badIn.currency"></span>
+                  <span ng-if="!isUser" ng-bind="::item.orderPrice"></span>
+                  <span ng-if="isUser">-</span>
+                </div>
+                <div class="text-num" title="{{item.orderItem.taxrate}}%">
+                  税率:<span ng-bind="::item.orderItem.taxrate + '%'" class="text-num"></span>
+                </div>
+              </td>
+              <td class="text-center">
+                <div class="text-num"
+                     title="{{::item.qty}}" ng-bind="::item.qty"></div>
+                <div class="text-num" ng-bind="::item.orderItem.product.unit"></div>
+              </td>
+              <td class="text-center br-l">
+                <div class="text-num"
+                     ng-bind="::item.batchCode"></div>
+              </td>
+              <td class="br-l" colspan="2">
+                <div>单据编号:<a style="color: #5078cb;" title="查看对应采购单详情" ng-href="vendor#/order/{{item.orderItem.order.id}}" ng-bind="::item.orderItem.order.code"></a></div>
+                <div>
+                  第 <span ng-bind="::item.orderItem.number"></span> 行
+                  &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
+                </div>
+              </td>
+            </tr>
+            </tbody>
+          </table>
+        </div>
+    </tr>
+    </tbody>
+    <tbody ng-if="$data.length === 0">
+    <tr>
+      <td colspan="6">
+        <div id="empty">
+          <div class="left_img">
+            <a><img src="static/img/all/empty-cart.png"></a>
+            <a>B2B 商务</a>
+          </div>
+          <div class="right_link">
+            <p>暂无对应的单据</p>
+            <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
+          </div>
+        </div>
+      </td>
+    </tr>
+    </tbody>
+  </table>
+  <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
+    显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
+  </div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+    font-size: 14px;
+    color: #323232;
+
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+    background: #fff;
+    padding-top: 10px;
+    padding-right: 11px;
+    line-height: 32px;
+  }
+  .screen .sreach input {
+    border: #5078cb 1px solid;
+    height: 32px;
+    width: 330px;
+    box-shadow: none;
+  }
+  .screen .sreach a.seek {
+    width: 58px;
+    height: 32px;
+    background: #5078cb;
+    color: #fff;
+    line-height: 32px;
+    float: none;
+    border-radius: 2px;
+    vertical-align: unset;
+  }
+
+</style>

+ 3 - 3
src/main/webapp/resources/view/usercenter/forstore/buyer_material.html

@@ -1056,10 +1056,10 @@
 <div class="user_right fr">
 	<!--货品管理-->
 	<div class="pro_management device">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
-				<li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-				<!--<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>-->
+				<li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+				<li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
 				<!--<li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>-->
 				<!--<li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>-->
 				<!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->

+ 3 - 3
src/main/webapp/resources/view/usercenter/forstore/buyer_order.html

@@ -754,15 +754,15 @@
 	/*/*/
 </style>
 <div class="user_right fr">
-	<div class="com_tab" style="margin-bottom: 10px">
-		<ul class="fl" style="width: 100%">
+	<div class="com_tab">
+		<ul class="fl">
 			<li><a ui-sref="purc_usercenter_order" href="#/purc/order">B2B</a></li>
 			<li class="active"><a ui-sref="buyer_order" href="#/order">优软商城</a></li>
 		</ul>
 	</div>
 	<!--订单中心-->
 	<div class="oder">
-		<div class="oder01" style="margin-bottom: 0px;">
+		<div class="com_tab tab_top" style="margin-bottom: 0;">
 			<ul>
 				<li ng-class="{'active' : status == 'all'}" ng-click="toggleStatus('all')"><a> 所有订单(<em ng-class="{'color-black': !AllOrderInfo['all']}" ng-bind="AllOrderInfo['all'] || 0"></em>)</a></li>
 				<li ng-class="{'active' : status == 'tobepaid'}" ng-click="toggleStatus('tobepaid')"><a>待付款(<em ng-class="{'color-black': !AllOrderInfo['tobepaid']}" ng-bind="AllOrderInfo['tobepaid'] || 0"></em>)</a></li>

+ 1645 - 0
src/main/webapp/resources/view/usercenter/forstore/buyer_storage.html

@@ -0,0 +1,1645 @@
+<!--右侧主体部分-->
+<style>
+    *{-webkit-box-sizing: border-box;  -moz-box-sizing: border-box;  box-sizing: border-box;}
+    label[disabled] {
+        cursor: not-allowed;
+    }
+
+    ul.pagination.ng-table-pagination > li > a > span {
+        height: 17px;
+        line-height: 17px;
+    }
+
+    div.ng-table-pager  input.page-number {
+        vertical-align: inherit;
+        display: inline-block;
+        width: 40px;
+        height: 31px;
+        padding: 6px 6px;
+        font-size: 14px;
+        line-height: 1.42857143;
+        color: #9B9792;
+        text-align: center;
+        background-color: #F6F5F4;
+        background-image: none;
+        border: 1px solid #ccc;
+        border-top-left-radius: 4px;
+        border-bottom-left-radius: 4px;
+        box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
+        transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
+    }
+
+    div.ng-table-pager a.page-a {
+        color: #fff;
+        cursor: pointer;
+        background-color: #4574E8;
+        border-color: #4574E8;
+        padding: 6px 6px;
+        font-size: 14px;
+        border-top-right-radius: 4px;
+        border-bottom-right-radius: 4px;
+        text-decoration: none;
+        height: 31px;
+    }
+
+    div.ng-table-pager div.page-go-block {
+        float: right;
+        margin-left: 20px;
+        margin-top: 15px;
+        font-size: 0px;
+        height: 31px;
+        line-height: 31px;
+    }
+    .filter:hover .hover-show {
+        display: inline-block;
+        z-index: 1000;
+    }
+    .filter:hover .angle-hover-up {
+        -webkit-transform: rotateZ(180deg);
+        -moz-transform: rotateZ(180deg);
+        -o-transform: rotateZ(180deg);
+        -ms-transform: rotateZ(180deg);
+        transform: rotateZ(180deg);
+    }
+    .filter .hover-show{
+        width: 100%;
+        height: auto;
+        position: absolute;
+        background-color: #fff;
+        margin-top: -1px;
+        border: 1px solid #e8e8e8;
+        border-top: none;
+        display: none;
+        left: 0;
+        top: 100%;
+    }
+    .filter .hover-show a{
+        width: 100%;
+        height: 40px;
+        display: inline-block;
+        line-height: 40px;
+        text-align: center;
+        font-size: 14px;
+        font-weight: normal;
+    }
+    .filter .hover-show a:hover{
+        background: #ecf2fd;
+        color: #5078cb !important;
+    }
+    .wid02 .fr .hidden-ellipsis-110 {
+        width: 110px;
+        overflow: hidden;
+        word-break: normal;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+    }
+    .com-out-box{
+        position: fixed;
+        z-index: 2;
+        height: 152px;
+        opacity: 1;
+        background-color: white;
+        width: 310px;
+        -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        margin: -155px 0 0 -75px;
+        top: 55%;
+        left: 50%;
+    }
+    .com-out-box .title{
+        height: 30px;
+        background-color: #5078cb;
+        text-align: right;
+        padding-right: 15px;
+        line-height: 30px;
+    }
+    .com-out-box .title a{
+        color: white;
+        font-size: 16px;
+    }
+    .pay_record .ticket_record_list dl dd{
+        position: relative;
+    }
+    .com-out-box .content{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .com-out-box .content p{
+        line-height: 50px;
+        font-size: 14px;
+        padding-top: 10px;
+    }
+    .com-out-box .content p i{
+        color: #5078cb;
+        font-size: 16px;
+        margin-right: 10px;
+    }
+    .com-out-box .content div{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .com-out-box .content div.red {
+        position: relative;
+        top: -10px;
+    }
+    .com-out-box .content div a{
+        width: 55px;
+        height: 26px;
+        line-height: 26px;
+        display: inline-block;
+        text-align: center;
+        font-size: 14px;
+    }
+    .com-out-box .content div a:first-child{
+        background: #b4b5b9;
+        color: #333;
+        margin-right: 10px;
+    }
+    .com-out-box .content div a:last-child{
+        background: #5078cb;
+        color: #fff;
+    }
+    .com-out-box .content div a:hover{
+        background: #3f7ae3;
+        color: #fff;
+    }
+
+    .check-input{
+        position: relative;
+        padding-left: 15px;
+    }
+    .check-input .check-show{
+        position: absolute;
+        top: 21px;
+        height: 15px;
+        line-height: 15px;
+        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{
+        border-bottom: #cfcfcf 1px solid;
+    }
+    .record-line{
+        /*height: 30px;*/
+        font-size: 12px;
+        line-height: 35px;
+        /* margin-top: 5px; */
+        padding-right: 22px
+    }
+    .wanted_list .pagination{
+        margin: 0;
+    }
+
+    /*编辑*/
+    .vendor-tab .img{
+        width: 60px;
+        height: 60px;
+        border: #e8e8e8 1px solid;
+        overflow: hidden;
+        line-height: 60px;
+        margin-top: 0;
+        border-radius: 3px;
+    }
+    .vendor-tab .img img{
+        width: 60px;
+        height: 60px;
+    }
+    .vendor-tab .img a{
+        margin: 0 !important;
+    }
+    .public-tab.table>tbody>tr>td{
+        font-size: 14px !important;
+        text-align: left !important;
+        border-bottom: #d0e8fd 1px dashed !important ;
+    }
+    .vendor-tab.table td .wid135{
+        width: 143px;
+        margin-left: 7px;
+        position: relative;
+        top: -10px;
+    }
+    .filter a{
+        color: #333 !important;
+    }
+    .vendor-tab.table td .wid135 p{
+        display: block;
+        width: 100%;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+    .vendor-tab.table td .wid135 p em.href {
+        cursor: pointer;
+    }
+    .vendor-tab.table td p{
+        font-size: 14px;
+        text-align: left;
+    }
+    /*.vendor-tab.table>tbody>tr{*/
+    /*height: 252px;*/
+    /*}*/
+    .public-tab.table tbody.bottom-no tr td{
+        border-bottom: none!important ;
+    }
+    .edit-form .form-control{
+        height: 24px;
+        padding: 0;
+        text-align: center;
+        font-size: 12px;
+        border-radius: 3px;
+    }
+    .edit-form select.form-control{
+        padding-left: 10px;
+    }
+    .edit-form div{
+        text-align: left;
+    }
+    .wid88{
+        width: 88px;
+    }
+    .wid48{
+        width: 48px;
+    }
+    .wid85{
+        width: 75px;
+    }
+    .wid68{
+        width: 68px;
+    }
+    .wid40{
+        width: 40px;
+    }
+    .wid25{
+        width: 25px;
+        text-align: center !important;
+        padding-left: 0 !important;
+    }
+    .wid56{
+        width: 56px;
+    }
+    .wid90{
+        width: 90px;
+    }
+    .edit-form td div{
+        float: left;
+        height: 24px;
+        margin-top: 5px;
+        line-height: 24px;
+        width: 100%;
+    }
+    .edit-form td div.margin0{
+        margin-top: 0;
+    }
+    .edit-form td div.margin0 .width45{
+        width: 45px;
+    }
+    .edit-form td div span{
+        float: left;
+    }
+    .edit-form td div span:first-child{
+        margin-right: 2px;
+    }
+    .filter{
+        position: relative;
+    }
+    .edit-form button {
+        width: 56px;
+        height: 24px;
+        border: none;
+        color: #fff;
+        float: left;
+    }
+    .edit-form button.ok {
+        background: #33b401;
+    }
+    .edit-form button.off {
+        background: #f15601;
+        margin-bottom: 5px;
+    }
+    .edit-form button:hover{
+        background: #5078cb;
+    }
+    .public-tab.table>tbody>tr>td.padding0{
+        padding: 8px 0;
+    }
+    .public-tab.table tbody .padding0 div{
+        text-align: center;
+        width: 50px;
+    }
+    .public-tab.table tbody .padding0 div.edit-a{
+        margin-top: -4px;
+    }
+    .public-tab.table tbody .padding0 div.down-a{
+        margin-top: 0;
+    }
+    .public-tab.table tbody .padding0 div.marginL10{
+        margin-left: -10px;
+    }
+    .edit-form .reduce{
+        color: #faa002 !important;
+        margin: 0 !important;
+        margin-left: 2px !important;
+    }
+    .edit-form .add{
+        color: #2ea001 !important;
+        margin: 0 !important;
+    }
+    .public-tab.table tr td{
+        vertical-align: top !important;
+    }
+    .public-tab.table tr td.middle{
+        vertical-align: middle !important;
+        padding-left: 0;
+        position: relative;
+    }
+    .record-line{
+        min-height: 30px;
+        font-size: 12px;
+        line-height: 35px;
+    }
+    .text-center{
+        margin-top: 30px;
+    }
+    .text-center .col-xs-2 img{
+        margin-left: 95px;
+    }
+    .text-center .col-xs-4 p{
+        margin-top: 33px;
+        font-size: 14px;
+    }
+    /*查看大图*/
+    .vendor-tab .img{
+        position: relative;
+    }
+    .vendor-tab .img a{
+        width: 60px;
+        height: 60px;
+        display: inline-block;
+    }
+    .vendor-tab .img .hover-show,.vendor-tab .img .edit-img{
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        background: rgba(0,0,0,.5);
+        left: 0;
+        top: 0;
+        font-size: 12px;
+        margin-top: 0;
+    }
+    .vendor-tab .img .hover-show{
+        top: 60px;
+    }
+    .vendor-tab .img:hover .hover-show{
+        top: 0;
+    }
+    .vendor-tab .img .hover-show a, .vendor-tab .img .edit-img a{
+        width: 100%;
+        height: 100%;
+        display: inline-block;
+        text-align: center;
+        line-height: 55px;
+        color: #fff !important;
+    }
+    .vendor-tab .img .hover-show i{
+        margin-right: 3px;
+    }
+    .vendor-tab .img .edit-img{
+
+    }
+    .vendor-tab .img .edit-img a img{
+        width: 38px;
+        height: 38px;
+    }
+    .vendor-tab .middle .prompt{
+        position: absolute;
+        bottom: 4px;
+        left: 0;
+        font-size: 10px;
+        /*color: #999;*/
+    }
+    .vendor-tab .middle .prompt em{
+        color: #ff0000;
+    }
+    .public-tab.table tr td.middle{
+        overflow: inherit;
+    }
+
+    .public-tab.table tr td.middle .img,.vendor-tab.table td .wid135{
+        margin-top: 15px;
+    }
+    .public-tab.table tr td.middle .img{
+        margin-top: 10px;
+    }
+    .public-tab.table tr td.middle div.marginL20{
+        margin-left: -20px;
+    }
+    .edit-form .error{
+        border: #f00 1px solid !important;
+    }
+
+    .edit-form .error:focus{
+        box-shadow: none;
+    }
+    .public-tab.table>tbody>tr>td div:last-child a.add[disabled], .public-tab.table>tbody>tr>td div:last-child a.reduce[disabled]{
+        color: #c7c7c7 !important;
+    }
+    .pro_management .table>tbody>tr>td div.img a.delete-img {
+        position: absolute;
+        top: 2px;
+        right: 0;
+        z-index: 20;
+        width: 20px;
+        height: 20px;
+        line-height: 16px;
+        border: none;
+    }
+    .pro_management .table>tbody>tr>td div.img a.delete-img i {
+        color: #fff;
+        font-size: 12px;
+    }
+    .public-tab.table tr td div span.switch{
+        width:39px;
+        height: 14px;
+        display: inline-block;
+    }
+    .public-tab.table tr td div span.switch button{
+        border: none;
+        position: relative;
+        top: 6px;
+        left: 5px;
+        width: 39px;
+        height: 14px;
+        background: url(static/img/icon/check-off.png) no-repeat center;
+    }
+    .public-tab.table tr td div span.switch button.active{
+        background: url("static/img/icon/check-ok.png") no-repeat center;
+    }
+
+    .text-overflow {
+        text-overflow: ellipsis;
+        overflow: hidden;
+        width: 100%;
+        white-space: nowrap;
+    }
+    .fa-minus-circle{
+        color: #faa002;
+    }
+
+    .edit-form td div span em.margin5{
+        margin-left: 5px;
+    }
+
+    .content-show .select-item{
+        width: 88px;
+        height: 24px;
+        border: 1px solid #a9a9a9;
+        font-size: 12px;
+        text-align: center;
+        border-radius: 3px;
+        padding-left: 6px;
+    }
+    .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th{
+        padding: 0 0 9px;
+    }
+    .edit-form td div span.marginL40{
+        margin-left: 45px;
+    }
+    .edit-form td div span.marginL27{
+        margin-left: 27px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        width: 92px;
+    }
+    .edit-form td div span.marginL10{
+        margin-left: 10px;
+    }
+    .edit-form td div span.marginL5{
+        margin-left: 5px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        width: 100%;
+    }
+    .filter i {
+        font-size: 16px;
+        font-weight: bold;
+    }
+    .filter:hover .fa-angle-up {
+        -webkit-transform: rotateZ(180deg);
+        -moz-transform: rotateZ(180deg);
+        -o-transform: rotateZ(180deg);
+        -ms-transform: rotateZ(180deg);
+        transform: rotateZ(180deg);
+        color: #5078cb !important;
+    }
+    .modal-open {
+        overflow-y: auto;
+        overflow-x: hidden;
+    }
+    .com_tab ul li{
+        margin-left: 0px;
+        position: relative;
+    }
+    .pro_management .com_tab ul li.active a{
+        border-bottom: #fff;
+        background: #5078cb;
+        color: #fff;
+    }
+    .pro_management .com_tab ul li::after{
+        background: url('static/img/vendor/images/downicon.png');
+        width: 11px;
+        height: 6px;
+        position: absolute;
+        bottom: 0px;
+        left: 50%;
+        content: ' ';
+        margin-left: -5px;
+        display: none;
+    }
+    .pro_management .com_tab ul li.active:after{
+        display: block
+    }
+
+    .pro_management .com_tab2 ul li.active a {
+        background: #fff;
+        color: #666
+    }
+    .pro_management .com_tab ul.distance li {
+        margin-left: 0px;
+        color: #fff
+    }
+    .pro_management .com_tab ul.distance li a{
+        padding: 0 5px;
+    }
+    /*限制非标和标准数量显示过多换行的问题*/
+    .com_tab2 ul.distance li {
+        min-width: 120px;
+        height: 40px;
+        line-height: 12px;
+        text-align: center;
+        color: #5078cb;
+        float: left;
+        margin-left: 25px;
+    }
+    .com_tab ul.distance li:first-child {
+        margin-right: 0px;
+    }
+    .com_tab ul li a {
+        min-width: 110px;
+        width: auto;
+    }
+    .com_tab ul.distance li a.standard{
+        min-width: 120px;
+        color: #666;
+        line-height: 40px;
+        border-top: 3px solid #fff
+    }
+    .com_tab ul.distance li a.standard em{
+        max-width: 45px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        color: #666;
+    }
+    .com_tab ul.distance li:hover a.standard em.count{
+        color: #f15601;
+    }
+    .com_tab ul.distance li.active a.standard em.count,.com_tab ul.distance li.active a.standard{
+        color: #fff;
+    }
+    .com_tab2 ul.distance li.active a.standard em.count, .com_tab2 ul.distance li.active a.standard{
+        color: #f15601
+    }
+    .com_tab2 ul.distance li.active a.standard{
+        border-top: 3px solid #f15601;
+        border-left: 1px solid #f15601;
+        border-right: 1px solid #f15601;
+    }
+    .com_tab ul.distance li.active:hover a.standard{
+        color: #f15601;
+
+    }
+    .com_tab2 ul.distance li a.standard{
+        transition: 0s all;
+    }
+    .com_tab2 ul.distance{
+        /*border-top: 3px solid #f15601;*/
+        border-bottom: 1px solid #f15601;
+    }
+    .com_tab ul.distance li:hover a.standard{
+        /*padding-top: 15px;*/
+        /*width: 112px;*/
+        color: #f15601;
+    }
+
+    .import-product {
+        border-radius: 3px;
+        width: 330px;
+        height: 170px;
+        left: 44%;
+    }
+    .import-product .content > i {
+        font-size: 12px;
+        float: right;
+        margin: 5px 5px 0 0;
+        color: #ddd;
+        cursor: pointer;
+    }
+    .import-product .content p a {
+        color: #5078cb;
+    }
+    .import-product .upload-content {
+        position: relative;
+        left: -29px;
+        margin-bottom: 10px !important;
+    }
+    .import-product .upload-content #upload_text {
+        width: 157px;
+        height: 25px;
+        border: #ccc 1px solid;
+        padding-left: 10px;
+        line-height: 25px;
+        font-size: 14px;
+    }
+    .import-product .upload-content i {
+        background: #5078cb;
+        width: 62px;
+        height: 25px;
+        display: inline-block;
+        text-align: center;
+        color: #fff;
+        line-height: 25px;
+        font-size: 12px;
+        position: absolute;
+        left: 232px;
+        top: 0;
+        border-left: #ccc 1px solid;
+        cursor: pointer;
+    }
+    .import-product .upload-content #uploadCommodity {
+        width: 218px;
+        height: 25px;
+        filter: alpha(opacity=0);
+        -moz-opacity: 0;
+        opacity: 0;
+        position: absolute;
+        left: 77px;
+        top: 0px;
+    }
+    .import-product h5 {
+        margin-bottom: 25px;
+    }
+    .import-result .content p {
+        padding: 0;
+    }
+    .import-result .content p span {
+        color: #5078cb;
+    }
+    .import-result .content h5 {
+        font-size: 14px;
+        margin-bottom: 10px;
+        margin-top: -10px;
+    }
+    .import-result .content h5 span {
+        color: red;
+    }
+    .import-result .content div a {
+        color: #fff !important;
+        background: #5078cb !important;
+    }
+
+    .import-result .content div span {
+        color: #4290f7;
+        cursor: pointer;
+    }
+
+    .Regulpic img {
+        width: 24px;
+        height: 27px;
+    }
+    .edit-form td div.forAdminLook {
+        width: 70px;
+        height: 25px;
+        color: #333;
+        font-size: 14px;
+        border: 1px solid #5078cb;
+        border-radius: 3px;
+        text-align: center;
+        margin-top: 4px;
+    }
+    div.forAdminLook {
+        margin: 0 auto;
+        width: 70px;
+        height: 25px;
+        color: #333;
+        font-size: 14px;
+        border: 1px solid #5078cb;
+        border-radius: 3px;
+        text-align: center;
+        line-height: 25px;
+        margin-top: 4px;
+        position: absolute;
+        background: #fff;
+        display: none
+    }
+    .ToforAdminLook .nopass:hover ~.forAdminLook {
+        display: block;
+    }
+
+    /*search部分*/
+    .search-check{
+        padding: 15px 20px 5px;
+        height:auto;
+    }
+
+    .search-check .search .form-control{
+        width: 300px;
+        float: left;
+        height: 34px;
+        border-radius: 2px;
+        box-shadow: none;
+        border:1px solid #5078cb;
+    }
+
+    .search-check .search button{
+        background: #5078cb;
+        border: #5078cb 1px solid;
+        border-left: none;
+        color: #fff;
+        border-radius: 2px;
+    }
+
+    .search-check .radio-block {
+        line-height: 36px;
+        margin-bottom:10px;
+        font-size: 14px;
+    }
+    .search-check .radio-block .radio-btn{
+        display:inline-block;
+        position: relative;
+        top: 2px;
+    }
+    .search-check .radio-block .radio-btn li{
+        margin: 0 3px;
+        font-size: 14px;
+        line-height: 34px;
+        padding:0 10px;
+        height:34px;
+        border:1px solid #bfbfbf;
+        border-radius:3px;
+        cursor:pointer;
+    }
+    .search-check .radio-block .radio-btn li.active{
+        border:1px solid #5078cb;
+        color:#5078cb;
+    }
+    .search-check .radio-block .radio-date{
+        display:inline-block;
+        vertical-align: middle;
+    }
+    .search-check .radio-block .radio-date .btn-default{
+        border: none;
+    }
+    .search-check .radio-block .radio-date .data-input{
+        float:left;
+        position:relative;
+    }
+    .search-check .radio-block .radio-date .data-input input{
+        width:120px;
+    }
+    .search-check .radio-block .radio-date .data-input button.open {
+        position: absolute;
+        right: 2px;
+        top: 2px;
+        width: 20px;
+        height: 30px;
+        background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+        background-position-x: 100% !important;
+        border: none;
+    }
+    .search-check .radio-block .radio-date > em{
+        float: left;
+        line-height: 32px;
+        color: #999;
+        margin: 0 5px;
+    }
+    .search-check .radio-block .com-check-radio {
+        font-weight: normal;
+        color: #666;
+        margin-right: 13px;
+        cursor:pointer;
+    }
+    .search-check .radio-block .com-check-radio label {
+        margin-bottom:6px;
+    }
+    .search-check .search{
+        width:400px;
+        margin:0;
+    }
+
+    .wanted_list .btn-click{
+        padding: 0 10px;
+        display: inline-block;
+        height: 28px;
+        line-height: 28px;
+        text-align: center;
+        font-size: 14px;
+        color: #666;
+        border:1px solid #bfbfbf;
+        margin: 0 10px;
+    }
+    .wanted_list .btn-click:hover{
+        color: #5078cb;
+        cursor: pointer;
+        border:1px solid #5078cb;
+    }
+    .wanted_list .btn-toggle{
+        text-align: center;
+        font-size: 14px;
+        color: #5078cb;
+        cursor: pointer;
+    }
+
+    .wanted_list .table_title span{
+        display:inline-block;
+        line-height: 46px;
+        height:46px;
+        text-align: center;
+        font-size: 14px;
+        color:#333;
+        font-weight: bold;
+        vertical-align: middle;
+    }
+    .wanted_list .table_title span input{
+        position: relative;
+        top: 5px;
+    }
+    .wanted_list .table_title span:nth-child(1){width:110px;}
+    .wanted_list .table_title span:nth-child(2){width:270px;}
+    .wanted_list .table_title span:nth-child(3){width:130px;}
+    .wanted_list .table_title span:nth-child(4){width:130px;}
+    .wanted_list .table_title span:nth-child(5){width:180px;}
+    .wanted_list .table_title span:nth-child(6){width:180px;}
+    .wanted_list .wanted-tab{
+        table-layout:fixed;
+        background: #fff;
+        font-size: 14px;
+        color:#333;
+    }
+    .wanted_list .wanted-tab caption{
+        font-size: 14px;
+        line-height: 50px;
+        height:50px;
+        background: #fff;
+        padding:0 0 0 15px;
+        color:#333;
+    }
+    .wanted_list .wanted-tab thead>tr>th{
+        padding:0;
+        margin:0;
+        border:0;
+        line-height: 46px;
+        height:46px;
+        text-align: center;
+        font-size: 14px;
+        border-bottom: 1px solid #e9e9e9;
+    }
+    .wanted_list .wanted-tab tbody>tr>td span{
+        vertical-align: middle;
+        width: 100%;
+        display: inline-block;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .wanted_list .wanted-tab tbody>tr>td{
+        padding:0 5px;
+        line-height: 50px;
+        height:50px;
+        vertical-align: middle;
+        text-align: center;
+        font-size: 14px;
+        border-bottom: 1px solid #e9e9e9;
+        white-space: nowrap;
+    }
+    .wanted_list .wanted-tab tbody>tr>td input{
+        width:90%;
+        margin: 0 auto;
+    }
+    .wanted_list .table>tbody+tbody {
+         border:none;
+    }
+    .wanted_list .wanted-tab tbody.toggle-mode{
+        border: 2px solid #5078cb;
+    }
+    .wanted_list .wanted-tab tbody.toggle-mode >tr:first-child{
+        background: #f5f5f5;
+    }
+    .down-form{
+        position:relative;
+    }
+    .down-form .down-key{
+        position:absolute;
+        top:100%;
+        left:5px;
+        z-index:100;
+        width:700px;
+        max-height:360px;
+        overflow-y:hidden;
+        border:1px solid #5078cb;
+        border-radius:5px;
+        background: #fff;
+        box-shadow: 0 0 5px rgba(0,0,0,.8);
+    }
+    .down-form .down-key ul{
+        margin-left:5px;
+    }
+    .down-form .down-key ul li{
+        line-height: 34px;
+        height:34px;
+        font-size: 14px;
+        color:#333;
+        text-align: left;
+        vertical-align:middle;
+    }
+    .down-form .down-key ul li:hover{
+        cursor:pointer;
+        background: #f5f5f5;
+    }
+    .down-form .down-key ul li span{
+        text-align: center;
+        display:inline-block;
+        padding: 0 10px;
+        vertical-align:middle;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .down-form .down-key ul li span:nth-child(1){width:20%;}
+    .down-form .down-key ul li span:nth-child(2){width:20%;}
+    .down-form .down-key ul li span:nth-child(3){width: 30%;}
+    .down-form .down-key ul li span:nth-child(4){width:25%;}
+    .wanted_list .wanted-sub-tab{
+        margin: 0 auto;
+        width: 98%;
+        table-layout: fixed;
+    }
+    .wanted_list .wanted-sub-tab caption span.caption_title{
+        float:right;
+        margin-right:20px;
+        width: auto;
+        text-overflow: unset;
+    }
+    .wanted_list .wanted-sub-tab thead tr th{
+        font-weight: normal;
+    }
+    .wanted_list .wanted-sub-tab tbody tr td span{
+        display:inline-block;
+        width:100%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow:ellipsis;
+        vertical-align: middle;
+    }
+
+    .down-word{
+        height:400px;
+        overflow: hidden;
+    }
+    .down-word ul{
+        position:absolute;
+        top:100%;
+        width:700px;
+        max-height:360px;
+        overflow-y:hidden;
+        border:1px solid #5078cb;
+        border-radius:5px;
+        background: #fff;
+        box-shadow: 0 0 5px rgba(0,0,0,.8);
+        margin-left:5px;
+    }
+    .down-word ul li{
+        line-height: 34px;
+        height:34px;
+        font-size: 14px;
+        color:#333;
+        text-align: left;
+        vertical-align:middle;
+    }
+    .down-word ul li span{
+        display:inline-block;
+        padding: 0 10px;
+        vertical-align:middle;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .down-word ul li span:nth-child(1){width:20%;}
+    .down-word ul li span:nth-child(2){width:20%;}
+    .down-word ul li span:nth-child(3){width: 30%;}
+    .down-word ul li span:nth-child(4){width:25%;}
+    .wanted_list .wanted-tab .logistics-info{
+        text-align: left;
+        padding-left:20px;
+    }
+    .wanted_list .wanted-tab .logistics-info > span{
+        text-align: left;
+        margin-right:10px;
+        width:auto;
+        text-overflow: unset;
+        display:inline-block;
+        overflow: visible;
+    }
+    .wanted_list .wanted-tab .logistics-info span.input-ul {
+        position:relative;
+        display:inline-block;
+        width: 170px;
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul input {
+        vertical-align: middle;
+        width: 170px;
+        height: 28px;
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul>div {
+        position: absolute;
+        top:99%;
+        left:0;
+        -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+        box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul>div>a {
+        width: 170px;
+        background: #e8e8e8;
+        color: #666 !important;
+        display: block;
+        padding: 0 10px;
+        line-height: 40px;
+    }
+    .wanted_list .wanted-tab .logistics-info .input-ul .dropdown-menu {
+        position: unset;
+        float: none;
+        line-height: 23px;
+        max-height: 120px;
+        overflow-y: auto;
+        width: 170px;
+        display: block;
+        overflow-x: hidden;
+        border-radius: 0;
+        box-shadow: none;
+        margin-top: 1px;
+        border: none;
+    }
+
+    .wanted_list .logistics-info .input-ul .dropdown-menu li {
+        font-size: 14px;
+        cursor: pointer;
+        padding-left: 13px;
+    }
+
+    .wanted_list .logistics-info .input-ul .dropdown-menu li:hover,
+    .wanted_list .logistics-info .input-ul .dropdown-menu li.active {
+        color: #fff;
+        background: #5078cb;
+    }
+    .input-ul ::-webkit-scrollbar {
+        padding-left: 0 !important;
+        background-color: #c1c1c1;
+        width: 8px;
+    }
+
+    .input-ul ::-webkit-scrollbar-thumb {
+        -webkit-border-radius: 5px !important;
+        border-radius: 5px !important;
+    }
+    .wanted_list em.red_color{
+        color:#f00;
+    }
+</style>
+<div class="user_right fr" ng-click="clearOtherData()">
+    <!--货品管理-->
+    <div class="pro_management device">
+        <div class="com_tab" style="margin-bottom: 10px">
+            <ul class="fl" style="width: 100%">
+                <li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
+            </ul>
+        </div>
+        <div class="search-check">
+            <div class="radio-block">
+                业务:
+                <ul class="radio-btn list-inline">
+                    <li ng-class="{'active': handleItem === 0}" ng-click="toggleType(0)">查看入库记录</li>
+                    <li ng-class="{'active': handleItem === 2}" ng-click="toggleType(2)">采购入库</li>
+                    <li ui-sref="sale_badIn">不良品入库单</li>
+                    <li ng-class="{'active': handleItem === 1}" ng-click="toggleType(1)">其它入库</li>
+                    <!--<li ng-repeat="item in handleLink"-->
+                        <!--ng-bind="item.name"-->
+                        <!--ng-class="{'active': handleItem === item.id}"-->
+                        <!--ng-if="item.tab === storage_tab"-->
+                        <!--ng-click="toggleType(item.id)"></li>-->
+                </ul>
+            </div>
+            <div class="radio-block" ng-if="handleItem !== 1" style="margin-top: 20px">
+                筛选:
+                <label class="com-check-radio">
+                    <input type="radio" id="oneMonth" name="date" ng-click="setFilters('dateArea', 'oneMonth')" ng-checked="dateArea == 'oneMonth'">
+                    <label for="oneMonth"></label>
+                    30天
+                </label>
+                <label class="com-check-radio">
+                    <input type="radio" id="threeMonth" name="date" ng-click="setFilters('dateArea', 'threeMonth')" ng-checked="dateArea == 'threeMonth'">
+                    <label for="threeMonth"></label>
+                    60天
+                </label>
+                <label class="com-check-radio">
+                    <input type="radio" id="sixMonth" name="date" ng-click="setFilters('dateArea', 'sixMonth')" ng-checked="dateArea == 'sixMonth'">
+                    <label for="sixMonth"></label>
+                    180天
+                </label>
+                <label class="com-check-radio">
+                    <input type="radio" id="autoMonth" name="date" ng-click="setFilters('dateArea', 'autoMonth')" ng-checked="dateArea == 'autoMonth'">
+                    <label for="autoMonth"></label>
+                    自定义
+                </label>
+                <div class="radio-date" ng-show="dateArea === 'autoMonth'">
+                    <div class="data-input">
+                        <input id="start" type="text" ng-model="startDate" readonly="readonly"
+                               class="form-control select-adder" placeholder="起始时间"
+                               datepicker-popup="yyyy-MM-dd"
+                               is-open="condition[0].open"
+                               current-text="今天" clear-text="清除" close-text="关闭"
+                               datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                               ng-click="openDatePicker($event, condition, 0,1)"
+                               ng-change="onDateCondition(1, startDate, endDate)"/>
+                        <button class="open" ng-click="openDatePicker($event, condition, 0)"></button>
+                    </div>
+
+                    <em>–</em>
+                    <div class="data-input">
+                        <input id="end" type="text" ng-model="endDate" readonly="readonly"
+                               class="form-control select-adder" placeholder="结束时间"
+                               datepicker-popup="yyyy-MM-dd"
+                               is-open="condition[1].open"
+                               current-text="今天" clear-text="清除" close-text="关闭"
+                               datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                               ng-click="openDatePicker($event, condition, 1, 2)"
+                               ng-change="onDateCondition(2, startDate, endDate)"/>
+                        <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
+                    </div>
+                </div>
+                <div class="search fr check" ng-if="handleItem !== 1">
+                    <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="{{storage_tab =='outBound' ? ( handleItem === 0 ? '出库单号/买家名称':'订单号/买家名称') : ( handleItem === 0 ? '入库单号/卖家名称':'发货单/卖家名称')}}"/>
+                    <button ng-click="onSearch(keyword)" style="float: left;">搜索</button>
+                </div>
+            </div>
+
+        </div>
+        <!--<div class="com_tab com_tab2" style="margin-bottom: 10px">-->
+            <!--<ul class="fl distance" style="width: 100%">-->
+                <!--<li ng-class="{active : storage_tab == 'inBound'}"  ng-click="toggleStorage('inBound')" title="入库"><a href="" class="standard">入库</a></li>-->
+                <!--<li ng-class="{active : storage_tab =='outBound'}" ng-click="toggleStorage('outBound')" title="出库"><a href="" class="standard">出库</a></li>-->
+            <!--</ul>-->
+        <!--</div>-->
+        <div class="wanted_list">
+            <table class="wanted-tab table" ng-table="storageTableParams">
+                <thead>
+                <tr>
+                    <th width="120" ng-bind="storage_tab === 'inBound' ? '入库单号' : '出库单号'"></th>
+                    <th width="180" ng-bind="storage_tab === 'inBound' ? '发货单' : '订单号'" ng-if="handleItem === 2"></th>
+                    <th width="180" ng-bind="storage_tab === 'inBound' ? '卖家名称' : '买家名称'"></th>
+                    <th class="filter" width="110" ng-if="handleItem === 0">
+                        <a ng-bind="selfSupport">全部类型</a> <i class="fa fa-angle-down fa-angle-up"></i>
+                        <div class="hover-show" ng-if="storage_tab === 'inBound'">
+                            <a ng-click="changeSupportType('INBOUND')" ng-bind="boundType.INBOUND">全部类型</a>
+                            <a ng-click="changeSupportType('OTHER_INBOUND')" ng-bind="boundType.OTHER_INBOUND">其它入库</a>
+                            <a ng-click="changeSupportType('PURCHASE_INBOUND')" ng-bind="boundType.PURCHASE_INBOUND">入库</a>
+                        </div>
+                        <div class="hover-show" ng-if="storage_tab === 'outBound'">
+                            <a ng-click="changeSupportType('OUTBOUND')" ng-bind="boundType.OUTBOUND">全部类型</a>
+                            <a ng-click="changeSupportType('OTHER_OUTBOUND')" ng-bind="boundType.OTHER_OUTBOUND">其它出库</a>
+                            <a ng-click="changeSupportType('SELL_OUTBOUND')" ng-bind="boundType.SELL_OUTBOUND">销售出库</a>
+                        </div>
+                    </th>
+                    <th width="90" ng-if="handleItem !== 2">录入人</th>
+                    <th width="170">录入日期</th>
+                    <th width="170" class="padding0">操作</th>
+                </tr>
+                </thead>
+
+                <!--查看出入库记录-->
+                <tbody ng-if="handleItem === 0" ng-repeat="item in storageList" ng-class="{'toggle-mode': item.seleted}">
+                <tr>
+                    <td ng-bind="item.inOutId">系统自动生成</td>
+                    <td ng-bind="item.affiliatedEnterprise || '-'">深圳有陵县什么 翁一搂的</td>
+                    <td ng-bind="boundType[item.opertatorType]">腌肉入库</td>
+                    <td ng-bind="item.operaterUserName">张三</td>
+                    <td ng-bind="item.createTime | date : 'yyyy-MM-dd: HH:mm:ss'">2018-12-12</td>
+                    <td><span class="btn-toggle" ng-show="item.seleted" ng-click="item.seleted = !item.seleted">收起 <i class="fa fa-angle-up"></i></span><span ng-click="unfoldClick(storageList,item)" class="btn-toggle" ng-show="!item.seleted">展开 <i class="fa fa-angle-down"></i></span></td>
+                </tr>
+                <tr ng-if="item.seleted">
+                    <td colspan="6" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.associateOrderid || item.orid || '-'"></span></span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-show="item.seleted">
+                    <td colspan="6">
+                        <div class="sub-table-head">
+                            <table class="wanted-sub-tab table">
+                                <caption ng-if="item.associateOrderid">
+                                    明细列表:
+                                </caption>
+                                <thead>
+                                <tr>
+                                    <th width="60">序号</th>
+                                    <th width="110">型号</th>
+                                    <th width="130">品牌</th>
+                                    <th>物料名称</th>
+                                    <th width="210">规格</th>
+                                    <th width="130">{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                    <th width="130">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                        <div style="max-height:300px;overflow-y: auto;">
+                            <table class="wanted-sub-tab table">
+                                <tr ng-repeat="(index, list) in item.inOutboundDetails">
+                                    <td width="60" ng-bind="index + 1"></td>
+                                    <td width="110"><span ng-bind="list.cmpCode" title="{{list.cmpCode}}"></span></td>
+                                    <td width="130"><span ng-bind="list.brandEn" title="{{list.brandEn}}"></span></td>
+                                    <td><span ng-bind="list.kindName" title="{{list.kindName}}"></span></td>
+                                    <td width="210"><span ng-bind="list.spec" title="{{list.spec}}"></span></td>
+                                    <td width="130"><span ng-bind="list.qty" title="{{list.qty}}"></span></td>
+                                    <td width="130"><span ng-bind="list.price || '-'" title="{{list.price || '-'}}"></span></td>
+                                </tr>
+                            </table>
+                        </div>
+                    </td>
+                </tr>
+                </tbody>
+
+                <!--其它出入库-->
+                <tbody ng-if="handleItem === 1">
+                <tr style="background:#f5f5f5;">
+                    <td>系统自动生成</td>
+                    <td><input type="text" class="form-control" ng-model="othenParam.enName"></td>
+                    <td ng-bind="userInfo.userName">张三</td>
+                    <td ng-bind="newDate">2018-12-12</td>
+                    <td><a class="btn-click" ng-click="otherAddClick()">确认</a><a class="btn-click" ng-click="otherAddClick('clear')">取消</a></td>
+                </tr>
+                <tr>
+                    <td colspan="5">
+                        <table class="wanted-sub-tab table">
+                            <caption>
+                                明细列表:
+                            </caption>
+                            <thead>
+                            <tr>
+                                <th width="60">序号</th>
+                                <th width="110"><em class="red_color">*</em>型号</th>
+                                <th width="130">品牌</th>
+                                <th>物料名称</th>
+                                <th width="180">规格</th>
+                                <th width="130">库存数(PCS)</th>
+                                <th width="130"><em class="red_color">*</em>{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                <th width="130">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="(index, item) in otherData">
+                                <td ng-bind="index + 1"></td>
+                                <td>
+                                    <span ng-if="!item.newId" ng-bind="item.pcmpcode || '-'" title="{{item.pcmpcode}}"></span>
+                                    <div class="down-form" ng-if="item.newId">
+                                        <input type="text" class="form-control" ng-model="item.key" ng-change="onChange(item, index)">
+                                        <div ng-show="item.show" class="down-key" ng-mouseenter="item.show = true">
+                                            <ul class="list-unstyled">
+                                                <li ng-repeat="list in listData" ng-click="addProductId(list, item)">
+                                                    <span ng-bind="list.pcmpcode" title="{{list.pcmpcode}}">-01k</span>
+                                                    <span ng-bind="list.pbranden || '-'" title="{{list.pbranden}}"></span>
+                                                    <span ng-bind="list.kind || '-'" title="{{list.kind}}"></span>
+                                                    <span ng-bind="list.spec || '-'" title="{{list.spec}}"></span>
+                                                </li>
+                                            </ul>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td><span ng-bind="item.pbranden || '-'" title="{{item.pbranden}}"></span></td>
+                                <td><span ng-bind="item.kind || '-'" title="{{item.kind}}"></span></td>
+                                <td><span ng-bind="item.spec || '-'" title="{{item.spec}}"></span></td>
+                                <td><span ng-bind="item.erpReserve || '-'" title="{{item.erpReserve}}"></span></td>
+                                <td><input type="text" class="form-control" ng-model="item.qty" ng-change="onAmountChange(item, item.qty, 'qty', 9)" ng-blur="chickAmountBlur(item, item.qty)"></td>
+                                <td><input type="text" class="form-control" ng-model="item.price" ng-change="onAmountChange(item, item.price, 'price', 4, 6)"></td>
+                            </tr>
+                            <tr>
+                                <td colspan="7">
+                                    <a class="btn-click" ng-click="addOneTable('one')">增加一条</a>
+                                    <a class="btn-click" ng-click="addOneTable('ten')">增加十条</a>
+                                    <a class="btn-click" ng-click="addOneTable('clear')">清空</a>
+                                </td>
+                            </tr>
+                            </tbody>
+                        </table>
+                    </td>
+                </tr>
+                </tbody>
+
+                <!--采购入库和销售出库-->
+                <tbody ng-if="handleItem === 2" ng-repeat="item in storageList" ng-class="{'toggle-mode': item.seleted}">
+                <tr>
+                    <td>系统自动生成</td>
+                    <td ng-if="storage_tab === 'outBound'"><span ng-bind="item.orderid || '-'" title="{{item.orderid}}"></span></td>
+                    <td ng-if="storage_tab === 'inBound'"><span ng-bind="item.invoiceid || '-'" title="{{item.invoiceid}}"></span></td>
+                    <td ng-if="storage_tab === 'outBound'"><span ng-bind="item.buyentername || item.buyername" title="{{item.buyentername || item.buyername}}"></span></td>
+                    <td ng-if="storage_tab === 'inBound'"><span ng-bind="item.sellername || '-'" title="{{item.sellername || '-'}}"></span></td>
+                    <td ng-bind="item.createtime | date: 'yyyy-MM-dd'"></td>
+                    <td ng-if="!item.seleted"><a class="btn-click" ng-click="item.seleted = !item.seleted;unfoldClick(storageList, item)" ng-bind="storage_tab === 'inBound' ? '收货入库' : '发货出库'"></a></td>
+                    <td ng-if="item.seleted"><a class="btn-click" ng-click="saveOtherCheck(item, storage_tab)">确定</a><a class="btn-click" ng-click="item.seleted = !item.seleted">取消</a></td>
+                </tr>
+                <tr ng-if="item.seleted && storage_tab === 'outBound'">
+                    <td colspan="5" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.orderid || '-'"></span></span>
+                            <span>物流公司 :&nbsp;</span>
+                            <span class="input-ul">
+                                <input id="logistics-input" type="text" class="form-control select-adder" ng-focus="getItemFocus()"
+                                       ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off"
+                                       maxlength="15" readonly="readonly">
+                                <div ng-if="showCompanyName">
+                                  <ul id="ulContent" class="dropdown-menu">
+                                    <li ng-click="showDefaultText()">请选择物流公司</li>
+                                    <li ng-click="showText(data)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
+                                  </ul>
+                                  <a ng-click="addDistributor()">+&nbsp;新增配送商</a>
+                                </div>
+                              </span>
+                            <span style="margin-left:100px;">物流单号 :&nbsp;</span>
+                            <span style="margin-right: 20px; width: 160px;">
+                            <form name="myForm" style="display:inline-block;width:140px;">
+                              <!--ng-pattern="/^[A-Za-z0-9]+$/"-->
+                              <input name="number" type="text" class="form-control" style="height: 28px" ng-model="logistics.number" placeholder="请输入物流单号"
+                                     maxlength="20" autocomplete="off" />
+                            </form>
+                          </span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-if="item.seleted && storage_tab === 'inBound' && item.logistics">
+                    <td colspan="5" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.associateOrderid || item.orid || '-'"></span></span>
+                            <span>物流公司 :&nbsp;</span>
+                            <span class="input-ul" ng-bind="item.logistics.companyName"></span>
+                            <span style="margin-left:100px;">物流单号 :&nbsp;</span>
+                            <span style="margin-right: 20px;" ng-bind="item.logistics.number">
+                            </span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-show="item.seleted">
+                    <td colspan="5">
+                        <div class="sub-table-head">
+                            <table class="wanted-sub-tab table">
+                                <thead>
+                                <tr>
+                                    <th width="60">序号</th>
+                                    <th width="150">型号</th>
+                                    <th width="110">品牌</th>
+                                    <th>物料名称</th>
+                                    <th width="180">规格</th>
+                                    <th width="100" ng-if="storage_tab === 'outBound'">应出库(PCS)</th>
+                                    <th width="100" ng-if="storage_tab === 'outBound'">已出库(PCS)</th>
+                                    <th width="100"><em class="red_color">*</em>{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                    <th width="80">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                        <div style="max-height:300px;overflow-y: auto;">
+                            <!--采购入库数据-->
+                            <table class="wanted-sub-tab table" ng-if="storage_tab === 'inBound'">
+                                <tr ng-repeat="list in item.invoiceDetails">
+                                    <td width="60" ng-bind="$index + 1"></td>
+                                    <td width="150"><span ng-bind="list.cmpCode || '-'" title="{{list.cmpCode}}"></span></td>
+                                    <td width="110"><span ng-bind="list.brandNameEn || '-'" title="{{list.brandNameEn}}"></span></td>
+                                    <td><span ng-bind="list.kiName || '-'" title="{{list.kiName}}"></span></td>
+                                    <td width="180"><span ng-bind="list.spec || '-'" title="{{list.spec}}"></span></td>
+                                    <td width="100"><span ng-bind="list.qty || '-'" title="{{list.qty}}"></span></td>
+                                    <td width="80"><span ng-bind="list.taxUnitprice || '-'" title="{{list.taxUnitprice}}"></span></td>
+                                </tr>
+                            </table>
+                            <!--销售出库数据-->
+                            <table class="wanted-sub-tab table" ng-if="storage_tab === 'outBound'">
+                                <tr ng-repeat="list in item.purchaseDetails">
+                                    <td width="60" ng-bind="$index + 1"></td>
+                                    <td width="150"><span ng-bind="list.cmpCode || '-'" title="{{list.batchCode}}"></span></td>
+                                    <td width="110"><span ng-bind="list.brName || '-'" title="{{list.brName}}"></span></td>
+                                    <td><span ng-bind="list.kiName || '-'" title="{{list.kiName}}"></span></td>
+                                    <td width="180"><span ng-bind="list.spec || '-'" title="{{list.spec}}"></span></td>
+                                    <td width="100" ng-if="storage_tab === 'outBound'"><span ng-bind="list.number || '-'" title="{{list.number}}"></span></td>
+                                    <td width="100" ng-if="storage_tab === 'outBound'"><span ng-bind="list.shipQty || '-'" title="{{list.shipQty}}"></span></td>
+                                    <td width="100">
+                                        <span ng-if="list.number === list.shipQty">-</span>
+                                        <input type="text" ng-pattern="/^[1-9]\d*$/" ng-model="list.sendCount" ng-change="onAmountChange(list, list.sendCount, 'sendCount', 9)" ng-blur="outBlurSendCount(list, list.sendCount)" ng-if="list.number !== list.shipQty" class="form-control">
+                                    </td>
+                                    <td width="80"><span ng-bind="list.taxUnitPrice || '-'" title="{{list.taxUnitPrice}}"></span></td>
+                                </tr>
+                            </table>
+                        </div>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+            <div class="empty" ng-if="handleItem !== 1 && (!storageList || storageList.length == 0)">
+                <p class="empty-img">
+                    <img src="static/img/all/empty-cart.png">
+                </p>
+                <div class="empty-info">
+                    <p class="grey"> 暂无相关记录 </p>
+                    <!--<a href="vendor#/vendor_upload?type=company"><i></i>马上去上传</a>-->
+                </div>
+            </div>
+        </div>
+
+
+
+    </div>
+</div>
+
+<!--下架操作-->
+<div class="com-modal-wrap" ng-if="isSoldOut" ng-click="cancleSoldOut($event)" style="display:none">
+    <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="com-modal-wrap" ng-if="batchStatus" ng-click="cancelBatch($event)" style="display:none">
+    <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 id="image-box"
+     style="display: none">
+    <div class="x-floating-wrap"></div>
+    <div class="x-floating">
+        <div id="item-content">
+            <div class="x-close-wrap"><a href="javascript:void(0);">×</a></div>
+            <div class="img"><img/></div>
+        </div>
+    </div>
+</div>
+
+<div class="com-modal-wrap" ng-show="batchModify" style="display:none">
+    <div class="com-mall-del-box import-product">
+        <div class="content">
+            <i class="fa fa-close" ng-click="batchModify=false"></i>
+            <p><i class="fa fa-exclamation-circle"></i>请先<a ng-click="download()">导出产品信息</a>,将内容修改后重新导入</p>
+            <div class="upload-content">
+                <input type="text" name="txt" id="upload_text">
+                <i>选择文件</i>
+                <input type="file" id="uploadCommodity" ng-file-select="" ng-change="selectFile()" accept="*.xls,*.xlsx" ng-model="myFile" ng-multiple="false" />
+                <!--<input type="file" id="uploadCommodity">-->
+            </div>
+            <h5>温馨提示:仅修改现有产品信息</h5>
+            <div>
+                <a ng-click="batchModify=false">取消</a>
+                <a ng-click="importExcel()">导入</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<div class="com-modal-wrap" ng-show="modifyResult" style="display:none">
+    <div class="com-mall-del-box import-result">
+        <div class="title" ng-click="modifyResult=false">
+            <i></i>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i><span ng-bind="modifyData.success">583</span>个产品修改成功,</p>
+            <h5><span class="red" ng-bind="modifyData.filter">5</span>个产品修改失败!</h5>
+            <div>
+                <a ng-click="modifyResult=false">确定</a>
+                <span ng-if="modifyData.filter" ng-click="downloadExcel()">下载失败列表</span>
+                <form id="load-error" style="display: none;" method="get">
+                    <input type="hidden" name="batch" ng-value="modifyData.batch">
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    /**/
+    .wanted_list .empty{
+        overflow: hidden;
+        width:100%;
+        display:inline-flex;
+        justify-content:center;
+        align-items: center;
+        height: 265px;
+        margin-top: -20px;
+        background: #fff;
+    }
+    .wanted_list .empty-info{
+        line-height: 28px;
+        padding-top:10px;
+        margin-left:10px;
+        text-align:left;
+    }
+    .wanted_list .empty-info .grey{
+        color: #999;
+        font-size: 14px;
+    }
+    .wanted_list .empty .empty-info>a{
+        font-size: 14px;
+        color: #5078cb;
+    }
+    .wanted_list .empty .empty-info i{
+        display: inline-block;
+        width: 18px;
+        height: 18px;
+        margin-right: 5px;
+        background: url('static/img/vendor/images/upload-icon.png')no-repeat 0px 0px;
+        position: relative;
+        top: 7px;
+    }
+    .device .wanted_list a.Regulpica:hover{
+        border-bottom: 0 !important;
+    }
+    .zhezhaodang {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 24px !important;
+        height: 26px !important;
+        background: url('static/img/vendor/images/upload_file_no_pass.png') no-repeat 0px 0px;
+        background-size: 100% 100%;
+        margin-top: 0px !important;;
+    }
+</style>
+<script>
+    // $(function(){
+    //     $(document).on('click', function () {
+    //         if ($(document).scrollTop() + $(window).height() < $('.record-line').offset().top + $('.record-line').height()) {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').addClass('active')
+    //         } else {
+    //             $('.wanted_list .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_list .tab table>tbody>tr.batch-tr').addClass('active')
+    //         } else {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').removeClass('active')
+    //         }
+    //     });
+    // })
+</script>

+ 21 - 79
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -856,64 +856,6 @@
         margin: 15px auto;
         margin-bottom: 10px
     }
-    .oder011 ul li{
-        margin-left: 0px;
-        position: relative;
-    }
-    .oder011 ul li.active a{
-
-        background: #5078cb;
-        color: #fff !important;
-        border:0px;
-        border-bottom: #fff;
-    }
-    .oder01 ul {
-        border-bottom: 0px
-    }
-    .oder011 ul li::after{
-        background: url('static/img/vendor/images/downicon.png');
-        width: 11px;
-        height: 6px;
-        position: absolute;
-        bottom: 0px;
-        left: 50%;
-        content: ' ';
-        margin-left: -5px;
-        display: none;
-    }
-    .oder011 ul li.active:after{
-        display: block
-    }
-    .oder012 ul li.active a{
-        border-top: 3px solid #f15601;
-        border-left: 1px solid #f15601;
-        border-right: 1px solid #f15601;
-    }
-    .oder012 ul li.active:hover a{
-        color: #f15601;
-    }
-    .oder012 ul{
-        /*border-top: 3px solid #f15601;*/
-        border-bottom: 1px solid #f15601;
-    }
-    .oder012 ul li:nth-child(1){
-        margin-left: 0px
-    }
-    .oder012 ul li:hover a{
-        /*padding-top: 15px;*/
-        /*width: 112px;*/
-        color: #f15601;
-    }
-    .oder012 ul li{
-        margin-left: 0px
-    }
-    .oder012 ul li a{
-        border-top: 3px solid rgba(0,0,0,0)
-    }
-    .oder012 ul li.active a{
-        color: #f15601;
-        border-bottom: 1px solid #fff;
-    }
     .vendor-type {
         display: inline-block;
         width: 111px;
@@ -956,29 +898,29 @@
 </style>
 <div class="user_right fr seek-purchase">
     <!--求购询价-->
-    <div class="oder" style="margin-top: 10px;">
-        <div class="oder01 oder011">
-            <ul>
-                <li ng-class="{'active': activeType == 'seekManage'}"><a href="javascript:void(0)" ng-click="toogleType('seekManage')">单个求购</a></li>
-                <li ng-class="{'active': activeType == 'bomManage'}"><a href="javascript:void(0)" ng-click="toogleType('bomManage')">BOM求购</a></li>
-            </ul>
-        </div>
+    <div class="com_tab">
+        <ul class="fl" style="width: 100%">
+            <li><a ui-sref="purc_haseinquiry">定向询价</a></li>
+            <li class="active"><a ui-sref="buyerSeekPurchase">公共询价</a></li>
+        </ul>
     </div>
-    <div class="oder" style="margin-top: 10px;" ng-show="activeType == 'seekManage'">
-        <div class="oder01 oder012">
-            <ul>
-                <li ng-class="{'active': tab == 'waitOffer'}"><a href="javascript:void(0)" ng-click="toogleTab('waitOffer')">待报价</a></li>
-                <li ng-class="{'active': tab == 'offered'}"><a href="javascript:void(0)" ng-click="toogleTab('offered')">已报价</a></li>
-            </ul>
-        </div>
+    <div class="com_tab">
+        <ul>
+            <li ng-class="{'active': activeType == 'seekManage'}"><a href="javascript:void(0)" ng-click="toogleType('seekManage')">单个求购</a></li>
+            <li ng-class="{'active': activeType == 'bomManage'}"><a href="javascript:void(0)" ng-click="toogleType('bomManage')">BOM求购</a></li>
+        </ul>
     </div>
-    <div class="oder" style="margin-top: 10px;" ng-show="activeType == 'bomManage'">
-        <div class="oder01 oder012">
-            <ul>
-                <li ng-class="{'active': bomTab == 'bomList'}"><a href="javascript:void(0)" ng-click="toogleBomTab('bomList')">BOM清单</a></li>
-                <li ng-class="{'active': bomTab == 'seekRecord'}"><a href="javascript:void(0)" ng-click="toogleBomTab('seekRecord')">求购记录</a></li>
-            </ul>
-        </div>
+    <div class="com_tab tab_top" ng-show="activeType == 'seekManage'">
+        <ul>
+            <li ng-class="{'active': tab == 'waitOffer'}"><a href="javascript:void(0)" ng-click="toogleTab('waitOffer')">待报价</a></li>
+            <li ng-class="{'active': tab == 'offered'}"><a href="javascript:void(0)" ng-click="toogleTab('offered')">已报价</a></li>
+        </ul>
+    </div>
+    <div class="com_tab tab_top" ng-show="activeType == 'bomManage'">
+        <ul>
+            <li ng-class="{'active': bomTab == 'bomList'}"><a href="javascript:void(0)" ng-click="toogleBomTab('bomList')">BOM清单</a></li>
+            <li ng-class="{'active': bomTab == 'seekRecord'}"><a href="javascript:void(0)" ng-click="toogleBomTab('seekRecord')">求购记录</a></li>
+        </ul>
     </div>
     <div class="seek-purchase-content" ng-show="activeType == 'seekManage'" style="margin-top:0px">
         <div class="publish-purchase">

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

@@ -36,8 +36,8 @@
             <a href="user#/home"><p ng-class="{'active' : active == 'home'}"><span>买家中心</span></p></a>
             <ul>
                 <!--<li ng-class="{active: active == 'purc_vendorserve'}"><a ui-sref="purc_vendorserve">供应商服务</a></li>-->
-                <li ng-class="{'active' : active == 'seek_purchase'}"><a  ui-sref="buyerSeekPurchase">我的求购</a></li>
-                <li ng-class="{'active' : active == 'purc_haseinquiry'}"><a  ui-sref="purc_haseinquiry">定向询价</a></li>
+                <li ng-class="{'active' : active == 'seek_purchase'}"><a ui-sref="buyerSeekPurchase">采购询价</a></li>
+                <!--<li ng-class="{'active' : active == 'purc_haseinquiry'}"><a ui-sref="purc_haseinquiry">定向询价</a></li>-->
                 <li ng-class="{'active' : active == 'buyer_cart'}"><a  ui-sref="buyer_cart">购物车<em>(<span ng-bind="countCart || 0 | number"></span>)</em></a> </li>
                 <li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">采购订单</a></li>
                 <li ng-class="{'active' : active == 'buyer_pay_center'}"><a  ui-sref="pay_center">应付对账</a></li>

+ 1 - 1
src/main/webapp/resources/view/vendor/b2b/apBill.html

@@ -489,7 +489,7 @@
 </style>
 <!--<link rel="stylesheet" href="static/css/public.css">-->
 <div class="user_right fr" style="position: relative">
-  <div class="com_tab" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li class="active"><a>B2B</a></li>
         <li><a ui-sref="vendorInvoice">优软商城</a></li>

+ 3 - 3
src/main/webapp/resources/view/vendor/b2b/apCheck.html

@@ -499,8 +499,8 @@
 </style>
 <!--<link rel="stylesheet" href="static/css/public.css">-->
 <div class="user_right fr" style="position: relative">
-  <div class="com_tab" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
+  <div class="com_tab">
+    <ul class="fl">
       <li class="active"><a  href="javascript:void(0)">B2B</a></li>
       <li><a ui-sref="pay_center" href="javascript:void(0)">优软商城</a></li>
       <li class="down-purchase" style="margin-right: 0;min-width: 80px">
@@ -514,7 +514,7 @@
 
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 0px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
       <li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已确认(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale/approval.html

@@ -318,14 +318,14 @@
   }
 </style>
 <div class="user_right fr" style="position: relative">
-  <div class="tab_top" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li ng-class="{'active': storeType=='sample'}"><a ui-sref="sale_sample">客户打样申请</a></li>
       <li ng-class="{'active': storeType=='approval'}"><a >客户认定单</a></li>
       <li class="down-purchase" style="float:right;color: #5078cb;margin-right: 5px;cursor:pointer"><span ng-click="exportXls()"><i class="fa fa-file-excel-o fa-fw"></i>导出Excel</span></li>
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 0px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
       <li ng-class="{'active': active=='agreed'}" ng-click="setActive('agreed');"><a>合格</a></li>

+ 5 - 11
src/main/webapp/resources/view/vendor/b2b/sale/customer.html

@@ -110,18 +110,12 @@
 }
 </style>
 <div class="user_right fr">
-	<div class="pane base-info" style="/*max-height: 900px;overflow-y: auto; overflow-x: hidden;*/" id="customer-tab">
-		<div class="com_tab" style="margin-bottom: 10px">
+	<div class="pane base-info" id="customer-tab">
+		<div class="com_tab">
 			<ul class="fl">
-				<li class="active">
-					<a>客户资料</a>
-				</li>
-				<li>
-					<a ui-sref="sale_vendorPerformanceAssess">绩效考核</a>
-				</li>
-				<li class="export" style="cursor:pointer">
-					<a ng-click="exportXls()"><i class="fa fa-file-text fa-fw"></i>导出Excel</a>
-				</li>
+				<li class="active"><a>客户资料</a></li>
+				<li><a ui-sref="sale_vendorPerformanceAssess">绩效考核</a></li>
+				<li class="export" style="cursor:pointer"><a ng-click="exportXls()"><i class="fa fa-file-text fa-fw"></i>导出Excel</a></li>
 			</ul>
 		</div>
 		<div class="body-wrap">

+ 319 - 151
src/main/webapp/resources/view/vendor/b2b/sale/sale_accept.html

@@ -293,10 +293,10 @@
     <div class="com_tab" style="margin-bottom: 10px">
       <ul class="fl" style="width: 100%">
         <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
         <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
         <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -308,178 +308,205 @@
       </ul>
     </div>
   </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li><a href="#/vendor_storage?type=0">查看出库记录</a></li>
+        <li><a href="#/vendor_storage?type=2">销售出库</a></li>
+        <li ui-sref="sale_badOut">不良品出库单</li>
+        <li class="active">客户采购验收单</li>
+        <li ui-sref="sale_returns">客户采购验退单</li>
+        <li ui-sref="sale_makeaccept">客户委外验收单</li>
+        <li ui-sref="sale_makereturns">客户委外验退单</li>
+        <li><a href="#/vendor_storage?type=1">其它出库</a></li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+
     </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
 
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
         </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
       </div>
     </div>
+
   </div>
+
+
   <table class="order-table block" ng-table="tableParams">
     <thead>
     <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">验收数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
+      <th width="175">日期</th>
+      <th width="255">客户</th>
+      <th width="200">流水号</th>
+      <th width="210">送货单号</th>
+      <th>操作</th>
     </tr>
-    <!--<tr class="sep-row">-->
-      <!--<td colspan="6"></td>-->
-    <!--</tr>-->
     </thead>
-    <tbody ng-repeat="accept in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="6">
-        <div class="order-main">
-						<span class="text-num text-bold"
-                  title="{{accept.date | date: 'yyyy年MM月dd日 hh:mm'}}">
-              日期:{{accept.date | date:'yyyy-MM-dd'}}
-            </span> <span
-            title="客户名称">
-          <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{accept.enterprise.enName}}
-        </span>
-          <span>流水号:<a class="text-num order-detail" title="查看详情" ng-bind="accept.code" ui-sref="sale_accept_detail({id: accept.id})"></a></span>
-          <span class="text-info" ng-if="accept.sendCode != null"
-                title="送货单号:{{::accept.sendCode}}"> 送货单号: <span
-              ng-bind="accept.sendCode" class="text-num"></span>
-						</span>
-        </div>
+
+    <tbody ng-repeat="accept in $data" ng-class="{'toggle-mode': accept.seleted}" class="outBody">
+    <tr class="outTr">
+      <td class="text-num" title="{{accept.date | date:'yyyy年MM月dd日'}}" >
+        {{accept.date | date:'yyyy年MM月dd日'    }}
+      </td>
+      <td title="{{accept.enterprise.enName}}">
+        {{accept.enterprise.enName}}
+      </td>
+      <td title="{{::accept.code}}"  class="text-num">
+        <a class="text-num order-detail" title="查看详情" ng-bind="accept.code" ui-sref="sale_accept_detail({id: accept.id})"></a>
+      </td>
+      <td title="{{accept.sendCode}}">
+        {{accept.sendCode}}
+      </td>
+      <td style="cursor: pointer;">
+        <span class="btn-toggle" ng-show="accept.seleted" ng-click="accept.seleted = !accept.seleted">收起 <i class="fa fa-angle-up"></i></span>
+        <span ng-click="unfoldClick($data, accept)" class="btn-toggle" ng-show="!accept.seleted">展开 <i class="fa fa-angle-down"></i></span>
       </td>
     </tr>
-    <tr class="order-bd" ng-repeat="item in accept.acceptItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold">
+    <tr ng-if="accept.seleted">
+      <td colspan="5">
+        <div class="sub-table-head">
+          <table class="wanted-sub-tab table">
+            <thead>
+            <tr>
+              <th width="60">序号</th>
+              <th width="406">产品</th>
+              <th width="120">单价</th>
+              <th width="100">验收数量</th>
+              <th width="120">批号</th>
+              <th width="230">单据信息</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="item in accept.acceptItems">
+              <td style="font-size: 14px;text-align: center">
+                {{$index + 1}}
+              </td>
+              <td class="product" style="text-align: left">
+                <div class="text-num text-bold">
 						<span  title="{{item.orderItem.product.code}}"
-                  ng-if="item.orderItem.product.code != null">
+                               ng-if="item.orderItem.product.code != null" style="color: #333 !important;">
               物料编号:{{item.orderItem.product.code || '-'}}
             </span>
-          <span title="{{item.product.code}}"
-            ng-if="item.orderItem.product.code == null">
+                  <span title="{{item.product.code}}"
+                        ng-if="item.orderItem.product.code == null" style="color: #333 !important;">
             物料编号:{{item.product.code || '-'}}
           </span>
-        </div>
-        <div>
+                </div>
+                <div>
 						<span style="color: #666 !important;" title="{{item.orderItem.product.title}}"
-                  ng-if="item.orderItem.product.title != null">
+                              ng-if="item.orderItem.product.title != null">
               物料名称:{{item.orderItem.product.title || '-'}}
             </span> <span style="color: #666 !important;"
-            title="{{item.product.title}}"
-            ng-if="item.orderItem.product.title == null">
+                          title="{{item.product.title}}"
+                          ng-if="item.orderItem.product.title == null">
           物料名称:{{item.product.title || '-'}}
         </span>
+                </div>
+                <div style="color: #333 !important;" class="text-muted" title="{{item.orderItem.product.spec}}"
+                     ng-if="item.orderItem.product.spec != null">
+                  物料规格:{{item.orderItem.product.spec || '-'}}
+                </div>
+                <div style="color: #333 !important;" class="text-muted" title="{{item.product.spec}}"
+                     ng-if="item.orderItem.product.spec == null">
+                  物料规格:{{item.product.spec || '-'}}
+                </div>
+                <div class="text-bold text-inverse" title="送货工厂"
+                     ng-if="item.orderItem.factory">
+                  送货工厂:<span ng-bind="::item.orderItem.factory"></span>
+                </div>
+              </td>
+              <td>
+                <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
+                  <span ng-bind="::currency(accept.currency)"></span>
+                  <span ng-bind="item.orderPrice || 0 | number : 6"></span>
+                </div>
+                <div class="text-num" title="{{item.taxrate}}%"> 税率:<span ng-bind="::item.taxrate + '%'" class="text-num"></span>
+                </div>
+              </td>
+              <td class="text-center">
+                <div class="text-num " title="{{item.qty}}"
+                     ng-bind="item.qty"></div>
+                <div class="text-num" ng-bind="item.orderItem.product.unit"></div>
+              </td>
+              <td class="text-center br-l">
+                <div class="text-num" ng-bind="item.batchCode"></div>
+              </td>
+              <td class="br-l" colspan="2" ng-if="item.orderItem.order.code">
+                <div>
+                  单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
+                           ng-bind="item.orderItem.order.code"></a>
+                </div>
+                <div>
+                  第 <span ng-bind="item.orderItem.number"></span> 行
+                  &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="item.orderItem.qty"></span>
+                </div>
+              </td>
+              <td class="br-l" colspan="2" ng-if="!item.orderItem">
+                <div>无关联的采购单</div>
+              </td>
+            </tr>
+            </tbody>
+          </table>
         </div>
-        <div style="color: #666 !important;" class="text-muted" title="{{item.orderItem.product.spec}}"
-             ng-if="item.orderItem.product.spec != null">
-          物料规格:{{item.orderItem.product.spec || '-'}}
-        </div>
-        <div style="color: #666 !important;" class="text-muted" title="{{item.product.spec}}"
-             ng-if="item.orderItem.product.spec == null">
-          物料规格:{{item.product.spec || '-'}}
-        </div>
-        <div class="text-bold text-inverse" title="送货工厂"
-             ng-if="item.orderItem.factory">
-          送货工厂:<span ng-bind="::item.orderItem.factory"></span>
-        </div>
-      </td>
-      <td>
-        <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
-          <span ng-bind="::currency(accept.currency)"></span><span
-            ng-bind="item.orderPrice || 0 | number : 6"></span>
-        </div>
-        <div  ng-if="isUser" class="text-num"></div>
-        <div class="text-muted" title="{{item.orderItem.taxrate}}%">
-          <br> 税率:<span ng-bind="::item.orderItem.taxrate + '%'"
-                        class="text-num" ng-if="item.orderItem.taxrate!=null"></span> <span
-            ng-bind="::item.taxrate + '%'" class="text-num"
-            ng-if="item.orderItem.taxrate==null"></span>
-        </div>
-      </td>
-      <td class="text-center">
-        <div class="text-num text-bold" title="{{item.qty}}"
-             ng-bind="item.qty"></div>
-        <div class="text-muted" ng-bind="item.orderItem.product.unit"></div>
-      </td>
-      <td class="text-center br-l">
-        <div class="text-num" ng-bind="item.batchCode"></div>
-      </td>
-      <td class="br-l" colspan="2" ng-if="item.orderItem.order.code">
-        <div>
-          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
-                  ng-bind="item.orderItem.order.code"></a>
-        </div>
-        <div>
-          第 <span ng-bind="item.orderItem.number"></span> 行
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="item.orderItem.qty"></span>
-        </div>
-      </td>
-      <td class="br-l" colspan="2" ng-if="!item.orderItem">
-        <div>无关联的采购单</div>
-      </td>
     </tr>
     </tbody>
     <tbody ng-if="$data.length === 0">
@@ -499,7 +526,148 @@
     </tr>
     </tbody>
   </table>
+
+
   <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
     显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
   </div>
-</div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+  }
+
+</style>

+ 0 - 490
src/main/webapp/resources/view/vendor/b2b/sale/sale_badIn.html

@@ -1,490 +0,0 @@
-<style>
-  .order-table .header>th {
-    height: 38px;
-    text-align: center;
-    /*background: #f5f5f5;*/
-    border-top: 1px solid #e8e8e8;
-    border-bottom: 1px solid #e8e8e8;
-  }
-
-  .order-table .sep-row {
-    height: 10px;
-  }
-
-  .order-table .selector {
-    vertical-align: middle;
-    margin: 0 0 2px 0;
-  }
-
-  .toolbar label {
-    margin-right: 10px;
-    margin-bottom: 0;
-  }
-
-  .toolbar .select_all {
-    margin: 0 6px 0 10px;
-    line-height: 20px;
-  }
-
-  .toolbar .btn {
-    -moz-border-radius: 2px;
-    margin-right: 5px;
-    border: 1px solid #dcdcdc;
-    border-radius: 2px;
-    -webkit-border-radius: 2px;
-  }
-
-  .order-table .order-hd {
-    background: #f5f5f5;
-    height: 40px;
-    line-height: 40px;
-  }
-
-  .order-table .order-hd td.first {
-    padding-left: 20px;
-  }
-
-  .order-table .order-hd .order-main span {
-    margin-right: 8px;
-  }
-
-  .order-table .order-hd .order-code {
-    font-style: normal;
-    font-family: verdana;
-  }
-
-  .order-table .order-hd .order-sum {
-    padding: 0 5px;
-  }
-
-  .order-table>tbody {
-    border: 1px solid transparent;
-  }
-
-  .order-table>tbody:hover {
-    border-color: #56a022;
-    border-width: 2px;
-  }
-
-  .order-table .operates {
-    display: none;
-  }
-
-  .order-table>tbody:hover .operates {
-    display: block;
-  }
-
-  .order-table .order-bd {
-    border-bottom: 1px solid #e6e6e6;
-  }
-
-  .order-table .order-bd>td {
-    padding: 10px 5px;
-    vertical-align: top;
-    position: relative;
-    text-align: center;
-  }
-
-  .order-table .order-bd .product {
-    padding-left: 20px;
-  }
-
-  .input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
-  {
-    height: 26px;
-    padding: 0 5px;
-    font-size: 12px;
-    line-height: 1.5;
-    border-radius: 3px;
-  }
-
-  .input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn {
-    border-top-left-radius: 0;
-    border-bottom-left-radius: 0;
-  }
-
-</style>
-<style>
-  .order-table {
-    background: #fff;
-    width: 100%;
-    /*margin-bottom: 10px;*/
-  }
-  .order-table thead tr {
-    background: #fff;
-  }
-  .order-table .header>th {
-    height: 38px;
-    text-align: center;
-    /*background: #f5f5f5;*/
-    border-top: 1px solid #e8e8e8;
-    /*border-bottom: 1px solid #e8e8e8;*/
-    font-size: 14px;
-  }
-
-  /*.order-table .sep-row {*/
-  /*height: 10px;*/
-  /*}*/
-
-  .order-table .selector {
-    vertical-align: middle;
-    margin: 0 0 2px 0;
-  }
-
-  .toolbar label {
-    margin-right: 10px;
-    margin-bottom: 0;
-  }
-
-  .toolbar .select_all {
-    margin: 0 6px 0 10px;
-    line-height: 20px;
-  }
-
-  .toolbar .btn {
-    -moz-border-radius: 2px;
-    margin-right: 5px;
-    border: 1px solid #dcdcdc;
-    border-radius: 2px;
-    -webkit-border-radius: 2px;
-  }
-
-  .order-table .order-hd {
-    /*background: #f5f5f5;*/
-    background: #f9f9f9;
-    height: 40px;
-    line-height: 40px;
-  }
-
-  .order-table .order-hd td.first {
-    padding-left: 20px;
-  }
-
-  .order-table .order-hd .order-main span {
-    margin-right: 8px;
-  }
-
-  .order-table .order-hd .order-code {
-    font-style: normal;
-    font-family: verdana;
-  }
-
-  .order-table .order-hd .order-sum {
-    padding: 0 5px;
-  }
-
-  .order-table .order-info {
-    padding-left: 20px;
-  }
-
-  .order-table>tbody {
-    border: 1px solid #e8e8e8;
-  }
-
-  .order-table>tbody:hover {
-    border-color: #3f84f6;
-    border-width: 2px;
-  }
-
-  .order-table>tbody:hover tr.order-bd {
-    background:#f8fafe
-  }
-  .order-table .operates {
-    display: none;
-  }
-
-  .order-table>tbody:hover .operates {
-    display: block;
-  }
-
-  .order-table .order-bd {
-    border-top: 1px solid #e8e8e8;
-    /*border-bottom: 1px solid #e6e6e6;*/
-  }
-
-  .order-table .order-bd>td {
-    /*height: 140px;*/
-    vertical-align: middle;
-    position: relative;
-    padding: 25px 0;
-    border-right: 1px solid #e8e8e8;
-  }
-  .order-table .order-bd>td:nth-last-of-type(1) {
-    border-right: 0px
-  }
-
-  .order-table .order-bd .product {
-    padding-left: 31px;
-  }
-
-  .menu .new-dot{
-    width: 20px;
-    height: 20px;
-    line-height: 20px;
-    font-size: 12px;
-    color: #fff;
-    font-weight: inherit;
-    top: -2px;
-  }
-  .screen .radio-block.date-radio {
-    width: auto
-  }
-  .order-table span,.order-table div {
-    font-size: 14px;
-    color: #333;
-  }
-  .clearfix::after {
-    clear:both;
-    zoom: 1;
-    content: ' ';
-    display: block;
-    visibility: hidden;
-  }
-  .order-table .order-bd .order-number {
-    position: absolute;
-    top: -1px;
-    left: -1px;
-    width: 20px;
-    height: 20px;
-    line-height: 20px;
-    text-align: center;
-    background: #f9f9f9;
-    font-weight: 500;
-    border: solid 1px #d5d5d5;
-    border-radius: 0 0 10px 0;
-  }
-  .text-trans {
-    top: 30px;
-    right: 25px;
-  }
-  .oder{
-    /*background: #fff;*/
-    /*padding-bottom: 60px;*/
-    position: relative;
-  }
-  .ng-table-pager::after {
-    clear: both;
-    content: ' ';
-    zoom: 1;
-    display: block;
-    visibility: hidden;
-  }
-  .ng-table-pager {
-    padding-right: 20px;
-    padding-top: 50px;
-    margin-right: 0 !important;
-  }
-  .text-mns {
-    padding-right: 15px;
-    position: absolute;
-    bottom: 64px;
-    right: 20px;
-  }
-  .order-table>tbody:hover .operates-status {
-    display: none;
-  }
-  .Boom18 {
-    bottom: 18px
-  }
-</style>
-<div class="block fr user_right"  id="public" style=" position: relative">
-  <div class="pro_management device">
-    <div class="com_tab" style="margin-bottom: 10px">
-      <ul class="fl" style="width: 100%">
-        <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
-        <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
-        <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
-        <li class="down-purchase">
-          <span ng-click="exportXls()" style="cursor:pointer">
-              <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
-          </span>
-          <form style="display: none;" id="down-load-purchase" method="get" class="ng-pristine ng-valid">
-            <input type="hidden" name="ids" ng-value="localInfo.ids">
-          </form>
-        </li>
-      </ul>
-    </div>
-  </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
-    </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
-
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
-        </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
-      </div>
-    </div>
-  </div>
-  <table class="order-table block" ng-table="tableParams">
-    <thead>
-    <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">入库数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
-    </tr>
-    <!--<tr class="sep-row">-->
-      <!--<td colspan="6"></td>-->
-    <!--</tr>-->
-    </thead>
-    <tbody ng-repeat="badIn in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="3">
-        <div class="order-main">
-          <!--<span> <input type="checkbox" class="selector"
-            ng-model="badIn.$selected">
-          </span> -->
-          <span class="text-num text-bold" title="{{::badIn.date | date: 'yyyy年MM月dd日'}}">
-            日期:{{::badIn.date | date: 'yyyy年MM月dd日'}}
-          </span>
-          <span title="客户名称">
-             <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{::badIn.badInItems[0].orderItem.order.enterprise.enName}}
-          </span>
-          <span>流水号:<span
-              class="text-num" ng-bind="::badIn.code"></span></span>
-        </div>
-      </td>
-      <td colspan="2" class="order-sum">
-        <div class="text-ellipsis" ng-if="badIn.sendCode != null" style="width: 240px;" title="送货单号:{{::badIn.sendCode}}" >
-          <i style="color: #CC9933;" class="fa fa-truck"></i>
-          <span ng-bind="badIn.sendCode"></span>
-        </div>
-      </td>
-      <td colspan="1" class="text-center">
-        <div class="operates">
-          <!-- <a href="#" class="text-muted" title="打印">
-            <i class="fa fa-print fa-lg fa-fw"></i>
-          </a> -->
-        </div>
-      </td>
-    </tr>
-    <tr class="order-bd" ng-repeat="item in badIn.badInItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold">
-          <span title="{{::item.orderItem.product.code}}" >
-            物料编号:{{::item.orderItem.product.code|| '-'}}
-          </span>
-        </div>
-        <div>
-          <span title="{{::item.orderItem.product.title}}" style="color: #666 !important;">
-            物料名称:{{::item.orderItem.product.title|| '-'}}
-          </span>
-        </div>
-        <div class="text-muted" title="{{::item.orderItem.product.spec}}" style="color: #666 !important;">
-          物料规格:{{::item.orderItem.product.spec|| '-'}}
-        </div>
-      </td>
-      <td>
-        <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
-          <span ng-bind="::badIn.currency"></span>
-          <span ng-bind="::item.orderPrice"></span>
-        </div>
-        <div class="text-muted"
-             title="{{item.orderItem.taxrate}}%">
-          <br>
-          税率:<span ng-bind="::item.orderItem.taxrate + '%'" class="text-num"></span>
-        </div>
-      </td>
-      <td class="text-center">
-        <div class="text-num text-bold"
-             title="{{::item.qty}}" ng-bind="::item.qty"></div>
-        <div class="text-muted" ng-bind="::item.orderItem.product.unit"></div>
-      </td>
-      <td class="text-center br-l">
-        <div class="text-num"
-             ng-bind="::item.batchCode"></div>
-      </td>
-      <td class="br-l" colspan="2">
-        <div>单据编号:<a style="color: #5078cb;" title="查看对应采购单详情"  ui-sref="sale_order_detail({id:item.orderItem.order.id})" ng-bind="::item.orderItem.order.code"></a></div>
-        <div>
-          第 <span ng-bind="::item.orderItem.number"></span> 行
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
-        </div>
-      </td>
-    </tr>
-    </tbody>
-    <tbody ng-if="$data.length === 0">
-    <tr>
-      <td colspan="6">
-        <div id="empty">
-          <div class="left_img">
-            <a><img src="static/img/all/empty-cart.png"></a>
-            <a>B2B 商务</a>
-          </div>
-          <div class="right_link">
-            <p>暂无对应的单据</p>
-            <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
-          </div>
-        </div>
-      </td>
-    </tr>
-    </tbody>
-  </table>
-  <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
-    显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
-  </div>
-</div>

+ 323 - 168
src/main/webapp/resources/view/vendor/b2b/sale/sale_badOut.html

@@ -66,6 +66,7 @@
     border-width: 2px;
   }
 
+
   .order-table .operates {
     display: none;
   }
@@ -292,10 +293,10 @@
     <div class="com_tab" style="margin-bottom: 10px">
       <ul class="fl" style="width: 100%">
         <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
         <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
         <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -307,186 +308,340 @@
       </ul>
     </div>
   </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li><a href="#/vendor_storage?type=0">查看出库记录</a></li>
+        <li><a href="#/vendor_storage?type=2">销售出库</a></li>
+        <li class="active">不良品出库单</li>
+        <li ui-sref="sale_accept">客户采购验收单</li>
+        <li ui-sref="sale_returns">客户采购验退单</li>
+        <li ui-sref="sale_makeaccept">客户委外验收单</li>
+        <li ui-sref="sale_makereturns">客户委外验退单</li>
+        <li><a href="#/vendor_storage?type=1">其它出库</a></li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
     </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
 
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
         </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
       </div>
     </div>
   </div>
-
   <table class="order-table block" ng-table="tableParams">
     <thead>
-    <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">出库数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
-    </tr>
-    <!--<tr class="sep-row">-->
-      <!--<td colspan="6"></td>-->
-    <!--</tr>-->
+      <tr class="header">
+        <th width="175">日期</th>
+        <th width="255">客户</th>
+        <th width="200">流水号</th>
+        <th width="210">送货单号</th>
+        <th>操作</th>
+      </tr>
     </thead>
-    <tbody ng-repeat="badOut in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="3">
-        <div class="order-main">
-          <!--<span> <input type="checkbox" class="selector"
-            ng-model="badOut.$selected">
-          </span> -->
-          <span class="text-num text-bold" title="{{::badOut.date | date: 'yyyy年MM月dd日 hh:mm'}}" >
-            日期:{{::badOut.date | date:'yyyy-MM-dd'}}
-          </span>
-          <span title="客户名称">
-            <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{::badOut.badOutItems[0].orderItem.order.enterprise.enName}}
-          </span>
-          <span>流水号:<span
-              class="text-num" ng-bind="::badOut.code"></span></span>
-        </div>
-      </td>
-      <td colspan="2" class="order-sum">
-        <div class="text-ellipsis" ng-if="badOut.sendCode != null" style="width: 240px;" title="送货单号:{{::badOut.sendCode}}" >
-          <i style="color: #CC9933;" class="fa fa-truck"></i>
-          <span ng-bind="badOut.sendCode"></span>
-        </div>
-      </td>
-      <td colspan="1" class="text-center">
-        <div class="operates">
-          <!-- <a href="#" class="text-muted" title="打印">
-            <i class="fa fa-print fa-lg fa-fw"></i>
-          </a> -->
-        </div>
-      </td>
-    </tr>
-    <tr class="order-bd" ng-repeat="item in badOut.badOutItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold" title="{{::item.orderItem.product.code}}">
-          <span >
-            物料编号:{{::item.orderItem.product.code || '-'}}
-          </span>
-        </div>
-        <div title="{{::item.orderItem.product.title}}">
-          <span style="color: #666">
-            物料名称:{{::item.orderItem.product.title || '-'}}
-          </span>
-        </div>
-        <div style="color: #666 !important;" class="text-muted" title="{{::item.orderItem.product.spec}}" >
-          物料规格:{{::item.orderItem.product.spec || '-'}}
-        </div>
-      </td>
-      <td>
-        <div class="text-num" title="{{::item.orderPrice}}">
-          <span ng-if="!isUser" ng-bind="::badOut.currency"></span>
-          <span ng-if="!isUser" ng-bind="::item.orderPrice"></span>
-          <span ng-if="isUser">-</span>
-        </div>
-        <div class="text-muted"
-             title="{{item.orderItem.taxrate}}%">
-          <br>
-          税率:<span ng-bind="::item.orderItem.taxrate + '%'" class="text-num"></span>
-        </div>
-      </td>
-      <td class="text-center">
-        <div class="text-num text-bold"
-             title="{{::item.qty}}" ng-bind="::item.qty"></div>
-        <div class="text-muted" ng-bind="::item.orderItem.product.unit"></div>
-      </td>
-      <td class="text-center br-l">
-        <div class="text-num"
-             ng-bind="::item.batchCode"></div>
-      </td>
-      <td class="br-l" colspan="2">
-        <div>单据编号:<a style="color: #5078cb;" title="查看对应采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})" ng-bind="::item.orderItem.order.code"></a></div>
-        <div>
-          第 <span ng-bind="::item.orderItem.number"></span> 行
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
-        </div>
-      </td>
-    </tr>
+    <tbody ng-repeat="badOut in $data" ng-class="{'toggle-mode': badOut.seleted}" class="outBody">
+      <tr class="outTr">
+        <td class="text-num" title="{{::badOut.date | date: 'yyyy年MM月dd日 hh:mm'}}" >
+          {{::badOut.date | date:'yyyy年MM月dd日   '}}
+        </td>
+        <td title="{{::badOut.badOutItems[0].orderItem.order.enterprise.enName}}">
+          {{::badOut.badOutItems[0].orderItem.order.enterprise.enName}}
+        </td>
+        <td title="{{::badOut.code}}"  class="text-num">
+          {{::badOut.code}}
+        </td>
+        <td title="{{badOut.sendCode}}">
+          {{badOut.sendCode}}
+        </td>
+        <td style="cursor: pointer;">
+          <span class="btn-toggle" ng-show="badOut.seleted" ng-click="badOut.seleted = !badOut.seleted">收起 <i class="fa fa-angle-up"></i></span>
+          <span ng-click="unfoldClick($data,badOut)" class="btn-toggle" ng-show="!badOut.seleted">展开 <i class="fa fa-angle-down"></i></span>
+        </td>
+      </tr>
+      <tr ng-if="badOut.seleted">
+        <td colspan="5">
+          <div class="sub-table-head">
+            <table class="wanted-sub-tab table">
+              <thead>
+                <tr>
+                  <th width="60">序号</th>
+                  <th width="406">产品</th>
+                  <th width="120">单价</th>
+                  <th width="100">出库数量</th>
+                  <th width="120">批号</th>
+                  <th width="230">单据信息</th>
+                </tr>
+              </thead>
+              <tbody>
+                <tr  ng-repeat="item in badOut.badOutItems">
+                  <td style="font-size: 14px;text-align: center">
+                    {{$index + 1}}
+                  </td>
+                  <td class="product" style="text-align: left">
+                    <div class="text-num" title="{{::item.orderItem.product.code}}">
+                      <span style="color: #333">
+                        物料编号:{{::item.orderItem.product.code || '-'}}
+                      </span>
+                    </div>
+                    <div title="{{::item.orderItem.product.title}}">
+                      <span style="color: #333">
+                        物料名称:{{::item.orderItem.product.title || '-'}}
+                      </span>
+                    </div>
+                    <div style="color: #333 !important;" class="text-muted" title="{{::item.orderItem.product.spec}}" >
+                      物料规格:{{::item.orderItem.product.spec || '-'}}
+                    </div>
+                  </td>
+                  <td>
+                    <div class="text-num" title="{{::item.orderPrice}}">
+                      <span ng-if="!isUser" ng-bind="::badOut.currency"></span>
+                      <span ng-if="!isUser" ng-bind="::item.orderPrice"></span>
+                      <span ng-if="isUser">-</span>
+                    </div>
+                    <div class="text-num" title="{{item.orderItem.taxrate}}%">
+                      税率:<span ng-bind="::item.orderItem.taxrate + '%'" class="text-num"></span>
+                    </div>
+                  </td>
+                  <td class="text-center">
+                    <div class="text-num"
+                         title="{{::item.qty}}" ng-bind="::item.qty"></div>
+                    <div class="text-num" ng-bind="::item.orderItem.product.unit"></div>
+                  </td>
+                  <td class="text-center br-l">
+                    <div class="text-num"
+                         ng-bind="::item.batchCode"></div>
+                  </td>
+                  <td class="br-l" colspan="2">
+                    <div>单据编号:<a style="color: #5078cb;" title="查看对应采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})" ng-bind="::item.orderItem.order.code"></a></div>
+                    <div>
+                      第 <span ng-bind="::item.orderItem.number"></span> 行
+                      &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+      </tr>
     </tbody>
     <tbody ng-if="$data.length === 0">
-    <tr>
-      <td colspan="6">
-        <div id="empty">
-          <div class="left_img">
-            <a><img src="static/img/all/empty-cart.png"></a>
-            <a>B2B 商务</a>
-          </div>
-          <div class="right_link">
-            <p>暂无对应的单据</p>
-            <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
+      <tr>
+        <td colspan="6">
+          <div id="empty">
+            <div class="left_img">
+              <a><img src="static/img/all/empty-cart.png"></a>
+              <a>B2B 商务</a>
+            </div>
+            <div class="right_link">
+              <p>暂无对应的单据</p>
+              <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
+            </div>
           </div>
-        </div>
-      </td>
-    </tr>
+        </td>
+     </tr>
     </tbody>
   </table>
   <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
     显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
   </div>
-</div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+    font-size: 14px;
+    color: #323232;
+
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+  }
+
+</style>

+ 317 - 180
src/main/webapp/resources/view/vendor/b2b/sale/sale_make_accept.html

@@ -288,10 +288,10 @@
     <div class="com_tab" style="margin-bottom: 10px">
       <ul class="fl" style="width: 100%">
         <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
         <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
         <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -303,208 +303,345 @@
       </ul>
     </div>
   </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li><a href="#/vendor_storage?type=0">查看出库记录</a></li>
+        <li><a href="#/vendor_storage?type=2">销售出库</a></li>
+        <li ui-sref="sale_badOut" >不良品出库单</li>
+        <li ui-sref="sale_accept">客户采购验收单</li>
+        <li ui-sref="sale_returns">客户采购验退单</li>
+        <li class="active">客户委外验收单</li>
+        <li ui-sref="sale_makereturns">客户委外验退单</li>
+        <li><a href="#/vendor_storage?type=1">其它出库</a></li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+
     </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
 
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
         </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
       </div>
     </div>
+
   </div>
 
+
+
   <table class="order-table block" ng-table="tableParams">
     <thead>
     <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">验收数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
+      <th width="175">日期</th>
+      <th width="255">客户</th>
+      <th width="200">流水号</th>
+      <th width="210">送货单号</th>
+      <th>操作</th>
     </tr>
-    <!--<tr class="sep-row">-->
-      <!--<td colspan="6"></td>-->
-    <!--</tr>-->
-    <!--<tr class="toolbar toolbar-top">
-      <td colspan="5">
-        <div>
-          &lt;!&ndash; 	<label><input ng-disabled="true" type="checkbox"
-            class="selector select_all" ng-model="selectAll">全选</label> <a
-            ng-disabled="true" href="javascript:void(0)"
-            class="btn btn-default btn-xs">批量处理</a> &ndash;&gt;
-        </div> &lt;!&ndash; 分页 &ndash;&gt;
-      </td>
-      <td class="text-center">
-        <a href="make/accept/xls?_state={{active}}&keyword={{keywordXls.keyword}}&fromDate={{keywordXls.fromDate}}&endDate={{keywordXls.endDate}}"
-        target="_self" class="text-simple" title="导出Excel表格"><i
-          class="fa fa-file-text fa-fw"></i>导出</a></td>
-    </tr>
-    <tr class="sep-row">
-      <td colspan="6"></td>
-    </tr>-->
     </thead>
-    <tbody ng-repeat="accept in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="4">
-        <div class="order-main">
-          <!--<span><input type="checkbox" class="selector"
-            ng-model="accept.$selected"></span>-->
-          <span
-              class="text-num text-bold"
-              title="{{accept.date | date:'yyyy年MM月dd日hh:mm'}}">
-            日期:{{accept.date | date:'yyyy-MM-dd'}}
-          </span>
-          <span title="客户名称">
-            <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{accept.acceptItems[0].order.enterprise.enName}}
-          </span>
-          <span>流水号:<span
-              class="text-num" ng-bind="accept.code"></span></span>
-        </div>
+
+    <tbody ng-repeat="accept in $data" ng-class="{'toggle-mode': accept.seleted}" class="outBody">
+    <tr class="outTr">
+      <td class="text-num" title="{{accept.date | date:'yyyy年MM月dd日'}}" >
+        {{accept.date | date:'yyyy年MM月dd日'    }}
       </td>
-      <td colspan="1" class="order-sum">
-        <div class="text-ellipsis" ng-if="accept.sendCode != null"
-             style="width: 120px;" title="送货单号:{{::accept.sendCode}}">
-          <i style="color: #CC9933;" class="fa fa-truck"></i> <span
-            ng-bind="accept.sendCode"></span>
-        </div>
+      <td title="{{accept.acceptItems[0].order.enterprise.enName}}">
+        {{accept.acceptItems[0].order.enterprise.enName}}
       </td>
-      <td colspan="1" class="text-center">
-        <div class="operates">
-          <!-- <a href="#" class="text-muted" title="打印">
-          <i class="fa fa-print fa-lg fa-fw"></i>
-        </a> -->
-        </div>
+      <td title="{{::accept.code}}"  class="text-num">
+        {{::accept.code}}
       </td>
-    </tr>
-    <tr class="order-bd" ng-repeat="item in accept.acceptItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" class="key" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold" title="{{item.order.product.code}}">
-          <span>
-            物料编号:{{item.order.product.code|| '-'}}
-          </span>
-        </div>
-        <div title="{{item.order.product.title}}">
-          <span  style="color: #666 !important;">
-             物料名称:{{item.order.product.title|| '-'}}
-          </span>
-        </div>
-        <div class="text-muted" title="{{item.order.product.spec}}"  style="color: #666 !important;">
-          物料规格:{{item.order.product.spec|| '-'}}
-        </div>
-        <div class="text-bold text-inverse" ng-if="item.order.factory">
-          送货工厂:<span ng-bind="::item.order.factory"></span>
-        </div>
-      </td>
-      <td>
-        <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
-          <span ng-bind="::currency(accept.currency)"></span><span
-            ng-bind="item.orderPrice || 0 | number : 6"></span>
-        </div>
-        <div class="text-muted" title="{{item.taxrate}}%">
-          <br> 税率:<span ng-bind="::item.taxrate + '%'"
-                        class="text-num"></span>
-        </div>
-      </td>
-
-      <td class="text-center">
-        <div class="text-num text-bold" title="{{item.qty}}"
-             ng-bind="item.qty"></div>
-        <div class="text-muted" ng-bind="item.order.product.unit"></div>
+      <td title="{{accept.sendCode}}">
+        {{accept.sendCode}}
       </td>
-      <td class="text-center br-l">
-        <div class="text-num" ng-bind="item.batchCode"></div>
+      <td style="cursor: pointer;">
+        <span class="btn-toggle" ng-show="accept.seleted" ng-click="accept.seleted = !accept.seleted">收起 <i class="fa fa-angle-up"></i></span>
+        <span ng-click="unfoldClick($data, accept)" class="btn-toggle" ng-show="!accept.seleted">展开 <i class="fa fa-angle-down"></i></span>
       </td>
-      <td class="br-l" colspan="2">
-        <div>
-          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
-                  ng-bind="item.order.code"></a>
-        </div>
-        <div>
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="item.order.qty"></span>
+    </tr>
+      <tr ng-if="accept.seleted">
+      <td colspan="5">
+        <div class="sub-table-head">
+          <table class="wanted-sub-tab table">
+            <thead>
+            <tr>
+              <th width="60">序号</th>
+              <th width="406">产品</th>
+              <th width="120">单价</th>
+              <th width="100">验收数量</th>
+              <th width="120">批号</th>
+              <th width="230">单据信息</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="item in accept.acceptItems">
+              <td style="font-size: 14px;text-align: center">
+                {{$index + 1}}
+              </td>
+              <td class="product" style="text-align: left">
+                <div class="text-num" title="{{item.order.product.code|| '-'}}">
+                  <span style="color: #333 !important;" >
+                    物料编号:{{item.order.product.code|| '-'}}
+                  </span>
+                </div>
+                <div title="{{item.order.product.title|| '-'}}">
+                  <span style="color: #333">
+                    物料名称:{{item.order.product.title|| '-'}}
+                  </span>
+                </div>
+                <div style="color: #333 !important;" class="text-muted" title="{{::item.orderItem.product.spec}}" >
+                  物料规格:{{item.order.product.spec|| '-'}}
+                </div>
+                <div class="text-bold text-inverse" ng-if="item.order.factory">
+                  送货工厂:<span ng-bind="::item.order.factory"></span>
+                </div>
+              </td>
+              <td>
+                <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
+                  <span ng-bind="::currency(accept.currency)"></span>
+                  <span ng-bind="item.orderPrice || 0 | number : 6"></span>
+                </div>
+                <div class="text-num" title="{{item.taxrate}}%"> 税率:<span ng-bind="::item.taxrate + '%'" class="text-num"></span>
+                </div>
+              </td>
+              <td class="text-center">
+                <div class="text-num" title="{{item.qty}}"
+                     ng-bind="item.qty"></div>
+                <div class="text-num" ng-bind="item.order.product.unit"></div>
+              </td>
+              <td class="text-center br-l">
+                <div class="text-num" ng-bind="item.batchCode"></div>
+              </td>
+              <td class="br-l" colspan="2">
+                <div>
+                  单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
+                           ng-bind="item.order.code"></a>
+                </div>
+                <div>数量:<span ng-bind="item.order.qty"></span></div>
+              </td>
+            </tr>
+            </tbody>
+          </table>
         </div>
-      </td>
     </tr>
     </tbody>
     <tbody ng-if="$data.length === 0">
-    <tr>
-      <td colspan="6">
-        <div id="empty">
-          <div class="left_img">
-            <a><img src="static/img/all/empty-cart.png"></a>
-            <a>B2B 商务</a>
-          </div>
-          <div class="right_link">
-            <p>暂无对应的单据</p>
-            <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
+      <tr>
+        <td colspan="6">
+          <div id="empty">
+            <div class="left_img">
+              <a><img src="static/img/all/empty-cart.png"></a>
+              <a>B2B 商务</a>
+            </div>
+            <div class="right_link">
+              <p>暂无对应的单据</p>
+              <a href="javascript:location.reload()">点击重新加载<i class="fa fa-refresh"></i></a>
+            </div>
           </div>
-        </div>
-      </td>
-    </tr>
+        </td>
+      </tr>
     </tbody>
   </table>
+
+
   <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
     显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
   </div>
-</div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+  }
+
+</style>

+ 302 - 141
src/main/webapp/resources/view/vendor/b2b/sale/sale_make_returns.html

@@ -293,10 +293,10 @@
     <div class="com_tab" style="margin-bottom: 10px">
       <ul class="fl" style="width: 100%">
         <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
         <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
         <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -308,160 +308,177 @@
       </ul>
     </div>
   </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
+
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li><a href="#/vendor_storage?type=0">查看出库记录</a></li>
+        <li><a href="#/vendor_storage?type=2">销售出库</a></li>
+        <li ui-sref="sale_badOut">不良品出库单</li>
+        <li ui-sref="sale_accept">客户采购验收单</li>
+        <li ui-sref="sale_returns">客户采购验退单</li>
+        <li ui-sref="sale_makeaccept">客户委外验收单</li>
+        <li class="active">客户委外验退单</li>
+        <li><a href="#/vendor_storage?type=1">其它出库</a></li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+
     </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
 
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
         </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
       </div>
     </div>
+
   </div>
+
+
   <table class="order-table block" ng-table="tableParams">
     <thead>
     <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">验退数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
+      <th width="285">日期</th>
+      <th width="285">客户</th>
+      <th width="270">流水号</th>
+      <th>操作</th>
     </tr>
     </thead>
-    <tbody ng-repeat="returns in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="4">
-        <div class="order-main">
-          <span><!--<input type="checkbox" class="selector" ng-model="returns.$selected">--></span>
-          <span class="text-num text-bold"
-                title="{{::returns.date | date: 'yyyy年MM月dd日 hh:mm'}}">
-            日期:{{::returns.date | date:'yyyy-MM-dd'}}
-          </span>
-          <span title="客户名称">
-             <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{::returns.returnItems[0].order.enterprise.enName}}
-          </span>
-          <span>流水号:<span
-              class="text-num" ng-bind="::returns.code"></span></span>
-        </div>
-      </td>
-      <td colspan="1" class="order-sum">
-        <div class="text-ellipsis" ng-if="returns.sendCode != null"
-             style="width: 120px;" title="送货单号:{{::returns.sendCode}}">
-          <i style="color: #CC9933;" class="fa fa-truck"></i> <span
-            ng-bind="returns.sendCode"></span>
-        </div>
-      </td>
-      <td colspan="1" class="text-center">
-        <div class="operates">
-          <!-- <a href="#" class="text-muted" title="打印">
-          <i class="fa fa-print fa-lg fa-fw"></i>
-        </a> -->
-        </div>
-      </td>
-    </tr>
-    <tr class="order-bd" ng-repeat="item in returns.returnItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold" title="{{::item.order.product.code}}">
-          <span>物料编号:{{::item.order.product.code || '-'}}</span>
-        </div>
-        <div title="{{::item.order.product.title}}">
-          <span style="color: #666 !important;">
-            物料名称:{{::item.order.product.title || '-'}}
-          </span>
-        </div>
-        <div class="text-muted" title="{{::item.order.product.spec}}" style="color: #666 !important;">
-          物料规格:{{::item.order.product.spec || '-'}}
-        </div>
-        <div class="text-bold text-inverse" ng-if="item.order.factory">送货工厂:<span ng-bind="::item.order.factory"></span></div>
+
+    <tbody ng-repeat="returns in $data" ng-class="{'toggle-mode': returns.seleted}" class="outBody">
+    <tr class="outTr">
+      <td class="text-num" title="{{::returns.date | date:'yyyy年MM月dd'}}" >
+        {{::returns.date | date:'yyyy年MM月dd'}}
       </td>
-      <td>
-        <div ng-if="!isUser" class="text-num" title="{{::item.orderPrice}}">
-          <span ng-bind="::currency(returns.currency)"></span><span
-            ng-bind="::item.orderPrice | number:6"></span>
-        </div>
-        <div class="text-muted" title="{{item.taxrate}}%">
-          <br> 税率:<span ng-bind="::item.taxrate + '%'"
-                        class="text-num"></span>
-        </div>
+      <td title="{{::returns.returnItems[0].order.enterprise.enName}}">
+        {{::returns.returnItems[0].order.enterprise.enName}}
       </td>
-      <td class="text-center">
-        <div class="text-num text-bold" title="{{item.qty}}"
-             ng-bind="item.qty"></div>
-        <div class="text-muted" ng-bind="item.order.product.unit"></div>
+      <td title="{{::returns.code}}"  class="text-num">
+        {{::returns.code}}
       </td>
-      <td class="text-center br-l">
-        <div class="text-num" ng-bind="item.batchCode"></div>
+      <td style="cursor: pointer;">
+        <span class="btn-toggle" ng-show="returns.seleted" ng-click="returns.seleted = !returns.seleted">收起 <i class="fa fa-angle-up"></i></span>
+        <span ng-click="unfoldClick($data, returns)" class="btn-toggle" ng-show="!returns.seleted">展开 <i class="fa fa-angle-down"></i></span>
       </td>
-      <td class="br-l" colspan="2">
-        <div>
-          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
-                  ng-bind="::item.order.code"></a>
-        </div>
-        <div>
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.order.qty"></span>
+    </tr>
+    <tr ng-if="returns.seleted">
+      <td colspan="4">
+        <div class="sub-table-head">
+          <table class="wanted-sub-tab table">
+            <thead>
+            <tr>
+              <th width="60">序号</th>
+              <th width="406">产品</th>
+              <th width="120">单价</th>
+              <th width="100">验退数量</th>
+              <th width="120">批号</th>
+              <th width="230">单据信息</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="item in returns.returnItems">
+              <td style="font-size: 14px;text-align: center">
+                {{$index + 1}}
+              </td>
+              <td class="product" style="text-align: left">
+                <div class="text-num" title="{{::item.order.product.code}}">
+                  <span style="color: #333 !important;">物料编号:{{::item.order.product.code || '-'}}</span>
+                </div>
+                <div title="{{::item.order.product.title}}">
+                  <span style="color: #333 !important;">
+                    物料名称:{{::item.order.product.title || '-'}}
+                  </span>
+                </div>
+                <div class="text-muted" title="{{::item.order.product.spec}}" style="color: #333 !important;">
+                  物料规格:{{::item.order.product.spec || '-'}}
+                </div>
+                <div class="text-bold text-inverse" ng-if="item.order.factory">送货工厂:<span ng-bind="::item.order.factory"></span></div>
+              </td>
+              <td>
+                <div ng-if="!isUser" class="text-num" title="{{::item.orderPrice}}">
+                  <span ng-bind="::currency(returns.currency)"></span><span
+                        ng-bind="::item.orderPrice | number:6"></span>
+                </div>
+                <div class="text-num" title="{{item.taxrate}}%">税率:<span ng-bind="::item.taxrate + '%'"></span>
+                </div>
+              </td>
+              <td class="text-center">
+                <div class="text-num" title="{{item.qty}}"
+                     ng-bind="item.qty"></div>
+                <div class="text-num" ng-bind="item.order.product.unit"></div>
+              </td>
+              <td class="text-center br-l">
+                <div class="text-num" ng-bind="item.batchCode"></div>
+              </td>
+              <td class="br-l" colspan="2">
+                <div>
+                  单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
+                           ng-bind="::item.order.code"></a>
+                </div>
+                <div>数量:<span ng-bind="::item.order.qty"></span>
+                </div>
+              </td>
+            </tr>
+            </tbody>
+          </table>
         </div>
-      </td>
     </tr>
     </tbody>
     <tbody ng-if="$data.length === 0">
@@ -481,7 +498,151 @@
     </tr>
     </tbody>
   </table>
+
+
   <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
     显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
   </div>
-</div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+    font-size: 14px;
+    color: #323232;
+
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+  }
+
+</style>

+ 311 - 150
src/main/webapp/resources/view/vendor/b2b/sale/sale_returns.html

@@ -2,7 +2,7 @@
   .order-table .header>th {
     height: 38px;
     text-align: center;
-    background: #f5f5f5;
+    /*background: #f5f5f5;*/
     border-top: 1px solid #e8e8e8;
     border-bottom: 1px solid #e8e8e8;
   }
@@ -292,10 +292,10 @@
     <div class="com_tab" style="margin-bottom: 10px">
       <ul class="fl" style="width: 100%">
         <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
         <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
         <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -307,170 +307,188 @@
       </ul>
     </div>
   </div>
-  <div class="tab_top" style="margin-bottom: 10px">
-    <ul class="fl" style="width: 100%">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
-      <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
-        <label for="oneMonth"></label>
-        30天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
-        <label for="threeMonth"></label>
-        90天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
-        <label for="sixMonth"></label>
-        180天
-      </label>
-      <label class="com-check-radio">
-        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
-        <label for="autoMonth"></label>
-        自定义
-      </label>
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li><a href="#/vendor_storage?type=0">查看出库记录</a></li>
+        <li><a href="#/vendor_storage?type=2">销售出库</a></li>
+        <li ui-sref="sale_badOut" >不良品出库单</li>
+        <li ui-sref="sale_accept">客户采购验收单</li>
+        <li class="active">客户采购验退单</li>
+        <li ui-sref="sale_makeaccept">客户委外验收单</li>
+        <li ui-sref="sale_makereturns">客户委外验退单</li>
+        <li><a href="#/vendor_storage?type=1">其它出库</a></li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+
     </div>
-    <div class="sreach fr">
-      <div ng-show="autoMonth" class="date fl">
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
-                 class="form-control select-adder" placeholder="起始时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
-        </div>
+    <div class="screen check-filter">
+      <div class="radio-block date-radio">
+        筛选:
+        <label class="com-check-radio">
+          <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+          <label for="oneMonth"></label>
+          30天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+          <label for="threeMonth"></label>
+          90天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+          <label for="sixMonth"></label>
+          180天
+        </label>
+        <label class="com-check-radio">
+          <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+          <label for="autoMonth"></label>
+          自定义
+        </label>
+      </div>
+      <div class="sreach fr">
+        <div ng-show="autoMonth" class="date fl">
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateFrom"
+                   class="form-control select-adder" placeholder="起始时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$fromOpened"
+                   max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+          </div>
 
-        <em>–</em>
-        <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
-                 class="form-control select-adder" placeholder="结束时间"
-                 datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
-                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          <em>–</em>
+          <div class="data-input">
+            <input type="text" ng-model="condition.dateTo"
+                   class="form-control select-adder" placeholder="结束时间"
+                   datepicker-popup="yyyy-MM-dd"
+                   is-open="condition.$toOpened"
+                   min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                   ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                   ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+            />
+            <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+          </div>
+        </div>
+        <div class="sreach-input fr">
+          <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
         </div>
-      </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch()"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
       </div>
     </div>
   </div>
+
   <table class="order-table block" ng-table="tableParams">
     <thead>
     <tr class="header">
-      <th>产品</th>
-      <th width="120">单价</th>
-      <th width="100">验退数量</th>
-      <th width="120">批号</th>
-      <th width="140">单据信息</th>
-      <th width="70">操作</th>
+      <th width="175">日期</th>
+      <th width="255">客户</th>
+      <th width="200">流水号</th>
+      <th width="210">送货单号</th>
+      <th>操作</th>
     </tr>
-    <!--<tr class="sep-row">-->
-      <!--<td colspan="6"></td>-->
-    <!--</tr>-->
     </thead>
-    <tbody ng-repeat="returns in $data">
-    <tr class="order-hd">
-      <td class="first" colspan="4">
-        <div class="order-main">
-          <!--<span> <input type="checkbox" class="selector"
-            ng-model="returns.$selected">
-          </span> --><span class="text-num text-bold"
-                             title="{{::returns.date | date: 'yyyy年MM月dd日 hh:mm'}}"
-                             >
-          日期:{{::returns.date | date:'yyyy-MM-dd'}}
-        </span>
-          <span title="客户名称" ng-if="returns.returnItems[0].orderItem">
-            <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;"> {{::returns.returnItems[0].orderItem.order.enterprise.enName}}
-          </span>
-          <span title="客户名称" ng-if="!returns.returnItems[0].orderItem"><img src="static/img/user/images/shop_home.png" style="margin-right: 5px;"> {{returns.enName}}</span>
-          <span>流水号:<a title="查看详情"
-                       class="text-num order-detail" ng-bind="::returns.code" ui-sref="sale_return_detail({id: returns.id})"></a></span>
-        </div>
-      </td>
-      <td colspan="1" class="order-sum">
-        <div class="text-ellipsis" ng-if="returns.sendCode != null" title="送货单号:{{::returns.sendCode}}">
-          <i style="color: #CC9933;" class="fa fa-truck"></i> <span
-            ng-bind="returns.sendCode"></span>
-        </div>
+
+    <tbody ng-repeat="returns in $data" ng-class="{'toggle-mode': returns.seleted}" class="outBody">
+    <tr class="outTr">
+      <td class="text-num" title="{{::returns.date | date: 'yyyy年MM月dd日'}}" >
+        {{::returns.date | date: 'yyyy年MM月dd日'}}
       </td>
-      <td colspan="1" class="text-center">
-        <div class="operates">
-          <!-- <a href="#" class="text-muted" title="打印">
-          <i class="fa fa-print fa-lg fa-fw"></i>
-        </a> -->
-        </div>
+      <td ng-if="returns.returnItems[0].orderItem" title="{{::returns.returnItems[0].orderItem.order.enterprise.enName}}">
+        {{::returns.returnItems[0].orderItem.order.enterprise.enName}}
       </td>
-    </tr>
-    <tr class="order-bd" ng-repeat="item in returns.returnItems">
-      <td class="product" style="text-align: left">
-        <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}" title="第{{$index + 1}}行">{{$index + 1}}</div>
-        <div class="text-num text-bold">
-          <span>
-            物料编号:{{::item.product.code|| '-'}}
-          </span>
-        </div>
-        <div>
-          <span title="{{::item.product.title}}" style="color: #666 !important;">
-            物料名称:{{::item.product.title|| '-'}}
-          </span>
-        </div>
-        <div class="text-muted" title="{{::item.product.spec}}" style="color: #666 !important;">
-          物料规格:{{::item.product.spec|| '-'}}
-        </div>
-        <div class="text-bold text-inverse" title="送货工厂"
-             ng-if="item.orderItem.factory">
-          送货工厂:<span ng-bind="::item.orderItem.factory"></span>
-        </div>
+      <td ng-if="!returns.returnItems[0].orderItem" title="{{returns.enName}}">
+        {{returns.enName}}
       </td>
-      <td>
-        <div ng-if="!isUser" class="text-num" title="{{::item.orderPrice}}">
-          <span ng-bind="::currency(returns.currency)"></span><span
-            ng-bind="::item.orderPrice | number:6"></span>
-        </div>
-        <div class="text-muted" title="{{item.taxrate}}%">
-          <br> 税率:<span ng-bind="::item.taxrate + '%'" class="text-num"></span>
-        </div>
+      <td title="{{::returns.code}}"  class="text-num">
+        <a class="text-num order-detail" title="查看详情" ng-bind="returns.code" ui-sref="sale_return_detail({id: returns.id})"></a>
       </td>
-      <td class="text-center">
-        <div class="text-num text-bold" title="{{::item.qty}}"
-             ng-bind="::item.qty"></div>
-        <div class="::text-muted" ng-bind="::item.orderItem.product.unit"></div>
+      <td title="{{returns.sendCode}}">
+        {{returns.sendCode}}
       </td>
-      <td class="text-center br-l">
-        <div class="text-num" ng-bind="::item.batchCode"></div>
+      <td style="cursor: pointer;">
+        <span class="btn-toggle" ng-show="returns.seleted" ng-click="returns.seleted = !returns.seleted">收起 <i class="fa fa-angle-up"></i></span>
+        <span ng-click="unfoldClick($data, returns)" class="btn-toggle" ng-show="!returns.seleted">展开 <i class="fa fa-angle-down"></i></span>
       </td>
-      <td class="br-l" colspan="2">
-        <div>
-          单据编号:<a  style="color: #5078cb;"  class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
-                  ng-bind="::item.orderItem.order.code"></a>
-        </div>
-        <div>
-          第 <span ng-bind="::item.orderItem.number"></span> 行
-          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
+    </tr>
+    <tr ng-if="returns.seleted">
+      <td colspan="5">
+        <div class="sub-table-head">
+          <table class="wanted-sub-tab table">
+            <thead>
+            <tr>
+              <th width="60">序号</th>
+              <th width="406">产品</th>
+              <th width="120">单价</th>
+              <th width="100">验退数量</th>
+              <th width="120">批号</th>
+              <th width="230">单据信息</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="item in returns.returnItems">
+              <td style="font-size: 14px;text-align: center">
+                {{$index + 1}}
+              </td>
+              <td class="product" style="text-align: left">
+                <div class="text-num">
+                  <span  style="color: #333 !important;">
+                    物料编号:{{::item.product.code|| '-'}}
+                  </span>
+                </div>
+                <div>
+                  <span title="{{::item.product.title}}" style="color: #333 !important;">
+                    物料名称:{{::item.product.title|| '-'}}
+                  </span>
+                </div>
+                <div class="text-muted" title="{{::item.product.spec}}" style="color: #333 !important;">
+                  物料规格:{{::item.product.spec|| '-'}}
+                </div>
+                <div class="text-bold text-inverse" title="送货工厂"
+                     ng-if="item.orderItem.factory">
+                  送货工厂:<span ng-bind="::item.orderItem.factory"></span>
+                </div>
+              </td>
+              <td>
+                <div ng-if="!isUser" class="text-num" title="{{::item.orderPrice}}">
+                  <span ng-bind="::currency(returns.currency)"></span><span
+                        ng-bind="::item.orderPrice | number:6"></span>
+                </div>
+                <div class="text-num" title="{{item.taxrate}}%">税率 :<span ng-bind="::item.taxrate + '%'" class="text-num"></span>
+                </div>
+              </td>
+              <td class="text-center">
+                <div class="text-num" title="{{::item.qty}}"
+                     ng-bind="::item.qty"></div>
+                <div class="::text-num" ng-bind="::item.orderItem.product.unit"></div>
+              </td>
+              <td class="text-center br-l">
+                <div class="text-num" ng-bind="::item.batchCode"></div>
+              </td>
+              <td class="br-l" colspan="2">
+                <div>
+                  单据编号:<a  style="color: #5078cb;"  class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
+                           ng-bind="::item.orderItem.order.code"></a>
+                </div>
+                <div>
+                  第 <span ng-bind="::item.orderItem.number"></span> 行
+                  &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>
+                </div>
+              </td>
+            </tr>
+            </tbody>
+          </table>
         </div>
-      </td>
     </tr>
     </tbody>
     <tbody ng-if="$data.length === 0">
@@ -490,7 +508,150 @@
     </tr>
     </tbody>
   </table>
+
   <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
     显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
   </div>
-</div>
+</div>
+<style>
+  .order-table .header>th {
+    height: 50px;
+  }
+  .toggle-mode {
+    border-color: #3f84f6 !important;
+    border-width: 2px !important;
+  }
+  .order-table tbody.outBody tr.outTr td {
+    padding: 0 5px;
+    line-height: 50px;
+    height: 50px;
+    vertical-align: middle;
+    text-align: center;
+    font-size: 14px;
+    border-bottom: 1px solid #e9e9e9;
+    white-space: nowrap;
+  }
+  .table>thead>tr>th {
+    vertical-align: middle;
+    font-size: 14px;
+    color: #323232;
+
+  }
+  .order-table tbody.toggle-mode >tr:first-child {
+    background: #f5f5f5;
+  }
+  .order-table tbody>tr>td span {
+    vertical-align: middle;
+    width: 100%;
+    /*display: inline-block;*/
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .order-table .btn-toggle {
+    text-align: center;
+    font-size: 14px;
+    color: #5078cb;
+    cursor: pointer;
+  }
+  /*search部分*/
+  .search-check{
+    padding: 15px 20px 5px;
+    height:auto;
+  }
+
+  .search-check .search .form-control{
+    width: 300px;
+    float: left;
+    height: 34px;
+    border-radius: 2px;
+    box-shadow: none;
+    border:1px solid #5078cb;
+  }
+
+  .search-check .search button{
+    background: #5078cb;
+    border: #5078cb 1px solid;
+    border-left: none;
+    color: #fff;
+    border-radius: 2px;
+  }
+
+  .search-check .radio-block {
+    line-height: 36px;
+    margin-bottom:10px;
+    font-size: 14px;
+  }
+  .search-check .radio-block .radio-btn{
+    display:inline-block;
+    position: relative;
+    top: 2px;
+  }
+  .search-check .radio-block .radio-btn li{
+    margin: 0 3px;
+    font-size: 14px;
+    line-height: 34px;
+    padding:0 10px;
+    height:34px;
+    border:1px solid #bfbfbf;
+    border-radius:3px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .radio-btn li a{
+    color: #323232
+  }
+  .search-check .radio-block .radio-btn li:hover {
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li:hover a{
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-btn li.active{
+    border:1px solid #5078cb;
+    color:#5078cb;
+  }
+  .search-check .radio-block .radio-date{
+    display:inline-block;
+    vertical-align: middle;
+  }
+  .search-check .radio-block .radio-date .btn-default{
+    border: none;
+  }
+  .search-check .radio-block .radio-date .data-input{
+    float:left;
+    position:relative;
+  }
+  .search-check .radio-block .radio-date .data-input input{
+    width:120px;
+  }
+  .search-check .radio-block .radio-date .data-input button.open {
+    position: absolute;
+    right: 2px;
+    top: 2px;
+    width: 20px;
+    height: 30px;
+    background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+    background-position-x: 100% !important;
+    border: none;
+  }
+  .search-check .radio-block .radio-date > em{
+    float: left;
+    line-height: 32px;
+    color: #999;
+    margin: 0 5px;
+  }
+  .search-check .radio-block .com-check-radio {
+    font-weight: normal;
+    color: #666;
+    margin-right: 13px;
+    cursor:pointer;
+  }
+  .search-check .radio-block .com-check-radio label {
+    margin-bottom:6px;
+  }
+  .screen {
+    padding-left: 0px;
+  }
+
+</style>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale/sample.html

@@ -318,14 +318,14 @@
 </style>
 <div class="user_right fr" style="position: relative">
 
-  <div class="tab_top" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li ng-class="{'active': storeType=='sample'}"><a>客户打样申请</a></li>
       <li ng-class="{'active': storeType=='approval'}"><a ui-sref="sale_approval">客户认定单</a></li>
       <li class="down-purchase" style="float:right;color: #5078cb;margin-right: 5px;cursor:pointer"><span ng-click="exportXls()"><i class="fa fa-file-excel-o fa-fw"></i>导出Excel</span></li>
     </ul>
   </div>
-  <div class="oder01" style="margin-bottom: 0px">
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
     <ul>
       <li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
       <li ng-class="{'active': active=='done'}" ng-click="setActive('done');"><a>已送样(<em ng-class="{'color-black': !unread.notReply }" ng-bind="unread.notReply || 0"></em>)</a></li>

+ 5 - 11
src/main/webapp/resources/view/vendor/b2b/sale/vendorPerformanceAssess.html

@@ -110,18 +110,12 @@
 	</div>
 </div>
 <div class="user_right fr">
-	<div class="pane base-info" style="/*max-height: 900px;overflow-y: auto; overflow-x: hidden;*/" id="customer-tab">
-		<div class="com_tab" style="margin-bottom: 10px">
+	<div class="pane base-info" id="customer-tab">
+		<div class="com_tab">
 			<ul class="fl">
-				<li>
-					<a ui-sref="sale_customer">客户资料</a>
-				</li>
-				<li class="active">
-					<a>绩效考核</a>
-				</li>
-				<li class="export">
-					<a ng-click="exportXls()" target="_self" class="text-simple"><i class="fa fa-file-text fa-fw"></i>导出</a>
-				</li>
+				<li><a ui-sref="sale_customer">客户资料</a></li>
+				<li class="active"><a>绩效考核</a></li>
+				<li class="export"><a ng-click="exportXls()" target="_self" class="text-simple"><i class="fa fa-file-text fa-fw"></i>导出</a></li>
 			</ul>
 		</div>
 		<div class="body-wrap">

+ 4 - 4
src/main/webapp/resources/view/vendor/b2b/sale_change.html

@@ -220,7 +220,7 @@
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
@@ -234,8 +234,8 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li ng-class="{'active': storeType=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': storeType=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>
 				<li ng-class="{'active': storeType=='maketodo'}"><a ui-sref="saleMaketodo">客户委外单</a></li>
@@ -244,7 +244,7 @@
 				<li ng-class="{'active': storeType=='send'}"><a ui-sref="saleSend">发货单</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul>
 				<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all}" ng-bind="unread.all|| 0"></em>)</a></li>
 				<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已处理(<em ng-class="{'color-black': !unread.replied}" ng-bind="unread.replied || 0"></em>)</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_inquiry.html

@@ -614,7 +614,7 @@
 			<!--<a ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i class="fa fa-file-text fa-fw"></i>导出</a>-->
 		<!--</div>-->
 	<!--</div>-->
-	<div class="tab_top" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
 			<li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -632,7 +632,7 @@
 			</li>
 		</ul>
 	</div>
-	<div class="oder01" style="margin-bottom: 0px">
+	<div class="com_tab tab_top" style="margin-bottom: 0px">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
 			<li ng-class="{'active': active=='done'}" ng-click="setActive('done');setOrdersReadByState()"><a>已报价(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_inquiryMould.html

@@ -558,7 +558,7 @@
 			<!--<a href="#" ng-click="exportXls()" target="_self" class="text-simple" title="导出Excel表格"><i class="fa fa-file-text fa-fw"></i>导出</a>-->
 		<!--</div>-->
 	<!--</div>-->
-	<div class="tab_top" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
 			<li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -576,7 +576,7 @@
 			</li>
 		</ul>
 	</div>
-	<div class="oder01" style="margin-bottom: 0px">
+	<div class="com_tab tab_top" style="margin-bottom: 0px">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
 			<li ng-class="{'active': active=='done'}" ng-click="setActive('done');setOrdersReadByState()"><a>已报价(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_makechange.html

@@ -221,7 +221,7 @@
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
@@ -235,7 +235,7 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 0px">
+		<div class="com_tab" style="margin-bottom: 0px">
 			<ul class="fl" style="width: 100%">
 				<li ng-class="{'active': storeType=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': storeType=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>

+ 3 - 3
src/main/webapp/resources/view/vendor/b2b/sale_maketodo.html

@@ -1020,7 +1020,7 @@
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
@@ -1034,7 +1034,7 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li ng-class="{'active': tab=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': tab=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>
@@ -1044,7 +1044,7 @@
 				<li ng-class="{'active': tab=='send'}"><a ui-sref="saleSend">发货单</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul>
 				<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread['all']}" ng-bind="unread['all'] || 0"></em>)</a></li>
 				<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已回复(<em ng-class="{'color-black': !unread['replied']}" ng-bind="unread['replied'] || 0"></em>)</a></li>

+ 5 - 5
src/main/webapp/resources/view/vendor/b2b/sale_notice.html

@@ -408,8 +408,8 @@
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
 				<li class="down-purchase">
@@ -422,8 +422,8 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li ng-class="{'active': tab=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': tab=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>
 				<li ng-class="{'active': tab=='maketodo'}"><a ui-sref="saleMaketodo">客户委外单</a></li>
@@ -432,7 +432,7 @@
 				<li ng-class="{'active': tab=='send'}"><a ui-sref="saleSend">发货单</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul>
 				<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread['all']}" ng-bind="unread['all'] || 0"></em>)</a></li>
 				<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已发货(<em ng-class="{'color-black': !unread['replied']}" ng-bind="unread['replied'] || 0"></em>)</a></li>

+ 3 - 3
src/main/webapp/resources/view/vendor/b2b/sale_order.html

@@ -188,7 +188,7 @@
 <div class="user_right fr" style="position: relative">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
@@ -202,7 +202,7 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li ng-class="{'active': storeType=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': storeType=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>
@@ -212,7 +212,7 @@
 				<li ng-class="{'active': storeType=='send'}"><a ui-sref="saleSend">发货单</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul ng-controller="SnapShotCtrl">
 				<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
 				<li ng-class="{'active': active=='done'}" ng-click="setActive('done');setOrdersReadByState()"><a>已回复(<em ng-class="{'color-black': !unread.replied }" ng-bind="unread.replied || 0"></em>)</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_quotationList.html

@@ -560,7 +560,7 @@
 	<!--</div>-->
 <!--</div>-->
 <div class="block user_right fr"  id="public" style="position: relative">
-	<div class="tab_top" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
 			<li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -581,7 +581,7 @@
 			</li>
 		</ul>
 	</div>
-	<div class="oder01" style="margin-bottom: 0px">
+	<div class="com_tab tab_top" style="margin-bottom: 0px">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
 			<li ng-class="{'active': active=='done'}" ng-click="setActive('done');"><a>已报价</a></li>

+ 4 - 4
src/main/webapp/resources/view/vendor/b2b/sale_send.html

@@ -224,7 +224,7 @@
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<li class="active"><a ui-sref="saleOrder">B2B</a></li>
 				<li><a ui-sref="vendor_order">优软商城</a></li>
@@ -238,8 +238,8 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li ng-class="{'active': storeType=='order'}"><a ui-sref="saleOrder">客户采购订单</a></li>
 				<li ng-class="{'active': storeType=='change'}"><a ui-sref="saleChange">客户采购变更单</a></li>
 				<li ng-class="{'active': storeType=='maketodo'}"><a ui-sref="saleMaketodo">客户委外单</a></li>
@@ -248,7 +248,7 @@
 				<li ng-class="{'active': storeType=='send'}"><a ui-sref="saleSend">发货单</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul>
 				<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部</a></li>
 				<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已收料</a></li>

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_tenderList.html

@@ -581,7 +581,7 @@
 			<!--<span ui-sref-active="active"><a ui-sref="saleTenderQuestionList">招标提问列表</a></span>-->
 		<!--</div>-->
 	<!--</div>-->
-	<div class="tab_top" style="margin-bottom: 10px">
+	<div class="com_tab">
 		<ul class="fl" style="width: 100%">
 			<li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
 			<li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -594,7 +594,7 @@
 			</li>
 		</ul>
 	</div>
-	<div class="oder01" style="margin-bottom: 0px">
+	<div class="com_tab tab_top" style="margin-bottom: 0px">
 		<ul>
 			<li ng-class="{'active': active=='all'}" ng-click="setActive('all')"><a> 全部(<em ng-class="{'color-black': !unread.all }" ng-bind="unread.all || 0"></em>)</a></li>
 			<li ng-class="{'active': active=='end'}" ng-click="setActive('end');"><a>已结标</a></li>

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

@@ -316,7 +316,7 @@
     <!--产品导入-->
     <div class="pro_management device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li ng-class="{'active': $$productOn.leadIn == 'bathOn'}"><a href="javascript:void(0)">新产品建档</a></li>
                 <li ui-sref="product_repository"><a href="javascript:void(0)">产品库</a></li>
             </ul>

+ 6 - 8
src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html

@@ -160,7 +160,7 @@
 
 </style>
 <div class="user_right fr seek-purchase">
-  <div class="tab_top" style="margin-bottom: 10px">
+  <div class="com_tab">
     <ul class="fl" style="width: 100%">
       <li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
       <li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -171,13 +171,11 @@
     </ul>
   </div>
   <!--求购询价-->
-  <div class="oder oder01">
-    <div class="com_tab2" style="margin-bottom: 0px">
-      <ul class="fl distance" style="width: 100%">
-        <li ng-class="{active : Attend_tab == 'isAttend'}"  ng-click="toggleAttend('isAttend')" title="已关注"><a>已关注</a></li>
-        <li ng-class="{active : Attend_tab =='Attend'}" ng-click="toggleAttend('Attend')" title="未关注"><a>未关注</a></li>
-      </ul>
-    </div>
+  <div class="com_tab tab_top" style="margin-bottom: 0px">
+    <ul class="fl distance" style="width: 100%">
+      <li ng-class="{active : Attend_tab == 'isAttend'}"  ng-click="toggleAttend('isAttend')" title="已关注"><a>已关注</a></li>
+      <li ng-class="{active : Attend_tab =='Attend'}" ng-click="toggleAttend('Attend')" title="未关注"><a>未关注</a></li>
+    </ul>
   </div>
   <div class="seek-purchase-content">
     <div class="search-check">

+ 8 - 10
src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html

@@ -641,7 +641,7 @@
             </div>
         </div>
     </div>-->
-    <div class="tab_top" style="margin-bottom: 10px">
+    <div class="com_tab">
         <ul class="fl" style="width: 100%">
             <li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
             <li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -651,15 +651,13 @@
             <li ng-class="{'active': storeType=='attend'}"><a ui-sref="purchasAttendtion">商机关注</a></li>
         </ul>
     </div>
-    <div class="oder">
-        <div class="oder01">
-            <ul>
-                <li><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
-                <li class="active"><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
-                <!--<li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>-->
-                <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
-            </ul>
-        </div>
+    <div class="com_tab tab_top">
+        <ul>
+            <li><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
+            <li class="active"><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
+            <!--<li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>-->
+            <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
+        </ul>
     </div>
     <div class="seek-purchase-content">
         <!--

+ 8 - 10
src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

@@ -815,7 +815,7 @@
             </div>
         </div>
     </div>-->
-    <div class="tab_top" style="margin-bottom: 10px">
+    <div class="com_tab">
         <ul class="fl" style="width: 100%">
             <li ng-class="{'active': storeType=='seekPurchase'}"><a ui-sref="vendorSeekPurchase">公共询价</a></li>
             <li ng-class="{'active': storeType=='purchase'}"><a ui-sref="saleInquiry">客户采购询价</a></li>
@@ -825,15 +825,13 @@
             <li ng-class="{'active': storeType=='attend'}"><a ui-sref="purchasAttendtion">商机关注</a></li>
         </ul>
     </div>
-    <div class="oder">
-        <div class="oder01">
-            <ul>
-                <li class="active"><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
-                <li><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
-                <!--<li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>-->
-                <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
-            </ul>
-        </div>
+    <div class="com_tab tab_top">
+        <ul>
+            <li class="active"><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
+            <li><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
+            <!--<li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>-->
+            <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
+        </ul>
     </div>
     <div class="seek-purchase-content">
         <!--搜索时间筛选-->

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

@@ -127,7 +127,7 @@
     <!--器件申请-->
     <div class="device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li class="active"><a ui-sref="vendor_component_apply"> 单个上传</a></li>
                 <li><a ui-sref="vendor_component_batchapply">批量上传</a></li>
                 <li><a ui-sref="vendor_component_applylist">申请记录</a></li>

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

@@ -95,14 +95,14 @@
     <!--器件申请-->
     <div class="device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li><a ui-sref="vendor_component_apply"> 单个上传</a></li>
                 <li><a ui-sref="vendor_component_batchapply">批量上传</a></li>
                 <li class="active"><a ui-sref="vendor_component_applylist">申请记录</a></li>
             </ul>
         </div>
         <div class="com_tab com_tab2" style="margin-bottom: 0px">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li class="active"><a ui-sref="vendor_component_applylist">单个申请记录</a></li>
                 <li><a ui-sref="vendor_component_batchapplylist">批量申请记录</a></li>
             </ul>

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

@@ -62,7 +62,7 @@
     <!--品牌申请-->
     <div class="device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li><a ui-sref="vendor_component_apply"> 单个上传</a></li>
                 <li class="active"><a ui-sref="vendor_component_batchapply">批量上传</a></li>
                 <li><a ui-sref="vendor_component_applylist">申请记录</a></li>

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

@@ -325,7 +325,7 @@
 	<!--货品管理-->
 	<div class="pro_management device">
 		<div class="com_tab">
-			<ul class="fl" style="width: 100%">
+			<ul class="fl" >
 				<li ng-class="{'active': tab == 'onSale'}" ng-click="toggleActive('onSale')"><a href="javascript:void(0)">在售产品</a></li>
 				<li ng-class="{'active': tab == 'undercarriage'}" ng-click="toggleActive('undercarriage')"><a href="javascript:void(0)">下架产品</a></li>
 				<li ng-class="{'active': tab == 'bathOn'}" ng-click="toggleActive('bathOn')"><a href="javascript:void(0)">批量发布</a></li>

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

@@ -1056,13 +1056,13 @@
 <div class="user_right fr">
 	<!--货品管理-->
 	<div class="pro_management device">
-		<div class="com_tab" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-				<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+				<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
 				<li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
 				<li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-				<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+				<!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
 			</ul>
 		</div>
 		<div class="com_tab com_tab2" ng-if="!isPcbStore" style="margin-bottom: 0px">

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

@@ -1991,7 +1991,7 @@
 <div class="user_right fr">
 	<!--货品管理-->
 	<div class="pro_management device">
-		<div class="com_tab" style="margin-bottom: 10px">
+		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
 				<!--<li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">公司产品库</a></li>-->
 				<!--<li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>-->

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

@@ -1009,7 +1009,7 @@
     <!--货品管理-->
     <div class="pro_management device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">公司产品库</a></li>
                 <li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>
                 <li ng-class="{'active': tab == 'onSale'}"><a ui-sref="vendor_onSale">在售产品</a></li>

+ 5 - 128
src/main/webapp/resources/view/vendor/forstore/vendor_order.html

@@ -81,17 +81,6 @@
 		display: block;
 	}
 
-	.com_tab ul li.down-purchase {
-		float: right;
-		margin-right: 24px;
-		font-size: 14px;
-		color: #5078cb;
-	}
-
-	.com_tab ul li.down-purchase span:hover {
-		cursor: pointer;
-		text-decoration: underline;
-	}
 	.color-black {
 		color: #323232!important;
 	}
@@ -1118,73 +1107,6 @@
 	.oder_list dl b.total{
 		margin-right: 0;
 	}
-	.oder01 ul {
-		border-bottom: 1px solid #f15601
-	}
-	.oder01 ul li {
-		margin-left: 10px;
-	}
-	.oder01 ul li a {
-		font-size: 13px;
-		font-weight: bold;
-	}
-
-	.com_tab ul li {
-		margin-left: 0px;
-		position: relative;
-		min-width: 110px
-	}
-	.com_tab ul li a {
-		min-width: 110px
-	}
-
-	.com_tab ul li::after{
-		background: url('static/img/vendor/images/downicon.png');
-		width: 11px;
-		height: 6px;
-		position: absolute;
-		bottom: 0px;
-		left: 50%;
-		content: ' ';
-		margin-left: -5px;
-		display: none;
-	}
-	.com_tab ul li.active:after{
-		display: block
-	}
-	.com_tab ul li.active a {
-		border-bottom: #fff;
-		background: #5078cb;
-		color: #fff;
-	}
-	.oder01 ul li a{
-		border-top: 3px solid #fff;
-		/*padding: 0 8px*/
-		min-width: 110px;
-	}
-	.oder01 ul li:nth-child(1){
-		margin-left: 0px
-	}
-	.oder01 ul li.active a{
-		border-top: 3px solid #f15601;
-		border-left: 1px solid #f15601;
-		border-right: 1px solid #f15601;
-		border-bottom: 1px solid #fff;
-		/*padding: 0 8px;*/
-		color: #f15601
-	}
-	.oder01 ul li a em{
-		color: #323232
-	}
-	.oder01 ul li.active a em{
-		color: #f15601 !important;
-	}
-	.oder01 ul li:hover a em {
-		color: #5078cb !important;
-	}
-	.oder01 ul li.active:hover a em {
-		color: #f15601 !important;
-	}
 	.screen{
 		background: #fff;
 		height: 40px;
@@ -1192,56 +1114,11 @@
 		padding-top: 4px;
 	}
 </style>
-<style>
-	.tab_top{
-		height: 40px;
-		margin-bottom:10px;
-	}
-	.tab_top ul{
-		margin: 0 auto;
-		height: 40px;
-		line-height: 40px;
-		background: #fff;
-	}
-	.tab_top ul li{
-		margin-left: 0;
-		position: relative;
-		height: 40px;
-		text-align: center;
-		float: left;
-	}
-	.tab_top ul li a {
-		font-size: 14px;
-		height: 40px;
-		min-width: 110px;
-		padding: 0 20px;
-		display: inline-block;
-	}
-	.tab_top ul li.active a {
-		border-bottom: #fff;
-		background: #5078cb;
-		color: #fff !important;
-	}
-	.tab_top ul li.active:after {
-		display:block;
-	}
-	.tab_top ul li::after {
-		background: url(static/img/vendor/images/downicon.png);
-		width: 11px;
-		height: 6px;
-		position: absolute;
-		bottom: 0px;
-		left: 50%;
-		content: ' ';
-		margin-left: -5px;
-		display: none;
-	}
-</style>
 <div class="user_right fr">
 	<!--订单中心-->
 	<div class="sellOder oder" id="sellOder">
-		<div class="com_tab" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li><a ui-sref="saleOrder">B2B</a></li>
 				<li class="active"><a ui-sref="vendor_order">优软商城</a></li>
 				<li class="down-purchase">
@@ -1254,13 +1131,13 @@
 				</li>
 			</ul>
 		</div>
-		<div class="tab_top" style="margin-bottom: 10px">
-			<ul class="fl" style="width: 100%">
+		<div class="com_tab">
+			<ul class="fl">
 				<li ng-class="{'active': storeType=='other'}" ng-if="!isYrscStore && !isCONSIGNMENT"><a ng-click="setStoreType('other')">自营店铺</a></li>
 				<li ng-class="{'active': storeType=='mall'}"><a ng-click="setStoreType('mall')">库存寄售</a></li>
 			</ul>
 		</div>
-		<div class="oder01" style="margin-bottom: 0px">
+		<div class="com_tab tab_top" style="margin-bottom: 0px">
 			<ul>
 				<li ng-class="{'active': status=='all'}" ng-click="setActive('all')"><a> 所有订单(<em ng-class="{'color-black': !counts['all']}" ng-bind="counts['all'] || 0"></em>)</a></li>
 				<li ng-class="{'active': status=='tobeconfirmed'}" ng-click="setActive('tobeconfirmed')"><a>待买家付款(<em ng-class="{'color-black': !counts['tobeconfirmed']}" ng-bind="counts['tobeconfirmed'] || 0"></em>)</a></li>

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

@@ -242,12 +242,12 @@
     <!--货品管理-->
     <div class="pro_management device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li ui-sref="vendor_productOn"><a href="javascript:void(0)">新产品导入</a></li>
                 <li ng-class="{'active': $$productOn.leadIn == 'product_repository'}"><a href="javascript:void(0)">产品库</a></li>
             </ul>
         </div>
-        <div class="com_tab" style="position: relative;" ng-class="{'macth-act': $$productRepository.status == 'matchResult'}">
+        <div class="com_tab" style="position:relative;" ng-class="{'macth-act': $$productRepository.status == 'matchResult'}">
             <ul class="fl" style="width: 100%">
                 <li ng-class="{'active' : $$productRepository.status == 'all'}" ng-click="toggleStatus('all')"><a href="javascript:void(0)">全部</a></li>
                 <li ng-class="{'active' : $$productRepository.status == 'standard'}" ng-click="toggleStatus('standard')"><a href="javascript:void(0)">标准产品</a></li>

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

@@ -370,7 +370,7 @@
     <!--货品管理-->
     <div class="pro_management device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <li ng-class="{'active': $$productOn.leadIn == 'bathOn'}"><a href="javascript:void(0)">新产品导入</a></li>
                 <li ui-sref="product_repository"><a href="javascript:void(0)">产品库</a></li>
             </ul>

+ 37 - 25
src/main/webapp/resources/view/vendor/forstore/vendor_storage.html

@@ -804,7 +804,7 @@
         top: 2px;
     }
     .search-check .radio-block .radio-btn li{
-        margin: 0 10px;
+        margin: 0 3px;
         font-size: 14px;
         line-height: 34px;
         padding:0 10px;
@@ -1145,7 +1145,7 @@
 <div class="user_right fr" ng-click="clearOtherData()">
     <!--货品管理-->
     <div class="pro_management device">
-        <div class="com_tab">
+        <div class="com_tab" style="margin-bottom: 10px">
             <ul class="fl" style="width: 100%">
                 <!--<li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">公司产品库</a></li>-->
                 <!--<li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>-->
@@ -1153,21 +1153,34 @@
                 <!--<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>-->
                 <!--<li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架历史</a></li>-->
                 <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
                 <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
                 <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-                <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
-            </ul>
-        </div>
-        <div class="com_tab com_tab2" style="margin-bottom: 10px">
-            <ul class="fl distance" style="width: 100%">
-                <li ng-class="{active : storage_tab == 'inBound'}"  ng-click="toggleStorage('inBound')" title="入库"><a href="" class="standard">入库</a></li>
-                <li ng-class="{active : storage_tab =='outBound'}" ng-click="toggleStorage('outBound')" title="出库"><a href="" class="standard">出库</a></li>
+                <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
             </ul>
         </div>
         <div class="search-check">
-            <div class="radio-block" ng-if="handleItem !== 1">
-                更多筛选:
+            <div class="radio-block">
+                业务:
+                <ul class="radio-btn list-inline">
+                    <li ng-class="{'active': handleItem === 0}" ng-click="toggleType(0)" ng-if="'outBound' === storage_tab">查看出库记录</li>
+                    <li ng-class="{'active': handleItem === 2}" ng-click="toggleType(2)" ng-if="'outBound' === storage_tab">销售出库</li>
+                    <li ui-sref="sale_badOut">不良品出库单</li>
+                    <li ui-sref="sale_accept">客户采购验收单</li>
+                    <li ui-sref="sale_returns">客户采购验退单</li>
+                    <li ui-sref="sale_makeaccept">客户委外验收单</li>
+                    <li ui-sref="sale_makereturns">客户委外验退单</li>
+                    <li ng-class="{'active': handleItem === 1}" ng-click="toggleType(1)" ng-if="'outBound' === storage_tab">其它出库</li>
+                    <!--<li ng-repeat="item in handleLink"-->
+                        <!--ng-bind="item.name"-->
+                        <!--ng-class="{'active': handleItem === item.id}"-->
+                        <!--ng-if="item.tab === storage_tab"-->
+                        <!--ng-click="toggleType(item.id)"></li>-->
+                </ul>
+
+            </div>
+            <div class="radio-block" ng-if="handleItem !== 1" style="margin-top: 20px">
+                筛选:
                 <label class="com-check-radio">
                     <input type="radio" id="oneMonth" name="date" ng-click="setFilters('dateArea', 'oneMonth')" ng-checked="dateArea == 'oneMonth'">
                     <label for="oneMonth"></label>
@@ -1214,23 +1227,19 @@
                         <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
                     </div>
                 </div>
-            </div>
-            <div class="radio-block">
-                更多操作:
-                <ul class="radio-btn list-inline">
-                    <li ng-repeat="item in handleLink"
-                        ng-bind="item.name"
-                        ng-class="{'active': handleItem === item.id}"
-                        ng-if="item.tab === storage_tab"
-                        ng-click="toggleType(item.id)"></li>
-                </ul>
                 <div class="search fr check" ng-if="handleItem !== 1">
                     <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="{{storage_tab =='outBound' ? ( handleItem === 0 ? '出库单号/买家名称':'订单号/买家名称') : ( handleItem === 0 ? '入库单号/卖家名称':'发货单/卖家名称')}}"/>
                     <button ng-click="onSearch(keyword)" style="float: left;">搜索</button>
                 </div>
             </div>
-        </div>
 
+        </div>
+        <!--<div class="com_tab com_tab2" style="margin-bottom: 10px">-->
+            <!--<ul class="fl distance" style="width: 100%">-->
+                <!--<li ng-class="{active : storage_tab == 'inBound'}"  ng-click="toggleStorage('inBound')" title="入库"><a href="" class="standard">入库</a></li>-->
+                <!--<li ng-class="{active : storage_tab =='outBound'}" ng-click="toggleStorage('outBound')" title="出库"><a href="" class="standard">出库</a></li>-->
+            <!--</ul>-->
+        <!--</div>-->
         <div class="wanted_list">
             <table class="wanted-tab table" ng-table="storageTableParams">
                 <thead>
@@ -1396,8 +1405,8 @@
                             <span>物流公司 :&nbsp;</span>
                             <span class="input-ul">
                                 <input id="logistics-input" type="text" class="form-control select-adder" ng-focus="getItemFocus()"
-                                        ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off"
-                                        maxlength="15" readonly="readonly">
+                                       ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off"
+                                       maxlength="15" readonly="readonly">
                                 <div ng-if="showCompanyName">
                                   <ul id="ulContent" class="dropdown-menu">
                                     <li ng-click="showDefaultText()">请选择物流公司</li>
@@ -1493,6 +1502,9 @@
                 </div>
             </div>
         </div>
+
+
+
     </div>
 </div>
 

+ 3 - 3
src/main/webapp/resources/view/vendor/forstore/vendor_undercarriage.html

@@ -600,17 +600,17 @@
     <!--货品管理-->
     <div class="pro_management device">
         <div class="com_tab">
-            <ul class="fl" style="width: 100%">
+            <ul class="fl">
                 <!--<li ng-class="{'active': tab == 'vendor_material'}"><a ui-sref="vendor_material">公司产品库</a></li>-->
                 <!--<li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>-->
                 <!--<li ng-class="{'active': tab == 'onSale'}"><a ui-sref="vendor_onSale">在售产品</a></li>-->
                 <!--<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>-->
                 <!--<li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架历史</a></li>-->
                 <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
                 <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
                 <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-                <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+                <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
             </ul>
         </div>
         <div class="search-check">

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

@@ -543,10 +543,10 @@
                 <!--<li><a ui-sref="vendor_storage">出入库</a></li>-->
                 <!--<li><a ui-sref="vendor_undercarriage">上下架历史</a></li>-->
                 <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
+                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出库</a></li>
                 <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
                 <li class="active"><a ui-sref="vendor_upload">产品导入</a></li>
-                <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+                <!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->
             </ul>
         </div>
         <div class="remind-line" ng-show="$$productOn.tab == 'bathOn' && showTip"><span class="fl">导入企业库的产品同时会进行上架销售并展示在店铺</span><a ng-click="closeTip()" class="fr">&times;</a></div>