Ver Fonte

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

yujia há 7 anos atrás
pai
commit
1ac40b7aa9
26 ficheiros alterados com 479 adições e 245 exclusões
  1. 17 1
      src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java
  2. 34 4
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java
  3. 2 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java
  4. 6 2
      src/main/java/com/uas/platform/b2c/fa/payment/utils/StringUtils.java
  5. 155 98
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  6. 7 4
      src/main/java/com/uas/platform/b2c/trade/vendor/service/impl/VendorIntroductionServiceImpl.java
  7. 1 1
      src/main/resources/dev/account.properties
  8. 1 1
      src/main/resources/prod/account.properties
  9. 1 0
      src/main/resources/spring/redis.xml
  10. 1 1
      src/main/resources/test/account.properties
  11. 1 1
      src/main/webapp/resources/css/commonComponent.css
  12. 153 70
      src/main/webapp/resources/data/profession.json
  13. 1 1
      src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js
  14. 4 0
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js
  15. 1 0
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_onSaleCtrl.js
  16. 10 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_store_maintain_ctrl.js
  17. 1 1
      src/main/webapp/resources/view/usercenter/header.html
  18. 1 1
      src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html
  19. 1 1
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html
  20. 9 6
      src/main/webapp/resources/view/vendor/forstore/vendor_account_management.html
  21. 32 22
      src/main/webapp/resources/view/vendor/forstore/vendor_material.html
  22. 3 3
      src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html
  23. 29 20
      src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html
  24. 2 1
      src/main/webapp/resources/view/vendor/forstore/vendor_store_maintain.html
  25. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_undercarriage.html
  26. 4 2
      src/main/webapp/resources/view/vendor/forstore/vendor_upload.html

+ 17 - 1
src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java

