瀏覽代碼

物流信息

chao 3 年之前
父節點
當前提交
b0a1fad80a

+ 3 - 6
src/main/java/com/caimei/modules/cmpage/web/CmPageController.java

@@ -1,14 +1,11 @@
 package com.caimei.modules.cmpage.web;
 package com.caimei.modules.cmpage.web;
 
 
-import com.caimei.constants.common.RedisKeyUtil;
 import com.caimei.modules.cmpage.entity.CmPage;
 import com.caimei.modules.cmpage.entity.CmPage;
 import com.caimei.modules.cmpage.entity.CmPageFreedom;
 import com.caimei.modules.cmpage.entity.CmPageFreedom;
 import com.caimei.modules.cmpage.entity.CmPageHotSearch;
 import com.caimei.modules.cmpage.entity.CmPageHotSearch;
 import com.caimei.modules.cmpage.entity.PageNameContent;
 import com.caimei.modules.cmpage.entity.PageNameContent;
-import com.caimei.modules.cmpage.service.CmPageDocSynService;
-import com.caimei.modules.cmpage.service.CmPageFreedomService;
 import com.caimei.modules.cmpage.service.CmPageService;
 import com.caimei.modules.cmpage.service.CmPageService;
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.redis.RedisService;
 import com.caimei.redis.RedisService;
 import com.caimei.utils.StringUtil;
 import com.caimei.utils.StringUtil;
 import com.caimei.utils.StringUtils;
 import com.caimei.utils.StringUtils;
