Bladeren bron

Merge branch 'feature-wangcz-201814' into release-201814-wangcz

yangc 7 jaren geleden
bovenliggende
commit
cd7a6a99fc

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

@@ -35,10 +35,10 @@ public enum  ErrorInfoConstant {
 
     BRAND_LENGTH_INFO("英文/中文品牌名称不能超过50个字符或25个汉字"),
     BRAND_EMPTY_INFO("英文/中文品牌名称不能为空"),
-    KIND_EMPTY_INFO("类目(产品名称)不能为空"),
-    KIND_LENGTH_INFO("类目(产品名称)不能超过20个字符"),
+    KIND_EMPTY_INFO("物料名称(类目)不能为空"),
+    KIND_LENGTH_INFO("物料名称(类目)不能超过20个字符"),
     // PCB模块使用
-    KIND_UNSTANDARD("类目(产品名称)不是商城标准类目"),
+    KIND_UNSTANDARD("物料名称(类目)不是商城标准类目"),
     BREAK_UP_INFO("请选择可拆卖情况是或否"),
     RESERVE_NUMBER_INFO("库存须填写小于10亿的正整数"),
     PRODUCE_DATE_INFO("生产日期不能为空"),

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

@@ -794,4 +794,20 @@ public interface GoodsDao extends JpaSpecificationExecutor<Goods>, JpaRepository
      */
     @Query(value = "select count(1) from Goods g where g.storeid = :storeid and g.status = 601")
     Integer countByStoreid(@Param("storeid") String storeid);
+
+    /**
+     * 通过类目名称获取品牌uuid不为空的前5个批次
+     * @param kind
+     * @return
+     */
+    @Query(nativeQuery = true, value = "select * from trade$goods where br_name_uuid is not null and ki_name=:kind and go_status = 601 limit 0,5")
+    List<Goods> findByKindNameCnAndBrandIsNotNull(@Param("kind")String kind);
+
+    /**
+     * 通过类目id获取品牌uuid不为空的前5个批次
+     * @param kindIds 类目id
+     * @return
+     */
+    @Query(nativeQuery = true, value = "select * from trade$goods where br_name_uuid is not null and ki_name in (:kind) and go_status = 601 limit 0,5")
+    List<Goods> findInKindNamesAndBrandIsNotNull(@Param("kind")List<String> kinds);
 }

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

@@ -747,4 +747,10 @@ public interface GoodsService {
      * @param goodses       the param
      */
     void updateSpecByProducts(List<V_ProductPrivate> privateList, List<Goods> goodses);
+
+    /**
+     * 获取pcb推荐物料
+     * @return
+     */
+    Map<String, List<Goods>> getCmsPcb();
 }

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

@@ -23,45 +23,36 @@ import com.uas.platform.b2c.core.utils.DoubleArith;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.RegexConstant;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.external.erp.commodity.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.IntegerConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
-import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
-import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
-import com.uas.platform.b2c.prod.commodity.dao.GoodsSimpleDao;
-import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
-import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
-import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
-import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
-import com.uas.platform.b2c.prod.commodity.dao.ProductStandardPutOnInfoDao;
-import com.uas.platform.b2c.prod.commodity.model.*;
 import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsModifyInfoDao;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsSimpleDao;
+import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductStandardPutOnInfoDao;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsFilter;
 import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
 import com.uas.platform.b2c.prod.commodity.model.GoodsHistory.OperateType;
-import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
-import com.uas.platform.b2c.prod.commodity.service.GoodsPriceInfoService;
-import com.uas.platform.b2c.prod.commodity.service.GoodsService;
-import com.uas.platform.b2c.prod.commodity.service.ProductService;
-import com.uas.platform.b2c.prod.commodity.service.ProductStandardPutOnInfoService;
-import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
 import com.uas.platform.b2c.prod.commodity.model.GoodsInfo;
+import com.uas.platform.b2c.prod.commodity.model.GoodsModifyInfo;
 import com.uas.platform.b2c.prod.commodity.model.GoodsPriceInfo;
 import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
 import com.uas.platform.b2c.prod.commodity.model.GoodsSimple;
+import com.uas.platform.b2c.prod.commodity.model.ModifyInfo;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
 import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.model.ProductStandardPutOnInfo;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
 import com.uas.platform.b2c.prod.commodity.service.GoodsPriceInfoService;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
@@ -140,9 +131,11 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections.map.HashedMap;
 import org.apache.log4j.Logger;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -162,36 +155,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.servlet.http.HttpServletRequest;
