Эх сурвалжийг харах

Merge branch 'bug' into dev

hulh 8 жил өмнө
parent
commit
87c94f8d86

+ 26 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/AuthenticationController.java

@@ -2,10 +2,15 @@ package com.uas.platform.b2c.common.account.controller;
 
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.model.UserInfo;
+import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.core.support.SystemSession;
+import net.sf.ehcache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  *
  */
@@ -13,6 +18,9 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/user/authentication")
 public class AuthenticationController {
 
+	@Autowired
+	private UserService userService;
+
 	@RequestMapping(method = RequestMethod.GET, headers = "Accept=application/json")
 	@ResponseBody
 	@ResponseStatus(value = HttpStatus.OK)
@@ -23,6 +31,24 @@ public class AuthenticationController {
 		return new UserInfo(SystemSession.getUser());
 	}
 
+	/**
+	 * 个人注册企业成功后刷新企业列表信息
+	 * @return userInfo
+	 */
+	@RequestMapping(value = "/reflash", method = RequestMethod.GET, headers = "Accept=application/json")
+	@ResponseBody
+	@ResponseStatus(value = HttpStatus.OK)
+	public UserInfo getAuthenticationAfterRegister(HttpServletRequest request) {
+		CacheManager singletonManager = CacheManager.create();
+		singletonManager.clearAll();
+		if (SystemSession.getUser() == null) {
+			return null;
+		}
+		User user = userService.findUserByUserUU(SystemSession.getUser().getUserUU());
+		request.getSession().setAttribute("user",user);
+		return new UserInfo(user);
+	}
+
 	/**
 	 * 切换企业
 	 * 

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/account/controller/EnterpriseController.java

@@ -68,7 +68,7 @@ public class EnterpriseController {
 	 * @return
 	 */
 	@RequestMapping(value = "/register", method = RequestMethod.POST)
-	public ResultMap registerEnterprise(Enterprise enterprise, String filePath) {
+	public ResultMap registerEnterprise(@RequestBody Enterprise enterprise, String filePath) {
 		return enterpriseService.registerEnterprise(enterprise,filePath,SystemSession.getUser());
 	}
 

+ 11 - 4
src/main/java/com/uas/platform/b2c/common/account/service/impl/EnterpriseServiceImpl.java

@@ -124,19 +124,26 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 		detail.setShortName(enterprise.getEnShortname());
 		detail.setBusinessCode(enterprise.getEnBussinessCode());
 		detail.setBusinessCodeImage(filePath);
+		if (null == detail.getName()|| null == detail.getShortName() || null==detail.getBusinessCode() || null==detail.getBusinessCodeImage()){
+			return new ResultMap(CodeType.SYSTEM_NOT_EXIST, "参数不能为空");
+		}
 		detail.setArea("中国大陆");
 		detail.setAddress(enterprise.getEnAddress());
 		detail.setUrl(enterprise.getEnUrl());
 		detail.setAdminName(user.getUserName());
 		detail.setAdminEmail(user.getUserEmail());
 		detail.setAdminTel(user.getUserTel());
+		String result = null;
 		try {
-			AccountUtils.applyApp(detail,null);
+			result = AccountUtils.applyAppForMall(detail);
 		}catch (Exception e){
 			return new ResultMap(CodeType.SYSTEM_ERROR, "注册失败");
 		}
+		if (result.contains("errMsg") || !result.contains("enuu")){
+			return new ResultMap(CodeType.SYSTEM_ERROR, "注册失败");
+		}
 
-		return ResultMap.success("注册成功");
+		return ResultMap.success(JSONObject.parseObject(result));
 	}
 
 	@Override
@@ -144,7 +151,7 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 		try {
 			String result = AccountUtils.validName(name);
 			JSONObject resultJSON = JSONObject.parseObject(result);
-			if (null !=resultJSON.get("businessCode")){
+			if (true == (boolean)resultJSON.get("inCloud") || true == (boolean)resultJSON.get("hasCreate")){
 				return new ResultMap(CodeType.SYSTEM_ERROR, "校验失败");
 			}else{
 				return ResultMap.success("校验成功");
@@ -159,7 +166,7 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 		try {
 			String result = AccountUtils.validBusinessCode(businessCode);
 			JSONObject resultJSON = JSONObject.parseObject(result);
-			if (null !=resultJSON.get("name")){
+			if (true == (boolean)resultJSON.get("inCloud") || true == (boolean)resultJSON.get("hasCreate")){
 				return new ResultMap(CodeType.SYSTEM_ERROR, "校验失败");
 			}else{
 				return ResultMap.success("校验成功");

+ 55 - 0
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -1,13 +1,24 @@
 package com.uas.platform.b2c.common.search.controller;
 
+import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.search.service.SearcherService;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.prod.store.model.StoreIn;
+import com.uas.platform.b2c.prod.store.service.StoreInService;
+import com.uas.platform.b2c.trade.presale.service.StoreFocusService;
+import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
@@ -15,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -36,6 +48,15 @@ public class SearcherController {
 	@Autowired
 	private SearcherService searcherService;
 
+	@Autowired
+	private StoreInService storeService;
+
+	@Autowired
+	private StoreFocusService storeFocusService;
+
+	@Autowired
+	private GoodsService goodsService;
+
 	/**
 	 * 作搜索展示跳转
 	 * 
@@ -278,4 +299,38 @@ public class SearcherController {
 		return searcherService.getSimilarBrands(keyword);
 	}
 
+	/**
+	 * 根据店铺类型和关键字信息分页获取店铺信息
+	 *
+	 * @param params		分页参数信息
+	 * @param types			店铺类型
+	 * @param keyword		查询关键字
+	 */
+	@RequestMapping(value = "/stores", method = RequestMethod.GET, params = "op=pageByType")
+	@ResponseBody
+	public List<Map<String, Object>> pageStoresByTypesAndKeyword(PageParams params, String types,HttpServletRequest request, @RequestParam(required = false) String keyword) {
+		User user = (User)request.getSession().getAttribute("user");
+		SystemSession.setUser(user);
+		PageInfo pageInfo = new PageInfo(params);
+		Page<StoreIn> stores = storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword);
+		List<Map<String, Object>> result = new ArrayList<>();
+		Map<String, Object> a = new HashedMap();
+		a.put("stores",stores);
+		result.add(a);
+		Map<String, Object> b = new HashedMap();
+		ArrayList<String> flag = new ArrayList<>();
+		ArrayList<Object> flag2 = new ArrayList<>();
+		b.put("isFocus",flag);
+		b.put("image",flag2);
+		result.add(b);
+		for (StoreIn storeIn : stores){
+			flag.add(storeFocusService.storeIfFocus(storeIn.getId()));
+			PageInfo pageInfoCache = new PageInfo(1,4);
+			//暂时只显示有图片的产品信息
+			pageInfoCache.expression(PredicateUtils.isNotNull("img"));
+			flag2.add(goodsService.pageCommoditiesByEnInfos(storeIn.getUuid(),null,null,pageInfoCache));
+		}
+		return result;
+	}
+
 }

+ 46 - 46
src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java

@@ -1,17 +1,19 @@
 package com.uas.platform.b2c.common.search.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.common.search.service.SearcherService;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentGoodsDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentInfoDao;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentGoods;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
-import com.uas.platform.b2c.common.search.service.SearcherService;
-import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.core.exception.SystemException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.search.exception.SearchException;
+import com.uas.search.model.CollectField;
 import com.uas.search.model.PageParams.FilterField;
+import com.uas.search.model.SPage;
 import com.uas.search.model.Sort;
 import com.uas.search.service.SearchService;
 import org.slf4j.Logger;
@@ -26,11 +28,9 @@ import java.io.IOException;
 import java.util.*;
 import java.util.Map.Entry;
 
-import com.uas.search.model.CollectField;
-
 /**
  * 搜索索引
- * 
+ *
  * @author sunyj
  * @since 2016年7月8日 下午5:14:44
  */
@@ -50,7 +50,7 @@ public class SearcherServiceImpl implements SearcherService {
 
 	/**
 	 * 智能搜索类目
-	 * 
+	 *
 	 * @param keyword
 	 * @param field
 	 * @return
@@ -60,20 +60,20 @@ public class SearcherServiceImpl implements SearcherService {
 	@Override
 	public ModelMap searchKind(String keyword, String field) {
 		ModelMap map = new ModelMap();
-		List<Map<String, Object>> kinds = new ArrayList<>();
+		SPage<Map<String, Object>> kinds = null;
 		try {
-			kinds = searchService.getKinds(keyword);
+			kinds = searchService.getKinds(keyword,1,1024*1024*1024);
 		} catch (SearchException e) {
 			throwSystemException(e);
 		}
-		map.put("total", kinds.size());// 结果总数
-		map.put("kinds", kinds);
+		map.put("total", kinds.getTotalElement());// 结果总数
+		map.put("kinds", kinds.getContent());
 		return map;
 	}
 
 	/**
 	 * 智能搜索品牌
-	 * 
+	 *
 	 * @param keyword
 	 * @param field
 	 * @return
@@ -83,20 +83,20 @@ public class SearcherServiceImpl implements SearcherService {
 	@Override
 	public ModelMap searchBrand(String keyword, String field) {
 		ModelMap map = new ModelMap();
-		List<Map<String, Object>> brands = new ArrayList<>();
+		SPage<Map<String, Object>> brands = null;
 		try {
-			brands = searchService.getBrands(keyword);
+			brands = searchService.getBrands(keyword,1,1024*1024*1024);
 		} catch (SearchException e) {
 			throwSystemException(e);
 		}
-		map.put("brands", brands);// 结果集
-		map.put("total", brands.size());// 结果总数
+		map.put("brands", brands.getContent());// 结果集
+		map.put("total", brands.getTotalElement());// 结果总数
 		return map;
 	}
 
 	/**
 	 * 智能搜索器件
-	 * 
+	 *
 	 * @param keyword
 	 * @return
 	 * @throws InterruptedException
@@ -179,35 +179,35 @@ public class SearcherServiceImpl implements SearcherService {
 
 		return map;
 	}
-    /**
-     * 批次搜索数量统计
-     *
-     * @param keyword
-     * @param page
-     * @return
-     * @throws InterruptedException
-     * @throws IOException
-     */
-    @SuppressWarnings("unchecked")
-    @Override
-    public ModelMap searchComponentGoodsNums(String keyword, PageParams page) {
-        ModelMap map = new ModelMap();
-        Map<String, Object> results = null;
-        //Map<String, Object> results = new HashMap<>();
-        try {
-            results = searchService.getGoodsIds(keyword, convertPageParams(page));
-        } catch (SearchException e) {
-            throwSystemException(e);
-        }
-        map.put("total", results.get("total"));// 搜索结果总数
-        return map;
-    }
+	/**
+	 * 批次搜索数量统计
+	 *
+	 * @param keyword
+	 * @param page
+	 * @return
+	 * @throws InterruptedException
+	 * @throws IOException
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public ModelMap searchComponentGoodsNums(String keyword, PageParams page) {
+		ModelMap map = new ModelMap();
+		Map<String, Object> results = null;
+		//Map<String, Object> results = new HashMap<>();
+		try {
+			results = searchService.getGoodsIds(keyword, convertPageParams(page));
+		} catch (SearchException e) {
+			throwSystemException(e);
+		}
+		map.put("total", results.get("total"));// 搜索结果总数
+		return map;
+	}
 
 
 
 	/**
 	 * 获取器件搜索的类目统计
-	 * 
+	 *
 	 * @param keyword
 	 * @return
 	 */
@@ -224,7 +224,7 @@ public class SearcherServiceImpl implements SearcherService {
 
 	/**
 	 * 获取器件搜索的品牌统计列表
-	 * 
+	 *
 	 * @param keyword
 	 * @return
 	 */
@@ -253,7 +253,7 @@ public class SearcherServiceImpl implements SearcherService {
 		for (Entry<String, Object> entry : paramEntry) {
 			param.put(FilterField.valueOf(entry.getKey().toUpperCase()), entry.getValue());
 		}
- 		try {
+		try {
 			collectResult = searchService.collectBySearchGoods(keyword, CollectField.valueOf(collectList.toUpperCase()),param);
 		} catch (SearchException e) {
 			throwSystemException(e);
@@ -270,8 +270,8 @@ public class SearcherServiceImpl implements SearcherService {
 			throwSystemException(e);
 		}
 		if (result.size() > 8) {
-            result = result.subList(0,8);
-        }
+			result = result.subList(0,8);
+		}
 		return result;
 	}
 
@@ -288,7 +288,7 @@ public class SearcherServiceImpl implements SearcherService {
 
 	/**
 	 * 把平台中PageParams对象转化为搜索API封装的PageParams对象
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 */
@@ -351,7 +351,7 @@ public class SearcherServiceImpl implements SearcherService {
 
 	/**
 	 * 捕获SearchException抛出SystemException
-	 * 
+	 *
 	 * @param e
 	 * @return
 	 */

+ 4 - 1
src/main/java/com/uas/platform/b2c/prod/product/brand/service/impl/BrandSubmitServiceImpl.java

@@ -25,6 +25,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -74,7 +75,9 @@ public class BrandSubmitServiceImpl implements BrandSubmitService {
 		// 检查新增还是更新
 		if (brandSubmit.getUuid() == null) {
 			// 如果是新增检查品牌是否重名,重名设置version为-1,返回前台判断是否更新已存在品牌
-			List<Brand> existBrandCn = brandDao.findByNameCn(brandSubmit.getNameCn());
+			List<Brand> existBrandCn = new ArrayList<Brand>();
+			if (brandSubmit.getNameCn() != null)
+				existBrandCn = brandDao.findByNameCn(brandSubmit.getNameCn());
 			List<Brand> existBrandEn = brandDao.findByNameEn(brandSubmit.getNameEn());
 			if (CollectionUtils.isNotEmpty(existBrandCn)) {
 				brand.setVersion((short) -1);

+ 3 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/impl/StoreFocusServiceImpl.java

@@ -86,6 +86,9 @@ public class StoreFocusServiceImpl implements StoreFocusService {
 	public String storeIfFocus(Long storeid) {
 		// 获取所有店铺关注记录
 		List<StoreFocus> list = new ArrayList<StoreFocus>();
+		if (SystemSession.getUser() == null){
+			return "false";
+		}
 		if (SystemSession.getUser().getEnterprise() != null) {
 			list = storeFocusDao.findStoreFocusByUseruuAndEnuuAndStoreid(
 					SystemSession.getUser().getUserUU(), SystemSession.getUser().getEnterprise().getUu(), storeid);

+ 9 - 5
src/main/webapp/resources/js/admin/controllers/help/HelpDetailCtrl.js

@@ -8,11 +8,15 @@ define(['app/app'], function(app) {
         HelpIssue.get({id : $stateParams.id}, function (data) {
             $scope.issue = data;
             quill.setContents(angular.fromJson($scope.issue.content));
-            HelpAPI.get({id : $scope.issue.navId},function (data) {
-                $scope.issue.nav = data;
-            }, function (response) {
-                toaster.pop('error', response.data);
-            });
+            if ($scope.issue.navId) {
+                HelpAPI.get({id : $scope.issue.navId},function (data) {
+                    $scope.issue.nav = data;
+                }, function (response) {
+                    toaster.pop('error', response.data);
+                });
+            } else {
+                toaster.pop('warning', '暂无导航信息,请补充');
+            }
         }, function (response) {
             toaster.pop('error', response.data);
         });

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

@@ -188,7 +188,7 @@
                                 <label for="check-py"></label>
                                 <span>我已阅读并同意</span>
                             </label>
-                            <a href="help/nav/19" class="base-line" target="_blank">《发票须知》</a>
+                            <a href="help/helpList/19" class="base-line" target="_blank">《发票须知》</a>
                         </div>
                     </div>
                     <div class="col-md-offset-3">
@@ -322,7 +322,7 @@
                                 <label for="check-zy"></label>
                                 <span>我已阅读并同意</span>
                             </label>
-                            <a href="help/nav/19">《发票须知》</a>
+                            <a href="help/helpList/19" target="_blank">《发票须知》</a>
                         </div>
                     </div>
                     <div class="col-md-offset-3">

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

@@ -521,8 +521,8 @@
 							<span class="style01" style="width: 60%;">配送方式:
 								<select ng-if="order.status == 501" class="select" ng-switch="order.deliverytype" style="opacity: 1;" >
 									<option ng-switch-when="1301">第三方配送</option>
-									<option ng-switch-when="1301">卖家配送</option>
-									<option ng-switch-when="1301">上门自提</option>
+									<!--<option ng-switch-when="1301">卖家配送</option>-->
+									<!--<option ng-switch-when="1301">上门自提</option>-->
 									<!--<option ng-switch-when="1302">上门自提</option>-->
 								</select>
 								<em ng-if="order.status != 501">物流配送</em>

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

@@ -434,7 +434,7 @@
                     <div class="col-md-11">
                         1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。<br/>
                         2. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。<br/>
-                        3. 更多的条款请阅读<a href="help/issue/51" target="_blank">《优软商城代收代付协议》</a> 。
+                        3. 更多的条款请阅读<a href="help/helpDetail/51" target="_blank">《优软商城代收代付协议》</a> 。
                     </div>
                 </div>
             </div>
@@ -619,7 +619,7 @@
                 <div class="col-md-8">
                     1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。<br/>
                     2. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。<br/>
-                    3. 更多的条款请阅读<a href="help/issue/51" style="color: #5078cb;" target="_blank">《优软商城代收代付协议》</a> 。
+                    3. 更多的条款请阅读<a href="help/helpDetail/51" style="color: #5078cb;" target="_blank">《优软商城代收代付协议》</a> 。
                 </div>
             </div>
         </div>

+ 38 - 8
src/main/webapp/resources/view/vendor/forstore/vendor_store_info.html

@@ -1,4 +1,8 @@
 <style>
+	div.vendor_store_apply_info input.ng-invalid.ng-dirty, textarea.ng-invalid.ng-dirty {
+		border-color: #CC0033 !important;
+	}
+
 	div.vendor_store_apply_info {
 		margin: 0;
 		float: right;
@@ -623,8 +627,8 @@
 					<span>简&nbsp;&nbsp;&nbsp;&nbsp;介<strong class="text-inverse">*</strong></span>
 				</div>
 				<div class="col-md-10 custom_col">
-				<textarea class="form-control" style="border-radius: inherit;resize: none;height: 200px;" title="description"
-						  ng-model="description" ng-change="changeInfo('DESCRIPTION', description)" required placeholder="请输入不超过500字的介绍" maxlength="500"></textarea>
+				<textarea class="form-control" style="border-radius: inherit;resize: none;height: 200px;" title="description" name="description"
+						  ng-model="description" ng-change="changeInfo('DESCRIPTION', description)" required placeholder="请输入不超过500字的介绍" ng-maxlength="500" maxlength="500"></textarea>
 					<span class="count_tip">
 					<div class="count-content">
 						<span ng-bind="description.length || 0" class="ng-binding">0</span>
@@ -633,16 +637,30 @@
 				</span>
 				</div>
 			</div>
+			<!-- 简介不正确提示信息 -->
+			<div class="row com_row" ng-show="storeInfoForm.description.$dirty && storeInfoForm.description.$invalid && !storeInfoForm.description.$error.required">
+				<div class="col-md-2 custom_col"></div>
+				<div class="col-md-10 custom_col">
+					<span style="color: #ff0000;" ng-show="storeInfoForm.description.$error.maxlength">请勿超过500个字</span>
+				</div>
+			</div>
 			<div class="row com_row" style="margin-top: 10px;">
 				<div class="col-md-2 custom_col">
 					<span>官网地址<strong class="text-inverse">*</strong></span>
 				</div>
 				<div class="col-md-10 custom_col">
-					<input type="text" class="form-control" style="border-radius: inherit;padding-left: 60px;" title="enUrl" ng-model="enUrl"
-						   ng-change="changeInfo('EN_URL', enUrl)"  placeholder="www.ubtob.com" required maxlength="50"/>
+					<input type="text" class="form-control" style="border-radius: inherit;padding-left: 60px;" title="enUrl" ng-model="enUrl" name="enUrl"
+						   ng-change="changeInfo('EN_URL', enUrl)" required placeholder="www.ubtob.com" maxlength="50" ng-maxlength="30" ng-trim/>
 					<span style="position: absolute;display: block;top: 0;z-index: 2;padding-left: 12px;">http://</span>
 				</div>
 			</div>
+			<!-- 官网地址不正确提示信息 -->
+			<div class="row com_row" ng-show="storeInfoForm.enUrl.$dirty && storeInfoForm.enUrl.$invalid && !storeInfoForm.enUrl.$error.required">
+				<div class="col-md-2 custom_col"></div>
+				<div class="col-md-10 custom_col">
+					<span style="color: #ff0000;" ng-show="storeInfoForm.enUrl.$error.maxlength">请勿超过30个字</span>
+				</div>
+			</div>
 			<div class="row com_row" style="margin-top: 10px;">
 				<div class="col-md-2 custom_col">
 					<span>店铺地址</span>
@@ -658,8 +676,15 @@
 					<span>地&nbsp;&nbsp;&nbsp;&nbsp;址<strong class="text-inverse">*</strong></span>
 				</div>
 				<div class="col-md-10 custom_col">
-					<input type="text" class="form-control" style="border-radius: inherit;" title="address" ng-model="address"
-						   ng-change="changeInfo('EN_ADDRESS', address)" placeholder="例如,深圳市 南山区" required maxlength="70"/>
+					<input type="text" class="form-control" style="border-radius: inherit;" title="address" ng-model="address" name="address"
+						   ng-change="changeInfo('EN_ADDRESS', address)" placeholder="例如,深圳市 南山区" required maxlength="70" ng-maxlength="30"/>
+				</div>
+			</div>
+			<!-- 地址不正确提示信息 -->
+			<div class="row com_row" ng-show="storeInfoForm.address.$dirty && storeInfoForm.address.$invalid && !storeInfoForm.address.$error.required">
+				<div class="col-md-2 custom_col"></div>
+				<div class="col-md-10 custom_col">
+					<span style="color: #ff0000;" ng-show="storeInfoForm.address.$error.maxlength">请勿超过30个字</span>
 				</div>
 			</div>
 			<div class="row com_row" style="margin-top: 10px;">
@@ -677,6 +702,7 @@
 						   ng-pattern="/(^(\d{3,4}-)\d{7,8})$|^((1[0-9][0-9]\d{8}$))/"
 						   placeholder="例如,0755-26994749"
 						   maxlength="30"
+						   ng-maxlength="20"
 						   required/>
 				</div>
 			</div>
@@ -685,6 +711,7 @@
 				<div class="col-md-2 custom_col"></div>
 				<div class="col-md-10 custom_col">
 					<span style="color: #ff0000;" ng-show="storeInfoForm.enTel.$error.required">电话信息必填</span>
+					<span style="color: #ff0000;" ng-show="storeInfoForm.enTel.$error.maxlength">请勿超过20个数字</span>
 					<span style="color: #ff0000;" ng-show="storeInfoForm.enTel.$error.tel || storeInfoForm.enTel.$error.pattern">电话格式必须为0755-26994749 或者 18806659999</span>
 				</div>
 			</div>
@@ -703,6 +730,7 @@
 						   ng-pattern="/(^(\d{3,4}-)\d{7,8})$/"
 						   placeholder="例如,0755-26996928"
 						   maxlength="30"
+						   ng-maxlength="20"
 						   required/>
 				</div>
 			</div>
@@ -711,6 +739,7 @@
 				<div class="col-md-2 custom_col"></div>
 				<div class="col-md-10 custom_col">
 					<span style="color: #ff0000;" ng-show="storeInfoForm.enFax.$error.required">传真信息必填</span>
+					<span style="color: #ff0000;" ng-show="storeInfoForm.enFax.$error.maxlength">请勿超过20个数字</span>
 					<span style="color: #ff0000;" ng-show="storeInfoForm.enFax.$error.tel || storeInfoForm.enFax.$error.pattern">传真格式必须为0755-26994749</span>
 				</div>
 			</div>
@@ -821,7 +850,8 @@
 		<div class="row" style="width:100%;display: inline-block;">
 			<!-- Submit button -->
 			<div style="padding: 28px 40px;">
-				<button type="button" class="btn btn-primary" style="float: right" ng-click="confirmApplication()">确认</button>
+				<!--<input type="button" class="btn btn-primary" style="float: right" ng-click="confirmApplication()" ng-disabled="true" value="确认"/>-->
+				<button type="button" class="btn btn-primary" style="float: right" ng-click="confirmApplication()" ng-disabled="(storeInfoForm.description.$dirty && storeInfoForm.description.$invalid) || (storeInfoForm.enUrl.$dirty && storeInfoForm.enUrl.$invalid) || (storeInfoForm.address.$dirty && storeInfoForm.address.$invalid) || (storeInfoForm.enTel.$dirty && storeInfoForm.enTel.$invalid) || (storeInfoForm.enFax.$dirty && storeInfoForm.enFax.$invalid)">确认</button>
 				<div class="clear-fix"></div>
 			</div>
 		</div>
@@ -887,7 +917,7 @@
 		<div class="row">
 			<!-- Submit button -->
 			<div style="padding: 28px 40px;">
-				<button type="button" class="btn btn-primary" style="float: right" ng-click="confirmApplication()">确认</button>
+				<button type="button" class="btn btn-primary" style="float: right" ng-click="confirmApplication()" ng-disabled="true">确认</button>
 				<div class="clear-fix"></div>
 			</div>
 		</div>