@@ -47,7 +44,7 @@ public class CmPageController extends BaseController {
     private CmPageService cmPageService;
     private CmPageService cmPageService;
 
 
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
 
 
     @Autowired
     @Autowired
     private RedisService redisService;
     private RedisService redisService;
@@ -156,7 +153,7 @@ public class CmPageController extends BaseController {
         addMessage(redirectAttributes, "保存成功");
         addMessage(redirectAttributes, "保存成功");
         if ("2".equals(cmPage.getType())) {
         if ("2".equals(cmPage.getType())) {
             // 更新索引
             // 更新索引
-            searchUitls.updateEquipmentIndex(Integer.parseInt(cmPage.getId()));
+            coreServiceUitls.updateEquipmentIndex(Integer.parseInt(cmPage.getId()));
         } else if ("6".equals(cmPage.getType())) {
         } else if ("6".equals(cmPage.getType())) {
             //清除活动专题缓存
             //清除活动专题缓存
             redisService.removePattern("activityData*");
             redisService.removePattern("activityData*");

+ 5 - 7
src/main/java/com/caimei/modules/info/web/InfoController.java

@@ -6,11 +6,9 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
-import com.caimei.modules.info.entity.CmInfoDocSyn;
 import com.caimei.modules.info.service.CmInfoDocSynService;
 import com.caimei.modules.info.service.CmInfoDocSynService;
-import com.caimei.modules.live.entity.NewPageLive;
 import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.opensearch.GenerateUtils;
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.redis.RedisService;
 import com.caimei.redis.RedisService;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -51,7 +49,7 @@ public class InfoController extends BaseController {
 	@Autowired
 	@Autowired
 	CmInfoDocSynService cmInfoDocSynService;
 	CmInfoDocSynService cmInfoDocSynService;
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
     @Autowired
     @Autowired
 	private RedisService redisService;
 	private RedisService redisService;
     @Resource
     @Resource
@@ -153,7 +151,7 @@ public class InfoController extends BaseController {
 		infoService.save(info,request);
 		infoService.save(info,request);
 		addMessage(redirectAttributes, "保存信息成功");
 		addMessage(redirectAttributes, "保存信息成功");
 		// 更新索引
 		// 更新索引
-		searchUitls.updateArticleIndex(Integer.valueOf(info.getId()));
+		coreServiceUitls.updateArticleIndex(Integer.valueOf(info.getId()));
 		if(StringUtils.equals("1", ltype))
 		if(StringUtils.equals("1", ltype))
 			return "redirect:"+Global.getAdminPath()+"/info/infoLabel/list";
 			return "redirect:"+Global.getAdminPath()+"/info/infoLabel/list";
 		return "redirect:"+Global.getAdminPath()+"/info/info/list?repage";
 		return "redirect:"+Global.getAdminPath()+"/info/info/list?repage";
@@ -171,7 +169,7 @@ public class InfoController extends BaseController {
 		}
 		}
 		addMessage(redirectAttributes, "删除信息成功");
 		addMessage(redirectAttributes, "删除信息成功");
 		// 删除索引
 		// 删除索引
-		searchUitls.deleteArticleIndex(Integer.valueOf(info.getId()));
+		coreServiceUitls.deleteArticleIndex(Integer.valueOf(info.getId()));
 		return "redirect:"+Global.getAdminPath()+"/info/info/?repage";
 		return "redirect:"+Global.getAdminPath()+"/info/info/?repage";
 	}
 	}
 
 
@@ -197,7 +195,7 @@ public class InfoController extends BaseController {
 			map.put("msg", "修改成功");
 			map.put("msg", "修改成功");
 			for (String id : ids){
 			for (String id : ids){
 				// 更新索引
 				// 更新索引
-				searchUitls.updateArticleIndex(Integer.valueOf(id));
+				coreServiceUitls.updateArticleIndex(Integer.valueOf(id));
 				Info info = infoService.get(id);
 				Info info = infoService.get(id);
 				Boolean topFlag = (info.getTopPosition() != null && !StringUtils.equals("", info.getTopPosition())) ? true : false;
 				Boolean topFlag = (info.getTopPosition() != null && !StringUtils.equals("", info.getTopPosition())) ? true : false;
             	if (topFlag) {
             	if (topFlag) {

+ 5 - 5
src/main/java/com/caimei/modules/info/web/InfoTypeController.java

@@ -6,7 +6,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,7 +44,7 @@ public class InfoTypeController extends BaseController {
 	private InfoService infoService;
 	private InfoService infoService;
 
 
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
 
 
 	@ModelAttribute
 	@ModelAttribute
 	public InfoType get(@RequestParam(required=false) String id) {
 	public InfoType get(@RequestParam(required=false) String id) {
@@ -82,7 +82,7 @@ public class InfoTypeController extends BaseController {
 		infoTypeService.save(infoType);
 		infoTypeService.save(infoType);
 		addMessage(redirectAttributes, "保存信息分类成功");
 		addMessage(redirectAttributes, "保存信息分类成功");
 		// 更新全部文章索引
 		// 更新全部文章索引
-		searchUitls.updateAllArticleIndex();
+		coreServiceUitls.updateAllArticleIndex();
 		return "redirect:"+Global.getAdminPath()+"/info/infoType/?repage";
 		return "redirect:"+Global.getAdminPath()+"/info/infoType/?repage";
 	}
 	}
 
 
@@ -99,7 +99,7 @@ public class InfoTypeController extends BaseController {
 			infoTypeService.delete(infoType);
 			infoTypeService.delete(infoType);
 			addMessage(redirectAttributes, "删除信息分类成功");
 			addMessage(redirectAttributes, "删除信息分类成功");
 			// 更新全部文章索引
 			// 更新全部文章索引
-			searchUitls.updateAllArticleIndex();
+			coreServiceUitls.updateAllArticleIndex();
 		}
 		}
 		return "redirect:"+Global.getAdminPath()+"/info/infoType/?repage";
 		return "redirect:"+Global.getAdminPath()+"/info/infoType/?repage";
 	}
 	}
@@ -123,7 +123,7 @@ public class InfoTypeController extends BaseController {
 			map.put("msg", "修改成功");
 			map.put("msg", "修改成功");
 			for (String id : ids){
 			for (String id : ids){
 				// 更新索引
 				// 更新索引
-				searchUitls.updateArticleIndex(Integer.valueOf(id));
+				coreServiceUitls.updateArticleIndex(Integer.valueOf(id));
 			}
 			}
 		} catch (Exception e) {
 		} catch (Exception e) {
 			logger.debug(e.toString(),e);
 			logger.debug(e.toString(),e);

+ 34 - 15
src/main/java/com/caimei/modules/logistics/web/LogisticsController.java

@@ -7,6 +7,7 @@ import com.caimei.modules.bulkpurchase.entity.OrderProduct;
 import com.caimei.modules.logistics.entity.LogisticsInfo;
 import com.caimei.modules.logistics.entity.LogisticsInfo;
 import com.caimei.modules.logistics.entity.Router;
 import com.caimei.modules.logistics.entity.Router;
 import com.caimei.modules.logistics.service.LogisticsService;
 import com.caimei.modules.logistics.service.LogisticsService;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.utils.Encodes;
 import com.caimei.utils.Encodes;
 import com.caimei.utils.RandomStringUtil;
 import com.caimei.utils.RandomStringUtil;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
@@ -49,7 +50,8 @@ public class LogisticsController extends BaseController{
 
 
     @Autowired
     @Autowired
     private OrderProductDao orderProductDao;
     private OrderProductDao orderProductDao;
-
+    @Autowired
+    private CoreServiceUitls coreServiceUitls;
     @ModelAttribute
     @ModelAttribute
     public LogisticsInfo get(@RequestParam(required=false) String id) {
     public LogisticsInfo get(@RequestParam(required=false) String id) {
         LogisticsInfo entity = null;
         LogisticsInfo entity = null;
@@ -138,22 +140,39 @@ public class LogisticsController extends BaseController{
     public Map<String, Object> save(LogisticsInfo logisticsInfo, Model model, RedirectAttributes redirectAttributes) {
     public Map<String, Object> save(LogisticsInfo logisticsInfo, Model model, RedirectAttributes redirectAttributes) {
         Map<String, Object> map = Maps.newLinkedHashMap();
         Map<String, Object> map = Maps.newLinkedHashMap();
         try {
         try {
-            String url = "https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?appid=4001&com=" + logisticsInfo.getLogisticsCompanyCode() +
-                    "&nu=" + logisticsInfo.getNu();
-            logger.info(">>>请求链接:"+url);
-            String result = getLogistics(url);
-            logger.info(">>>请求结果:"+result);
-            Map<String, Object> maps = JSONObject.parseObject(result, Map.class);
-            String error_code = MapUtils.getString(maps, "error_code");
-            if (StringUtils.equals(error_code, "0")) {
-                Map<String, Object> data = MapUtils.getMap(maps, "data");
-                Map<String, Object> info = MapUtils.getMap(data, "info");
-                logisticsInfo.setState(Integer.parseInt(MapUtils.getString(info, "state")));
-                logisticsInfo.setInfo(MapUtils.getString(info, "context"));
-                logger.info("物流跟踪 add 》》》》info 信息:" + logisticsInfo.getInfo());
+            String result = coreServiceUitls.queryLogisticsGet(logisticsInfo.getNu(), logisticsInfo.getLogisticsCompanyCode(), "");
+            Map<String, Object> resultMap = JSONObject.parseObject(result, Map.class);
+            String code = MapUtils.getString(resultMap, "code");
+            if (StringUtils.equals(code, "0")) {
+                Map<String, Object> data = MapUtils.getMap(resultMap, "data");
+                String status = MapUtils.getString(data, "status");
+                if (StringUtils.equals(status, "200")) {
+                    logisticsInfo.setLogisticsCompanyCode(MapUtils.getString(data, "com"));
+                    logisticsInfo.setState(Integer.parseInt(MapUtils.getString(data, "state")));
+                    logisticsInfo.setInfo(MapUtils.getString(data, "data"));
+                    logger.info("物流100跟踪 add 》》》》info 信息:" + logisticsInfo.getInfo());
+                } else {
+                    logger.warn("物流100跟踪 add >>>>>>>>>>>"+MapUtils.getString(data, "message"));
+                }
             }else{
             }else{
-                logger.warn("物流跟踪 add >>>>>>>>>>>"+MapUtils.getString(map, "msg"));
+                logger.warn("物流100跟踪 add >>>>>>>>>>>"+MapUtils.getString(resultMap, "msg"));
             }
             }
+//            String url = "https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?appid=4001&com=" + logisticsInfo.getLogisticsCompanyCode() +
+//                    "&nu=" + logisticsInfo.getNu();
+//            logger.info(">>>请求链接:"+url);
+//            String result = getLogistics(url);
+//            logger.info(">>>请求结果:"+result);
+//            Map<String, Object> maps = JSONObject.parseObject(result, Map.class);
+//            String error_code = MapUtils.getString(maps, "error_code");
+//            if (StringUtils.equals(error_code, "0")) {
+//                Map<String, Object> data = MapUtils.getMap(maps, "data");
+//                Map<String, Object> info = MapUtils.getMap(data, "info");
+//                logisticsInfo.setState(Integer.parseInt(MapUtils.getString(info, "state")));
+//                logisticsInfo.setInfo(MapUtils.getString(info, "context"));
+//                logger.info("物流跟踪 add 》》》》info 信息:" + logisticsInfo.getInfo());
+//            }else{
+//                logger.warn("物流跟踪 add >>>>>>>>>>>"+MapUtils.getString(map, "msg"));
+//            }
             logisticsInfo.setUpdateDate(new Date());
             logisticsInfo.setUpdateDate(new Date());
             logisticsService.save(logisticsInfo);
             logisticsService.save(logisticsInfo);
             map.put("success",true);
             map.put("success",true);

+ 22 - 9
src/main/java/com/caimei/modules/opensearch/SearchUitls.java → src/main/java/com/caimei/modules/opensearch/CoreServiceUitls.java

@@ -15,37 +15,37 @@ import org.springframework.web.client.RestTemplate;
  * @date : 2020/6/4
  * @date : 2020/6/4
  */
  */
 @Component
 @Component
-public class SearchUitls {
+public class CoreServiceUitls {
 	Logger logger = LoggerFactory.getLogger(getClass());
 	Logger logger = LoggerFactory.getLogger(getClass());
     public void updateProductIndex(Integer productId){
     public void updateProductIndex(Integer productId){
-        updatePost("/update/product?productId=" + productId);
+        updateIndexPost("/update/product?productId=" + productId);
     }
     }
 
 
     public void deleteProductIndex(Integer productId){
     public void deleteProductIndex(Integer productId){
-        updatePost("/delete/product?productId=" + productId);
+        updateIndexPost("/delete/product?productId=" + productId);
     }
     }
 
 
     public void updateArticleIndex(Integer articleId){
     public void updateArticleIndex(Integer articleId){
-        updatePost("/update/article?articleId=" + articleId);
+        updateIndexPost("/update/article?articleId=" + articleId);
     }
     }
 
 
     public void deleteArticleIndex(Integer articleId){
     public void deleteArticleIndex(Integer articleId){
-        updatePost("/delete/article?articleId=" + articleId);
+        updateIndexPost("/delete/article?articleId=" + articleId);
     }
     }
 
 
     public void updateAllArticleIndex(){
     public void updateAllArticleIndex(){
-        updatePost("/article/all");
+        updateIndexPost("/article/all");
     }
     }
 
 
     public void updateShopIndex(Integer shopId){
     public void updateShopIndex(Integer shopId){
-        updatePost("/update/shop?shopId=" + shopId);
+        updateIndexPost("/update/shop?shopId=" + shopId);
     }
     }
 
 
     public void updateEquipmentIndex(Integer equipmentId){
     public void updateEquipmentIndex(Integer equipmentId){
-        updatePost("/update/equipment?equipmentId=" + equipmentId);
+        updateIndexPost("/update/equipment?equipmentId=" + equipmentId);
     }
     }
 
 
-    private void updatePost(String path){
+    private void updateIndexPost(String path){
         // 获取core服务器地址
         // 获取core服务器地址
         String coreServer = Global.getConfig("caimei.core");
         String coreServer = Global.getConfig("caimei.core");
         RestTemplate restTemplate = new RestTemplate();
         RestTemplate restTemplate = new RestTemplate();
@@ -58,5 +58,18 @@ public class SearchUitls {
         logger.info("更新索引result:" + result);
         logger.info("更新索引result:" + result);
     }
     }
 
 
+    public String queryLogisticsGet(String number, String companyCode, String mobile){
+        // 获取core服务器地址
+        String coreServer = Global.getConfig("caimei.core");
+        RestTemplate restTemplate = new RestTemplate();
+        String uri = coreServer + "/tools/query/logistics?number" + number + "&companyCode=" + companyCode + "&mobile=" + mobile;
+        // 打印参数
+        logger.info("查询物流uri:" + uri);
+        // 发起Get请求
+        String result = restTemplate.getForObject(uri, String.class);
+        logger.info("查询物流result:" + result);
+        return result;
+    }
+
 
 
 }
 }

+ 1 - 0
src/main/java/com/caimei/modules/order/web/NewOrderController.java

@@ -1339,6 +1339,7 @@ public class NewOrderController extends BaseController {
     public String logisticsDetails(Integer orderID, String logisticsBatchID, Model model) {
     public String logisticsDetails(Integer orderID, String logisticsBatchID, Model model) {
         List<LogisticsInfoVo> logisticsInfoVos = new ArrayList<>();
         List<LogisticsInfoVo> logisticsInfoVos = new ArrayList<>();
         logisticsInfoVos = newShopOrderService.logisticsDetails(orderID, logisticsBatchID);
         logisticsInfoVos = newShopOrderService.logisticsDetails(orderID, logisticsBatchID);
+        model.addAttribute("orderID", orderID);
         model.addAttribute("logisticsInfoVos", logisticsInfoVos);
         model.addAttribute("logisticsInfoVos", logisticsInfoVos);
         return "modules/order/logisticsDetails";
         return "modules/order/logisticsDetails";
     }
     }

+ 10 - 10
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -5,7 +5,7 @@ import com.caimei.modules.brand.service.CmBrandService;
 import com.caimei.modules.common.entity.Province;
 import com.caimei.modules.common.entity.Province;
 import com.caimei.modules.common.service.AreaService;
 import com.caimei.modules.common.service.AreaService;
 import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.opensearch.GenerateUtils;
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.modules.product.entity.*;
 import com.caimei.modules.product.entity.*;
 import com.caimei.modules.product.service.*;
 import com.caimei.modules.product.service.*;
 import com.caimei.modules.user.entity.CmPageModules;
 import com.caimei.modules.user.entity.CmPageModules;
@@ -66,7 +66,7 @@ public class ProductNewController extends BaseController {
     @Resource
     @Resource
     private CmProductCombinationService cmProductCombinationService;
     private CmProductCombinationService cmProductCombinationService;
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
     @Autowired
     @Autowired
     private CmBrandService cmBrandService;
     private CmBrandService cmBrandService;
     @Resource
     @Resource
@@ -347,7 +347,7 @@ public class ProductNewController extends BaseController {
         // 有数据变动时需要清除缓存
         // 有数据变动时需要清除缓存
         cleanRedisCache();
         cleanRedisCache();
         // 更新索引
         // 更新索引
-        searchUitls.updateProductIndex(product.getProductID());
+        coreServiceUitls.updateProductIndex(product.getProductID());
         return "redirect:" + Global.getAdminPath() + "/product/new/list/";
         return "redirect:" + Global.getAdminPath() + "/product/new/list/";
     }
     }
 
 
@@ -363,7 +363,7 @@ public class ProductNewController extends BaseController {
             map.put("success", true);
             map.put("success", true);
             map.put("msg", "操作成功");
             map.put("msg", "操作成功");
             // 更新索引
             // 更新索引
-            searchUitls.updateProductIndex(productId);
+            coreServiceUitls.updateProductIndex(productId);
             cleanRedisCache();
             cleanRedisCache();
         } catch (Exception e) {
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             logger.debug(e.toString(), e);
@@ -468,7 +468,7 @@ public class ProductNewController extends BaseController {
         productNewService.fastSave(product);
         productNewService.fastSave(product);
         addMessage(redirectAttributes, "保存商品成功");
         addMessage(redirectAttributes, "保存商品成功");
         // 更新索引
         // 更新索引
-        searchUitls.updateProductIndex(product.getProductID());
+        coreServiceUitls.updateProductIndex(product.getProductID());
 
 
         redirectAttributes.addAttribute("searchName", product.getSearchName());
         redirectAttributes.addAttribute("searchName", product.getSearchName());
         redirectAttributes.addAttribute("searchShopName", product.getSearchShopName());
         redirectAttributes.addAttribute("searchShopName", product.getSearchShopName());
@@ -606,7 +606,7 @@ public class ProductNewController extends BaseController {
             map.put("success", true);
             map.put("success", true);
             map.put("msg", "操作成功");
             map.put("msg", "操作成功");
             // 更新索引
             // 更新索引
-            searchUitls.updateProductIndex(productID);
+            coreServiceUitls.updateProductIndex(productID);
             // 有数据变动时需要清除缓存
             // 有数据变动时需要清除缓存
             cleanRedisCache();
             cleanRedisCache();
         } catch (Exception e) {
         } catch (Exception e) {
@@ -629,7 +629,7 @@ public class ProductNewController extends BaseController {
             map.put("success", true);
             map.put("success", true);
             map.put("msg", "操作成功");
             map.put("msg", "操作成功");
             // 更新索引
             // 更新索引
-            searchUitls.updateProductIndex(productID);
+            coreServiceUitls.updateProductIndex(productID);
             cleanRedisCache();
             cleanRedisCache();
         } catch (Exception e) {
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             logger.debug(e.toString(), e);
@@ -651,7 +651,7 @@ public class ProductNewController extends BaseController {
             map.put("success", true);
             map.put("success", true);
             map.put("msg", "操作成功");
             map.put("msg", "操作成功");
             // 更新索引
             // 更新索引
-            searchUitls.updateProductIndex(productID);
+            coreServiceUitls.updateProductIndex(productID);
             cleanRedisCache();
             cleanRedisCache();
         } catch (Exception e) {
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             logger.debug(e.toString(), e);
@@ -686,10 +686,10 @@ public class ProductNewController extends BaseController {
             int valid = new Integer(validFlag);
             int valid = new Integer(validFlag);
             if (valid == 2 || valid == 3 || valid == 9) {
             if (valid == 2 || valid == 3 || valid == 9) {
                 // 更新索引
                 // 更新索引
-                searchUitls.updateProductIndex(productID);
+                coreServiceUitls.updateProductIndex(productID);
             } else {
             } else {
                 // 删除索引
                 // 删除索引
-                searchUitls.deleteProductIndex(productID);
+                coreServiceUitls.deleteProductIndex(productID);
             }
             }
             cleanRedisCache();
             cleanRedisCache();
         } catch (Exception e) {
         } catch (Exception e) {

+ 3 - 3
src/main/java/com/caimei/modules/product/web/ProductsClassifyController.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.caimei.dfs.image.beens.ImageUploadInfo;
 import com.caimei.dfs.image.beens.ImageUploadInfo;
 import com.caimei.modules.common.utils.UploadUtils;
 import com.caimei.modules.common.utils.UploadUtils;
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.modules.product.entity.CmMallProductsClassify;
 import com.caimei.modules.product.entity.CmMallProductsClassify;
 import com.caimei.modules.product.entity.Product;
 import com.caimei.modules.product.entity.Product;
 import com.caimei.modules.product.service.ProductsClassifyService;
 import com.caimei.modules.product.service.ProductsClassifyService;
@@ -48,7 +48,7 @@ public class ProductsClassifyController extends BaseController {
     @Autowired
     @Autowired
     private ProductsClassifyService productsClassifyService;
     private ProductsClassifyService productsClassifyService;
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
 
 
     @ModelAttribute
     @ModelAttribute
     public CmMallProductsClassify get(@RequestParam(required = false) String id) {
     public CmMallProductsClassify get(@RequestParam(required = false) String id) {
@@ -140,7 +140,7 @@ public class ProductsClassifyController extends BaseController {
         List<Product> productList = productsClassifyService.productList(product);
         List<Product> productList = productsClassifyService.productList(product);
         for (Product p : productList) {
         for (Product p : productList) {
             // 更新索引
             // 更新索引
-            searchUitls.updateProductIndex(p.getProductID());
+            coreServiceUitls.updateProductIndex(p.getProductID());
         }
         }
         addMessage(redirectAttributes, "保存成功");
         addMessage(redirectAttributes, "保存成功");
         return "redirect:" + Global.getAdminPath() + "/product/classify/list";
         return "redirect:" + Global.getAdminPath() + "/product/classify/list";

+ 4 - 4
src/main/java/com/caimei/modules/user/web/NewCmShopController.java

@@ -1,7 +1,7 @@
 package com.caimei.modules.user.web;
 package com.caimei.modules.user.web;
 
 
 import com.caimei.constants.ShopStatus;
 import com.caimei.constants.ShopStatus;
-import com.caimei.modules.opensearch.SearchUitls;
+import com.caimei.modules.opensearch.CoreServiceUitls;
 import com.caimei.modules.sys.utils.CmMsgUtils;
 import com.caimei.modules.sys.utils.CmMsgUtils;
 import com.caimei.modules.sys.utils.SMSUtils;
 import com.caimei.modules.sys.utils.SMSUtils;
 import com.caimei.modules.user.dao.CmUserDao;
 import com.caimei.modules.user.dao.CmUserDao;
@@ -56,7 +56,7 @@ public class NewCmShopController extends BaseController {
     @Autowired
     @Autowired
     CmMessageService cmMessageService;
     CmMessageService cmMessageService;
     @Autowired
     @Autowired
-    private SearchUitls searchUitls;
+    private CoreServiceUitls coreServiceUitls;
     @Autowired
     @Autowired
     private CmOperationUserService cmOperationUserService;
     private CmOperationUserService cmOperationUserService;
     @Autowired
     @Autowired
@@ -398,7 +398,7 @@ public class NewCmShopController extends BaseController {
         cmUserDao.updateUserInfo(newCmShop.getLinkMan(), newCmShop.getName(), newCmShop.getSname(), newCmShop.getContractMobile(), newCmShop.getEmail(), newCmShop.getUserID());
         cmUserDao.updateUserInfo(newCmShop.getLinkMan(), newCmShop.getName(), newCmShop.getSname(), newCmShop.getContractMobile(), newCmShop.getEmail(), newCmShop.getUserID());
         addMessage(redirectAttributes, "保存供应商信息成功");
         addMessage(redirectAttributes, "保存供应商信息成功");
         // 更新索引
         // 更新索引
-        searchUitls.updateShopIndex(newCmShop.getShopID());
+        coreServiceUitls.updateShopIndex(newCmShop.getShopID());
         return "redirect:" + Global.getAdminPath() + "/user/newCmShop/";
         return "redirect:" + Global.getAdminPath() + "/user/newCmShop/";
     }
     }
 
 
@@ -454,7 +454,7 @@ public class NewCmShopController extends BaseController {
         dbShop.setMainpro(cmShop.getMainpro());
         dbShop.setMainpro(cmShop.getMainpro());
         newCmShopService.update(dbShop);
         newCmShopService.update(dbShop);
         // 更新索引
         // 更新索引
-        searchUitls.updateShopIndex(dbShop.getShopID());
+        coreServiceUitls.updateShopIndex(dbShop.getShopID());
         return jsonModel.success(Global.getAdminPath() + "/user/newCmShop/?repage");
         return jsonModel.success(Global.getAdminPath() + "/user/newCmShop/?repage");
     }
     }
 
 

+ 28 - 32
src/main/webapp/WEB-INF/views/modules/logistics/logisticsForm.jsp

@@ -16,39 +16,35 @@
 </head>
 </head>
 <body>
 <body>
 <input type="hidden" id="ctx" value="${ctx}">
 <input type="hidden" id="ctx" value="${ctx}">
-	<ul class="nav nav-tabs">
-		<li class="active"><a href="${ctx}/logistics/logisticsForm?orderId=${logisticsInfo.orderId}&shopId=${logisticsInfo.shopId}">物流信息填写</a></li>
-	</ul><br/>
-	<form:form id="inputForm" modelAttribute="logisticsInfo" action="${ctx}/logistics/save" method="post" class="form-horizontal">
-		<form:hidden path="orderId"/>
-		<form:hidden path="shopId"/>
-		<input type="hidden" id="logisticsCompanyName" name="logisticsCompanyName" value="">
-		<sys:message content="${message}"/>
-		<div class="control-group">
-			<label class="control-label"><span class="help-inline"><font color="red">*</font> </span>快递公司:</label>
-			<div class="controls">
-				<form:select path="logisticsCompanyCode" class="input-xlarge required" onclick="changgLogisticsCompany($(this));">
-					<form:option value="">请选择一个快递公司</form:option>
-					<form:options items="${fns:getDictList('kd_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
-				</form:select>
-			</div>
+<ul class="nav nav-tabs">
+	<li class="active"><a href="${ctx}/logistics/logisticsForm?orderId=${logisticsInfo.orderId}&shopId=${logisticsInfo.shopId}">物流信息填写</a></li>
+</ul><br/>
+<form:form id="inputForm" modelAttribute="logisticsInfo" action="${ctx}/logistics/save" method="post" class="form-horizontal">
+	<form:hidden path="orderId"/>
+	<form:hidden path="shopId"/>
+	<input type="hidden" id="logisticsCompanyName" name="logisticsCompanyName" value="">
+	<sys:message content="${message}"/>
+	<div class="control-group">
+		<label class="control-label"><span class="help-inline"><font color="red">*</font> </span>快递公司:</label>
+		<div class="controls">
+			<form:select path="logisticsCompanyCode" class="input-xlarge required" onclick="changgLogisticsCompany($(this));">
+				<form:option value="">请选择一个快递公司</form:option>
+				<form:options items="${fns:getDictList('kd_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+			</form:select>
 		</div>
 		</div>
-		<div class="control-group">
-			<label class="control-label"><span class="help-inline"><font color="red">*</font> </span>物流单号:</label>
-			<div class="controls">
-				<form:input path="nu" htmlEscape="false" maxlength="30" class="input-xlarge required"/>
-			</div>
+	</div>
+	<div class="control-group">
+		<label class="control-label"><span class="help-inline"><font color="red">*</font> </span>物流单号:</label>
+		<div class="controls">
+			<form:input path="nu" htmlEscape="false" maxlength="30" class="input-xlarge required"/>
 		</div>
 		</div>
-		<div class="control-group">
-			<label class="control-label">备注:</label>
-			<div class="controls">
-				<form:textarea path="remarks" maxlength="255" class="input-xlarge"/>
-			</div>
+	</div>
+	<div class="control-group">
+		<label class="control-label">备注:</label>
+		<div class="controls">
+			<form:textarea path="remarks" maxlength="255" class="input-xlarge"/>
 		</div>
 		</div>
-		 <%--<div class="form-actions">--%>
-			<%--<input id="btnSubmit" class="btn btn-primary" type="button" value="保 存" onclick="submit()"/>&nbsp;--%>
-			<%--<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>--%>
-		<%--</div>--%>
-	</form:form>
+	</div>
+</form:form>
 </body>
 </body>
-</html>
+</html>

+ 26 - 26
src/main/webapp/WEB-INF/views/modules/order/logisticsDetails.jsp

@@ -30,36 +30,14 @@
         .detail-p p{margin-bottom: 10px;font-size: 14px;}
         .detail-p p{margin-bottom: 10px;font-size: 14px;}
         .expand{position: absolute;right: 0;bottom: 0;font-size: 14px;padding: 15px;cursor: pointer}
         .expand{position: absolute;right: 0;bottom: 0;font-size: 14px;padding: 15px;cursor: pointer}
     </style>
     </style>
-    <script type="text/javascript">
-        window.onload = function () {
-            var expand_ = document.getElementsByClassName('expand');
-            var flag = true;
-            for(var i=0;i<expand_.length;i++){
-                expand_[i].onclick = function () {
-                    var deta_ = this.parentNode.getElementsByClassName('detail-p');
-                    if(flag){
-                        deta_[0].style.cssText = 'height:auto';
-                        this.innerHTML='收起';
-                        flag = false;
-                    }else {
-                        console.log(1111)
-                        deta_[0].style.cssText = 'height:90px';
-                        this.innerHTML='展开';
-                        flag = true
-                    }
-
-                    console.log(flag)
-                }
-            }
-
-        }
-
-    </script>
 </head>
 </head>
 <body>
 <body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/order/orderList">订单列表</a></li>
+    <li class="active"><a href="${ctx}/order/logisticsDetails?orderID=${orderID}">发货记录</a></li>
+</ul>
 <div class="bj" style="display: none"></div>
 <div class="bj" style="display: none"></div>
 <div class="body-margin">
 <div class="body-margin">
-    <h3><span class="left-span"></span>发货记录</h3>
     <c:if test="${empty logisticsInfoVos}">
     <c:if test="${empty logisticsInfoVos}">
         此订单没有发货商品,请先进行发货操作
         此订单没有发货商品,请先进行发货操作
     </c:if>
     </c:if>
@@ -98,5 +76,27 @@
         </div>
         </div>
     </c:forEach>
     </c:forEach>
 </div>
 </div>
+<script type="text/javascript">
+    window.onload = function () {
+        var expand_ = document.getElementsByClassName('expand');
+        var flag = true;
+        for(var i=0;i<expand_.length;i++){
+            expand_[i].onclick = function () {
+                var deta_ = this.parentNode.getElementsByClassName('detail-p');
+                if(flag){
+                    deta_[0].style.cssText = 'height:auto';
+                    this.innerHTML='收起';
+                    flag = false;
+                }else {
+                    console.log(1111)
+                    deta_[0].style.cssText = 'height:90px';
+                    this.innerHTML='展开';
+                    flag = true
+                }
+                console.log(flag)
+            }
+        }
+    }
+</script>
 </body>
 </body>
 </html>
 </html>

+ 271 - 481
src/main/webapp/WEB-INF/views/modules/order/ship.jsp

@@ -2,487 +2,49 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <html>
 <html>
 <head>
 <head>
-    <title>订单列表</title>
-    <meta name="decorator" content="default"/>
-    <%--<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>--%>
+	<title>订单列表-发货</title>
+	<meta name="decorator" content="default"/>
     <style type="text/css">
     <style type="text/css">
-        * {
-            margin: 0;
-            padding: 0
-        }
-
-        a {
-            list-style: none;
-            text-decoration: none
-        }
-
-        i {
-            font-style: normal
-        }
-
-        body {
-            background-color: rgb(228, 228, 228);
-        }
-
-        h3 {
-            line-height: 20px;
-            padding: 20px 0 20px 15px;
-            border-bottom: 1px solid #CCCCCC;
-            font-weight: normal
-        }
-
-        .body-margin {
-            margin: 0 26px;
-        }
-
-        .left-span {
-            width: 3px;
-            height: 20px;
-            margin-right: 10px;
-            background-color: #00A6C7;
-            display: inline-block;
-            vertical-align: bottom
-        }
-
-        .info-list {
-            background-color: #fff;
-            padding: 15px 30px;
-        }
-
-        .list-div {
-            font-size: 14px;
-            margin-bottom: 15px;
-        }
-
-        .list-div label {
-            display: inline-block;
-            width: 70px;
-        }
-
-        .ship-shop {
-            background-color: #fff;
-            margin-top: 20px;
-            min-height: 500px;
-        }
-
-        .table {
-            width: 100%;
-            border-collapse: collapse;
-        }
-
-        .table th {
-            color: #000;
-            font-weight: normal
-        }
-
-        .table th, .table td {
-            width: 20%;
-            height: 35px;
-            border: 1px solid #CCCCCC;
-            text-align: center;
-            padding: 5px 0;
-        }
-
-        .select-all {
-        }
-
-        .select-all td {
-            border: 0
-        }
-
-        .select-all label {
-            display: inline-block;
-            padding-left: 5px;
-            vertical-align: 1px;
-        }
-
-        .mask {
-            font-size: 14px;
-            color: red;
-            padding: 20px;
-        }
-
-        .select-ship {
-            text-align: center;
-        }
-
-        .select-ship span {
-            cursor: pointer;
-            display: inline-block;
-            width: 100px;
-            line-height: 35px;
-            text-align: center;
-            border-radius: 5px;
-            background-color: #00A6C7;
-            color: #fff;
-        }
-
-        .select-ship span:last-child {
-            margin-left: 20px;
-        }
-
-        .change-info {
-            position: fixed;
-            top: 20%;
-            left: 50%;
-            transform: translateX(-50%);
-            z-index: 999;
-            padding: 50px;
-            background-color: #fff;
-            box-shadow: 0px 0px 15px #ccc;
-        }
-
-        .close {
-            position: absolute;
-            right: -12px;
-            top: -12px;
-            cursor: pointer;
-            display: block;
-            background-color: #fff;
-            text-align: center;
-            font-size: 18px;
-            border: 1px solid #ccc;
-            width: 25px;
-            height: 25px;
-            border-radius: 50%;
-        }
-
-        .bj {
-            position: fixed;
-            width: 100%;
-            height: 100%;
-            bottom: 0;
-            top: 0;
-            left: 0;
-            z-index: 99;
-        }
-
-        .spilt {
-            text-align: center;
-            padding: 40px 130px 40px;
-        }
-
-        .orderspilt {
-            padding: 0;
-            text-align: center;
-            border: 0;
-        }
-
-        .spilt-p {
-            font-size: 14px;
-            padding: 30px 0 20px;
-        }
-
-        .cancel-div {
-            display: inline-block;
-            padding: 7px 15px;
-            border-radius: 5px;
-            background-color: #00A6C7;
-            color: #fff;
-            text-align: center
-        }
-        .no-div{
-            display: inline-block;
-            padding: 7px 15px;
-            border-radius: 5px;
-            background-color: #00A6C7;
-            color: #fff;
-            text-align: center;
-            margin-right:20px
-        }
-        .whether-ship {
-            position: fixed;
-            top: 20%;
-            left: 50%;
-            transform: translateX(-50%);
-            z-index: 999;
-            padding: 20px;
-            background-color: #fff;
-            box-shadow: 0px 0px 15px #ccc;
-        }
-
-        .ship-title {
-            font-size: 16px;
-            border: 0;
-            padding: 20px 0 15px 0;
-        }
-
-        .waring-p {
-            font-size: 14px;
-        }
-
-        .sign-logo {
-            display: inline-block;
-            width: 20px;
-            height: 20px;
-            border: 1px solid #000000;
-            border-radius: 50%;
-            text-align: center;
-            margin-right: 3px;
-        }
-
-        .status-span {
-            text-align: center;
-            margin: 15px 0;
-            float: none;
-        }
-
-        .status-span span {
-            display: inline-block;
-            background-color: #00A6C7;
-            padding: 7px 20px;
-            color: #fff;
-            cursor: pointer
-        }
-
-        .status-span span:nth-child(1) {
-            margin-right: 10px;
-        }
-
-        .status-span span:nth-child(2) {
-            margin-left: 10px;
-        }
-
-        .input {
-            height: 100%;
-            border: 0
-        }
+        *{margin:0;padding:0}
+        a{list-style:none;text-decoration:none}
+        body{background-color:rgb(255,255,255)}
+        h3{line-height:20px;padding:20px 0 20px 15px;border-bottom:1px solid #CCCCCC}
+        .table th{background-color:#CCCCCC}
+        .table th,.table td{font-weight:normal;border:1px solid #CCCCCC;height:35px;text-align:center}
+        .body-margin{margin:26px}
+        .left-span{width:3px;height:20px;margin-right:10px;background-color:#00A6C7;display:inline-block;vertical-align:bottom}
+        .info-list{padding: 15px;background-color: #f5f5f5;}
+        .list-div{font-size:14px;margin-bottom:15px}
+        .list-div label{display:inline-block;width:70px}
+        .ship-shop{background-color:#fff;margin-top:20px;min-height:500px}
+        .mask{font-size:14px;color:red;padding:20px}
+        .select-ship{text-align:center}
+        .select-ship span{cursor:pointer;display:inline-block;width:100px;line-height:35px;text-align:center;border-radius:5px;background-color:#00A6C7;color:#fff}
+        .select-ship span:last-child{margin-left:20px}
+        .change-info{position:fixed;top:20%;left:50%;transform:translateX(-50%);z-index:999;padding:50px;background-color:#fff;box-shadow:0px 0px 15px #ccc}
+        .close{position:absolute;right:-12px;top:-12px;cursor:pointer;display:block;background-color:#fff;text-align:center;font-size:18px;border:1px solid #ccc;width:25px;height:25px;border-radius:50%}
+        .bj{position:fixed;width:100%;height:100%;bottom:0;top:0;left:0;z-index:99}
+        .spilt{text-align:center;padding:40px 130px 40px}
+        .orderspilt{padding:0;text-align:center;border:0}
+        .spilt-p{font-size:14px;padding:30px 0 20px}
+        .cancel-div{display:inline-block;padding:7px 15px;border-radius:5px;background-color:#00A6C7;color:#fff;text-align:center}
+        .no-div{display:inline-block;padding:7px 15px;border-radius:5px;background-color:#00A6C7;color:#fff;text-align:center;margin-right:20px}
+        .whether-ship{position:fixed;top:20%;left:50%;transform:translateX(-50%);z-index:999;padding:20px;background-color:#fff;box-shadow:0px 0px 15px #ccc}
+        .ship-title{font-size:16px;border:0;padding:20px 0 15px 0}
+        .waring-p{font-size:14px}
+        .sign-logo{display:inline-block;width:20px;height:20px;border:1px solid #000000;border-radius:50%;text-align:center;margin-right:3px}
+        .status-span{text-align:center;margin:15px 0;float:none}
+        .status-span span{display:inline-block;background-color:#00A6C7;padding:7px 20px;color:#fff;cursor:pointer}
+        .status-span span:nth-child(1){margin-right:10px}
+        .status-span span:nth-child(2){margin-left:10px}
+        .input{height:100%;border:0}
     </style>
     </style>
-    <script type="text/javascript">
-        var clickTime = 1;//防止多次发货请求
-        window.onload = function () {
-            var params = {};
-            var all_ = document.getElementById('all');//全选
-            var checked_ = document.getElementsByName('checked');//复选框
-            var shipbtn_ = document.getElementsByClassName('ship_btn');//发货按钮
-            var close_ = document.getElementsByClassName('close');//关闭按钮
-            var splitbtn_ = document.getElementsByClassName('split-btn')//拆分订单
-            var statusout_ = document.getElementsByClassName('status-out')//关闭
-            var input_ = document.getElementsByClassName('input')//数量输入框
-            var nodiv_ = document.getElementsByClassName('no-div');//取消按钮 拆分
-
-            nodiv_[0].onclick = function () {
-                closeThe(this)
-            };
-            for (var i = 0; i < input_.length; i++) {
-                input_[i].onchange = function () {
-                    var intval = this.value;
-                    var buynum = this.parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
-                    if (parseInt(intval) > parseInt(buynum[1].innerHTML)) {
-                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                        document.getElementsByClassName('two-info')[0].style.cssText = 'display:block';
-                        // document.getElementsByClassName('two-info')[0].innerTEXT = '请输入小于等于购买数量';
-                        setTimeout(function () {
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
-                            document.getElementsByClassName('two-info')[0].style.cssText = 'display:none';
-                        }, 1000);
-                        this.value = 0
-                    }
-                    return false;
-                }
-            };
-            $('.ship_btn').on('click', function () {
-                var statusShip = '';
-                var shopOrderID = $("input[name='shopOrderID']").val();//id
-                var _checked = $('.table').find('input[name=checked]');//复选框
-                var ck = flagcheckd();//判断商品是否选中
-                var weinum = this.parentNode.parentNode.getElementsByClassName('wei-num');//未发数量
-
-                var checked_ = document.getElementsByName('checked');//复选框
-                var flag = false;//标记判断是否选中一个
-                for (var i = 0; i < checked_.length; i++) {
-                    var intval = checked_[i].parentNode.parentNode.getElementsByClassName('fahuo')[0].value;//发货数量
-                    var buynum = checked_[i].parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
-                    if (checked_[i].checked) {
-                        flag = true;
-                        if (parseInt(intval) > parseInt(buynum[1].innerHTML) && parseInt(intval) != 0) {
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                            document.getElementsByClassName('two-info')[0].style.cssText = 'display:block';
-                            setTimeout(function () {
-                                document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
-                                document.getElementsByClassName('two-info')[0].style.cssText = 'display:none';
-                            }, 1000);
-                        }else if(parseInt(intval) < parseInt(buynum[1].innerHTML) && parseInt(intval) != 0){
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                            document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:block';
-                            var parent_ = checked_[i].parentNode.parentNode.getElementsByClassName('input')[0];
-                            var key_ = parent_.getAttribute('data-key');
-                            var val_ = parent_.value;
-                            params[key_] = val_;
-                            statusShip = 1;
-                            // return false
-                        }else if(parseInt(intval) == parseInt(buynum[1].innerHTML) && parseInt(intval) != 0){
-                            console.log(checked_[i].parentNode.parentNode.getElementsByClassName('input')[0])
-                            var parent_ = checked_[i].parentNode.parentNode.getElementsByClassName('input')[0];
-                            var key_ = parent_.getAttribute('data-key');
-                            var val_ = parent_.value;
-                            params[key_] = val_;
-                        }else if(parseInt(intval) != 0){
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                            document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:block';
-                        }else {
-                            alertx("发货数量不能为0");
-                            return false
-                        }
-                    }
-                }
-
-
-                if (!flag) {
-                    return false;
-                }else {
-                    if(statusShip == 1){
-
-                    }else {
-                        //循环复选框
-                        goship(params);
-                    }
-                }
-                return false
-            });
-            document.getElementById('ship-go').onclick = function () {
-                goship(params);
-            }
-            //全选
-            all_.onclick = function () {
-                if (this.classList.contains('active')) {
-                    for (var i = 0; i < checked_.length; i++) {
-                        checked_[i].checked = false;
-                        all_.classList.remove("active");
-                    }
-                } else {
-                    for (var i = 0; i < checked_.length; i++) {
-                        checked_[i].checked = true;
-                        all_.classList.add("active");
-                    }
-                }
-
-            };
-
-            //关闭按钮
-            for (var i = 0; i < close_.length; i++) {
-                close_[i].onclick = function () {
-                    closeThe(this);
-                }
-            }
-            //关闭
-            statusout_[0].onclick = function () {
-
-                document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
-                document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:none';
-            }
-
-            //订单拆分
-            $('.cancel-div').on('click', function () {
-                $.ajax({
-                    //几个参数需要注意一下
-                    type: "POST",//方法类型
-                    dataType: "json",//预期服务器返回的数据类型
-                    url: "${ctx}/order/splitOrder" ,//url
-                    data: JSON.stringify(shoplist),
-                    contentType : 'application/json;charset=UTF-8', //contentType很重要
-                    success: function (result) {
-                        console.log(result);//打印服务端返回的数据(调试用)
-                        if (result.success) {
-                            window.location.href="${ctx}/order/detailPage?shopOrderID=" + result.shopOrderID;
-                        } else {
-                            alert(result.msg);
-                        }
-                    },
-                    error : function() {
-                        alert("服务异常!");
-                    }
-                });
-            });
-
-            var shoplist = {};
-            if(splitbtn_[0]){
-                splitbtn_[0].onclick = function () {
-                    var checked_ = document.getElementsByName('checked');//复选框
-                    var flag = false;//标记判断是否选中一个
-                    for (var i = 0; i < checked_.length; i++) {
-                        if (checked_[i].checked) {
-                            flag = true;
-                            for (var j = 0; j < input_.length; j++) {
-                                if(input_[i].value == 0){
-                                    alertx('数量不能为0');
-                                    return false
-                                }
-                                shoplist['orderProductID_'+input_[i].getAttribute('data-key')] = input_[i].value;
-                            }
-                            var shopOrderID = document.getElementsByName('shopOrderID')[0].value;
-                            shoplist['shopOrderID'] = shopOrderID;
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                            document.getElementsByClassName('spilt')[0].style.cssText = 'display:block';
-                        }
-                    }
-                    if (!flag) {
-                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                        document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
-                        return false;
-                    } else {
-                        // return true
-                    }
-
-                    // if (ck) {
-                    //
-                    //
-                    // }
-                    console.log(shoplist)
-
-                };
-            }
-
-        };
-        //关闭
-        function closeThe(that) {
-            document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
-            that.parentNode.style.cssText = 'display:none';
-        }
-        //判断商品是否选中
-        function flagcheckd() {
-            var checked_ = document.getElementsByName('checked');//复选框
-            var flag = false;//标记判断是否选中一个
-            for (var i = 0; i < checked_.length; i++) {
-                if (checked_[i].checked) {
-                    flag = true;
-                    break;
-                }
-            }
-            if (!flag) {
-                document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
-                return false;
-            } else {
-                return true
-            }
-
-        }
-        //发货接口
-        function goship(params) {
-            console.log("fahuole");
-            if (clickTime == 1) {
-                clickTime = 2;
-            } else {
-                alertx('请勿重复点击');
-            }
-            $.ajax({
-                url: "${ctx}/order/addLogisticsInfo",
-                type: "POST",
-                dataType: "json",
-                contentType: "application/json",
-                data: JSON.stringify(params),
-                success: function (res) {
-                    localStorage.setItem('jsonstring',JSON.stringify(res.data));
-                    window.location.href = '${ctx}/order/toShipLogistic?orderID=${order.orderID}'
-                }
-            });
-        }
-
-
-    </script>
 </head>
 </head>
 <body>
 <body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/order/orderList">订单列表</a></li>
+    <li class="active"><a href="${ctx}/order/toDeliveryPage?id=${order.orderID}">发货</a></li>
+</ul>
 <div class="bj" style="display: none"></div>
 <div class="bj" style="display: none"></div>
 <%--未选择商品--%>
 <%--未选择商品--%>
 <div class="change-info" style="display: none">请至少选择一个商品<span class="close">x</span></div>
 <div class="change-info" style="display: none">请至少选择一个商品<span class="close">x</span></div>
@@ -506,7 +68,6 @@
     <span class="close">x</span>
     <span class="close">x</span>
 </div>
 </div>
 <div class="body-margin">
 <div class="body-margin">
-    <h3><span class="left-span"></span>订单列表--发货</h3>
     <div class="info-list">
     <div class="info-list">
         <div class="list-div">
         <div class="list-div">
             <label>收货人:</label>
             <label>收货人:</label>
@@ -527,10 +88,8 @@
     </div>
     </div>
     <div class="ship-shop">
     <div class="ship-shop">
         <form id="shipForm" method="post">
         <form id="shipForm" method="post">
+        <div class="select-all"><input id="all" type="checkbox"><label for="all">全选</label></div>
         <table class="table">
         <table class="table">
-            <tr class="select-all">
-                <td><input id="all" type="checkbox"><label for="all">全选</label></td>
-            </tr>
             <tr>
             <tr>
                 <th>选择发货商品</th>
                 <th>选择发货商品</th>
                 <th>商品ID</th>
                 <th>商品ID</th>
@@ -580,5 +139,236 @@
         </form>
         </form>
     </div>
     </div>
 </div>
 </div>
+<script type="text/javascript">
+    var clickTime = 1;//防止多次发货请求
+    window.onload = function () {
+        var params = {};
+        var all_ = document.getElementById('all');//全选
+        var checked_ = document.getElementsByName('checked');//复选框
+        var shipbtn_ = document.getElementsByClassName('ship_btn');//发货按钮
+        var close_ = document.getElementsByClassName('close');//关闭按钮
+        var splitbtn_ = document.getElementsByClassName('split-btn')//拆分订单
+        var statusout_ = document.getElementsByClassName('status-out')//关闭
+        var input_ = document.getElementsByClassName('input')//数量输入框
+        var nodiv_ = document.getElementsByClassName('no-div');//取消按钮 拆分
+
+        nodiv_[0].onclick = function () {
+            closeThe(this)
+        };
+        for (var i = 0; i < input_.length; i++) {
+            input_[i].onchange = function () {
+                var intval = this.value;
+                var buynum = this.parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
+                if (parseInt(intval) > parseInt(buynum[1].innerHTML)) {
+                    document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                    document.getElementsByClassName('two-info')[0].style.cssText = 'display:block';
+                    // document.getElementsByClassName('two-info')[0].innerTEXT = '请输入小于等于购买数量';
+                    setTimeout(function () {
+                        document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
+                        document.getElementsByClassName('two-info')[0].style.cssText = 'display:none';
+                    }, 1000);
+                    this.value = 0
+                }
+                return false;
+            }
+        };
+        $('.ship_btn').on('click', function () {
+            var statusShip = '';
+            var shopOrderID = $("input[name='shopOrderID']").val();//id
+            var _checked = $('.table').find('input[name=checked]');//复选框
+            var ck = flagcheckd();//判断商品是否选中
+            var weinum = this.parentNode.parentNode.getElementsByClassName('wei-num');//未发数量
+
+            var checked_ = document.getElementsByName('checked');//复选框
+            var flag = false;//标记判断是否选中一个
+            for (var i = 0; i < checked_.length; i++) {
+                var intval = checked_[i].parentNode.parentNode.getElementsByClassName('fahuo')[0].value;//发货数量
+                var buynum = checked_[i].parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
+                if (checked_[i].checked) {
+                    flag = true;
+                    if (parseInt(intval) > parseInt(buynum[1].innerHTML) && parseInt(intval) != 0) {
+                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                        document.getElementsByClassName('two-info')[0].style.cssText = 'display:block';
+                        setTimeout(function () {
+                            document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
+                            document.getElementsByClassName('two-info')[0].style.cssText = 'display:none';
+                        }, 1000);
+                    }else if(parseInt(intval) < parseInt(buynum[1].innerHTML) && parseInt(intval) != 0){
+                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                        document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:block';
+                        var parent_ = checked_[i].parentNode.parentNode.getElementsByClassName('input')[0];
+                        var key_ = parent_.getAttribute('data-key');
+                        var val_ = parent_.value;
+                        params[key_] = val_;
+                        statusShip = 1;
+                        // return false
+                    }else if(parseInt(intval) == parseInt(buynum[1].innerHTML) && parseInt(intval) != 0){
+                        console.log(checked_[i].parentNode.parentNode.getElementsByClassName('input')[0])
+                        var parent_ = checked_[i].parentNode.parentNode.getElementsByClassName('input')[0];
+                        var key_ = parent_.getAttribute('data-key');
+                        var val_ = parent_.value;
+                        params[key_] = val_;
+                    }else if(parseInt(intval) != 0){
+                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                        document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:block';
+                    }else {
+                        alertx("发货数量不能为0");
+                        return false
+                    }
+                }
+            }
+
+
+            if (!flag) {
+                return false;
+            }else {
+                if(statusShip == 1){
+
+                }else {
+                    //循环复选框
+                    goship(params);
+                }
+            }
+            return false
+        });
+        document.getElementById('ship-go').onclick = function () {
+            goship(params);
+        }
+        //全选
+        all_.onclick = function () {
+            if (this.classList.contains('active')) {
+                for (var i = 0; i < checked_.length; i++) {
+                    checked_[i].checked = false;
+                    all_.classList.remove("active");
+                }
+            } else {
+                for (var i = 0; i < checked_.length; i++) {
+                    checked_[i].checked = true;
+                    all_.classList.add("active");
+                }
+            }
+
+        };
+
+        //关闭按钮
+        for (var i = 0; i < close_.length; i++) {
+            close_[i].onclick = function () {
+                closeThe(this);
+            }
+        }
+        //关闭
+        statusout_[0].onclick = function () {
+
+            document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
+            document.getElementsByClassName('whether-ship')[0].style.cssText = 'display:none';
+        }
+
+        //订单拆分
+        $('.cancel-div').on('click', function () {
+            $.ajax({
+                //几个参数需要注意一下
+                type: "POST",//方法类型
+                dataType: "json",//预期服务器返回的数据类型
+                url: "${ctx}/order/splitOrder" ,//url
+                data: JSON.stringify(shoplist),
+                contentType : 'application/json;charset=UTF-8', //contentType很重要
+                success: function (result) {
+                    console.log(result);//打印服务端返回的数据(调试用)
+                    if (result.success) {
+                        window.location.href="${ctx}/order/detailPage?shopOrderID=" + result.shopOrderID;
+                    } else {
+                        alert(result.msg);
+                    }
+                },
+                error : function() {
+                    alert("服务异常!");
+                }
+            });
+        });
+
+        var shoplist = {};
+        if(splitbtn_[0]){
+            splitbtn_[0].onclick = function () {
+                var checked_ = document.getElementsByName('checked');//复选框
+                var flag = false;//标记判断是否选中一个
+                for (var i = 0; i < checked_.length; i++) {
+                    if (checked_[i].checked) {
+                        flag = true;
+                        for (var j = 0; j < input_.length; j++) {
+                            if(input_[i].value == 0){
+                                alertx('数量不能为0');
+                                return false
+                            }
+                            shoplist['orderProductID_'+input_[i].getAttribute('data-key')] = input_[i].value;
+                        }
+                        var shopOrderID = document.getElementsByName('shopOrderID')[0].value;
+                        shoplist['shopOrderID'] = shopOrderID;
+                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                        document.getElementsByClassName('spilt')[0].style.cssText = 'display:block';
+                    }
+                }
+                if (!flag) {
+                    document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                    document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
+                    return false;
+                } else {
+                    // return true
+                }
+
+                // if (ck) {
+                //
+                //
+                // }
+                console.log(shoplist)
+
+            };
+        }
+
+    };
+    //关闭
+    function closeThe(that) {
+        document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
+        that.parentNode.style.cssText = 'display:none';
+    }
+    //判断商品是否选中
+    function flagcheckd() {
+        var checked_ = document.getElementsByName('checked');//复选框
+        var flag = false;//标记判断是否选中一个
+        for (var i = 0; i < checked_.length; i++) {
+            if (checked_[i].checked) {
+                flag = true;
+                break;
+            }
+        }
+        if (!flag) {
+            document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+            document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
+            return false;
+        } else {
+            return true
+        }
+
+    }
+    //发货接口
+    function goship(params) {
+        console.log("fahuole");
+        if (clickTime == 1) {
+            clickTime = 2;
+        } else {
+            alertx('请勿重复点击');
+        }
+        $.ajax({
+            url: "${ctx}/order/addLogisticsInfo",
+            type: "POST",
+            dataType: "json",
+            contentType: "application/json",
+            data: JSON.stringify(params),
+            success: function (res) {
+                localStorage.setItem('jsonstring',JSON.stringify(res.data));
+                window.location.href = '${ctx}/order/toShipLogistic?orderID=${order.orderID}'
+            }
+        });
+    }
+</script>
 </body>
 </body>
 </html>
 </html>

+ 281 - 308
src/main/webapp/WEB-INF/views/modules/order/shipLogistic.jsp

@@ -2,30 +2,28 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
 <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
 <html>
 <html>
 <head>
 <head>
-    <title>订单列表</title>
+    <title>订单列表-添加物流</title>
     <meta name="decorator" content="default"/>
     <meta name="decorator" content="default"/>
-    <%--<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>--%>
     <style type="text/css">
     <style type="text/css">
         *{margin: 0;padding: 0}
         *{margin: 0;padding: 0}
         a{list-style: none;text-decoration: none}
         a{list-style: none;text-decoration: none}
         i{font-style: normal}
         i{font-style: normal}
         body{background-color: rgb(255,255,255);}
         body{background-color: rgb(255,255,255);}
         h3{line-height: 20px;padding:20px 0 20px 15px; border-bottom: 1px solid #CCCCCC;font-weight: normal}
         h3{line-height: 20px;padding:20px 0 20px 15px; border-bottom: 1px solid #CCCCCC;font-weight: normal}
-        .body-margin{margin:0 26px;}
+        .body-margin{margin:26px}
         .left-span{width: 3px;height: 20px;margin-right:10px;background-color: #00A6C7;display: inline-block;vertical-align: bottom}
         .left-span{width: 3px;height: 20px;margin-right:10px;background-color: #00A6C7;display: inline-block;vertical-align: bottom}
         .bj{position: fixed;width: 100%;height: 100%;bottom: 0;top:0;left: 0;z-index: 99;}
         .bj{position: fixed;width: 100%;height: 100%;bottom: 0;top:0;left: 0;z-index: 99;}
-        .shop-info{}
+        .delivery-info{padding: 15px;background-color: #f5f5f5;}
         .shop-title{ color: #000;border-bottom: 1px solid #ccc;padding: 20px;margin-bottom: 20px;}
         .shop-title{ color: #000;border-bottom: 1px solid #ccc;padding: 20px;margin-bottom: 20px;}
         .table{width: 100%;border-collapse: collapse;}
         .table{width: 100%;border-collapse: collapse;}
         .table th{color: #000;font-weight: normal}
         .table th{color: #000;font-weight: normal}
         .table th,.table td{width: 25%;height: 35px;border: 1px solid #CCCCCC;text-align: center;padding: 5px 0;}
         .table th,.table td{width: 25%;height: 35px;border: 1px solid #CCCCCC;text-align: center;padding: 5px 0;}
         .table td img{width: 60px;height: 60px;vertical-align: middle}
         .table td img{width: 60px;height: 60px;vertical-align: middle}
         .express-delivery{font-size: 14px;}
         .express-delivery{font-size: 14px;}
-        .express-div{padding: 20px;}
+        .express-div{padding:10px 0;}
         .express-div label{width: 100px;line-height: 35px;display: inline-block;vertical-align: middle}
         .express-div label{width: 100px;line-height: 35px;display: inline-block;vertical-align: middle}
         .select-btn{display: inline-block;}
         .select-btn{display: inline-block;}
         .select-btn input{width: 210px;height: 35px; vertical-align: top;box-sizing: border-box !important;}
         .select-btn input{width: 210px;height: 35px; vertical-align: top;box-sizing: border-box !important;}
-        /*.select-btn .span_jia{display: inline-block;float: none;margin-left: 0; width: 35px;height: 35px;line-height: 33px; box-sizing: border-box; vertical-align: top; border: 1px solid #ccc;cursor: pointer; text-align: center;font-size: 24px;border-radius: 4px;}*/
         .the-span{display: inline-block;float: none;margin-left: 0; width: 35px;height: 35px;line-height: 33px; box-sizing: border-box; vertical-align: top; border: 1px solid #ccc;cursor: pointer; text-align: center;font-size: 24px;border-radius: 4px;}
         .the-span{display: inline-block;float: none;margin-left: 0; width: 35px;height: 35px;line-height: 33px; box-sizing: border-box; vertical-align: top; border: 1px solid #ccc;cursor: pointer; text-align: center;font-size: 24px;border-radius: 4px;}
         input::-webkit-input-placeholder {text-align: center}
         input::-webkit-input-placeholder {text-align: center}
         .mask{padding:20px 20px 20px 120px;font-size: 14px;position:relative;}
         .mask{padding:20px 20px 20px 120px;font-size: 14px;position:relative;}
@@ -45,7 +43,6 @@
         .change-info{position: fixed;top: 20%;left: 50%;transform:translateX(-50%);z-index: 999;padding: 50px;background-color: #fff;box-shadow: 0px 0px 15px #ccc;}
         .change-info{position: fixed;top: 20%;left: 50%;transform:translateX(-50%);z-index: 999;padding: 50px;background-color: #fff;box-shadow: 0px 0px 15px #ccc;}
         .mar-css{margin-left: 5px !important;}
         .mar-css{margin-left: 5px !important;}
         .controls{font-size:0}
         .controls{font-size:0}
-        .select2-choice{width:100px}
         .upload-content{position:relative;}
         .upload-content{position:relative;}
         .upload-content *{margin:0;padding:0;}
         .upload-content *{margin:0;padding:0;}
         .upload-content .conList{display:inline-block;margin-right:5px;width:90px;height:90px;background:#e6e6e6;border-radius:5px;position:relative;overflow:hidden}
         .upload-content .conList{display:inline-block;margin-right:5px;width:90px;height:90px;background:#e6e6e6;border-radius:5px;position:relative;overflow:hidden}
@@ -58,216 +55,18 @@
         .hide-pic{display:none !important}
         .hide-pic{display:none !important}
         .upload-tips{margin:10px 0}
         .upload-tips{margin:10px 0}
     </style>
     </style>
-    <script type="text/javascript">
-        var op_html = "";
-        window.onload = function () {
-            var spanjia_ = document.getElementsByClassName('span_jia');
-            var express_ = document.getElementsByClassName('express-delivery');
-            var danjia_ = document.getElementsByClassName('dan_jia');
-            var shipnum_ = document.getElementsByClassName('ship-num');
-            var input_ = document.getElementsByClassName('input')//数量输入框
-            var confirm_ = document.getElementsByClassName('confirm');//确定按钮
-            var expressDelivery_ = document.getElementsByClassName('express-delivery');//循环物流
-            var masktext_ = document.getElementsByClassName('mask-text');//备注
-            var singlenum_= document.getElementsByClassName('single-num');//新建输入框判断
-            var obj = {};
-            // var valuearr = {};
-            var expressval = document.getElementsByTagName('select');//物流快递
-            var index = expressval[0].selectedIndex ;//索引值
-            var value = expressval[0].options[index].value;
-            var arr = [];
-            for(var i=0;i<expressval[0].options.length;i++){
-                var valuearr = {};
-                valuearr['name'] = expressval[0].options[i].text;
-                valuearr['value'] = expressval[0].options[i].value;
-                arr.push(valuearr);
-            }
-            //新建输入框判断
-
-            for(var i=0;i<singlenum_.length;i++){
-
-            }
-            //输入框判断
-            for(var i=0;i<input_.length;i++){
-                input_[i].onchange = function () {
-                    var intval = this.value;
-                    var buynum = this.parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
-                    var sent_ = this.parentNode.parentNode.getElementsByClassName('sent');//已发数量
-                    if(parseInt(intval)+parseInt(sent_[0].innerHTML) >=parseInt(buynum[0].innerHTML)){
-                        document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
-                        document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
-                        setTimeout(function () {
-                            document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
-                            document.getElementsByClassName('change-info')[0].style.cssText = 'display:none';
-                        },1000);
-                        this.value = 0
-                    }
-                }
-            }
-            //物流加减
-            for(var i=0;i<spanjia_.length;i++){
-                spanjia_[i].onclick =function () {
-
-                    var html=''
-                    html+='<div class="express-delivery border-express">';
-                    html+='<div class="express-div">';
-                    html+='<label><i>*</i>快递公司</label>';
-                    html+='<div class="select-btn">';
-                    html+='<select class="express-input required input-xlarge">';
-                    for(var i=0;i<arr.length;i++){
-                        html+='<option value="'+arr[i].value+'">'+arr[i].name;
-                        html+='</option>';
-                    }
-                    html+='</select>';
-                    html+='<span onclick="jian(this)" class="span_jian mar-css the-span">-</span>';
-                    html+='</div>';
-                    html+='</div>';
-                    html+='<div class="express-div">';
-                    html+='<label><i>*</i>物流编号</label>';
-                    html+='<div class="select-btn">';
-                    html+='<input class="single-num" type="text" placeholder="请输入单号">';
-                    html+='<span onclick="danjia(this)" class="dan_jia mar-css the-span">+</span>';
-                    html+='</div>';
-                    html+='</div>';
-                    html+='</div>';
-
-                    express_[0].insertAdjacentHTML('afterend', html);
-                }
-            }
-
-            //物流单号
-            for(var i=0;i<spanjia_.length;i++){
-                danjia_[i].onclick =function () {
-                    danjia(this)
-                }
-            }
-            //列表信息展示
-            var resdata = JSON.parse(localStorage.getItem('jsonstring'));
-            console.log(resdata)
-            var html = '';
-            for(var i=0;i<resdata.length;i++){
-                html+='<tr>';
-                html+='<td>'+resdata[i].shopName+'</td>'
-                html+='<td>';
-                html+='<img src="'+resdata[i].image+'">';
-                html+='</td>';
-                html+='<td>';
-                html+=resdata[i].name;
-                html+='</td>';
-                html+='<td class="buy-num">';
-                html+=resdata[i].num;
-                html+='</td>';
-                html+='<td>';
-                html+=resdata[i].presentNum;
-                html+='</td>';
-                html+='<td class="sent">';
-                html+=resdata[i].num + resdata[i].presentNum - resdata[i].notOutStore;
-                html+='</td>';
-                html+='<td>';
-                html+='<span data-id='+resdata[i].orderProductID+' data-type='+resdata[i].shopOrderID+' class="input">';
-                html+=''+resdata[i].deliveryNum+'';
-                html+='</span>';
-                html+='</td>';
-                html+='</tr>';
-
-                obj['orderProductID_'+resdata[i].orderProductID+''] = resdata[i].deliveryNum;
-                obj['shopOrderID'] = resdata[i].shopOrderID;
-
-            }
-            $('.table').append(html);
-            //确认点击获取物流以及物流单号
-            confirm_[0].onclick = function () {
-                var _masktext = masktext_[0].value;
-                obj['remarks'] = _masktext;
-                for(var i=0;i<expressDelivery_.length;i++){
-                    var expressval = expressDelivery_[i].getElementsByTagName('select');//物流快递
-                    if(!expressval[0].value){
-                        $.jBox.info('请选择物流快递!');
-                        return false;
-                    }
-                    var index = expressval[0].selectedIndex ;//索引值
-                    var singlenum_ = expressDelivery_[i].getElementsByClassName('single-num');//物流单号
-                    console.log(expressval[0].value + singlenum_[0].value);
-                    var list_ = '';
-                    for(var j=0;j<singlenum_.length;j++){
-                        if(!singlenum_[j].value){
-                            $.jBox.info('请填写物流单号!');
-                            return false;
-                        }
-                         list_+= singlenum_[j].value+'_';
-                         obj['logisticsInfo_'+expressval[0].options[index].value+''] = list_.substring(0,list_.length - 1);
-                    }
-                }
-                var imgArr = [];
-                if($('#image1').val()){ imgArr.push($('#image1').val()); }
-                if($('#image2').val()){ imgArr.push($('#image2').val()); }
-                if($('#image3').val()){ imgArr.push($('#image3').val()); }
-                if($('#image4').val()){ imgArr.push($('#image4').val()); }
-                if($('#image5').val()){ imgArr.push($('#image5').val()); }
-                if($('#image6').val()){ imgArr.push($('#image6').val()); }
-                if($('#image7').val()){ imgArr.push($('#image7').val()); }
-                if($('#image8').val()){ imgArr.push($('#image8').val()); }
-                if($('#image9').val()){ imgArr.push($('#image9').val()); }
-                if($('#image10').val()){ imgArr.push($('#image10').val()); }
-                obj['remarkImages'] = imgArr.join("##");
-                console.log(obj);
-                $.ajax({
-                    url : "${ctx}/order/delivery",
-                    contentType:'application/json',
-                    data : JSON.stringify(obj),
-                    type : 'post',
-                    success : function(data){
-                        if (data.success) {
-                            window.location.href = "${ctx}/order/logisticsDetails?orderID=${orderID}";
-                        } else {
-                            alert(data.msg);
-                        }
-                    },
-                    error : function(){
-                        alert("服务器内部错误");
-                    }
-                })
-            }
-
-        };
-        //物流单号
-        function danjia(that) {
-            if(that.parentNode.getElementsByClassName('single-num')[0].value ==''){return}
-            var html=''
-            html+='<div class="express-div">';
-            html+='<label><i>*</i>物流编号</label>';
-            html+='<div class="select-btn">';
-            html+='<input class="single-num" type="text" placeholder="请输入单号">';
-            html+='<span onclick="shipjian(this)" class="span_jian mar-css the-span">-</span>';
-            html+='</div>';
-            html+='</div>';
-            that.parentNode.parentNode.insertAdjacentHTML('afterend', html);
-        }
-        //减物流
-        function jian(that) {
-            var that_ = that.parentNode.parentNode.parentNode;
-            that.parentNode.parentNode.parentNode.parentNode.removeChild(that_);
-
-        }
-        //减单号
-        function shipjian(that) {
-            var that_ = that.parentNode.parentNode;
-            that.parentNode.parentNode.parentNode.removeChild(that_);
-        }
-        //判断输入框不能为空
-        function input(that) {
-            if(that.parentNode.getElementsByClassName('single-num')[0].value == ''){return}
-        }
-
-    </script>
 </head>
 </head>
 <body>
 <body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/order/orderList">订单列表</a></li>
+    <li><a href="${ctx}/order/toDeliveryPage?id=${orderID}">发货</a></li>
+    <li class="active"><a href="${ctx}/order/toShipLogistic?orderID=${orderID}">添加物流</a></li>
+</ul>
+
 <div class="change-info" style="display: none">发货数量大于总数量</div>
 <div class="change-info" style="display: none">发货数量大于总数量</div>
 <div class="bj" style="display: none"></div>
 <div class="bj" style="display: none"></div>
 <div class="body-margin">
 <div class="body-margin">
-    <h3><span class="left-span"></span>订单列表--添加物流</h3>
     <div class="shop-info">
     <div class="shop-info">
-        <div class="shop-title">商品信息</div>
         <table class="table">
         <table class="table">
             <tr class="first-tr">
             <tr class="first-tr">
                 <th>供应商</th>
                 <th>供应商</th>
@@ -278,114 +77,288 @@
                 <th>已发数量</th>
                 <th>已发数量</th>
                 <th>本次发货</th>
                 <th>本次发货</th>
             </tr>
             </tr>
-            <%--<c:forEach items="${orderProductList}" var="orderProduct">--%>
-                <%--<tr class="first-tr">--%>
-                    <%--<td><img src="${orderProduct.image}"> </td>--%>
-                    <%--<td>${orderProduct.name} </td>--%>
-                    <%--<td class="buy-num">${orderProduct.num + orderProduct.presentNum}</td>--%>
-                    <%--<td class="sent">${orderProduct.num + orderProduct.presentNum - orderProduct.notOutStore}</td>--%>
-                    <%--<td><input oninput="this.value=this.value.replace(/\D/g,'').replace(/^0+(?=\d)/,1)" class="input" value="${orderProduct.deliveryNum}" type="text"/></td>--%>
-                <%--</tr>--%>
-            <%--</c:forEach>--%>
         </table>
         </table>
     </div>
     </div>
-    <%--已有物流信息--%>
-    <%--<div class="logistic-already">--%>
-        <%--<h3>已有物流信息</h3>--%>
-        <%--<div class="have-logistic">--%>
-            <%--<div class="logistic-item">--%>
-                <%--<div><label>快递公司:</label><span>顺丰快递</span></div>--%>
-                <%--<div><label>快递单号:</label><span>1213212555</span></div>--%>
-            <%--</div>--%>
-            <%--<div class="logistic-item">--%>
-                <%--<div><label>快递公司:</label><span>顺丰快递</span></div>--%>
-                <%--<div><label>快递单号:</label><span>1213212555</span></div>--%>
-            <%--</div>--%>
-        <%--</div>--%>
-    <%--</div>--%>
-    <div class="express-delivery">
-        <div class="express-div">
-            <label><i>*</i>快递公司</label>
-            <div class="select-btn" id="qqq">
-                <select class="express-input required input-xlarge" style="width:300px;">
-                    <c:forEach items="${fns:getDictList('kd_type')}" var="kd">
-                        <option value="${kd.label}">${kd.label}</option>
-                        <%--<script>--%>
-                            <%--op_html += "<option value='${kd.id}'>${kd.label}</option>";--%>
-                        <%--</script>--%>
-                    </c:forEach>
-                </select>
-                <%--<input class="express-input" type="text" placeholder="请选择">--%>
-                <span onclick="input(this)" class="span_jia the-span">+</span>
+    <div class="delivery-info">
+        <div class="express-delivery">
+            <div class="express-div">
+                <label><i>*</i>快递公司</label>
+                <div class="select-btn" id="qqq">
+                    <select class="express-input required input-xlarge" style="width:300px;">
+                        <c:forEach items="${fns:getDictList('kd_type')}" var="kd">
+                            <option value="${kd.label}">${kd.label}</option>
+                        </c:forEach>
+                    </select>
+                    <span onclick="input(this)" class="span_jia the-span">+</span>
+                </div>
             </div>
             </div>
-        </div>
-        <div class="express-div ship-num">
-            <label><i>*</i>物流编号</label>
-            <div class="select-btn">
-                <input class="single-num" type="text" placeholder="请输入单号" style="width:300px;">
-                <span onclick="input(this)" class="dan_jia the-span">+</span>
+            <div class="express-div ship-num">
+                <label><i>*</i>物流编号</label>
+                <div class="select-btn">
+                    <input class="single-num" type="text" placeholder="请输入单号" style="width:300px;">
+                    <span onclick="input(this)" class="dan_jia the-span">+</span>
+                </div>
             </div>
             </div>
         </div>
         </div>
-    </div>
-    <div class="mask">
-        <label>图片备注:</label>
-        <div class="imgbox">
-            <div class="controls upload-content" id="remarkImageBox">
-                <div class="conList">
-                    <input type="hidden" id="image1" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image1" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image2" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image2" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image3" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image3" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image4" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image4" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image5" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image5" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image6" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image6" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image7" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image7" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image8" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image8" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image9" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image9" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
-                </div>
-                <div class="conList hide-pic">
-                    <input type="hidden" id="image10" maxlength="150" class="imagesInput">
-                    <sys:ckfinder input="image10" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+        <div class="mask">
+            <label>图片备注:</label>
+            <div class="imgbox">
+                <div class="controls upload-content" id="remarkImageBox">
+                    <div class="conList">
+                        <input type="hidden" id="image1" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image1" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image2" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image2" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image3" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image3" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image4" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image4" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image5" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image5" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image6" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image6" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image7" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image7" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image8" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image8" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image9" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image9" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
+                    <div class="conList hide-pic">
+                        <input type="hidden" id="image10" maxlength="150" class="imagesInput">
+                        <sys:ckfinder input="image10" type="images" uploadPath="/photo" selectMultiple="false" maxWidth="100" maxHeight="100"/>
+                    </div>
                 </div>
                 </div>
+                <div class="conList upload-tips"><span style="color:red;">注意:请上传jpg / png格式的图片,最大不超过5M,最多可上传10张</span></div>
             </div>
             </div>
-            <div class="conList upload-tips"><span style="color:red;">注意:请上传jpg / png格式的图片,最大不超过5M,最多可上传10张</span></div>
         </div>
         </div>
-    </div>
-    <div class="mask">
-        <label>备注:</label>
-        <textarea class="mask-text" placeholder="请输入备注文字,200字以内..." maxlength="200" style="width:300px;"></textarea>
-        <p style="width:300px;text-align:right;"><span id="remarkLen" style="color:red;">0</span>/200</p>
-    </div>
-    <div class="cencal-btn">
-        <span><a href="javascript:history.go(-1)">取消</a></span>
-        <span class="confirm">确认</span>
+        <div class="mask">
+            <label>备注:</label>
+            <textarea class="mask-text" placeholder="请输入备注文字,200字以内..." maxlength="200" style="width:300px;"></textarea>
+            <p style="width:300px;text-align:right;"><span id="remarkLen" style="color:red;">0</span>/200</p>
+        </div>
+        <div class="cencal-btn">
+            <span><a href="javascript:history.go(-1)">取消</a></span>
+            <span class="confirm">确认</span>
+        </div>
     </div>
     </div>
 </div>
 </div>
 <script>
 <script>
+var op_html = "";
+window.onload = function () {
+    var spanjia_ = document.getElementsByClassName('span_jia');
+    var express_ = document.getElementsByClassName('express-delivery');
+    var danjia_ = document.getElementsByClassName('dan_jia');
+    var shipnum_ = document.getElementsByClassName('ship-num');
+    var input_ = document.getElementsByClassName('input')//数量输入框
+    var confirm_ = document.getElementsByClassName('confirm');//确定按钮
+    var expressDelivery_ = document.getElementsByClassName('express-delivery');//循环物流
+    var masktext_ = document.getElementsByClassName('mask-text');//备注
+    var singlenum_= document.getElementsByClassName('single-num');//新建输入框判断
+    var obj = {};
+    // var valuearr = {};
+    var expressval = document.getElementsByTagName('select');//物流快递
+    var index = expressval[0].selectedIndex ;//索引值
+    var value = expressval[0].options[index].value;
+    var arr = [];
+    for(var i=0;i<expressval[0].options.length;i++){
+        var valuearr = {};
+        valuearr['name'] = expressval[0].options[i].text;
+        valuearr['value'] = expressval[0].options[i].value;
+        arr.push(valuearr);
+    }
+    //新建输入框判断
+
+    for(var i=0;i<singlenum_.length;i++){
+
+    }
+    //输入框判断
+    for(var i=0;i<input_.length;i++){
+        input_[i].onchange = function () {
+            var intval = this.value;
+            var buynum = this.parentNode.parentNode.getElementsByClassName('buy-num');//购买数量
+            var sent_ = this.parentNode.parentNode.getElementsByClassName('sent');//已发数量
+            if(parseInt(intval)+parseInt(sent_[0].innerHTML) >=parseInt(buynum[0].innerHTML)){
+                document.getElementsByClassName('bj')[0].style.cssText = 'display:block';
+                document.getElementsByClassName('change-info')[0].style.cssText = 'display:block';
+                setTimeout(function () {
+                    document.getElementsByClassName('bj')[0].style.cssText = 'display:none';
+                    document.getElementsByClassName('change-info')[0].style.cssText = 'display:none';
+                },1000);
+                this.value = 0
+            }
+        }
+    }
+    //物流加减
+    for(var i=0;i<spanjia_.length;i++){
+        spanjia_[i].onclick =function () {
+
+            var html=''
+            html+='<div class="express-delivery border-express">';
+            html+='<div class="express-div">';
+            html+='<label><i>*</i>快递公司</label>';
+            html+='<div class="select-btn">';
+            html+='<select class="express-input required input-xlarge">';
+            for(var i=0;i<arr.length;i++){
+                html+='<option value="'+arr[i].value+'">'+arr[i].name;
+                html+='</option>';
+            }
+            html+='</select>';
+            html+='<span onclick="jian(this)" class="span_jian mar-css the-span">-</span>';
+            html+='</div>';
+            html+='</div>';
+            html+='<div class="express-div">';
+            html+='<label><i>*</i>物流编号</label>';
+            html+='<div class="select-btn">';
+            html+='<input class="single-num" type="text" placeholder="请输入单号">';
+            html+='<span onclick="danjia(this)" class="dan_jia mar-css the-span">+</span>';
+            html+='</div>';
+            html+='</div>';
+            html+='</div>';
+
+            express_[0].insertAdjacentHTML('afterend', html);
+        }
+    }
+
+    //物流单号
+    for(var i=0;i<spanjia_.length;i++){
+        danjia_[i].onclick =function () {
+            danjia(this)
+        }
+    }
+    //列表信息展示
+    var resdata = JSON.parse(localStorage.getItem('jsonstring'));
+    console.log(resdata)
+    var html = '';
+    for(var i=0;i<resdata.length;i++){
+        html+='<tr>';
+        html+='<td>'+resdata[i].shopName+'</td>'
+        html+='<td>';
+        html+='<img src="'+resdata[i].image+'">';
+        html+='</td>';
+        html+='<td>';
+        html+=resdata[i].name;
+        html+='</td>';
+        html+='<td class="buy-num">';
+        html+=resdata[i].num;
+        html+='</td>';
+        html+='<td>';
+        html+=resdata[i].presentNum;
+        html+='</td>';
+        html+='<td class="sent">';
+        html+=resdata[i].num + resdata[i].presentNum - resdata[i].notOutStore;
+        html+='</td>';
+        html+='<td>';
+        html+='<span data-id='+resdata[i].orderProductID+' data-type='+resdata[i].shopOrderID+' class="input">';
+        html+=''+resdata[i].deliveryNum+'';
+        html+='</span>';
+        html+='</td>';
+        html+='</tr>';
+
+        obj['orderProductID_'+resdata[i].orderProductID+''] = resdata[i].deliveryNum;
+        obj['shopOrderID'] = resdata[i].shopOrderID;
+
+    }
+    $('.table').append(html);
+    //确认点击获取物流以及物流单号
+    confirm_[0].onclick = function () {
+        var _masktext = masktext_[0].value;
+        obj['remarks'] = _masktext;
+        for(var i=0;i<expressDelivery_.length;i++){
+            var expressval = expressDelivery_[i].getElementsByTagName('select');//物流快递
+            if(!expressval[0].value){
+                $.jBox.info('请选择物流快递!');
+                return false;
+            }
+            var index = expressval[0].selectedIndex ;//索引值
+            var singlenum_ = expressDelivery_[i].getElementsByClassName('single-num');//物流单号
+            console.log(expressval[0].value + singlenum_[0].value);
+            var list_ = '';
+            for(var j=0;j<singlenum_.length;j++){
+                if(!singlenum_[j].value){
+                    $.jBox.info('请填写物流单号!');
+                    return false;
+                }
+                 list_+= singlenum_[j].value+'_';
+                 obj['logisticsInfo_'+expressval[0].options[index].value+''] = list_.substring(0,list_.length - 1);
+            }
+        }
+        var imgArr = [];
+        if($('#image1').val()){ imgArr.push($('#image1').val()); }
+        if($('#image2').val()){ imgArr.push($('#image2').val()); }
+        if($('#image3').val()){ imgArr.push($('#image3').val()); }
+        if($('#image4').val()){ imgArr.push($('#image4').val()); }
+        if($('#image5').val()){ imgArr.push($('#image5').val()); }
+        if($('#image6').val()){ imgArr.push($('#image6').val()); }
+        if($('#image7').val()){ imgArr.push($('#image7').val()); }
+        if($('#image8').val()){ imgArr.push($('#image8').val()); }
+        if($('#image9').val()){ imgArr.push($('#image9').val()); }
+        if($('#image10').val()){ imgArr.push($('#image10').val()); }
+        obj['remarkImages'] = imgArr.join("##");
+        console.log(obj);
+        $.ajax({
+            url : "${ctx}/order/delivery",
+            contentType:'application/json',
+            data : JSON.stringify(obj),
+            type : 'post',
+            success : function(data){
+                if (data.success) {
+                    window.location.href = "${ctx}/order/logisticsDetails?orderID=${orderID}";
+                } else {
+                    alert(data.msg);
+                }
+            },
+            error : function(){
+                alert("服务器内部错误");
+            }
+        })
+    }
+
+};
+//物流单号
+function danjia(that) {
+    if(that.parentNode.getElementsByClassName('single-num')[0].value ==''){return}
+    var html=''
+    html+='<div class="express-div">';
+    html+='<label><i>*</i>物流编号</label>';
+    html+='<div class="select-btn">';
+    html+='<input class="single-num" type="text" placeholder="请输入单号">';
+    html+='<span onclick="shipjian(this)" class="span_jian mar-css the-span">-</span>';
+    html+='</div>';
+    html+='</div>';
+    that.parentNode.parentNode.insertAdjacentHTML('afterend', html);
+}
+//减物流
+function jian(that) {
+    var that_ = that.parentNode.parentNode.parentNode;
+    that.parentNode.parentNode.parentNode.parentNode.removeChild(that_);
+
+}
+//减单号
+function shipjian(that) {
+    var that_ = that.parentNode.parentNode;
+    that.parentNode.parentNode.parentNode.removeChild(that_);
+}
+//判断输入框不能为空
+function input(that) {
+    if(that.parentNode.getElementsByClassName('single-num')[0].value == ''){return}
+}
 $(function () {
 $(function () {
     $('.upload-content .conList .btn:nth-of-type(1)').html('<div><span>+</span><h5>选择图片</h5></div>');
     $('.upload-content .conList .btn:nth-of-type(1)').html('<div><span>+</span><h5>选择图片</h5></div>');
     $('.upload-content .conList .btn:nth-of-type(2)').after('<img class="cancel-upload" src="/static/images/close-btn1.png">').remove();
     $('.upload-content .conList .btn:nth-of-type(2)').after('<img class="cancel-upload" src="/static/images/close-btn1.png">').remove();