-import java.math.BigInteger;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.uas.platform.core.persistence.criteria.PredicateUtils.like;
-import static org.apache.commons.jexl2.parser.ParserConstants.and;
-import static org.apache.commons.jexl2.parser.ParserConstants.or;
-
 
 /**
  * @author ChenHao
@@ -2602,20 +2565,20 @@ public class GoodsServiceImpl implements GoodsService {
                     String[] kindIds = kindUuid.split(",");
                     Long[] listkids = (Long[]) ConvertUtils.convert(kindIds,Long.class);
                     if (listkids != null && listkids.length > 0) {
-//                        List<Long> productIds = pcbDao.findByKindIds(listkids);
-//                        if (!CollectionUtils.isEmpty(productIds)) {
-//                            pageInfo.expression(PredicateUtils.in("productid",productIds,false));
-//                        } else {
+                        List<Long> productIds = pcbDao.findByKindIds(listkids);
+                        if (!CollectionUtils.isEmpty(productIds)) {
+                            pageInfo.expression(PredicateUtils.in("productid",productIds,false));
+                        } else {
                             pageInfo.expression(PredicateUtils.in("kindUuid", kindIds, false));
-//                        }
+                        }
                     }
                 } else {
-//                    List<Long> productId = pcbDao.findProductIdByKindid(Long.parseLong(kindUuid));
-//                    if (!CollectionUtils.isEmpty(productId)) {
-//                        pageInfo.expression(PredicateUtils.eq("productid",productId.get(0),false));
-//                    } else {
+                    List<Long> productId = pcbDao.findProductIdByKindid(Long.parseLong(kindUuid));
+                    if (!CollectionUtils.isEmpty(productId)) {
+                        pageInfo.expression(PredicateUtils.eq("productid",productId.get(0),false));
+                    } else {
                         pageInfo.expression(PredicateUtils.eq("kindUuid", kindUuid, false));
-//                    }
+                    }
                 }
             }
         }
@@ -4169,4 +4132,35 @@ public class GoodsServiceImpl implements GoodsService {
             goodsHistoryService.save(goodsHistories);
         }
     }
+
+    @Override
+    public Map<String, List<Goods>> getCmsPcb() {
+        Map<String, List<Goods>> map = new HashedMap();
+        List<KindInfo> kindInfos = kindInfoDao.findByParentid(3825L);
+        if (CollectionUtils.isNotEmpty(kindInfos)) {
+            for (KindInfo kindInfo : kindInfos) {
+                if (kindInfo.getIsLeaf().equals(Constant.YES)) {
+                    List<Goods> goods = goodsDao.findByKindNameCnAndBrandIsNotNull(kindInfo.getNameCn());
+                    if (CollectionUtils.isNotEmpty(goods)) {
+                        map.put(kindInfo.getNameCn(), goods);
+                    }
+                } else {
+                    List<KindInfo> kindInfoChildren = kindInfoDao.findByParentid(kindInfo.getId());
+                    if (!CollectionUtils.isEmpty(kindInfoChildren)) {
+                        List<String> names = new ArrayList<>();
+                        for (KindInfo child : kindInfoChildren) {
+                            names.add(child.getNameCn());
+                        }
+                        if (CollectionUtils.isNotEmpty(names)) {
+                            List<Goods> goods = goodsDao.findInKindNamesAndBrandIsNotNull(names);
+                            if (CollectionUtils.isNotEmpty(goods)) {
+                                map.put(kindInfo.getNameCn(), goods);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return map;
+    }
 }

+ 10 - 0
src/main/java/com/uas/platform/b2c/prod/store/api/CommodityController.java

@@ -7,6 +7,7 @@ import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.prod.product.component.service.ComponentService;
 import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import com.uas.platform.b2c.prod.store.facade.CommodityFacade;
+import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import org.apache.commons.collections.CollectionUtils;
@@ -157,4 +158,13 @@ public class CommodityController {
 	public List<Goods> getLatestGoods(Long length) {
 		return goodsService.getLatestGoods(length);
 	}
+
+	@RequestMapping(value = "/cms/pcb", method = RequestMethod.GET)
+	public ResultMap getPcbCms() {
+		ResultMap resultMap = new ResultMap();
+		resultMap.setSuccess(true);
+		resultMap.setCode(200);
+		resultMap.setData(goodsService.getCmsPcb());
+		return resultMap;
+	}
 }

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


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


BIN
src/main/resources/jxls-tpl/trade/releasePCBByBatchError-usd.xls


BIN
src/main/resources/jxls-tpl/trade/releasePCBbyBatch-usd.xls


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

@@ -663,7 +663,7 @@
                     <div class="row-wrap il-content">
                         <div class="il-box-large il-box">
                             <div title="{{seek.inbrand}}"  style="width: 100%"  class="fl item size-middle"><span>品牌:</span><div class="content" style="width:135px">{{seek.inbrand || '-'}}</div></div>
-                            <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%"  class="fl bottom item size-middle"><span>类目(产品名称):</span><div class="content" style="width:135px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
+                            <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%"  class="fl bottom item size-middle"><span>物料名称(类目):</span><div class="content" style="width:135px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
                         </div>
                     </div>
                 </td>

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

@@ -941,7 +941,7 @@
                     </ul>
                 </div>
                 <div class="form-block">
-                    <span><i>*</i>类目(产品名称)</span>
+                    <span><i>*</i>物料名称(类目)</span>
                     <input type="text" class="form-group" ng-model="applyObj.prodTitle" ng-class="{'error': !validObj.prodTitle}" ng-change="onProdTitleInput()" ng-blur="checkProdTitle()">
                 </div>
                 <div class="form-block">
@@ -1078,7 +1078,7 @@
                     <div class="row-wrap il-content">
                         <div class="il-box-large il-box">
                             <div title="{{seek.inbrand}}" class="fl item size-middle"><span>品牌:</span><div class="content">{{seek.inbrand || '-'}}</div></div>
-                            <div title="{{seek.prodTitle | nullStrFilter}}" class="fl bottom item size-middle"><span>类目(产品名称):</span><div class="content">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
+                            <div title="{{seek.prodTitle | nullStrFilter}}" class="fl bottom item size-middle"><span>物料名称(类目):</span><div class="content">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
                         </div>
                     </div>
                 </td>

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

@@ -152,7 +152,7 @@
   <div class="seek-purchase-content">
     <div class="search-check">
       <div class="search fl">
-        <input type="text" class="form-control ng-pristine ng-untouched ng-valid" ng-model="keyWord" placeholder="请输入您要搜索的类目(产品名称)">
+        <input type="text" class="form-control ng-pristine ng-untouched ng-valid" ng-model="keyWord" placeholder="请输入您要搜索的物料名称(类目)">
         <button ng-click="onSearch()">搜索</button>
       </div>
       <div class="check fr">
@@ -165,7 +165,7 @@
           <th width="80" class="onCheckBoxClick" ng-click="onCheckBoxClick()">
             <input ng-checked="checkBoxAll" type="checkbox" class="checkbox">{{checkBoxAll ? '取消全选': '全选'}}</th>
           <th width="80">序号</th>
-          <th width="556">类目(产品名称)</th>
+          <th width="556">物料名称(类目)</th>
           <th width="310">操作</th>
         </tr>
       </thead>

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

@@ -697,7 +697,7 @@
                     <div class="row-wrap il-content">
                         <div class="il-box-large il-box">
                             <div title="{{seek.inbrand}}" style="width: 100%" class="fl item size-middle"><span>品牌:</span><div class="content" style="width:135px">{{seek.inbrand || '-'}}</div></div>
-                            <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%" class="fl item bottom size-middle"><span>类目(产品名称):</span><div class="content" style="width:135px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
+                            <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%" class="fl item bottom size-middle"><span>物料名称(类目):</span><div class="content" style="width:135px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
                         </div>
                     </div>
                 </td>

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

@@ -808,7 +808,7 @@
                         <div class="row-wrap il-content">
                             <div class="il-box-large il-box">
                                 <div title="{{seek.inbrand}}" style="width: 100%" class="fl item size-middle"><span>品牌:</span><div class="content" style="width:134px">{{seek.inbrand || '-'}}</div></div>
-                                <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%" class="fl item size-middle bottom"><span>类目(产品名称):</span><div class="content" style="width:134px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
+                                <div title="{{seek.prodTitle | nullStrFilter}}" style="width: 100%" class="fl item size-middle bottom"><span>物料名称(类目):</span><div class="content" style="width:134px">{{(seek.prodTitle || '-') | nullStrFilter}}</div></div>
                             </div>
                         </div>
                     </td>
@@ -893,7 +893,7 @@
                 </div>
                 <div class="content-line">
                     <div class="form-item form-left text-line">
-                        <span>类目(产品名称):</span><span class="text" ng-bind="inquiryItem.prodTitle || '-'" title="{{inquiryItem.prodTitle || '-'}}"></span>
+                        <span>物料名称(类目):</span><span class="text" ng-bind="inquiryItem.prodTitle || '-'" title="{{inquiryItem.prodTitle || '-'}}"></span>
                     </div>
                 </div>
                 <div class="content-line">

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

@@ -2016,7 +2016,7 @@
 						</th>
 						<th width="40">序号</th>
 						<th width="120">品牌</th>
-						<th width="140">类目(产品名称)</th>
+						<th width="140">物料名称(类目)</th>
 						<th width="170">型号</th>
 						<th width="100">规格</th>
 						<th width="80">单位</th>
@@ -2561,7 +2561,7 @@
 						<thead>
 						<tr>
 							<th width="60">序号</th>
-							<th width="120">类目(产品名称)</th>
+							<th width="120">物料名称(类目)</th>
 							<th width="120">品牌</th>
 							<th width="100">型号</th>
 							<!--<th width="100">封装</th>-->

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

@@ -1860,7 +1860,7 @@
 					<tr>
 						<th width="80">序号</th>
 						<th width="150">品牌</th>
-						<th width="180">类目(产品名称)</th>
+						<th width="180">物料名称(类目)</th>
 						<th width="200">型号</th>
 						<!--<th width="100">单位</th>-->
 						<th width="80">规格</th>
@@ -2383,7 +2383,7 @@
 						<thead>
 						<tr>
 							<th width="60">序号</th>
-							<th width="120">类目(产品名称)</th>
+							<th width="120">物料名称(类目)</th>
 							<th width="120">品牌</th>
 							<th width="100">型号</th>
 							<th width="100">封装</th>

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

@@ -1096,8 +1096,8 @@
                             <div class="fr wid135">
                                 <p ng-if="!commodity.uuid">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
                                 <p ng-if="commodity.uuid" name="brand-a"><a href="product/brand/{{commodity.branduuid}}" style="margin: 0; color: #333;" target="_blank">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
-                                <p ng-if="!commodity.uuid">类目(产品名称): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
-                                <p ng-if="commodity.uuid" name="kind-a"><a href="product/kind/{{commodity.kindUuid}}" style="margin: 0; color: #333;" target="_blank">类目(产品名称): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
+                                <p ng-if="!commodity.uuid">物料名称(类目): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
+                                <p ng-if="commodity.uuid" name="kind-a"><a href="product/kind/{{commodity.kindUuid}}" style="margin: 0; color: #333;" target="_blank">物料名称(类目): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
                                 <p>型号: <em class="href" ng-bind="commodity.code" title="{{commodity.code}}"  ng-click="goToBatchDetail($event, commodity)">LPC1112</em></p>
                                 <p>规格: <em ng-bind="commodity.spec  || '-'" title="{{commodity.spec}}">LPC1112</em></p>
                                 <!--<div class="margin0">-->
@@ -1199,7 +1199,7 @@
                                     </div>
                                     <div class="fr wid135">
                                         <p>品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></p>
-                                        <p>类目(产品名称): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></p>
+                                        <p>物料名称(类目): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></p>
                                         <p>型号: <em ng-bind="commodity.code" title="{{commodity.code}}">LPC1112</em></p>
                                         <p>规格: <em ng-bind="commodity.spec || '-'" title="{{commodity.spec}}">LPC1112</em></p>
                                         <!--<p>-->

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

@@ -638,7 +638,7 @@
                                     </td>
                                     <td style="padding-left: 10px;">
                                         <div class="text-more">品牌:&nbsp;<em title="{{batchCommodity.b2cBranden || '空'}}" ng-bind="batchCommodity.b2cBranden || '空'"></em></div>
-                                        <div class="text-more">类目(产品名称):&nbsp;<em title="{{batchCommodity.kindName || '空'}}" ng-bind="batchCommodity.kindName || '空'"></em></div>
+                                        <div class="text-more">物料名称(类目):&nbsp;<em title="{{batchCommodity.kindName || '空'}}" ng-bind="batchCommodity.kindName || '空'"></em></div>
                                         <div class="text-more">型号:&nbsp;<em title="{{batchCommodity.b2cCode || '空'}}" ng-bind="batchCommodity.b2cCode || '空'"></em></div>
                                         <div class="text-more">规格:&nbsp;<em title="{{batchCommodity.spec || '空'}}" ng-bind="batchCommodity.spec || '空'"></em></div>
                                     </td>