@@ -10,7 +10,23 @@ public class SearchUrl {
     /**
      * 获取类目id
      */
-    public static final String KIND_ID_URL = "/search/kindIds?keyword={keyword}";
+    public static final String KIND_ID_URL = "/search/standardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+    /**
+     * 获取企业物料
+     */
+    public static final String ALL_PRODUCT_ID_URL = "/search/productIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+
+    /**
+     * 获取企业物料(标准)
+     */
+    public static final String STANDARD_PRODUCT_ID_URL = "/search/standardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
+
+    /**
+     * 获取企业物料(非标准)
+     */
+    public static final String NONSTANDARD_PRODUCT_ID_URL = "/search/nonStandardProductIds?enUU={enUU}&keyword={keyword}&page={page}&size={size}";
 
     /**
      * 获取类目的数据

+ 34 - 4
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -1,16 +1,17 @@
 package com.uas.platform.b2c.common.search.rpc.service.Impl;
 
 
-import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.search.constant.SearchUrl;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.search.exception.SearchException;
-import com.uas.platform.b2c.common.search.util.CollectField;
-import com.uas.platform.b2c.common.search.util.PageParams;
-import com.uas.platform.b2c.common.search.util.SPage;
 import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -73,6 +74,35 @@ public class SearchServiceImpl implements SearchService{
         }
     }
 
+    @Override
+    public SPage<Long> getProducts(Long enUU, String keyword, Integer page, Integer size, String type) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        map.put("enUU", enUU);
+        String str = "";
+        if (type.equals("standard")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.STANDARD_PRODUCT_ID_URL, String.class, map);
+        } else if (type.equals("nStandard")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.NONSTANDARD_PRODUCT_ID_URL, String.class, map);
+        } else if (type.equals("all")) {
+            str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.ALL_PRODUCT_ID_URL, String.class, map);
+        }
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        } else {
+            try {
+                // 2018年5月23日 20:57:36 dongbw 因为直接转Long会转为Integer,报类型转换错误,所以需要多处理一步
+                JSONObject json  = JSON.parseObject(str);
+                List<Long> ids = JSON.parseArray(json.get("content").toString(), Long.class);
+                SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                sPage.setContent(ids);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
     @Override
     public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException {
         Map<String, Object> map = initSearchMap(keyword, page, size);

+ 2 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java

@@ -19,6 +19,8 @@ public interface SearchService {
 
     SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) throws SearchException;
 
+    SPage<Long> getProducts(Long enUU, String keyword, Integer page, Integer size, String type) throws SearchException;
+
     SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException;
 
     SPage<Map<String, Object>> getBrands(String keyword, Integer page, Integer size) throws SearchException;

+ 6 - 2
src/main/java/com/uas/platform/b2c/fa/payment/utils/StringUtils.java

@@ -113,8 +113,12 @@ public class StringUtils {
 		if (org.springframework.util.StringUtils.isEmpty(original)) {
 			return original;
 		} else {
-			String substring = original.substring(0, length);
-			return substring;
+			if (original.length() > length) {
+				String substring = original.substring(0, length);
+				return  substring;
+			} else {
+				return original;
+			}
 		}
 	}
 }

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

@@ -7,6 +7,8 @@ import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.common.account.dao.UserDao;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.service.EnterpriseService;
+import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.constant.IntegerConstant;
 import com.uas.platform.b2c.core.constant.ShortConstant;
@@ -17,9 +19,43 @@ import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
-import com.uas.platform.b2c.prod.commodity.dao.*;
-import com.uas.platform.b2c.prod.commodity.model.*;
-import com.uas.platform.b2c.prod.commodity.service.*;
+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.MatchModelDao;
+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.ProductMatchResultDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductModifyHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductReplaceDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStandardPutOnInfoDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStoreStatusDao;
+import com.uas.platform.b2c.prod.commodity.dao.StockInOutHistDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPersonDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
+import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
+import com.uas.platform.b2c.prod.commodity.model.MatchModel;
+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.ProductMatchResult;
+import com.uas.platform.b2c.prod.commodity.model.ProductModifyHistory;
+import com.uas.platform.b2c.prod.commodity.model.ProductPerson;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.ProductReplace;
+import com.uas.platform.b2c.prod.commodity.model.ProductStandardPutOnInfo;
+import com.uas.platform.b2c.prod.commodity.model.ProductStoreStatus;
+import com.uas.platform.b2c.prod.commodity.model.StockInOutHist;
+import com.uas.platform.b2c.prod.commodity.model.UASBatchPutOnProperty;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
+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.GoodsService;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
+import com.uas.platform.b2c.prod.commodity.service.UASBatchPutOnPropertyService;
 import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
 import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
@@ -81,7 +117,15 @@ import java.lang.reflect.Field;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -203,6 +247,9 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private UserDao userDao;
 
+    @Autowired
+    private SearchService searchService;
+
     @Value("#{sys.productServiceIp}")
     private String productServiceIp;
 
@@ -210,59 +257,64 @@ public class ProductServiceImpl implements ProductService {
 
     @Override
     public Page<V_ProductPrivate> getAllProducts(final PageInfo page, String keyword, String type, Long userUU) {
-        Long enuu = SystemSession.getUser().getEnterprise().getUu();
-        page.expression(PredicateUtils.eq("enUU", enuu, true));
-        page.expression(PredicateUtils.isNotNull("pcmpcode"));
-        page.expression(PredicateUtils.isNotNull("pbranden"));
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+//        page.expression(PredicateUtils.eq("enUU", enuu, true));
+//        page.expression(PredicateUtils.isNotNull("pcmpcode"));
+//        page.expression(PredicateUtils.isNotNull("pbranden"));
         if (StringUtils.isEmpty(type)) {
             type = "nStandard";
         }
-        if (type.contains("standard")) {
-            page.filter("standard", (short)1);
-            page.filter("b2cEnabled", (short) 1);
-        } else if (type.contains("nStandard")) {
-            page.filter("standard", (short)0);
-            page.filter("b2cEnabled", (short) 1);
-        } else if (type.contains("all")) {
-            SimpleExpression[] arr = new SimpleExpression[2];
-            arr[0] = PredicateUtils.eq("b2cEnabled", (short) 1, false);
-            arr[1] = PredicateUtils.eq("standard", (short) 1, false);
-            LogicalExpression logicalExpression = PredicateUtils.and(arr);
-            SimpleExpression standard = PredicateUtils.eq("standard", (short) 0, false);
-            page.orExpression(standard);
-            page.orExpression(logicalExpression);
-            page.sorting("standard", Sort.Direction.DESC);
-        }
-
-        if (StringUtils.hasText(keyword)) {
-            SimpleExpression code = PredicateUtils.like("prodNum", keyword, true);
-            SimpleExpression kind = PredicateUtils.like("kind", keyword, true);
-            SimpleExpression brandEn = PredicateUtils.like("pbranden", keyword, true);
-            SimpleExpression cmpCode = PredicateUtils.like("pcmpcode", keyword, true);
-            SimpleExpression[] expressions4 = new SimpleExpression[]{code, kind, brandEn, cmpCode};
-            LogicalExpression logicalExpression4 = PredicateUtils.or(expressions4);
-            page.expression(logicalExpression4);
-        }
-
-        if (!StringUtils.isEmpty(userUU)) {
-            // 先查询userUU在当前企业 有哪些物料
-            List<Long> ids = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
-
-            if (CollectionUtils.isEmpty(ids)) {
-                return null;
-            } else {
-                page.expression(PredicateUtils.in("id", ids, true));
-            }
+//        if (type.contains("standard")) {
+//           SPage<Long> ids = searchService.get
+//        } else if (type.contains("nonStandard")) {
+//            page.filter("standard", (short)0);
+//            page.filter("b2cEnabled", (short) 1);
+//        } else if (type.contains("all")) {
+//            SimpleExpression[] arr = new SimpleExpression[2];
+//            arr[0] = PredicateUtils.eq("b2cEnabled", (short) 1, false);
+//            arr[1] = PredicateUtils.eq("standard", (short) 1, false);
+//            LogicalExpression logicalExpression = PredicateUtils.and(arr);
+//            SimpleExpression standard = PredicateUtils.eq("standard", (short) 0, false);
+//            page.orExpression(standard);
+//            page.orExpression(logicalExpression);
+//            page.sorting("standard", Sort.Direction.DESC);
+//        }
+//
+//        if (StringUtils.hasText(keyword)) {
+//            SimpleExpression code = PredicateUtils.like("prodNum", keyword, true);
+//            SimpleExpression kind = PredicateUtils.like("kind", keyword, true);
+//            SimpleExpression brandEn = PredicateUtils.like("pbranden", keyword, true);
+//            SimpleExpression cmpCode = PredicateUtils.like("pcmpcode", keyword, true);
+//            SimpleExpression[] expressions4 = new SimpleExpression[]{code, kind, brandEn, cmpCode};
+//            LogicalExpression logicalExpression4 = PredicateUtils.or(expressions4);
+//            page.expression(logicalExpression4);
+//        }
+
+        // TODO 搜索用户个人物料搜索暂时未实现,之后完善
+//        if (!StringUtils.isEmpty(userUU)) {
+//            // 先查询userUU在当前企业 有哪些物料
+//            List<Long> ids = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
+//
+//            if (CollectionUtils.isEmpty(ids)) {
+//                return null;
+//            } else {
+//                page.expression(PredicateUtils.in("id", ids, true));
+//            }
+//        }
+
+        SPage<Long> ids = searchService.getProducts(enUU, keyword, page.getPageNumber(), page.getPageSize(), type);
+        if (null == ids) {
+            return null;
         }
-
-        Page<V_ProductPrivate> productPage = v_productPrivateDao.findAll(new Specification<V_ProductPrivate>() {
-            @Override
-            public Predicate toPredicate(Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
-                query.where(page.getPredicates(root, query, cb));
-                return null;
-            }
-        }, page);
-        List<V_ProductPrivate> productList = productPage.getContent();
+//        Page<V_ProductPrivate> productPage = v_productPrivateDao.findAll(new Specification<V_ProductPrivate>() {
+//            @Override
+//            public Predicate toPredicate(Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+//                query.where(page.getPredicates(root, query, cb));
+//                return null;
+//            }
+//        }, page);
+        List<Long> idList = ids.getContent();
+        List<V_ProductPrivate> productList = v_productPrivateDao.findAll(idList);
         for (V_ProductPrivate product : productList) {
             product.setAddProductPerson(false);
             if ("ERP".equals(product.getSourceApp())) {
@@ -279,7 +331,7 @@ public class ProductServiceImpl implements ProductService {
             }
         }
         userUU = SystemSession.getUser().getUserUU();
-        List<Long> productIds = productPersonDao.findIdByEnuuAndUserUU(enuu, userUU);
+        List<Long> productIds = productPersonDao.findIdByEnuuAndUserUU(enUU, userUU);
         for (V_ProductPrivate v_productPrivate : productList) {
             for (Long productId : productIds) {
                 if (v_productPrivate.getId().equals(productId)) {
@@ -287,7 +339,7 @@ public class ProductServiceImpl implements ProductService {
                 }
             }
         }
-        return new PageImpl<V_ProductPrivate>(productList, page, productPage.getTotalElements());
+        return new PageImpl<V_ProductPrivate>(productList, page, ids.getTotalElement());
     }
 
     @Override
@@ -492,53 +544,58 @@ public class ProductServiceImpl implements ProductService {
             Product product = productDao.findOne(id);
             if (product == null)
                 throw new IllegalOperatorException("选择的产品不存在,请重新选择");
-                //查看是否存在正常未取消的订单
-                List<Goods> goodses = goodsDao.findByProductId(product.getId());
-                Boolean isExistOrder = false;
-                String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
-                for (Goods goods : goodses) {
-                    List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
-                    for (OrderDetail detail : orderList) {
-                        Order order = detail.getOrder();
-                        int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
-                        if (codes.indexOf(String.valueOf(status)) < 0) {
-                            // 区分是否是假单,or_orderids 不为空
-                           if (StringUtils.isEmpty(order.getOrderids())) {
-                               isExistOrder = true;
-                               break;
-                           }
+            //查看是否存在正常未取消的订单
+            List<Goods> goodses = goodsDao.findByProductId(product.getId());
+            Boolean isExistOrder = false;
+            String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
+            for (Goods goods : goodses) {
+                List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
+                for (OrderDetail detail : orderList) {
+                    Order order = detail.getOrder();
+                    int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
+                    if (codes.indexOf(String.valueOf(status)) < 0) {
+                        // 区分是否是假单,or_orderids 不为空
+                       if (StringUtils.isEmpty(order.getOrderids())) {
+                           isExistOrder = true;
+                           break;
+                       }
 
-                        }
-                    }
-                    if (isExistOrder) {
-                       break;
                     }
                 }
-                if (!isExistOrder) {
-                    //是否被个人物料库收录
-                    int count = productPersonDao.countByProductId(id);
-                    if ( count > 0 ){
-                        throw new IllegalOperatorException("该产品已被个人物料库收录,不能删除");
-                    }
-                    //删除外键关联的匹配结果列表,不然删除product失败
-                    Set<ProductMatchResult> productMatchResultSet =  product.getMatchresults();
-                    productMatchResultDao.delete(productMatchResultSet);
-                    if (CollectionUtils.isNotEmpty(goodses)) {
-                        goodsService.deleteGoods(goodses);
-                    }
-                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
-                    if (productPrivate == null) {
-                        productPrivate = new ProductPrivate();
-                        productPrivate.setPrId(product.getId());
-                    }
-                    productPrivate.setB2cEnabled(IntegerConstant.NO_SHORT);
-                    productPrivateDao.save(productPrivate);
-                    product.setB2cEnabled(IntegerConstant.NO_SHORT);
-                    //productDao.delete(id);  不允许删除
-                } else {
-                    throw new
-                            IllegalOperatorException("该产品中存在已下单的在售产品信息,不能删除");
+                if (isExistOrder) {
+                   break;
                 }
+            }
+            if (!isExistOrder) {
+                //是否被个人物料库收录
+                int count = productPersonDao.countByProductId(id);
+                if ( count > 0 ){
+                    throw new IllegalOperatorException("该产品已被个人物料库收录,不能删除");
+                }
+                //删除外键关联的匹配结果列表,不然删除product失败
+                Set<ProductMatchResult> productMatchResultSet =  product.getMatchresults();
+                productMatchResultDao.delete(productMatchResultSet);
+                if (CollectionUtils.isNotEmpty(goodses)) {
+                    goodsService.deleteGoods(goodses);
+                }
+                ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
+                if (productPrivate == null) {
+                    productPrivate = new ProductPrivate();
+                    productPrivate.setPrId(product.getId());
+                }
+                productPrivate.setB2cEnabled(IntegerConstant.NO_SHORT);
+                productPrivateDao.save(productPrivate);
+                product.setB2cEnabled(IntegerConstant.NO_SHORT);
+                // 设置物料不可用时,为了更新索引,也需要更新物料资料
+                product.setIsSale(Constant.NO);
+                product.setIsPurchase(Constant.NO);
+                product.setErpDate(new Date());
+                productDao.save(product);
+                //productDao.delete(id);  不允许删除
+            } else {
+                throw new
+                        IllegalOperatorException("该产品中存在已下单的在售产品信息,不能删除");
+            }
         }
     }
 

+ 7 - 4
src/main/java/com/uas/platform/b2c/trade/vendor/service/impl/VendorIntroductionServiceImpl.java

@@ -125,7 +125,9 @@ public class VendorIntroductionServiceImpl implements VendorIntroductionService
 		// 获取企业sql
 		enterpriseSql.append("select en.en_uu enUU, en.en_name enName, en.en_shortname enShortname, en.en_address enAddress, en.en_tel enTel, " +
 				"en.en_email enEmail, en.en_corporation enCorporation, en.en_businesscode enBusinesscode, en.en_industry enIndustry, en.en_Businessscope enBusinessScope " +
-				",st.st_enuu,st.st_status from sec$enterprises en left join store$info st on st.st_enuu = en.en_uu where en_name not like '%测试%' and en_name not like '%test%' and (length(en_businesscode) > 12 or en_name like '%香港%' or en_name like '%HONG KONG%' or en_area like '%香港%') and en_uu <> ")
+				",st.st_enuu,st.st_status from sec$enterprises en left join store$info st on st.st_enuu = en.en_uu where en_name not like '%测试%' and en_name not like '%test%' " +
+				"and (length(en_businesscode) > 12 or en_name like '%香港%' or en_name like '%HONG KONG%' or en_area like '%香港%') and " +
+				" (en_name not REGEXP '^[0-9]*$' and (en_name like '%ltd%' or en_name like '%limited%' or en_name like '%tcl%' or en_name not regexp '[\\u4e00-\\u9fa5_a-zA-Z0-9]')) and en_uu <> ")
 			.append(enUU);
 		if (!StringUtils.isEmpty(keyword)) {
 			enterpriseSql.append(" and (en_name like '%").append(keyword).append("%' or en_address like '%").append(keyword).append("%' or en_industry like '%").append(keyword)
@@ -161,7 +163,8 @@ public class VendorIntroductionServiceImpl implements VendorIntroductionService
 			enCountSql.append("select count(1) from (").append(keywordSql);
 		} else {
 			enCountSql.append("select count(1) from (select en_uu,count(1) from sec$enterprises where en_name not like '%测试%' " +
-					" and en_name not like '%test%' and (length(en_businesscode) > 12 or en_name like '%香港%' or en_name like '%HONG KONG%' or en_area like '%香港%') and en_uu <> ").append(enUU);
+					" and en_name not like '%test%' and (length(en_businesscode) > 12 or en_name like '%香港%' or en_name like '%HONG KONG%' or en_area like '%香港%')" +
+					" and (en_name not REGEXP '^[0-9]*$' and (en_name like '%ltd%' or en_name like '%limited%' or en_name like '%tcl%' or en_name not regexp '[\\u4e00-\\u9fa5_a-zA-Z0-9]')) and en_uu <> ").append(enUU);
 		}
 		enCountSql.append(" group by en_uu )a");
 //        System.out.println("en_count:" + enCountSql.toString());
@@ -177,8 +180,8 @@ public class VendorIntroductionServiceImpl implements VendorIntroductionService
 	private String getKeywordSql(Long enUU, String keyword) {
 		return "select en_uu,count(1) as counts from sec$enterprises where en_name not like '%测试%' " +
 				"and lower(en_name) not like '%test%' and (length(en_businesscode) > 12 or en_name like '%香港%' or en_name like '%HONG KONG%' or en_area like '%香港%') and (en_name like '%"
-				+ keyword + "%' or en_address like '%" + keyword + "%' or en_industry like '%" + keyword
-				+ "%') and en_uu <> " + enUU;
+				+ keyword + "%' or en_address like '%" + keyword + "%' or en_industry like '%" + keyword + "%') and en_uu <> " + enUU +
+                " and (en_name not regexp '^[0-9]*$' and (en_name like '%ltd%' or en_name like '%limited%' or en_name like '%tcl%' or en_name not regexp '[\\u4e00-\\u9fa5a-zA-Z0-9]'))";
 	}
 
 	/**

+ 1 - 1
src/main/resources/dev/account.properties

@@ -11,7 +11,7 @@ sso.cookie.secure=false
 sso.cookie.browser=false
 sso.login.url=http://192.168.253.6:32323
 sso.logout.url=http://192.168.253.6:32323/logquit
-sso.register.url=http://192.168.253.6:32323/register/personalRegistration
+sso.register.url=http://192.168.253.6:32323/register/enterpriseRegistration
 sso.updatePassword.url=http://192.168.253.6:32323/reset/changePasswordChooseStyle
 sso.updateMobile.url=http://192.168.253.6:32323/validation/phoneValidation
 sso.updateEmail.url=http://192.168.253.6:32323/validation/emailValidation

+ 1 - 1
src/main/resources/prod/account.properties

@@ -10,7 +10,7 @@ sso.cookie.secure=false
 sso.cookie.browser=false
 sso.login.url=https://sso.ubtob.com
 sso.logout.url=https://sso.ubtob.com/logquit
-sso.register.url=https://sso.ubtob.com/register/personalRegistration
+sso.register.url=https://sso.ubtob.com/register/enterpriseRegistration
 sso.updatePassword.url=https://sso.ubtob.com/reset/changePasswordChooseStyle
 sso.updateMobile.url=https://sso.ubtob.com/validation/phoneValidation
 sso.updateEmail.url=https://sso.ubtob.com/validation/emailValidation

+ 1 - 0
src/main/resources/spring/redis.xml

@@ -9,6 +9,7 @@
 	<!-- redis 相关配置 -->
 	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
 		<property name="maxIdle" value="300" />
+		<property name="maxTotal" value="1000" />
 		<property name="maxWaitMillis" value="3000" />
 		<property name="testOnBorrow" value="true" />
 	</bean>

+ 1 - 1
src/main/resources/test/account.properties

@@ -10,7 +10,7 @@ sso.cookie.secure=false
 sso.cookie.browser=false
 sso.login.url=http://192.168.253.6:32323
 sso.logout.url=http://192.168.253.6:32323/logquit
-sso.register.url=http://192.168.253.6:32323/register/personalRegistration
+sso.register.url=http://192.168.253.6:32323/register/enterpriseRegistration
 sso.updatePassword.url=http://192.168.253.6:32323/reset/changePasswordChooseStyle
 sso.updateMobile.url=http://192.168.253.6:32323/validation/phoneValidation
 sso.updateEmail.url=http://192.168.253.6:32323/validation/emailValidation

+ 1 - 1
src/main/webapp/resources/css/commonComponent.css

@@ -634,6 +634,6 @@ div.com-tip{
     left: 0;
     right: 0;
     background: rgba(0, 0, 0, .3);
-    z-index: 1;
+    z-index: 2;
 }
 /*----------遮罩层 end-------------*/

+ 153 - 70
src/main/webapp/resources/data/profession.json

@@ -1,70 +1,153 @@
-{"IT|通信|电子|互联网":[
-  "互联网/电子商务",
-  "计算机软件",
-  "IT服务(系统/数据/维护)",
-  "电子技术/半导体/集成电路",
-  "计算机硬件",
-  "通信/电信/网络设备",
-  "通信/电信运营、增值服务",
-  "网络游戏"],
-  "金融业":[
-    "基金/证券/期货/投资",
-    "保险",
-    "银行",
-    "信托/担保/拍卖/典当"],
-  "房地产|建筑业":{
-      "房地产/建筑/建材/工程": [
-        "房地产金融服务类",
-        "房地产工程施工类",
-        "房地产工程货物类"
-      ],
-      "家居/室内设计/装饰装潢": "家居/室内设计/装饰装潢",
-      "物业管理/商业中心": "物业管理/商业中心"
-  },
-  "商业服务":[
-    "专业服务/咨询(财会/法律/人力资源等)",
-    "广告/会展/公关",
-    "中介服务",
-    "检验/认证",
-    "外包服务"],
-  "贸易|批发|零售|租赁业":[
-    "快速消费品(食品/饮料/烟酒/日化)",
-    "耐用消费品(服饰/纺织/皮革/家具/家电)",
-    "贸易/进出口",
-    "零售/批发",
-    "租赁服务"],
-  "文体教育|工艺美术":[
-    "教育/培训/院校",
-    "礼品/玩具/工艺美术/收藏品/奢侈品"],
-  "生产|加工|制造":[
-    "汽车/摩托车",
-    "大型设备/机电设备/重工业",
-    "加工制造(原料加工/模具)",
-    "仪器仪表及工业自动化",
-    "印刷/包装/造纸",
-    "办公用品及设备",
-    "医药/生物工程",
-    "医疗设备/器械",
-    "航空/航天研究与制造"],
-  "交通|运输|物流|仓储":[
-    "交通/运输",
-    "物流/仓储"],
-  "服务业":[
-    "医疗/护理/美容/保健/卫生服务",
-    "酒店/餐饮",
-    "旅游/度假"],
-  "文化|传媒|娱乐|体育":[
-    "媒体/出版/影视/文化传播",
-    "娱乐/体育/休闲"],
-  "能源|矿产|环保":[
-    "能源/矿产/采掘/冶炼",
-    "石油/石化/化工",
-    "电气/电力/水利",
-    "环保"],
-  "政府|非盈利机构":[
-    "政府/公共事业/非盈利机构",
-    "学术/科研"],
-  "农|林|牧|渔|其他":[
-    "农/林/牧/渔",
-    "跨领域经营",
-    "其他"]}
+{
+  "农、林、牧、渔业":
+  {
+    "农业": ["谷物种植", "豆类、油料和薯类种植", "棉、麻、糖、烟草种植", "蔬菜、食用菌及园艺作物种植", "水果种植", "坚果、含油果、香料和饮料作物种植", "中药材种植", "草种植及割草", "其他农业"],
+    "林业": ["林木育种和育苗", "造林和更新", "森林经营、管护和改培", "木材和竹材采运", "林产品采集"],
+    "畜牧业 ": ["牲畜饲养", "家禽饲养", "狩猎和捕捉动物", "其他畜牧业"],
+    "渔业": ["水产养殖", "水产捕捞"],
+    "农、林、牧、渔专业及辅助性活动": ["农业专业及辅助性活动", "林业专业及辅助性活动", "畜牧专业及辅助性活动", "渔业专业及辅助性活动"]
+  },
+  "采矿业":
+  {
+    "煤炭开采和洗选业": ["烟煤和无烟煤开采洗选", "褐煤开采洗选", "其他煤炭采选"],
+    "石油和天然气开采业": ["石油开采", "天然气开采"],
+    "黑色金属矿采选业": ["铁矿采选", "锰矿、铬矿采选", "其他黑色金属矿采选"],
+    "有色金属矿采选业": ["常用有色金属矿采选", "贵金属矿采选", "稀有稀土金属矿采选"],
+    "非金属矿采选业 ": ["土砂石开采", "化学矿开采", "采盐", "石棉及其他非金属矿采选"],
+    "开采专业及辅助性活动": ["煤炭开采和洗选专业及辅助性活动", "石油和天然气开采专业及辅助性活动", "其他开采专业及辅助性活动"],
+    "其他采矿业": ["其他采矿业"]
+  },
+  "制造业":
+  {
+    "农副食品加工业": ["谷物磨制", "饲料加工", "植物油加工", "制糖业", "屠宰及肉类加工", "水产品加工", "蔬菜、菌类、水果和坚果加工", "其他农副食品加工"],
+    "食品制造业 ": ["焙烤食品制造", " 糖果、巧克力及蜜饯制造", "方便食品制造", "乳制品制造", "罐头食品制造", "调味品、发酵制品制造", "其他食品制造"],
+    "酒、饮料和精制茶制造业 ": ["酒的制造", "饮料制造", "精制茶加工"],
+    "烟草制品业": ["烟叶复烤", "卷烟制造", "其他烟草制品制造"],
+    "纺织业": ["棉纺织及印染精加工", "毛纺织及染整精加工", "麻纺织及染整精加工", "丝绢纺织及印染精加工", "化纤织造及印染精加工", "针织或钩针编织物及其制品制造", "家用纺织制成品制造", "产业用纺织制成品制造"],
+    "纺织服装、服饰业": ["机织服装制造", "针织或钩针编织服装制造", "服饰制造"],
+    "皮革、毛皮、羽毛及其制品和制鞋业": ["皮革鞣制加工", "皮革制品制造", "毛皮鞣制及制品加工", "羽毛(绒)加工及制品制造", "制鞋业"],
+    "木材加工和木、竹、藤、棕、草制品业": ["木材加工", "人造板制造", "木质制品制造", "竹、藤、棕、草等制品制造"],
+    "家具制造业": ["木质家具制造", "竹、藤家具制造", "金属家具制造", "塑料家具制造", "其他家具制造"],
+    "造纸和纸制品业": ["纸浆制造", "造纸", "纸制品制造"],
+    "印刷和记录媒介复制业": ["印刷", "装订及印刷相关服务", "记录媒介复制"],
+    "文教、工美、体育和娱乐用品制造业": ["文教办公用品制造", "乐器制造", "工艺美术及礼仪用品制造", "体育用品制造", "玩具制造", "游艺器材及娱乐用品制造"],
+    "石油、煤炭及其他燃料加工业": ["精炼石油产品制造", "煤炭加工", "核燃料加工", "生物质燃料加工"],
+    "化学原料和化学制品制造业": ["基础化学原料制造", "肥料制造", "农药制造", "涂料、油墨、颜料及类似产品制造", "合成材料制造", "专用化学产品制造", "炸药、火工及焰火产品制造", "日用化学产品制造"],
+    "医药制造业": ["化学药品原料药制造", "化学药品制剂制造", "中药饮片加工", "中成药生产", "兽用药品制造", "生物药品制品制造", "卫生材料及医药用品制造", "药用辅料及包装材料"],
+    "化学纤维制造业": ["纤维素纤维原料及纤维制造", "合成纤维制造", "生物基材料制造"],
+    "橡胶和塑料制品业": ["橡胶制品业", "塑料制品业"],
+    "非金属矿物制品业": ["水泥、石灰和石膏制造", "石膏、水泥制品及类似制品制造", "砖瓦、石材等建筑材料制造", "玻璃制造", "玻璃制品制造", "玻璃纤维和玻璃纤维增强塑料制品制造", "陶瓷制品制造", "耐火材料制品制造", "石墨及其他非金属矿物制品制造"],
+    "黑色金属冶炼和压延加工业": ["炼铁", "炼钢", "钢压延加工", "铁合金冶炼"],
+    "有色金属冶炼和压延加工业 ": ["常用有色金属冶炼", "贵金属冶炼", "稀有稀土金属冶炼", "有色金属合金制造", "有色金属压延加工"],
+    "金属制品业": ["结构性金属制品制造", "金属工具制造", "集装箱及金属包装容器制造", "金属丝绳及其制品制造", "建筑、安全用金属制品制造", "金属表面处理及热处理加工", "搪瓷制品制造", "金属制日用品制造", "铸造及其他金属制品制造"],
+    "通用设备制造业": ["锅炉及原动设备制造", "金属加工机械制造", "物料搬运设备制造", "泵、阀门、压缩机及类似机械制造", "轴承、齿轮和传动部件制造", "烘炉、风机、包装等设备制造", "文化、办公用机械制造", "通用零部件制造", "其他通用设备制造业"],
+    "专用设备制造业": ["采矿、冶金、建筑专用设备制造", "化工、木材、非金属加工专用设备制造", "食品、饮料、烟草及饲料生产专用设备制造", "印刷、制药、日化及日用品生产专用设备制造", "纺织、服装和皮革加工专用设备制造", "电子和电工机械专用设备制造", "农、林、牧、渔专用机械制造", "医疗仪器设备及器械制造", "环保、邮政、社会公共服务及其他专用设备制造"],
+    "汽车制造业": ["汽车整车制造", "汽车用发动机制造", "改装汽车制造", "低速汽车制造", "电车制造", "汽车车身、挂车制造", "汽车零部件及配件制造"],
+    "铁路、船舶、航空航天和其他运输设备制造业": ["铁路运输设备制造", "城市轨道交通设备制造", "船舶及相关装置制造", "航空、航天器及设备制造", "摩托车制造", "自行车和残疾人座车制造", "助动车制造", "非公路休闲车及零配件制造", "潜水救捞及其他未列明运输设备制造"],
+    "电气机械和器材制造业": ["电机制造", "输配电及控制设备制造", "电线、电缆、光缆及电工器材制造", "电池制造", "家用电力器具制造", "非电力家用器具制造", "照明器具制造", "其他电气机械及器材制造"],
+    "计算机、通信和其他电子设备制造业": ["计算机制造", "通信设备制造", "广播电视设备制造", "雷达及配套设备制造", "非专业视听设备制造", "智能消费设备制造", "电子器件制造", "电子元件及电子专用材料制造", "其他电子设备制造"],
+    "仪器仪表制造业": ["通用仪器仪表制造", "专用仪器仪表制造", "钟表与计时仪器制造", "光学仪器制造", "衡器制造", "其他仪器仪表制造业"],
+    "其他制造业": ["日用杂品制造", "核辐射加工", "其他未列明制造业"],
+    "废弃资源综合利用业": ["金属废料和碎屑加工处理", "非金属废料和碎屑加工处理"],
+    "金属制品、机械和设备修理业": ["金属制品修理", "通用设备修理", "专用设备修理", "铁路、船舶、航空航天等运输设备修理"]
+  },
+  "电力、热力、燃气及水生产和供应业":
+  {
+    "电力、热力生产和供应业": ["电力生产", "电力供应", "热力生产和供应"],
+    "燃气生产和供应业": ["燃气生产和供应业", "生物质燃气生产和供应业"],
+    "水的生产和供应业": ["自来水生产和供应", "污水处理及其再生利用", "海水淡化处理", "其他水的处理、利用与分配"]
+  },
+  "建筑业":
+  {
+    "房屋建筑业": ["住宅房屋建筑", "体育场馆建筑", "其他房屋建筑业"],
+    "土木工程建筑业": ["铁路、道路、隧道和桥梁工程建筑", "水利和水运工程建筑", "海洋工程建筑", "工矿工程建筑", "架线和管道工程建筑", "节能环保工程施工", "电力工程施工", "其他土木工程建筑"],
+    "建筑安装业": ["电气安装", "管道和设备安装", "其他建筑安装业"],
+    "建筑装饰、装修和其他建筑业": ["建筑装饰和装修业", "建筑物拆除和场地准备活动", "提供施工设备服务", "其他未列明建筑业"]
+  },
+  "批发和零售业":
+  {
+    "批发业": ["农、林、牧、渔产品批发", "食品、饮料及烟草制品批发", "纺织、服装及家庭用品批发", "文化、体育用品及器材批发", "医药及医疗器材批发", "矿产品、建材及化工产品批发", "机械设备、五金产品及电子产品批发", "贸易经纪与代理", "其他批发业"],
+    "零售业": ["综合零售", "食品、饮料及烟草制品专门零售", "纺织、服装及日用品专门零售", "文化、体育用品及器材专门零售", "医药及医疗器材专门零售", "汽车、摩托车、零配件和燃料及其他动力销售", "家用电器及电子产品专门零售", "五金、家具及室内装饰材料专门零售", "货摊、无店铺及其他零售业"]
+  },
+  "交通运输、仓储和邮政业":
+  {
+    "铁路运输业": ["铁路旅客运输", "铁路货物运输", "铁路运输辅助活动"],
+    "道路运输业": ["城市公共交通运输", "公路旅客运输", "道路货物运输", "道路运输辅助活动"],
+    "水上运输业": ["水上旅客运输", "水上货物运输", "水上运输辅助活动"],
+    "航空运输业": ["航空客货运输", "通用航空服务", "航空运输辅助活动"],
+    "管道运输业": ["海底管道运输", "陆地管道运输"],
+    "多式联运和运输代理业": ["多式联运", "运输代理业"],
+    "装卸搬运和仓储业": ["装卸搬运", "通用仓储", "低温仓储", "危险品仓储", "谷物、棉花等农产品仓储", "中药材仓储", "其他仓储业"],
+    "邮政业": ["邮政基本服务", "快递服务", "其他寄递服务"]
+  },
+  "住宿和餐饮业":
+  {
+    "住宿业": ["旅游饭店", "一般旅馆", "民宿服务", "露营地服务", "其他住宿业"],
+    "餐饮业": ["正餐服务", "快餐服务", "饮料及冷饮服务", "餐饮配送及外卖送餐服务", "其他餐饮业"]
+  },
+  "信息传输、软件和信息技术服务业":
+  {
+    "电信、广播电视和卫星传输服务": ["电信", "广播电视传输服务", "卫星传输服务"],
+    "互联网和相关服务": ["互联网接入及相关服务", "互联网信息服务", "互联网平台", "互联网安全服务", "互联网数据服务", "其他互联网服务"],
+    "软件和信息技术服务业": ["软件开发", "集成电路设计", "信息系统集成和物联网技术服务", "运行维护服务", "信息处理和存储支持服务", "信息技术咨询服务", "数字内容服务", "其他信息技术服务业"]
+  },
+  "金融业":
+  {
+    "货币金融服务": ["中央银行服务", "货币银行服务", "非货币银行服务", "银行理财服务", "银行监管服务"],
+    "资本市场服务": ["证券市场服务 ", "公开募集证券投资基金", "非公开募集证券投资基金", "期货市场服务", "证券期货监管服务", "资本投资服务", "其他资本市场服务"],
+    "保险业": ["人身保险", "财产保险", "再保险", "商业养老金", "保险中介服务", "保险资产管理", "保险监管服务", "其他保险活动"],
+    "其他金融业": ["金融信托与管理服务", "控股公司服务", "非金融机构支付服务", "金融信息服务", "金融资产管理公司", "其他未列明金融业"]
+  },
+  "房地产业":
+  {
+    "房地产业": ["房地产开发经营", "物业管理", "房地产中介服务", "房地产租赁经营", "其他房地产业"]
+  },
+  "租赁和商务服务业":
+  {
+    "租赁业": ["机械设备经营租赁", "文体设备和用品出租", "日用品出租"],
+    "商务服务业": ["组织管理服务", "综合管理服务", "法律服务", "咨询与调查", "广告业", "人力资源服务", "安全保护服务", "会议、展览及相关服务 其他商务服务业"]
+  },
+  "科学研究和技术服务业":
+  {
+    "研究和试验发展": ["自然科学研究和试验发展", "工程和技术研究和试验发展", "农业科学研究和试验发展", "医学研究和试验发展", "社会人文科学研究"],
+    "专业技术服务业": ["气象服务", "地震服务", "海洋服务", "测绘地理信息服务", "质检技术服务", "环境与生态监测检测服务", "地质勘查","工程技术与设计服务", "工业与专业设计及其他专业技术服务"],
+    "科技推广和应用服务业": ["技术推广服务", "知识产权服务", "科技中介服务", "创业空间服务", "其他科技推广服务业"]
+  },
+  "水利、环境和公共设施管理业":
+  {
+    "水利管理业": ["防洪除涝设施管理", "水资源管理", "天然水收集与分配", "水文服务", "其他水利管理业"],
+    "生态保护和环境治理业": ["生态保护", "环境治理业"],
+    "公共设施管理业": ["市政设施管理", "环境卫生管理", "城乡市容管理", "绿化管理", "城市公园管理", "游览景区管理"],
+    "土地管理业": ["土地整治服务 ", "土地调查评估服务", "土地登记服务", "土地登记代理服务", "其他土地管理服务"]
+  },
+  "居民服务、修理和其他服务业":
+  {
+    "居民服务业": ["家庭服务", "托儿所服务", "洗染服务", "理发及美容服务", "摄影扩印服务", "婚姻服务", "殡葬服务", "其他居民服务业"],
+    "机动车、电子产品和日用产品修理业": ["汽车、摩托车等修理与维护", "计算机和办公设备维修", "家用电器修理", "其他日用产品修理业"],
+    "其他服务业": ["清洁服务", "宠物服务", "其他未列明服务业"]
+  },
+  "教育":["学前教育", "初等教育", "中等教育", "高等教育", "特殊教育"],
+  "卫生和社会工作":
+  {
+    "卫生": ["医院", "基层医疗卫生服务", "专业公共卫生服务", "其他卫生活动"],
+    "社会工作": ["提供住宿社会工作", "不提供住宿社会工作"]
+  },
+  "文化、体育和娱乐业":
+  {
+    "新闻和出版业": ["新闻业", "出版业"],
+    "广播、电视、电影和录音制作业": ["广播", "电视", "影视节目制作", "广播电视集成播控", "电影和广播电视节目发行", "电影放映", "录音制作"],
+    "文化艺术业": ["文艺创作与表演", "艺术表演场馆", "图书馆与档案馆", "文物及非物质文化遗产保护", "博物馆", "烈士陵园、纪念馆", "群众文体活动", "其他文化艺术业"],
+    "体育": ["体育组织 ", "体育场地设施管理", "健身休闲活动", "其他体育"],
+    "娱乐业": ["室内娱乐活动", "游乐园", "休闲观光活动", "彩票活动", "文化体育娱乐活动与经纪代理服务", "其他娱乐业"]
+  },
+  "公共管理、社会保障和社会组织":
+  {
+    "中国共产党机关": ["中国共产党机关"],
+    "国家机构": ["国家权力机构", "国家行政机构", "人民法院和人民检察院", "其他国家机构"],
+    "人民政协、民主党派": ["人民政协", "民主党派"],
+    "社会保障": ["基本保险", "补充保险", "其他社会保障"],
+    "群众团体、社会团体和其他成员组织": ["群众团体", "社会团体", "基金会", "宗教组织"],
+    "基层群众自治组织及其他组织": ["社区居民自治组织", "村民自治组织"]
+  },
+  "国际组织": ["国际组织"]
+}

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

@@ -213,7 +213,7 @@ define(['app/app'], function (app) {
                   $scope.isShowSayPriceBox = false;
                   $scope.seekPurchaseTableParams.reload();
                 }, function (response) {
-                  toaster.pop('error', '请勿重复报价或报价自己的求购2');
+                  toaster.pop('error', '请勿重复报价或报价自己的求购');
                 });
               }
             } else {

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

@@ -406,6 +406,10 @@ define(['app/app'], function (app) {
          * 变更到更新状态
          */
         $scope.changeToUpdate = function (isUpdate) {
+            if ($rootScope.userInfo.userUU != $rootScope.userInfo.enterprise.enAdminuu) {
+                toaster.pop('error', '您无该模块的编辑权限,请联系企业管理员进行编辑维护!');
+                return;
+            }
             $scope.updateState = isUpdate;
             if ($scope.updateState == false) {
                 $scope.enterpriseInfo = angular.copy($scope.enterpriseInfoBackup);

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

@@ -743,6 +743,7 @@ define([ 'app/app' ], function(app) {
             commodity.editMinPackQtyPre = commodity.minPackQty;
             commodity.editMinPackQtyDirty = false;
             commodity.editMinPackQtyInValid = false;
+            commodity.editspec = commodity.spec;
 
             commodity.editBreakUp = commodity.breakUp;
             commodity.editBreakUpPre = commodity.breakUp;

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

@@ -140,6 +140,10 @@ define(['app/app'], function (app) {
 		 * @param module	模块名称
 		 */
 		$scope.showEdit = function (module) {
+			if ($rootScope.userInfo.userUU != $rootScope.userInfo.enterprise.enAdminuu) {
+				toaster.pop('error', '您无该模块的编辑权限,请联系企业管理员进行编辑维护!');
+				return;
+			}
 			changeEditStatus(module, true);
 		};
 
@@ -227,7 +231,7 @@ define(['app/app'], function (app) {
          */
         $scope.checkWeixin = function () {
             var enWeixin = angular.element('.enWeixin').val();
-            if (!/^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/.test(enWeixin) && enWeixin) {
+            if (!/^[0-9a-zA-Z]{6,20}$/.test(enWeixin) && enWeixin) {
                 toaster.pop('error', '请输入正确的微信号');
                 return false;
             }
@@ -284,7 +288,7 @@ define(['app/app'], function (app) {
                 return false;
             }
 
-            if (!/^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/.test(enWeixin) && enWeixin) {
+            if (!/^[0-9a-zA-Z]{6,20}$/.test(enWeixin) && enWeixin) {
                 toaster.pop('error', '请输入正确的微信号');
                 return false;
             }
@@ -538,6 +542,10 @@ define(['app/app'], function (app) {
 		$scope.cancleProductEdit = cancleProductEdit;
 
 		function editRecommendProduct(module, status) {
+			if ($rootScope.userInfo.userUU != $rootScope.userInfo.enterprise.enAdminuu) {
+				toaster.pop('error', '您无该模块的编辑权限,请联系企业管理员进行编辑维护!');
+				return;
+			}
 			if (module == 'BATCH_OPERATION') {
 				$scope.canBatchOperation = status;
 				return ;

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

@@ -214,7 +214,7 @@
             <ul>
                 <!--<li ng-class="{'active' : active == 'home'}"><a href="#home" class="active">首页</a></li>-->
                 <!--<li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessage">0</span>)</a></li>-->
-                <li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
+                <li ng-if="userInfo.enterprise && userInfo.enterprise.uu" ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
                 <!--<li ng-class="{'active' : active == 'browsing-history'}" s><a href="#browsing-history">浏览历史</a></li>-->
             </ul>
         </div>

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

@@ -654,7 +654,7 @@
                     </div>
                 </div>
                 <div class="sreach-input fr">
-                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
+                    <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>

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

@@ -691,7 +691,7 @@
                     </div>
                 </div>
                 <div class="sreach-input fr">
-                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
+                    <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>

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

@@ -924,8 +924,8 @@
                         <p class="basic_title"><span>企业信息</span>
                             <!--<span class="fr"><a href="#">修改</a><a href="#">提交</a><a href="#">删除</a></span>-->
                             <span class="fr">
-                                <button ng-if=" !updateState"  ng-click="changeToUpdate(true)">修改</button>
-                                <button ng-if=" updateState"  ng-click="saveUpdate()">保存</button>
+                                <button ng-if="!updateState"  ng-click="changeToUpdate(true)">修改</button>
+                                <button ng-if="updateState"  ng-click="saveUpdate()">保存</button>
                                 <button ng-if="updateState" ng-click="changeToUpdate(false)" style="color: #f00">取消</button>
                             </span>
             </p>
@@ -990,7 +990,8 @@
                           <div class="choose-item">
                             <ul class="list-unstyled">
                               <li ng-repeat="(key, value) in profession[0]" ng-class="{active: key == active[0]}">
-                                <a ng-click="onItemClick(key, 0, value)">{{key}}
+                                <a ng-click="onItemClick(key, 0, value)">
+                                  <span style="width: 90%;overflow: hidden; white-space: nowrap; float: left">{{key}}</span>
                                   <span class="caret" ></span>
                                 </a>
                               </li>
@@ -1001,7 +1002,8 @@
                           <div class="choose-item">
                             <ul class="list-unstyled">
                               <li ng-repeat="(key, value) in profession[1]" ng-class="{active: key == active[1]}">
-                                <a ng-click="onItemClick(key, 1, value)">{{key}}
+                                <a ng-click="onItemClick(key, 1, value)">
+                                  <span style="width: 90%;overflow: hidden; white-space: nowrap; float: left">{{key}}</span>
                                   <span ng-show="!isString(value)" class="caret" ></span>
                                 </a>
                               </li>
@@ -1012,7 +1014,8 @@
                           <div class="choose-item">
                             <ul class="list-unstyled">
                               <li ng-repeat="(key, value) in profession[2]" ng-class="{active: key == active[2]}">
-                                <a ng-click="onItemClick(key, 2, value)">{{key}}
+                                <a ng-click="onItemClick(key, 2, value)">
+                                  <span style="width: 90%;overflow: hidden; white-space: nowrap; float: left">{{key}}</span>
                                   <span ng-show="!isString(value)" class="caret" ></span>
                                 </a>
                               </li>
@@ -1023,7 +1026,7 @@
                           <div class="choose-item">
                             <ul class="list-unstyled">
                               <li ng-repeat="value in professionArray" ng-class="{active: false}">
-                                <a ng-click="onItemClick(null, -1, value)">{{value}}</a>
+                                <a ng-click="onItemClick(null, -1, value)" style="white-space: nowrap">{{value}}</a>
                               </li>
                             </ul>
                           </div>

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

@@ -449,7 +449,7 @@
 		float: left;
 	}
 	.edit-content div.width140{
-		width: 150px;
+		width: 156px;
 	}
 	.edit-content div.width130{
 		width: 185px;
@@ -1100,7 +1100,7 @@
 	.edit-contents td .bg{
 		background: #fff;
 		width: 100%;
-		height: 100px;
+		height: 132px;
 	}
 	.edit-contents .content{
 		text-align: left;
@@ -1122,12 +1122,12 @@
 	}
 	.edit-contents .content .title span:first-child {
 		float: left;
-		width: 70px;
+		width: 78px;
 		text-align: right;
 	}
 	.edit-contents .content .title span:last-child {
 		float: left;
-		width: 75px;
+		width: 74px;
 		overflow: hidden;
 		text-overflow: ellipsis;
 		white-space: nowrap;
@@ -1959,13 +1959,14 @@
 		<div ng-if="standard_tab == 'unstandard' || standard_tab =='standard'">
 			<div class="search-check">
 				<div class="search fl">
-					<label>人员选择:</label>
+					<!-- TODO 搜索引擎实现人员过滤还待完善 -->
+					<!--<label>人员选择:</label>
 					<input type="text" class="form-control prod-name" ng-model="enUser.prodName" ng-change="onUserUUChange()" ng-search="onSearch()" placeholder="姓名"/>
 					<ul ng-if="showSimilarUser" class="prodUserList" ng-mouseenter="similarUserObj.isInSimilarUser = true" ng-search="onSearch()" ng-mouseleave="similarUserObj.isInSimilarUser = false">
 						<li ng-repeat="item in similarUser.content" ng-click="setProdName(item)">
 							{{item.userName}}({{item.userUU}})
 						</li>
-					</ul>
+					</ul>-->
 					<input type="text" class="form-control keyword-material" ng-model="param.keyword" ng-search="onSearch()" placeholder="类目/型号/品牌"/>
 					<button ng-click="onSearch()">搜索</button>
 					<!--<a ng-click="download()">批量导出</a>-->
@@ -2002,7 +2003,7 @@
 							</label>
 						</th>
 						<th width="50">序号</th>
-						<th width="140">产品名称(类目)</th>
+						<th width="140">类目(产品名称)</th>
 						<th width="170">产品型号</th>
 						<th width="120">品牌</th>
 						<th width="100">单位</th>
@@ -2037,7 +2038,7 @@
 							</td>
 						</tr>
 					</tbody>
-					<tbody ng-repeat="material in currenctMaterial">
+					<tbody ng-repeat="material in currenctMaterial | orderBy:'-id'">
 					<!--<tr ng-class="{ 'active': material.selected }" class="gre-bg">-->
 					<tr ng-class="{ 'active': material.selected, 'gre-bg' : material.exPandOper}">
 						<td class="check-input">
@@ -2121,7 +2122,7 @@
 															</div>-->
                                                         </div>
                                                         <div class="input-list produceDate-fix">
-                                                            <span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
+                                                            <span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="12" title="生产日期" maxlength="12" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
                                                                                                  ng-class="{'error' : goods.editProduceDateInvalid}"
                                                                                                  ng-change="editProduceDateFa(goods, false)"/>
                                                         </div>
@@ -2134,16 +2135,19 @@
                                                     <div class="content margin10">
                                                         <!--<p class="title">库存</p>-->
                                                         <div class="input-list">
-                                                            <span class="tit">库存:</span><input type="number" class="wid70 form-control" name="reserve" title="库存" placeholder="数量"
+                                                            <span class="tit" style="width: 84px">库存:</span><input type="number" class="wid70 form-control" name="reserve" title="库存" placeholder="数量"
                                                                                                ng-model="goods.editReserve" maxlength="9" ng-blur="setPriceMaxAmount(goods, false)" ng-class="{'error' : goods.editReserveInvalid}" oninput="if(value.length>9)value=value.slice(0,9)"/>
                                                         </div>
                                                         <div class="input-list">
-                                                            <span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="起拍"  placeholder="数量"
+                                                            <span class="tit" style="width: 84px">最小起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="最小起订量"  placeholder="数量"
                                                                                                 maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
                                                         </div>
                                                         <div class="input-list">
-										                    <span class="tit">包装数:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
+										                    <span class="tit" style="width: 84px">最小包装数:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="最小包装数" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
                                                         </div>
+																											<div class="input-list">
+																												<span class="tit" style="width: 84px">规格:</span><input maxlength="40" class="wid70 form-control" name="minPackQty" title="规格" placeholder="规格" ng-model="goods.spec"  style="width: 70px;"/>
+																											</div>
                                                     </div>
                                                     <div class="content">
                                                         <p class="title height24">梯度/pcs</p>
@@ -2236,13 +2240,14 @@
 													</div>
 													<div class="content width140">
 														<p class="title"><span>包装:</span><span ng-bind="goods.packaging">盘装</span></p>
-														<p class="title"><span>生产日期:</span><span ng-bind="goods.produceDate">20160123</span></p>
+														<p class="title"><span>生产日期:</span><span ng-bind="goods.produceDate" title="{{goods.produceDate}}">20160123</span></p>
 														<p class="title" ng-class="{'noBreak' : !goods.breakUp}" ng-if="goods.breakUp" ng-bind="goods.breakUp ? '可拆卖' : '不可拆卖'">不可拆卖</p>
 													</div>
 													<div class="content width130">
-														<p class="title"><span>库存:</span><span ng-bind="goods.reserve">9023492</span></p>
-														<p class="title"><span>起订量:</span><span ng-bind="goods.minBuyQty">90492</span></p>
-														<p class="title"><span>包装数量:</span><span ng-bind="goods.minPackQty">980</span></p>
+														<p class="title"><span style="width:84px">库存:</span><span ng-bind="goods.reserve">9023492</span></p>
+														<p class="title"><span style="width:84px">最小起订量:</span><span ng-bind="goods.minBuyQty">90492</span></p>
+														<p class="title"><span style="width:84px">最小包装数:</span><span ng-bind="goods.minPackQty">980</span></p>
+														<p class="title"><span style="width:84px">规格:</span><span ng-bind="goods.spec || '-'" title="{{goods.spec}}">980</span></p>
 													</div>
 													<div class="content width150">
 														<div class="title-price">
@@ -2330,23 +2335,28 @@
 													<div class="content margin10">
 														<!--<p class="title">库存</p>-->
 														<div class="input-list">
-															<span class="tit">库存:</span><input type="number" class="wid70 form-control" name="reserve" title="库存" placeholder="数量" ng-model="goods.editReserve" ng-blur="setPriceMaxAmount(goods, true)"
+															<span class="tit"  style="width: 84px">库存:</span><input type="number" class="wid70 form-control" name="reserve" title="库存" placeholder="数量" ng-model="goods.editReserve" ng-blur="setPriceMaxAmount(goods, true)"
 																							   maxlength="9" oninput="if(value.length>9)value=value.slice(0,9)"
 																							   ng-class="{'error' : goods.editReserveInvalid}"/>
 														</div>
 														<div class="input-list">
-															<span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty"
+															<span class="tit" style="width: 84px">最小起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty"
 																								maxlength="6"
 																								oninput="if(value.length>6)value=value.slice(0,6)"
 																								title="起订"  placeholder="数量" ng-model="goods.editMinBuyQty" ng-change="updateStartNumber(goods)"
 																								ng-blur="setPriceMinAmount(goods, true)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
 														</div>
 														<div class="input-list">
-															<span class="tit">包装数:</span><input type="number" class="width70 form-control" name="minPackQty" title="包装数"  placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)"
+															<span class="tit"  style="width: 84px">最小包装数:</span><input type="number" class="width70 form-control" name="minPackQty" title="最小包装数"  placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)"
 																								 maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)"
 																								 ng-class="{'error' : goods.editMinPackQtyInValid}"
 																								 style="width: 70px;"/>
 														</div>
+														<div class="input-list">
+															<span class="tit"  style="width: 84px">规格:</span><input class="width70 form-control" name="spec" title="规格"  placeholder="规格" ng-model="goods.spec"
+																																		maxlength="20"
+																																		style="width: 70px;"/>
+														</div>
 													</div>
 													<div class="content">
 														<p class="title height24">梯度/pcs</p>
@@ -2534,7 +2544,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>-->
@@ -2706,14 +2716,14 @@
 							<div class="detail">
 								<div class="detail-title">包装:<span ng-bind="goods.packaging">盘装</span></div>
 								<div class="detail-title">库存:<span ng-bind="goods.reserve">9023492</span></div>
-								<div class="detail-title">起订量:<span ng-bind="goods.minBuyQty">90492</span></div>
+								<div class="detail-title">最小起订量:<span ng-bind="goods.minBuyQty">90492</span></div>
 							</div>
 							<div class="detail distance">
 								<div class="detail-title">交期(天):
 									<span ng-if="goods.maxDelivery == goods.minDelivery">{{goods.minDelivery}}</span>
 									<span ng-if="goods.maxDelivery != goods.minDelivery">{{goods.minDelivery}}-{{goods.maxDelivery}}</span>
 								</div>
-								<div class="detail-title">包装数:<span ng-bind="goods.minPackQty">980</span></div>
+								<div class="detail-title">最小包装数:<span ng-bind="goods.minPackQty">980</span></div>
 								<div class="detail-title">生产日期:<span ng-bind="goods.produceDate">20160123</span></div>
 							</div>
 							<div class="detail">

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

@@ -1858,8 +1858,8 @@
 					<thead>
 					<tr>
 						<th width="80">序号</th>
-						<th width="180">产品名称(类目)</th>
-						<th width="200">产品型号</th>
+						<th width="180">类目(产品名称)</th>
+						<th width="200">型号</th>
 						<th width="150">品牌</th>
 						<!--<th width="100">单位</th>-->
 						<th width="80">规格</th>
@@ -2381,7 +2381,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>

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

@@ -665,7 +665,7 @@
     }
     .wanted_list01 .tab table tr.edit-forms td .bg-show{
         width: 100%;
-        height: 96px;
+        height: 124px;
         background: #fff;
         overflow: hidden;
     }
@@ -698,7 +698,7 @@
         margin-top: 10px;
     }
     .wanted_list01 .tab table tr.edit-forms td .bg-show .width120{
-        width: 120px;
+        width: 110px;
     }
     .wanted_list01 .tab table tr.edit-forms td .bg-show .width130{
         width: 145px;
@@ -707,7 +707,7 @@
         width: 110px;
     }
     .wanted_list01 .tab table tr.edit-forms td .bg-show .width130 div span:first-child{
-        width: 57px;
+        width: 73px;
         text-align: right;
     }
     .wanted_list01 .tab table tr.edit-forms td .bg-show .width100{
@@ -739,7 +739,7 @@
         width: 92px;
     }
     .edit-form td div span.marginL10{
-        margin-left: 30px;
+        margin-left: 10px;
     }
     .edit-form td div span.marginL5{
         margin-left: 5px;
@@ -1034,7 +1034,7 @@
                             </label>
                         </th>
                         <th width="220">产品信息</th>
-                        <th width="115">包装/生产日期</th>
+                        <th width="105">包装/生产日期</th>
                         <th width="140">库存</th>
                         <th width="105">梯度/pcs</th>
                         <th ng-if="onsale.currency == 'USD'" width="116">单价<b style="font-size: 12px;font-weight: 600">($)</b></th>
@@ -1049,7 +1049,7 @@
                                 <a ng-click="changeSupportType(selfSupportType.CONSIGNMENT)" title="寄售">寄售</a>
                             </div>
                         </th>
-                        <th width="60" class="padding0">操作</th>
+                        <th width="70" class="padding0">操作</th>
                     </tr>
                     </thead>
                     <tbody class="bottom-no">
@@ -1089,8 +1089,8 @@
                                 </div>
                             </div>
                             <div class="fr wid135">
-                                <p ng-if="!commodity.uuid">类目: <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
-                                <p ng-if="commodity.uuid" 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 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>
@@ -1110,20 +1110,24 @@
                         <td>
                             <div>
                                 <span class="marginL10">库存: </span>
-                                <span ng-bind="commodity.reserve" title="{{commodity.reserve}}"></span>
+                                <span ng-bind="commodity.reserve" title="{{commodity.reserve}}"style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 80px;" ></span>
+                            </div>
+                            <div class="margin0">
+                                <span class="marginL10">最小起订量: </span>
+                                <span ng-bind="commodity.minBuyQty" title="{{commodity.minBuyQty}}" class="width45" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"></span>
                             </div>
                             <div class="margin0">
-                                <span class="marginL10">起订量: </span>
-                                <span ng-bind="commodity.minBuyQty" title="{{commodity.minBuyQty}}"></span>
+                                <span class="marginL10">最小包装数: </span>
+                                <span ng-bind="commodity.minPackQty" title="{{commodity.minPackQty}}" class="width45" style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"></span>
                             </div>
                             <div class="margin0">
-                                <span class="marginL10">包装数量: </span>
-                                <span ng-bind="commodity.minPackQty" title="{{commodity.minPackQty}}" class="width45"></span>
+                                <span class="marginL10">规格: </span>
+                                <span ng-bind="commodity.spec  || '-'" title="{{commodity.spec}}" class="width45" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"></span>
                             </div>
                         </td>
                         <td>
                             <div ng-repeat="price in commodity.prices" >
-                                <span title="{{price.start + '+'}}" ng-bind="price.start + '+'" class="marginL40"></span>
+                                <span title="{{price.start + '+'}}" ng-bind="price.start + '+'" class="marginL40" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width:60px;"></span>
                             </div>
                         </td>
                         <td ng-if="onsale.currency == 'USD'">
@@ -1138,8 +1142,8 @@
                         </td>
                         <td>
                             <div ng-if="onsale.currency == 'RMB'">
-                                <span ng-if="commodity.b2cMaxDelivery && (commodity.b2cMaxDelivery != commodity.b2cMinDelivery)" ng-bind=" commodity.b2cMinDelivery + '-'+ commodity.b2cMaxDelivery" class="marginL40"></span>
-                                <span ng-if="commodity.b2cMaxDelivery && (commodity.b2cMaxDelivery == commodity.b2cMinDelivery)" ng-bind=" commodity.b2cMinDelivery" class="marginL40"></span>
+                                <span ng-if="commodity.b2cMaxDelivery && (commodity.b2cMaxDelivery != commodity.b2cMinDelivery)" ng-bind=" commodity.b2cMinDelivery + '-'+ commodity.b2cMaxDelivery" class="marginL40" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width:60px;"></span>
+                                <span ng-if="commodity.b2cMaxDelivery && (commodity.b2cMaxDelivery == commodity.b2cMinDelivery)" ng-bind=" commodity.b2cMinDelivery" class="marginL40" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width:60px;"></span>
                             </div>
                             <div ng-if="onsale.currency == 'USD'">
                                 <span ng-if="commodity.b2cMaxDelivery && (commodity.b2cMinDelivery != commodity.b2cMaxDelivery)" ng-bind=" commodity.b2cMinDelivery + '-'+ commodity.b2cMaxDelivery" class="marginL40"></span>
@@ -1188,7 +1192,7 @@
                                         </div>
                                     </div>
                                     <div class="fr wid135">
-                                        <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.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></p>
                                     </div>
@@ -1202,7 +1206,7 @@
                                         </span>
                                     </div>
                                     <div>
-                                        <span><input type="text" ng-change="editProduceDateFa(commodity)" placeholder="生产日期" maxlength="11" ng-model="commodity.editProduceDate" ng-class="{'error' : commodity.editProduceDateInvalid}" class="wid88 form-control"/></span>
+                                        <span><input type="text" ng-change="editProduceDateFa(commodity)" placeholder="生产日期" maxlength="12" ng-model="commodity.editProduceDate" ng-class="{'error' : commodity.editProduceDateInvalid}" class="wid88 form-control"/></span>
                                     </div>
                                     <div>
                                         <span>可拆卖:</span>
@@ -1216,14 +1220,19 @@
                                                      placeholder="数量" maxlength="9" ng-model="commodity.editReserve" class="wid48 form-control"/></span>
                                     </div>
                                     <div>
-                                        <span>起订量: </span>
+                                        <span>最小起订量: </span>
                                         <span><input type="text" ng-change="updateStartNumber(commodity)" ng-blur="changeMinBuyQty(commodity)" ng-class="{'error' : commodity.editMinBuyQtyInValid}" placeholder="数量" maxlength="6" ng-model="commodity.editMinBuyQty" class="wid48 form-control"/></span>
                                     </div>
                                     <div>
-                                        <span>包装数: </span>
+                                        <span>最小包装数: </span>
                                         <span><input type="text" ng-blur="changeMinPackQty(commodity)"
                                                      ng-class="{'error' : commodity.editMinPackQtyInValid}" placeholder="数量" maxlength="6" ng-model="commodity.editMinPackQty" class="wid48 form-control"/></span>
                                     </div>
+                                    <div>
+                                        <span style="width: 32px;">规格: </span>
+                                        <span><input style="width:90px" type="text"
+                                                      placeholder="请输入规格" maxlength="20" ng-model="commodity.spec" class="wid48 form-control"/></span>
+                                    </div>
                                 </div>
                                 <div class="content-show width135">
                                     <div ng-repeat="price in commodity.editPrices">

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

@@ -750,7 +750,8 @@
 					<span>微&nbsp;&nbsp;&nbsp;&nbsp;信</span>
 				</div>
 				<div class="col-md-10 custom_col">
-					<input type="text" class="form-control enWeixin" style="border-radius: inherit;" title="enWeixin" ng-pattern="/^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/" ng-blur="checkWeixin()" ng-model="sampleStore.enterprise.enWeixin"/>
+					<input type="text" class="form-control enWeixin" style="border-radius: inherit;" title="enWeixin" ng-pattern="/^[0-9a-zA-Z]{6,20}$/" ng-blur="checkWeixin()" ng-model="sampleStore.enterprise.enWeixin"/>
+					<!--<input type="text" class="form-control enWeixin" style="border-radius: inherit;" title="enWeixin" ng-blur="checkWeixin()" ng-model="sampleStore.enterprise.enWeixin"/>-->
 				</div>
 			</div>
 			<div class="row com_row" style="margin-top: 10px;">

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

@@ -685,12 +685,12 @@
                                 <span class="text-more" ng-bind="commodity.unit || 'PCS'">PCS</span>
                             </div>
                             <div class="text-more-80">
-                                <span>封装:<em ng-bind="commodity.encapsulation || '-'" class="text-more fr" style="width: 60px;" title="{{commodity.encapsulation}}"></em></span>
+                                <span>规格:<em ng-bind="commodity.spec || '-'" class="text-more fr" style="width: 60px;" title="{{commodity.spec}}"></em></span>
                             </div>
                         </td>
                         <td>
                             <div class="text-more-80">
-                                <span>起订量:</span>
+                                <span>最小起订量:</span>
                                 <span ng-bind="commodity.minBuyQty" title="{{commodity.minBuyQty}}" class="text-more"></span>
                             </div>
                             <div class="text-more-80">

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

@@ -625,8 +625,9 @@
                                     </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>
                                     <td>
                                         <!--<div>类型:&nbsp;<span ng-bind="batchCommodity.original == 1311 ? '现货' : '呆滞库存' "></span></div>-->
@@ -643,7 +644,8 @@
                                     </td>
                                     <td>
                                         <div>库存:&nbsp;<span ng-bind="batchCommodity.reserve | number"></span></div>
-                                        <div>起拍:&nbsp;<span ng-bind="batchCommodity.minBuyQty | number"></span></div>
+                                        <div>最小起订量:&nbsp;<span ng-bind="batchCommodity.minBuyQty | number"></span></div>
+                                        <div>最小包装数:&nbsp;<span ng-bind="batchCommodity.minPackage | number"></span></div>
                                         <!--<div>倍数/价格:&nbsp;-->
                                             <!--<span ng-bind="batchCommodity.minBuyQty | number"></span>-->
                                             <!--<span ng-if="batchCommodity.usdMinPackPrice">-->