Browse Source

Merge remote-tracking branch 'origin/release-201815-liusw' into release-201815-liusw

liusw 8 years ago
parent
commit
c2b34fbdf7
23 changed files with 336 additions and 93 deletions
  1. 20 0
      src/main/java/com/uas/platform/b2c/common/psmessage/service/MessageService.java
  2. 33 0
      src/main/java/com/uas/platform/b2c/common/psmessage/service/impl/MessageServiceImpl.java
  3. 14 0
      src/main/java/com/uas/platform/b2c/core/config/SysConf.java
  4. 62 8
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductAttachServiceImpl.java
  5. 14 0
      src/main/java/com/uas/platform/b2c/prod/product/kind/controller/KindController.java
  6. 8 2
      src/main/java/com/uas/platform/b2c/prod/product/kind/service/KindService.java
  7. 16 0
      src/main/java/com/uas/platform/b2c/prod/product/kind/service/impl/KindServiceImpl.java
  8. 41 16
      src/main/webapp/resources/js/admin/controllers/AuditRegulpicListCtrl.js
  9. 1 0
      src/main/webapp/resources/js/common/query/commodity.js
  10. 8 1
      src/main/webapp/resources/js/common/query/kind.js
  11. 3 0
      src/main/webapp/resources/js/sso/controllers/staffManagementCtrl.js
  12. 11 11
      src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js
  13. 2 1
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_onSaleCtrl.js
  14. 3 0
      src/main/webapp/resources/view/admin/RegulpicList.html
  15. 7 2
      src/main/webapp/resources/view/admin/modal/application_unpass_reason.html
  16. 7 1
      src/main/webapp/resources/view/admin/modal/auditRegulpic_choose_modal.html
  17. 6 0
      src/main/webapp/resources/view/admin/modal/auditRegulpic_modal.html
  18. 24 19
      src/main/webapp/resources/view/admin/modal/auditRegulpicpass_modal.html
  19. 4 4
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  20. 5 3
      src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html
  21. 5 4
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html
  22. 11 11
      src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html
  23. 31 10
      src/main/webapp/resources/view/vendor/modal/edit_regul_modal.html

+ 20 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/service/MessageService.java

@@ -0,0 +1,20 @@
+package com.uas.platform.b2c.common.psmessage.service;
+
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import java.util.List;
+
+/**
+ * 公共消息服务接口
+ * Created by wangyc on 2018/6/29.
+ *
+ * @version 2018/6/29 15:06 wangyc
+ */
+public interface MessageService {
+
+    /**
+     * 发送消息
+     * @param messageModel 消息实体
+     * @return
+     */
+    String sendMessage(List<MessageModel> messageModel);
+}

+ 33 - 0
src/main/java/com/uas/platform/b2c/common/psmessage/service/impl/MessageServiceImpl.java

@@ -0,0 +1,33 @@
+package com.uas.platform.b2c.common.psmessage.service.impl;
+
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import com.uas.platform.b2c.common.psmessage.service.MessageService;
+import com.uas.platform.b2c.core.config.SysConf;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.core.util.HttpUtil;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by wangyc on 2018/6/29.
+ *
+ * @version 2018/6/29 15:12 wangyc
+ */
+@Service
+public class MessageServiceImpl implements MessageService {
+
+    @Autowired
+    private SysConf sysConf;
+
+    @Override
+    public String sendMessage(List<MessageModel> models) {
+        String result = "";
+        try {
+            return HttpUtil.doPost(sysConf.getMessageServiceUrl() + "messages", FastjsonUtils.toJson(models));
+        } catch (Exception e) {
+            result = "false";
+        }
+        return result;
+    }
+}

+ 14 - 0
src/main/java/com/uas/platform/b2c/core/config/SysConf.java

@@ -166,6 +166,12 @@ public class SysConf {
 	@Value(("#{sys.b2b}"))
     private String b2bUrl;
 
+	/**
+	 * 公共消息服务网址
+	 */
+	@Value(("#{sys.messageServiceUrl}"))
+	private String messageServiceUrl;
+
 	public Boolean getRebuildIndexesOnRefresh() {
 		return rebuildIndexesOnRefresh;
 	}
@@ -361,4 +367,12 @@ public class SysConf {
     public void setB2bUrl(String b2bUrl) {
         this.b2bUrl = b2bUrl;
     }
+
+	public String getMessageServiceUrl() {
+		return messageServiceUrl;
+	}
+
+	public void setMessageServiceUrl(String messageServiceUrl) {
+		this.messageServiceUrl = messageServiceUrl;
+	}
 }

+ 62 - 8
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductAttachServiceImpl.java

@@ -4,6 +4,8 @@ import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
 import com.uas.platform.b2c.common.account.dao.UserBaseInfoDao;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.UserBaseInfo;
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import com.uas.platform.b2c.common.psmessage.service.MessageService;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.prod.commodity.dao.ProductAttachSubmitDao;
@@ -31,7 +33,18 @@ import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
@@ -40,12 +53,6 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.*;
-
 /**
  * Created by wangyc on 2018/6/26.
  *
@@ -72,12 +79,19 @@ public class ProductAttachServiceImpl implements ProductAttachService {
 
     private final UserBaseInfoDao userBaseInfoDao;
 
+    private final MessageService messageService;
+
+    private final String AUDIT_MESSAGE = "您提交的关于品牌“%s” 型号“%s” 的规格书,%s。原因:%s";
+
+    private final String AUDIT_FAILED = "审核不通过";
+
+    private final Logger LOGGER = Logger.getLogger(getClass());
+
     @Autowired
     private ProductService productService;
 
     @Autowired
-    public ProductAttachServiceImpl(ProductDao productDao, ProductAttachSubmitDao productAttachSubmitDao,
-                                    ComponentDao componentDao, BrandInfoDao brandInfoDao, KindInfoDao kindInfoDao, ComponentService componentService, KindDao kindDao, EnterpriseDao enterpriseDao, UserBaseInfoDao userBaseInfoDao) {
+    public ProductAttachServiceImpl(ProductDao productDao, ProductAttachSubmitDao productAttachSubmitDao,ComponentDao componentDao, BrandInfoDao brandInfoDao, KindInfoDao kindInfoDao, ComponentService componentService, KindDao kindDao, EnterpriseDao enterpriseDao, UserBaseInfoDao userBaseInfoDao,MessageService messageService) {
         this.productDao = productDao;
         this.productAttachSubmitDao = productAttachSubmitDao;
         this.componentDao = componentDao;
@@ -87,6 +101,7 @@ public class ProductAttachServiceImpl implements ProductAttachService {
         this.kindDao = kindDao;
         this.enterpriseDao = enterpriseDao;
         this.userBaseInfoDao = userBaseInfoDao;
+        this.messageService = messageService;
     }
 
     @Override
@@ -392,11 +407,50 @@ public class ProductAttachServiceImpl implements ProductAttachService {
             submit.setReason(reason);
             submit = productAttachSubmitDao.save(submit);
 
+            // 发送消息给提交人
+            sendMessage(submit, false);
+
             return ResultMap.success(submit);
         }
 
     }
 
+    /**
+     * 发送审核消息
+     * @param submit 申请
+     * @param success 是否成功
+     */
+    private void sendMessage(ProductAttachSubmit submit, Boolean success) {
+        List<MessageModel> messageModels = new ArrayList<>();
+        // 审核失败
+        if (!success && submit.getProductId() != null) {
+            Product product = productDao.findOne(submit.getProductId());
+            String result = "";
+            if (product != null) {
+                submit.setProduct(product);
+                MessageModel model = new MessageModel();
+                model.setType("规格书申请");
+                model.setConsumerApp("MALL");
+                model.setContent(String.format(AUDIT_MESSAGE, submit.getProduct().getBrand() != null ? submit.getProduct().getBrand() : "-", submit.getProduct().getPcmpcode() != null ? submit.getProduct().getPcmpcode() : "-", AUDIT_FAILED, submit.getReason()));
+                model.setCreateTime(new Date());
+                model.setProducerApp("MALL");
+                model.setReceiverEnuu(submit.getSubmitEnuu());
+                model.setReceiverUu(submit.getSubmitUu());
+                model.setSenderEnuu(submit.getAuditEnuu());
+                model.setSenderUu(submit.getAuditUu());
+                model.setSmsType("DONT_SEND");
+                model.setConsumerType("SINGLE");
+                messageModels.add(model);
+
+                result = messageService.sendMessage(messageModels);
+                LOGGER.info("物料规格书审核:审核发送消息:" + result);
+            } else {
+                result = "物料不存在,物料id为" + submit.getProductId();
+                LOGGER.info("物料规格书审核:审核发送消息失败" + result);
+            }
+        }
+    }
+
     @Override
     public ResultMap chooseAttach(String attach, ProductAttachSubmit submit) {
         ResultMap map = validateSubmit(submit);

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/controller/KindController.java

@@ -1,10 +1,12 @@
 package com.uas.platform.b2c.prod.product.kind.controller;
 
 import com.uas.platform.b2c.prod.product.kind.model.Kind;
+import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import com.uas.platform.b2c.prod.product.kind.model.KindProperty;
 import com.uas.platform.b2c.prod.product.kind.service.KindService;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.wordnik.swagger.annotations.ApiOperation;
 import com.wordnik.swagger.annotations.ApiParam;
@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
@@ -222,4 +225,15 @@ public class KindController {
 	public ModelAndView downloadKindProperties(@PathVariable("kindid") Long kindId) {
 		return kindService.downloadKindProperties(kindId);
 	}
+
+	/**
+	 * 通过父类目id获取类目信息
+	 * @param parentId 父类目id
+	 * @return
+	 */
+	@RequestMapping(value = "/parentid", method = RequestMethod.GET)
+	public ResultMap getKindsByLevelAndParentId(@RequestParam(value = "parentid", defaultValue = "0") Long parentId) {
+		List<KindInfo> kindInfos = kindService.findByParentId(parentId);
+		return ResultMap.success(kindInfos);
+	}
 }

+ 8 - 2
src/main/java/com/uas/platform/b2c/prod/product/kind/service/KindService.java

@@ -6,11 +6,10 @@ import com.uas.platform.b2c.prod.product.kind.model.Kind;
 import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import com.uas.platform.b2c.prod.product.kind.model.KindProperty;
 import com.uas.platform.b2c.prod.product.property.model.Property;
-import org.springframework.web.servlet.ModelAndView;
-
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.springframework.web.servlet.ModelAndView;
 
 public interface KindService {
 	/**
@@ -348,4 +347,11 @@ public interface KindService {
 	 * @return kindids
 	 */
 	public Set<Long> findByEnUU(Long enUU);
+
+	/**
+	 * 通过父类目id获取类目信息
+	 * @param parentId 父类目id
+	 * @return
+	 */
+	List<KindInfo> findByParentId(Long parentId);
 }

+ 16 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/service/impl/KindServiceImpl.java

@@ -1354,4 +1354,20 @@ public class KindServiceImpl implements KindService {
 	public Set<Long> findByEnUU(Long enUU) {
 		return pcbDao.findByEnUU(enUU);
 	}
+
+	@Override
+	public List<KindInfo> findByParentId(Long parentId) {
+		List<KindInfo> kindInfos = new ArrayList<>();
+		if (parentId == 0L) {
+			kindInfos = kindInfoDao.findByParentid(parentId);
+		} else {
+			KindInfo parentKind = kindInfoDao.findOne(parentId);
+			if (parentKind == null || parentKind.getIsLeaf().equals(0)) {
+				throw new IllegalOperatorException("此类目不存在或无下级类目");
+			} else {
+				kindInfos = kindInfoDao.findByParentid(parentId);
+			}
+		}
+		return kindInfos;
+	}
 }

+ 41 - 16
src/main/webapp/resources/js/admin/controllers/AuditRegulpicListCtrl.js

@@ -183,8 +183,8 @@ define([ 'app/app' ], function(app) {
   /**
    * 审核通过模态框控制器
    */
-  app.register.controller('auditRegulpicpassController', ['$scope', '$modalInstance', 'toaster', 'Commodity', 'Search','item', 'StoreAdminListInformation',
-    function ($scope, $modalInstance, toaster, Commodity, Search, item, StoreAdminListInformation) {
+  app.register.controller('auditRegulpicpassController', ['$scope', '$modalInstance', 'toaster', 'Commodity', 'Search','item', 'StoreAdminListInformation', 'Kind',
+    function ($scope, $modalInstance, toaster, Commodity, Search, item, StoreAdminListInformation, Kind) {
 
     $scope.kindPojo = {
       first: '请选择一级类目',
@@ -199,7 +199,8 @@ define([ 'app/app' ], function(app) {
     $scope.item = item;
     $scope.keyword = item.brand ? item.brand.nameEn : '';
     $scope.kindId = item.kind ? item.kind.nameCn : '';
-        /**
+    $scope.FisrtkindInfo = []
+    /**
      * 品牌联想词
      */
     $scope.onBrandChange = function(name) {
@@ -217,11 +218,19 @@ define([ 'app/app' ], function(app) {
     /**
      * 品牌联想词失去焦点
      */
+    var _Ch = false
     $scope.onBrandBlur = function(name) {
-      if (name === '') {
-        $scope.BrandList = []
-        return false
-      }
+      setTimeout(function() {
+        if (name !== '') {
+          if (!_Ch) {
+            $scope.keyword = ''
+            angular.element('#brannameid').val('')
+            angular.element('.listUl').hide()
+            $scope.BrandList = []
+          }
+        }
+        _Ch = false
+      }, 250)
     }
     /**
      * 保存不通过原因
@@ -237,21 +246,19 @@ define([ 'app/app' ], function(app) {
           toaster.pop('error', '商城一级类目未选择');
           return;
         }
-        if ($scope.kindPojo.second === ''
-            && $scope.kindInfo[$scope.kindPojo.first].children) {
+        if ($scope.kindPojo.second === '请选择二级类目' && $scope.TwokindInfo.length > 0) {
           toaster.pop('error', '商城二级类目未选择');
           return;
         }
-        if ($scope.kindPojo.third === ''
-            && $scope.kindInfo[$scope.kindPojo.first].children[$scope.kindPojo.second].children) {
+        if ($scope.kindPojo.third === '请选择三级类目'  && $scope.ThreekindInfo.length > 0) {
           toaster.pop('error', '商城三级类目未选择');
           return;
         }
-        if ($scope.kindPojo.third !== '') {
+        if ($scope.kindPojo.third !== '请选择三级类目') {
           info = $scope.kindPojo.third
-        } else if ($scope.kindPojo.second !== '') {
+        } else if ($scope.kindPojo.second !== '请选择二级类目') {
           info = $scope.kindPojo.second
-        } else if ($scope.kindPojo.first !== '') {
+        } else if ($scope.kindPojo.first !== '请选择一级类目') {
           info = $scope.kindPojo.first
         }
         $scope.item.kindId = info.id
@@ -273,6 +280,7 @@ define([ 'app/app' ], function(app) {
     $scope.setBrand = function(item, id) {
       $scope.keyword = item
       $scope.brandId = id
+      _Ch = true
       $scope.BrandList = []
     }
 
@@ -284,12 +292,28 @@ define([ 'app/app' ], function(app) {
     }
 
     var initKindDataInfo = function () {
-      Commodity.getAllKindInfo({}, function (data) {
-        $scope.kindInfo = data[0].children;
+      Kind.Getparentid({parentid: 0}, function (data) {
+        $scope.FisrtkindInfo = data.data
       })
     };
     initKindDataInfo();
 
+    $scope.ChooseFirstItem = function() {
+      $scope.kindPojo.second = '请选择二级类目'
+      $scope.kindPojo.third = '请选择三级类目'
+      $scope.ThreekindInfo = []
+      Kind.Getparentid({parentid: $scope.kindPojo.first}, function (data) {
+        $scope.TwokindInfo = data.data
+      })
+    }
+
+    $scope.ChooseTwoItem = function() {
+      $scope.kindPojo.third = '请选择三级类目'
+      Kind.Getparentid({parentid: $scope.kindPojo.second}, function (data) {
+        $scope.ThreekindInfo = data.data
+      })
+    }
+
     /**
      * 获取品牌联想词
      *
@@ -340,5 +364,6 @@ define([ 'app/app' ], function(app) {
     function dismiss() {
       $modalInstance.dismiss();
     }
+
   }])
 });

+ 1 - 0
src/main/webapp/resources/js/common/query/commodity.js

@@ -46,6 +46,7 @@ define([ 'ngResource' ], function() {
 				method: 'GET',
 				isArray: true
 			}
+
 		});
 	}]);
 });

+ 8 - 1
src/main/webapp/resources/js/common/query/kind.js

@@ -56,7 +56,14 @@ define([ 'ngResource'], function() {
 			changeKindProperty: {
 				url: 'produce/kind/kindProperty/changeKindProperty',
 				method: 'PUT'
-			}
+			},
+      /**
+       * 返回所有类目信息(正式环境)
+       */
+      Getparentid: {
+        url : 'produce/kind/parentid',
+        method: 'GET'
+      }
 		});
 	}]).factory('KindAPI', ['$resource', '$cacheFactory', function($resource, $cacheFactory) {
 		var cache = $cacheFactory('KindAPI');

+ 3 - 0
src/main/webapp/resources/js/sso/controllers/staffManagementCtrl.js

@@ -12,6 +12,9 @@ define(['app/app'], function (app) {
         $scope.setAddingUser = function (status) {
             $scope.addingUser = status;
             $scope.adding = false;
+            $scope.newUser = {};
+            $scope.newUser.userTel = '';
+            $scope.newUser.userEmail = '';
         };
         $scope.userInfo = $rootScope.userInfo;
 		$scope.updateState = false;

+ 11 - 11
src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js

@@ -603,16 +603,6 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
                   $scope.offerCount = 0;
                   $scope.replaceOfferCount = 0;
               }
-              if (seek.qutations && seek.qutations.length && $scope.isInit) {
-                  for (var i = 0; i < seek.qutations.length; i++) {
-                      if (seek.qutations[i].isReplace == 1) {
-                          $scope.replaceOfferCount++;
-                      } else {
-                          $scope.offerCount++;
-                      }
-                  }
-                  $scope.isInit = false;
-              }
             // $scope.offerCount = seek.offerAmount;
             $scope.currentSeek = seek;
               if (!seek.$status || seek.$status != 1) {
@@ -630,7 +620,17 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
                     } else {
                         $scope.offer = seek.qutations;
                         clearSeekStatus();
-                        seek.$status = status;
+                        if (seek.qutations && seek.qutations.length && $scope.isInit) {
+                            for (var i = 0; i < seek.qutations.length; i++) {
+                                if (seek.qutations[i].isReplace == 1) {
+                                    $scope.replaceOfferCount++;
+                                } else {
+                                    $scope.offerCount++;
+                                }
+                            }
+                        }
+                        seek.$status = $scope.isInit ? $scope.offerCount == 0 ? 3 : 2 : status;
+                        $scope.isInit = false;
                     }
                 });
             } else if (status == 1 && $scope.goodsCount != 0) {// 查看现货

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

@@ -1497,7 +1497,8 @@ define([ 'app/app' ], function(app) {
             Goods.updateGoods(null, commodity, function(data){
                 if(data.code == 1) {
                     toaster.pop('success', '修改成功');
-                    $scope.currenctGoods.splice(index, 1, data.data);
+                    loadData()
+                    // $scope.currenctGoods.splice(index, 1, data.data);
                 }else {
                     toaster.pop('error', '失败', data.message);
                 }

+ 3 - 0
src/main/webapp/resources/view/admin/RegulpicList.html

@@ -220,6 +220,9 @@
   .application-tab table tr td .lookNoPassInfo:hover .infoMore{
     display: block;
   }
+  #store-list .table tr>th, #store-list .table tr>td {
+    padding: 0px;
+  }
 </style>
 <div class="row-fluid sortable" id="store-list">
   <div class="com-title">

+ 7 - 2
src/main/webapp/resources/view/admin/modal/application_unpass_reason.html

@@ -24,9 +24,14 @@
 	}
 
 	div.title {
-		background-color: #F3F3F3;
+		background-color: #3ba9e9;
+		border-top-left-radius: 6px;
+		border-top-right-radius: 6px;
+		overflow: hidden;
+	}
+	.modal-content {
+		overflow: hidden;
 	}
-
 	#body . {
 		margin-bottom: 10px;
 	}

+ 7 - 1
src/main/webapp/resources/view/admin/modal/auditRegulpic_choose_modal.html

@@ -10,9 +10,15 @@
     padding-right: 10px;
     font-size: 15px;
   }
+  .modal-content {
+    overflow: hidden;
+  }
 
   div.title {
     background-color: #3ba9e9;
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+    overflow: hidden;
   }
 
   #body . {
@@ -37,7 +43,7 @@
         <p style="color: #ea0025">商城已存在该标准物料,请选择正确的规格书</p>
       </div>
     </div>
-    <div class="form-group" style="margin: 0px">
+    <div class="form-group" style="border-bottom: 1px dashed #dcdcdc;padding-bottom: 15px;">
       <div class="col-sm-6">
         <label class="radio-inline">
           <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="store" ng-checked="checked === 'store'" ng-click="checked = 'store'">

+ 6 - 0
src/main/webapp/resources/view/admin/modal/auditRegulpic_modal.html

@@ -13,6 +13,12 @@
 
   div.title {
     background-color: #3ba9e9;
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+    overflow: hidden;
+  }
+  .modal-content {
+    overflow: hidden;
   }
 
   #body . {

+ 24 - 19
src/main/webapp/resources/view/admin/modal/auditRegulpicpass_modal.html

@@ -10,9 +10,14 @@
     padding-right: 10px;
     font-size: 15px;
   }
-
+  .modal-content {
+    overflow: hidden;
+  }
   div.title {
     background-color: #3ba9e9;
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+    overflow: hidden;
   }
 
   #body . {
@@ -29,7 +34,7 @@
     line-height: 28px;
   }
   .form-horizontal div {
-    color: #666;
+    color: #333;
     font-size: 14px
   }
   .form-horizontal .name {
@@ -75,14 +80,14 @@
       <div class="col-sm-3 name">型号:</div>
       <div class="col-sm-9">{{item.product.cmpCode || item.product.pcmpcode || '-'}}</div>
     </div>
-    <div class="form-group">
+    <div class="form-group" style="border-bottom: 1px dashed #dcdcdc;padding-bottom: 15px;">
       <div class="col-sm-3 name">规格书:</div>
       <div class="col-sm-9"><a href="{{item.uploadAttach}}" target="_blank"><img src="static/img/vendor/images/pdf.png" style="width:28px;height:28px;"/></a></div>
     </div>
     <div class="form-group">
-      <div class="col-sm-3 name"><em style="color: #ea0e0e">*</em>品牌:</div>
-      <div class="col-sm-9" style="position: relative;" ng-if="!item.brandId">
-        <input type="text" ng-blur="onBrandBlur(keyword)"  ng-change="onBrandChange(keyword)" placeholder="请输入品牌名字" ng-model="keyword" class="form-control" style="width: 240px;height: 28px" />
+      <div class="col-sm-3 name" style="color: #333"><em style="color: #ea0e0e">*</em>品牌:</div>
+      <div class="col-sm-9" style="position: relative;" ng-show="!item.brandId">
+        <input id="brannameid" type="text" ng-blur="onBrandBlur(keyword)"  ng-change="onBrandChange(keyword)" placeholder="请输入品牌名字" ng-model="keyword" class="form-control" style="width: 240px;height: 28px" />
         <ul class="listUl" ng-if="BrandList.value.length > 0">
           <li ng-repeat="item in BrandList.value" ng-click="setBrand(item.nameEn,item.id)">
             {{item.nameEn}}
@@ -94,29 +99,29 @@
       </div>
     </div>
     <div class="form-group">
-      <div class="col-sm-3 name"><em style="color: #ea0e0e">*</em>商城类目:</div>
+      <div class="col-sm-3 name" style="color: #333"><em style="color: #ea0e0e">*</em>商城类目:</div>
       <div class="col-sm-9" ng-if="!item.kindId">
         <div class="col-sm-4" style="padding: 0px;">
           <select class="form-control"
                   ng-model="kindPojo.first"
-                  ng-options="key as value.nameCn for (key,value) in kindInfo"
-                  ng-change="kindPojo.second='';kindPojo.third='';"
+                  ng-change="ChooseFirstItem()"
                   style="opacity: 1;height:28px;overflow-y: scroll;line-height:28px;padding: 0 6px;">
-            <option value="">请选择一级类目</option>
+            <option value="请选择一级类目" selected="selected">请选择一级类目</option>
+            <option ng-repeat="item in FisrtkindInfo" value="{{item.id}}">{{item.nameCn}}</option>
           </select>
         </div>
         <div class="col-sm-4" style="padding: 0px;">
-          <select class="form-control" ng-model="kindPojo.second" ng-show="kindInfo[kindPojo.first].children"
-                  ng-options="key as value.nameCn for (key,value) in kindInfo[kindPojo.first].children"
-                  ng-change="kindPojo.third='';" style="height:28px;line-height:28px;padding: 0 6px;">
-            <option value="">请选择二级类目</option>
+          <select class="form-control" ng-model="kindPojo.second" ng-show="TwokindInfo.length > 0"
+                  ng-change="ChooseTwoItem()" style="height:28px;line-height:28px;padding: 0 6px;">
+            <option value="请选择二级类目" selected="selected">请选择二级类目</option>
+            <option ng-repeat="item in TwokindInfo" value="{{item.id}}">{{item.nameCn}}</option>
           </select>
         </div>
         <div class="col-sm-4" style="padding: 0px;">
           <select class="form-control" ng-model="kindPojo.third" style="opacity: 1;height:28px;line-height:28px;padding: 0 6px;"
-                  ng-show="kindInfo[kindPojo.first].children[kindPojo.second].children"
-                  ng-options="value as value.nameCn for value in kindInfo[kindPojo.first].children[kindPojo.second].children">
-            <option value="">请选择三级类目</option>
+                  ng-show="ThreekindInfo.length> 0">
+            <option value="请选择三级类目" selected="selected">请选择三级类目</option>
+            <option ng-repeat="item in ThreekindInfo" value="{{item.id}}">{{item.nameCn}}</option>
           </select>
         </div>
       </div>
@@ -124,8 +129,8 @@
         {{item.kind.nameCn}}
       </div>
     </div>
-    <div class="form-group">
-      <div class="col-sm-3 name">规格:</div>
+    <div class="form-group" style="border-bottom: 1px solid #dcdcdc;padding-bottom: 12px;">
+      <div class="col-sm-3 name" style="color:#333;">规格:</div>
       <div class="col-sm-9">
         <input type="text" placeholder="请输入规格(非必填)" ng-model="spec" class="form-control" style="width: 240px;height: 28px" />
       </div>

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

@@ -71,7 +71,7 @@
     .seek-purchase .seek-purchase-content .publish-purchase .fl .form-block ul.similar-list {
         position: absolute;
         top: 23px;
-        left: 105px;
+        left: 110px;
         background: #fff;
         border: 1px solid #b5b5b5;
         z-index: 1;
@@ -246,7 +246,7 @@
     }
     .seek-purchase .seek-purchase-content >table >tbody.active .operate-seek,
     .seek-purchase .seek-purchase-content >table >tbody.active .expand-row > td {
-        border-right: 2px solid #f7a986;
+        border-right: 2px solid #f7a986 !important;
     }
     .seek-purchase .seek-purchase-content >table >tbody >tr.default-row:hover {
         background: #f1f5ff;
@@ -1068,7 +1068,7 @@
                 <th width="140">操作</th>
             </tr>
             </thead>
-            <tbody ng-repeat="seek in seekListData.content" ng-class="{'active': seek.$status && (seek.$status == 1 || seek.$status == 2)}">
+            <tbody ng-repeat="seek in seekListData.content" ng-class="{'active': seek.$status && (seek.$status == 1 || seek.$status == 2 || seek.$status == 3)}">
             <tr class="default-row" ng-mouseover="pauseTimer($index)" ng-mouseleave="startTimer($index)">
                 <td>
                     <div class="row-wrap">
@@ -1116,7 +1116,7 @@
                     <div class="row-wrap">
                         <span ng-if="seek.offerAmount > 0" ng-show="!seek.$status || seek.$status == 0" ng-click="setSeekStatus(seek, 2)">查看报价&nbsp;<i class="fa fa-angle-double-down"></i></span>
                         <span ng-if="seek.goodsAmount > 0" ng-show="!seek.$status || seek.$status == 0" ng-click="setSeekStatus(seek, 1)">商城现货&nbsp;<i class="fa fa-angle-double-down"></i></span>
-                        <span ng-show="seek.$status && (seek.$status == 1 || seek.$status == 2)" ng-click="setSeekStatus(seek, 0)">收起&nbsp;<i class="fa fa-angle-double-up"></i></span>
+                        <span ng-show="seek.$status && (seek.$status == 1 || seek.$status == 2 || seek.$status == 3)" ng-click="setSeekStatus(seek, 0)">收起&nbsp;<i class="fa fa-angle-double-up"></i></span>
                         <div class="sharecode" ng-mouseover="setShowShare(seek,$index)" ng-mouseleave="hideShare($index)">
                             <div class="sharecodeT">分<br/>享</div>
                             <div class="sharecodeBtn">

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

@@ -333,6 +333,7 @@
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price .say-price-history > div > div {
         display: inline-block;
         text-align: left;
+        width: 100%;
     }
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price .say-price-history > div > div:nth-child(1) {
         /*float: left;*/
@@ -374,6 +375,7 @@
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price:hover .say-price-history {
         height: 210px;
         opacity: 1;
+        overflow-y: auto;
     }
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate >img {
         position: absolute;
@@ -738,13 +740,13 @@
                             <div>
                                 <div>
                                     <div class="replace-param" ng-if="seek.isReplace == 1">
-                                        <span>替代物料品牌:</span><span ng-bind="seek.replaceBrand || '-'"></span>
+                                        <span>品牌:</span><span ng-bind="seek.replaceBrand || '-'"></span>
                                     </div>
                                     <div class="replace-param" ng-if="seek.isReplace == 1">
-                                        <span>替代物料型号:</span><span ng-bind="seek.replaceCmpCode || '-'"></span>
+                                        <span>型号:</span><span ng-bind="seek.replaceCmpCode || '-'"></span>
                                     </div>
                                     <div class="replace-param" ng-if="seek.isReplace == 1">
-                                        <span>替代物料规格:</span><span ng-bind="seek.replaceSpec || '-'"></span>
+                                        <span>规格:</span><span ng-bind="seek.replaceSpec || '-'"></span>
                                     </div>
                                     <span>交期:</span><span class="red-text" ng-bind="seek.leadtime + '天'">6 天</span>
                                 </div>

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

@@ -389,7 +389,7 @@
         width: 476px;
         top: 50%;
         left: 50%;
-        margin-top: -183px;
+        margin-top: -325px;
         margin-left: -238px;
         /*-webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
         -moz-box-shadow: 0 5px 15px rgba(0,0,0,.5);
@@ -712,6 +712,7 @@
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price:hover .say-price-history {
         opacity: 1;
         height: 210px;
+        overflow-y: auto;
     }
     .say-price-box .switch-say {
         text-align: center;
@@ -907,13 +908,13 @@
                                 <p class="price-title">{{seek.quotation.isReplace == 1 ? '替代型号报价' : '当前型号报价'}}</p>
                                 <div>
                                     <div class="replace-param" ng-if="seek.quotation.isReplace == 1">
-                                        <span>替代物料品牌:</span><span ng-bind="seek.quotation.replaceBrand || '-'"></span>
+                                        <span>品牌:</span><span ng-bind="seek.quotation.replaceBrand || '-'"></span>
                                     </div>
                                     <div class="replace-param" ng-if="seek.quotation.isReplace == 1">
-                                        <span>替代物料型号:</span><span ng-bind="seek.quotation.replaceCmpCode || '-'"></span>
+                                        <span>型号:</span><span ng-bind="seek.quotation.replaceCmpCode || '-'"></span>
                                     </div>
                                     <div class="replace-param" ng-if="seek.quotation.isReplace == 1">
-                                        <span>替代物料规格:</span><span ng-bind="seek.quotation.replaceSpec || '-'"></span>
+                                        <span>规格:</span><span ng-bind="seek.quotation.replaceSpec || '-'"></span>
                                     </div>
                                     <div class="replace-param">
                                         <span>交期:</span><span class="red-text" ng-bind="seek.quotation.leadtime + '天'"></span>

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

@@ -1246,22 +1246,22 @@
                                             <a ng-click="editGoodsPicture(commodity.editPic || 'static/img/store/common/default.png', commodity)" title="修改图片"><img src="static/img/icon/update-img.png" /></a>
                                         </div>
                                     </div>
-                                    <div class="fr wid135">
-                                        <p>
+                                    <div class="fr wid135" style="margin-top: 0px">
+                                        <p style="margin-top: 5px">
                                             品牌:
-                                            <input type="text" ng-model="commodity.brandNameEn" style="width:106px" maxlength="25" ng-change="onBrandChange(commodity.brandNameEn)"/>
+                                            <input style="border-radius: 3px;border: 1px solid #a9a9a9;height: 24px;line-height: 24px;width: 107px" type="text" ng-model="commodity.brandNameEn" style="width:106px" maxlength="25" ng-change="onBrandChange(commodity.brandNameEn)"/>
                                         </p>
-                                        <p>
+                                        <p style="margin-top: 5px">
                                             物料名称:
-                                            <input type="text" ng-model="commodity.kindNameCn" style="width:78px" maxlength="20" ng-change="onCodeChange(commodity.kindNameCn)"/>
+                                            <input style="border-radius: 3px;border: 1px solid #a9a9a9;height: 24px;line-height: 24px;width: 79px" type="text" ng-model="commodity.kindNameCn" style="width:78px" maxlength="20" ng-change="onCodeChange(commodity.kindNameCn)"/>
                                         </p>
-                                        <p>
+                                        <p style="margin-top: 5px">
                                             型号:
-                                            <input type="text" ng-model="commodity.code" style="width:106px" maxlength="100" />
+                                            <input style="border-radius: 3px;border: 1px solid #a9a9a9;height: 24px;line-height: 24px;width: 107px" type="text" ng-model="commodity.code" style="width:106px" maxlength="100" />
                                         </p>
-                                        <p>
+                                        <p style="margin-top: 5px">
                                             规格:
-                                            <input type="text" ng-model="commodity.spec" maxlength="50" style="width:106px"/>
+                                            <input style="border-radius: 3px;border: 1px solid #a9a9a9;height: 24px;line-height: 24px;width: 107px" type="text" ng-model="commodity.spec" maxlength="50" style="width:106px"/>
                                         </p>
                                         <!--<p>品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></p>-->
                                         <!--<p>物料名称(类目): <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></p>-->
@@ -1357,10 +1357,10 @@
                                             <a class="Regulpica" ng-click="editRegulPicture(commodity.productAttachSubmit.uploadAttach || 'static/img/vendor/images/upload_file_icon.png', commodity)" ng-if="!commodity.attach" style="margin: 0px">
                                                 <div style="width:24px;height:26px;position: relative">
                                                     <img style="width:24px;height:26px" src="static/img/vendor/images/pdf.png"/>
-                                                    <div class="zhezhaodang" ng-if="commodity.productAttachSubmit.uploadAttach"></div>
+                                                    <div class="zhezhaodang"></div>
                                                 </div>
                                             </a>
-                                            <img ng-if="commodity.productAttachSubmit.uploadAttach" src="static/img/vendor/images/fireinfo_icon.png" width="18" height="18" style="width:18px;height:18px;border: 0px;margin-left:5px;" class="nopass"/>
+                                                <img ng-if="commodity.productAttachSubmit.uploadAttach" src="static/img/vendor/images/fireinfo_icon.png" width="18" height="18" style="width:18px;height:18px;border: 0px;margin-left:5px;" class="nopass"/>
                                             <div class="forAdminLook">待审核</div>
                                         </div>
                                     </div>

+ 31 - 10
src/main/webapp/resources/view/vendor/modal/edit_regul_modal.html

@@ -193,6 +193,7 @@
     margin-right: 5px;
     width: 115px;
     text-align: right;
+    color: #666;
   }
   .listUl {
     position: absolute;
@@ -253,6 +254,24 @@
   .ToforAdminLook:hover .forAdminLook {
     display: block;
   }
+
+
+  input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
+    /* WebKit browsers */
+    color: #999;
+  }
+  input:-moz-placeholder, textarea:-moz-placeholder {
+    /* Mozilla Firefox 4 to 18 */
+    color: #999;
+  }
+  input::-moz-placeholder, textarea::-moz-placeholder {
+    /* Mozilla Firefox 19+ */
+    color: #999;
+  }
+  input:-ms-input-placeholder, textarea:-ms-input-placeholder {
+    /* Internet Explorer 10+ */
+    color: #999;
+  }
 </style>
 <div class="modal-head"></div>
 <div class="modal-body" style="padding: 0px">
@@ -271,8 +290,8 @@
               <!-- 可编辑状态 -->
               <input type="text"
                      ng-change="onBrandChange(brandcode)"
-                     placeholder="请输入品牌名字"
-                     style="width: 165px;height: 28px"
+                     placeholder="请输入品牌名称"
+                     style="width: 165px;height: 28px;border-radius: 2px;color: #333"
                      ng-blur="onBrandBlur(brandcode)"
                      ng-model="brandcode"
                      class="form-control" maxlength="25"/>
@@ -293,8 +312,8 @@
               <div ng-show="IsLookOrUpdate === 'update'">
                 <!-- 可编辑状态 -->
                 <input type="text"
-                       placeholder="请输入物料名称(类目)"
-                       style="width: 165px;height: 28px"
+                       placeholder="请输入物料名称(类目)"
+                       style="width: 165px;height: 28px;border-radius: 2px;color: #333"
                        ng-model="kind"
                        class="form-control" maxlength="20"/>
               </div>
@@ -313,7 +332,7 @@
                 <input type="text"
                        ng-change="onCodeChange(cmpcode)"
                        placeholder="请输入型号"
-                       style="width: 165px;height: 28px"
+                       style="width: 165px;height: 28px;border-radius: 2px;color: #333"
                        ng-blur="onCodeBlur(cmpcode)"
                        ng-model="cmpcode"
                        class="form-control" maxlength="100"/>
@@ -334,7 +353,7 @@
                 <!-- 可编辑状态 -->
                 <input type="text"
                        placeholder="请输入规格参数"
-                       style="width: 165px;height: 28px"
+                       style="width: 165px;height: 28px;border-radius: 2px;color: #333"
                        ng-model="spec"
                        class="form-control" maxlength="50"/>
             </div>
@@ -344,7 +363,7 @@
           <div class="name pull-left" style="width: 60px">规格书:</div>
           <div ng-show="RegulChange" style="line-height: 30px;position: relative;height: 30px;width: 60px;text-align: center;" class="pull-left">
             <input style="display: inline-block" type="file" image-upload class="uploadImage" accept=".pdf"  on-success="onUploadSuccess($data, $file)" max-size="20971520" errorSizeMsg="'文件大小不能超过20M'">
-            <span style="color: #5078cb;cursor: pointer;">点击上传</span>
+            <span style="color: #fff;cursor: pointer;background:#f15601;border-radius: 2px;font-size: 12px;padding: 3px 4px;">点击上传</span>
           </div>
           <div ng-show="RegulChange" style="position: relative;display: inline-block" class="ToforAdminLook" ng-if="ChooseItem.productAttachSubmit.uploadAttach">
             <img src="static/img/vendor/images/fireinfo_icon.png" width="18" height="18" style="width:18px;height:18px;border: 0px;margin-left:5px;"/>
@@ -435,11 +454,13 @@
         </div>
         <div class="update-file-btn clearboth"  style="width: 100%; float: none">
           <p>
-            <a ng-click="confirm()" class="ok" style="float: none">确定</a>
-            <span style="position:static;vertical-align: top;" ng-click="cancel()">
-          取消
+            <span style="position:relative;vertical-align: top;">
+              <input type="file" image-upload class="uploadImage" accept=".pdf"   on-success="onUploadSuccess($data, $file)" max-size="20971520" errorSizeMsg="'文件大小不能超过20M'">
+          选择文件
               <!--<span >取消</span>-->
             </span>
+            <a ng-click="confirm()" class="ok" style="float: none">确定</a>
+
           </p>
         </div>
       </div>