Przeglądaj źródła

Merge remote-tracking branch 'origin/developer' into developerA

# Conflicts:
#	backup.sql
#	src/main/java/com/caimei/www/controller/BaseController.java
#	src/main/resources/config/dev/application-dev.yml
#	src/main/resources/static/css/activity/attestation.css
#	src/main/resources/static/js/activity/attestation.js
#	src/main/resources/templates/activity/attestation.html
yuwenjun1997 2 lat temu
rodzic
commit
d7475ec545
73 zmienionych plików z 1348 dodań i 1056 usunięć
  1. 13 0
      backup.sql
  2. 4 0
      src/main/java/com/caimei/www/controller/BaseController.java
  3. 18 0
      src/main/java/com/caimei/www/controller/unlimited/ArticleController.java
  4. 8 0
      src/main/java/com/caimei/www/controller/unlimited/ProductController.java
  5. 4 0
      src/main/java/com/caimei/www/mapper/ArticleDao.java
  6. 2 0
      src/main/java/com/caimei/www/mapper/ProductDao.java
  7. 2 0
      src/main/java/com/caimei/www/service/page/ArticleService.java
  8. 9 0
      src/main/java/com/caimei/www/service/page/ProductService.java
  9. 15 0
      src/main/java/com/caimei/www/service/page/impl/ArticleServiceImpl.java
  10. 54 16
      src/main/java/com/caimei/www/service/page/impl/ProductServiceImpl.java
  11. 1 0
      src/main/resources/config/beta/application-beta.yml
  12. 2 2
      src/main/resources/config/dev/application-dev.yml
  13. 1 0
      src/main/resources/config/prod/application-prod.yml
  14. 33 0
      src/main/resources/mapper/ArticleMapper.xml
  15. 16 9
      src/main/resources/mapper/ProductMapper.xml
  16. 9 9
      src/main/resources/static/css/activity/attestation.css
  17. 7 5
      src/main/resources/static/css/article/article.css
  18. 9 2
      src/main/resources/static/css/base/base.h5.css
  19. 7 1
      src/main/resources/static/css/base/base.pc.css
  20. 1 1
      src/main/resources/static/css/base/init.css
  21. 2 2
      src/main/resources/static/css/help/details.css
  22. 2 2
      src/main/resources/static/css/product/alliance-page.css
  23. 1 1
      src/main/resources/static/css/product/detail.pc.css
  24. 0 163
      src/main/resources/static/css/product/qualityauthorize.css
  25. 28 14
      src/main/resources/static/css/supplier-center/message.css
  26. 53 48
      src/main/resources/static/css/supplier-center/shop/goods.css
  27. 27 13
      src/main/resources/static/css/user-center/message.css
  28. BIN
      src/main/resources/static/img/base/H5-icon.png
  29. BIN
      src/main/resources/static/img/base/WEB-icon.png
  30. BIN
      src/main/resources/static/img/base/logo.png
  31. BIN
      src/main/resources/static/img/base/logo_m.png
  32. BIN
      src/main/resources/static/img/common/icon-notice-emptys@2x.png
  33. 6 3
      src/main/resources/static/js/account/login.js
  34. 1 1
      src/main/resources/static/js/account/register-supplier.js
  35. 14 13
      src/main/resources/static/js/activity/attestation.js
  36. 25 24
      src/main/resources/static/js/article/common.js
  37. 13 13
      src/main/resources/static/js/article/detail.js
  38. 2 2
      src/main/resources/static/js/article/list.js
  39. 62 5
      src/main/resources/static/js/base.js
  40. 12 12
      src/main/resources/static/js/common/serviceapi/product.service.js
  41. 44 0
      src/main/resources/static/js/common/serviceapi/supplier.service.js
  42. 45 1
      src/main/resources/static/js/common/serviceapi/user.service.js
  43. 24 0
      src/main/resources/static/js/common/serviceapi/utils.service.js
  44. 1 1
      src/main/resources/static/js/document/beauty-archive.js
  45. 2 1
      src/main/resources/static/js/product/alliance-page.js
  46. 99 49
      src/main/resources/static/js/product/detail.js
  47. 0 131
      src/main/resources/static/js/product/qualityauthorize.js
  48. 3 0
      src/main/resources/static/js/supplier-center/dashboard.js
  49. 129 80
      src/main/resources/static/js/supplier-center/message.js
  50. 59 0
      src/main/resources/static/js/supplier-center/mixins/noticeMixin.js
  51. 27 18
      src/main/resources/static/js/supplier-center/shop/goods.js
  52. 123 72
      src/main/resources/static/js/user-center/message.js
  53. 154 0
      src/main/resources/static/js/user-center/mixins/noticeMixin.js
  54. 9 9
      src/main/resources/static/js/user-center/setting/information.js
  55. 0 81
      src/main/resources/templates/activity/approveIframe.html
  56. 14 16
      src/main/resources/templates/activity/attestation.html
  57. 8 3
      src/main/resources/templates/article/components/article-sidebar.html
  58. 10 10
      src/main/resources/templates/article/detail.html
  59. 12 8
      src/main/resources/templates/article/list.html
  60. 13 3
      src/main/resources/templates/components/header.html
  61. 13 13
      src/main/resources/templates/index.html
  62. 3 3
      src/main/resources/templates/pay/caimei-paylist.html
  63. 3 3
      src/main/resources/templates/pay/caimei-payunder.html
  64. 3 3
      src/main/resources/templates/product/alliance-page.html
  65. 33 9
      src/main/resources/templates/product/detail.html
  66. 0 143
      src/main/resources/templates/product/qualityauthorize.html
  67. 2 2
      src/main/resources/templates/supplier-center/components/tableft.html
  68. 0 6
      src/main/resources/templates/supplier-center/dashboard.html
  69. 28 9
      src/main/resources/templates/supplier-center/message/list.html
  70. 11 5
      src/main/resources/templates/supplier-center/shop/goods.html
  71. 0 1
      src/main/resources/templates/supplier/index.html
  72. 0 7
      src/main/resources/templates/user-center/dashboard.html
  73. 13 8
      src/main/resources/templates/user-center/message/list.html

+ 13 - 0
backup.sql

@@ -743,6 +743,19 @@ ALTER TABLE `cm_brand_product_type`
     ADD COLUMN `createSource` INT NULL DEFAULT 1 COMMENT '创建来源:1供应商添加,2机构用户添加' AFTER `createBy`;
 
 -- =================================== 2022年6月 认证通ross版本 end =========================================
+-- =================================== 2022年7月 认证通日常sql start =========================================
+CREATE TABLE `cm_brand_product_type_param` (
+    `id` INT NOT NULL AUTO_INCREMENT,
+    `productTypeId` INT NULL COMMENT '设备分类id',
+    `name` VARCHAR(20) NULL COMMENT '参数名称',
+    `content` VARCHAR(250) NULL COMMENT '参数内容',
+    PRIMARY KEY (`id`))
+COMMENT = '认证设备分类参数';
+
+ALTER TABLE `cm_brand_product_type`
+    ADD COLUMN `brandId` INT NULL COMMENT '品牌id' AFTER `authUserId`;
+
+-- =================================== 2022年6月 认证通日常sql end =========================================
 -- =================================== 2022年6月 认证通1.7.1版本 start =========================================
 ALTER TABLE `cm_brand_auth`
     ADD COLUMN `checkFlag` INT NULL DEFAULT 1 COMMENT '是否查看过:1是,0否' AFTER `shopAuditTime`;

+ 4 - 0
src/main/java/com/caimei/www/controller/BaseController.java

@@ -25,6 +25,8 @@ public class BaseController {
 	private String coreServer;
 	@Value("${caimei.zplmDomain}")
 	private String zplmDomain;
+	@Value("${caimei.zplmServer}")
+	private String zplmServer;
 	@Value("${aliyunOss.ossBucket}")
 	private String ossBucket;
     /** 打包时间 */
@@ -62,6 +64,8 @@ public class BaseController {
 		model.addAttribute("coreServer", coreServer);
 		// zplm服务器地址
 		model.addAttribute("zplmDomain", zplmDomain);
+		// zplm接口地址
+		model.addAttribute("zplmServer", zplmServer);
 		// 阿里云oss对象存储文件上传目录
 		model.addAttribute("ossBucket", ossBucket);
 		// 搜索热门关键字

+ 18 - 0
src/main/java/com/caimei/www/controller/unlimited/ArticleController.java

@@ -39,6 +39,10 @@ public class ArticleController extends BaseController {
     @GetMapping("/info/center-{id}-{pageNum}.html")
     public String toArticleList(@PathVariable("id") Integer id, @PathVariable("pageNum") Integer pageNum, final Model model) {
         List<BaseLink> typeList = articleService.getArticleTypes();
+        List<BaseLink> data = articleService.getArticleLabels().getData();
+        List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
+        model.addAttribute("ads", Ads);
+        model.addAttribute("labels",data);
         model.addAttribute("articleType", typeList);
         model.addAttribute("typeId", id);
         model.addAttribute("labelId", 0);
@@ -53,6 +57,10 @@ public class ArticleController extends BaseController {
     @GetMapping("/info/label-{id}-{pageNum}.html")
     public String toArticleLabel(@PathVariable("id") Integer id, @PathVariable("pageNum") Integer pageNum, final Model model) {
         List<BaseLink> typeList = articleService.getArticleTypes();
+        List<BaseLink> data = articleService.getArticleLabels().getData();
+        List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
+        model.addAttribute("ads", Ads);
+        model.addAttribute("labels",data);
         model.addAttribute("articleType", typeList);
         model.addAttribute("typeId", 0);
         model.addAttribute("labelId", id);
@@ -67,6 +75,10 @@ public class ArticleController extends BaseController {
     @GetMapping("/info/search-{pageNum}.html")
     public String toArticleSearch(@PathVariable("pageNum") Integer pageNum, final Model model) {
         List<BaseLink> typeList = articleService.getArticleTypes();
+        List<BaseLink> data = articleService.getArticleLabels().getData();
+        List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
+        model.addAttribute("ads", Ads);
+        model.addAttribute("labels",data);
         model.addAttribute("articleType", typeList);
         model.addAttribute("typeId", 0);
         model.addAttribute("labelId", 0);
@@ -85,6 +97,12 @@ public class ArticleController extends BaseController {
         if(article == null){
             return super.errorPath();
         }
+        List<BaseLink> data = articleService.getArticleLabels().getData();
+        List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
+        List<Article> articles=articleService.getInfoById(id);
+        model.addAttribute("articles",articles);
+        model.addAttribute("ads", Ads);
+        model.addAttribute("labels",data);
         model.addAttribute("article", article);
         model.addAttribute("articleType", typeList);
         model.addAttribute("articleId", id);

+ 8 - 0
src/main/java/com/caimei/www/controller/unlimited/ProductController.java

@@ -3,7 +3,9 @@ package com.caimei.www.controller.unlimited;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei.www.controller.BaseController;
+import com.caimei.www.pojo.page.Parameter;
 import com.caimei.www.pojo.page.ProductDetail;
+import com.caimei.www.pojo.page.ProductList;
 import com.caimei.www.service.page.ProductService;
 import com.caimei.www.service.page.SinglePageService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -105,6 +107,12 @@ public class ProductController extends BaseController {
         if (detail == null || detail.getValidFlag() == 0 || detail.getValidFlag() == 9) {
             return super.errorPath();
         }
+        List<String> images=productService.getImages(productId);
+        List<Parameter> params=productService.getParams(productId);
+        List<ProductList> productLists=productService.getProductLists(productId);
+        model.addAttribute("lists",productLists);
+        model.addAttribute("params",params);
+        model.addAttribute("images",images);
         model.addAttribute("productId", productId);
         model.addAttribute("product", detail);
         return PRODUCT_DETAIL_PATH;

+ 4 - 0
src/main/java/com/caimei/www/mapper/ArticleDao.java

@@ -97,4 +97,8 @@ public interface ArticleDao {
      * @param infoId
      */
     void articlePv(Integer infoId);
+
+    String getLabelById(Integer id);
+
+    List<Article> getArticleRelatedLimit(@Param("id")Integer id, @Param("labels")String[] strings);
 }

+ 2 - 0
src/main/java/com/caimei/www/mapper/ProductDao.java

@@ -72,4 +72,6 @@ public interface ProductDao {
      * 修复商品图片(临时)
      */
     List<String> getProductInfo();
+
+    Integer getRecommendType(Integer productId);
 }

+ 2 - 0
src/main/java/com/caimei/www/service/page/ArticleService.java

@@ -72,4 +72,6 @@ public interface ArticleService {
      * @return
      */
     JsonModel articlePv(Integer id);
+
+    List<Article> getInfoById(Integer id);
 }

+ 9 - 0
src/main/java/com/caimei/www/service/page/ProductService.java

@@ -5,8 +5,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.pojo.baike.BaikeProduct;
 import com.caimei.www.pojo.baike.BaikeType;
+import com.caimei.www.pojo.page.Parameter;
 import com.caimei.www.pojo.page.ProductDetail;
+import com.caimei.www.pojo.page.ProductList;
 
+import java.util.List;
 import java.util.Map;
 
 
@@ -93,4 +96,10 @@ public interface ProductService {
      * @return
      */
     BaikeType getBaikeType(Integer typeId);
+
+    List<String> getImages(Integer productId);
+
+    List<Parameter> getParams(Integer productId);
+
+    List<ProductList> getProductLists(Integer productId);
 }

+ 15 - 0
src/main/java/com/caimei/www/service/page/impl/ArticleServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.stereotype.Service;
 import org.springframework.web.server.ServerWebExchange;
+import org.thymeleaf.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -176,6 +177,20 @@ public class ArticleServiceImpl implements ArticleService {
         return JsonModel.success();
     }
 
+    @Override
+    public List<Article> getInfoById(Integer id) {
+        String labels=articleDao.getLabelById(id);
+        String[] strings = new String[0];
+        if(!org.jsoup.helper.StringUtil.isBlank(labels)){
+            strings = labels.split(",");
+        }
+        List<Article> relateds = articleDao.getArticleRelatedLimit(id, strings);
+        relateds.forEach(item -> {
+            item.setImage(ImageUtil.getImageURL("", item.getImage(), 0, domain));
+        });
+        return relateds;
+    }
+
     private String getIp(ServerWebExchange serverWebExchange){
        ServerHttpRequest request = serverWebExchange.getRequest();
         return Objects.requireNonNull(request.getRemoteAddress()).getAddress().toString();

+ 54 - 16
src/main/java/com/caimei/www/service/page/impl/ProductServiceImpl.java

@@ -7,7 +7,9 @@ import com.caimei.www.mapper.BaikeDao;
 import com.caimei.www.mapper.ProductDao;
 import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.pojo.baike.*;
+import com.caimei.www.pojo.page.Parameter;
 import com.caimei.www.pojo.page.ProductDetail;
+import com.caimei.www.pojo.page.ProductList;
 import com.caimei.www.service.page.ProductService;
 import com.caimei.www.utils.ImageUtil;
 import com.caimei.www.utils.PriceUtil;
@@ -69,14 +71,14 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public JSONArray getTypeClassifyJson(Integer typeSort) {
-        String dataUrl = coreServer+"/commodity/classify?typeSort="+typeSort+"&source=www";
+        String dataUrl = coreServer + "/commodity/classify?typeSort=" + typeSort + "&source=www";
         try {
             String classifyResult = RequestUtil.sendGet(dataUrl);
             log.debug(classifyResult);
             Map<String, Object> classifyMap = JSONObject.parseObject(classifyResult, Map.class);
             return (JSONArray) classifyMap.get("data");
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -88,14 +90,14 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public Map<String, Object> getTypeFloorJson(Integer pageId) {
-        String dataUrl = coreServer+"/commodity/classify/product?pageId="+ pageId +"&source=1";
+        String dataUrl = coreServer + "/commodity/classify/product?pageId=" + pageId + "&source=1";
         try {
             String floorResult = RequestUtil.sendGet(dataUrl);
             log.debug(floorResult);
             Map<String, Object> floorMap = JSONObject.parseObject(floorResult, Map.class);
             return JSONObject.parseObject(String.valueOf(floorMap.get("data")), Map.class);
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -107,14 +109,14 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public JSONArray getBigTypeJson(Integer typeSort) {
-        String dataUrl = coreServer+"/commodity/type/first?typeSort="+typeSort;
+        String dataUrl = coreServer + "/commodity/type/first?typeSort=" + typeSort;
         try {
             String classifyResult = RequestUtil.sendGet(dataUrl);
             log.debug(classifyResult);
             Map<String, Object> classifyMap = JSONObject.parseObject(classifyResult, Map.class);
             return (JSONArray) classifyMap.get("data");
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -126,14 +128,14 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public JSONArray getSmallTypeJson(Integer bigTypeId) {
-        String dataUrl = coreServer+"/commodity/type/second?bigTypeId="+bigTypeId;
+        String dataUrl = coreServer + "/commodity/type/second?bigTypeId=" + bigTypeId;
         try {
             String classifyResult = RequestUtil.sendGet(dataUrl);
             log.debug(classifyResult);
             Map<String, Object> classifyMap = JSONObject.parseObject(classifyResult, Map.class);
             return (JSONArray) classifyMap.get("data");
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -146,14 +148,14 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public JSONArray getTinyTypeJson(Integer smallTypeId) {
-        String dataUrl = coreServer+"/commodity/type/third?smallTypeId="+smallTypeId;
+        String dataUrl = coreServer + "/commodity/type/third?smallTypeId=" + smallTypeId;
         try {
             String classifyResult = RequestUtil.sendGet(dataUrl);
             log.debug(classifyResult);
             Map<String, Object> classifyMap = JSONObject.parseObject(classifyResult, Map.class);
             return (JSONArray) classifyMap.get("data");
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -165,7 +167,7 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public JSONObject getProductListJson(String params) {
-        String dataUrl = coreServer+"/commodity/search/query/product/type"+params;
+        String dataUrl = coreServer + "/commodity/search/query/product/type" + params;
         try {
             String productResult = RequestUtil.sendGet(dataUrl);
             log.debug(productResult);
@@ -173,7 +175,7 @@ public class ProductServiceImpl implements ProductService {
             String data = (String) productMap.get("data");
             return JSONObject.parseObject(data);
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -187,7 +189,7 @@ public class ProductServiceImpl implements ProductService {
             Map<String, Object> classifyMap = JSONObject.parseObject(classifyResult, Map.class);
             return (JSONArray) classifyMap.get("data");
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -201,7 +203,7 @@ public class ProductServiceImpl implements ProductService {
             Map<String, Object> moreMap = JSONObject.parseObject(moreResult, Map.class);
             return JSONObject.parseObject(String.valueOf(moreMap.get("data")), Map.class);
         } catch (Exception e) {
-            log.error("try-catch:",e);
+            log.error("try-catch:", e);
             return null;
         }
     }
@@ -211,6 +213,42 @@ public class ProductServiceImpl implements ProductService {
         return baikeDao.getBaikeType(typeId);
     }
 
+    @Override
+    public List<String> getImages(Integer productId) {
+        List<String> productDetailImages = productDao.getProductDetailImages(productId);
+        List<String> strings = new ArrayList<>();
+        if (null != productDetailImages && productDetailImages.size() > 0) {
+            productDetailImages.forEach(p -> {
+                strings.add(ImageUtil.getImageURL("product", p, 0, domain));
+            });
+        }
+        return strings;
+    }
+
+    @Override
+    public List<Parameter> getParams(Integer productId) {
+        return productDao.getProductParameters(productId);
+    }
+
+    @Override
+    public List<ProductList> getProductLists(Integer productId) {
+        //取不到userId,默认游客 商品可见度默认所有人
+        Integer recommendType = productDao.getRecommendType(productId);
+        List<ProductList> list = null;
+        if (null != recommendType && 1 == recommendType) {
+            list = productDao.getProductRecommendsById(productId);
+        } else {
+            list = productDao.getAutoProductRecommends(productId);
+        }
+        if (null != list && list.size() > 0) {
+            list.forEach(product -> {
+                // 设置 图片路径
+                product.setImage(ImageUtil.getImageURL("product", product.getImage(), 0, domain));
+            });
+        }
+        return list;
+    }
+
     @Override
     public BaikeProduct getBaikeProductDetail(Integer productId) {
         BaikeProduct baikeProduct = baikeDao.getBaikeProductDetail(productId);
@@ -241,8 +279,8 @@ public class ProductServiceImpl implements ProductService {
             List<BaikeProductQuestion> questionList = baikeDao.findQuestionList(productId);
             baikeProduct.setQuestionList(questionList);
             // 视频列表
-            List<BaikeProductFile> videoList = baikeDao.findVideoList(productId);
-            baikeProduct.setVideoList(videoList);
+            /*List<BaikeProductFile> videoList = baikeDao.findVideoList(productId);
+            baikeProduct.setVideoList(videoList);*/
             // 格式化时间
             String marketTime = baikeProduct.getMarketTime();
             String nmpaTime = baikeProduct.getNmpaTime();

+ 1 - 0
src/main/resources/config/beta/application-beta.yml

@@ -56,6 +56,7 @@ caimei:
   destPath: /mnt/newdatadrive/data/runtime/h5-instance/static/www
   # 正品联盟(临时配置)
   zplmDomain: https://zp-b.caimei365.com
+  zplmServer: https://zplma-b.caimei365.com
 
 # 阿里云oss配置
 aliyunOss:

+ 2 - 2
src/main/resources/config/dev/application-dev.yml

@@ -54,8 +54,7 @@ logging:
 caimei:
   siteEnv: 0 #网站环境,(2:正式环境,1:测试环境,0:开发环境)
   #spiServer: http://192.168.2.68:8008
-#  coreServer: https://core-b.caimei365.com
-  coreServer: http://192.168.2.100:18002
+  coreServer: https://core-b.caimei365.com
 #  coreServer: http://192.168.2.67:18002
 #  coreServer: http://192.168.2.75:18002
   imageDomain: https://img-b.caimei365.com
@@ -63,6 +62,7 @@ caimei:
   destPath: classpath:/
   # 正品联盟(临时配置)
   zplmDomain: https://zp-b.caimei365.com
+  zplmServer: https://zplma-b.caimei365.com
 
 # 阿里云oss配置
 aliyunOss:

+ 1 - 0
src/main/resources/config/prod/application-prod.yml

@@ -56,6 +56,7 @@ caimei:
   destPath: /mnt/newdatadrive/data/runtime/h5-instance/static/www
   # 正品联盟(临时配置)
   zplmDomain: https://zp.caimei365.com
+  zplmServer: https://zplma.caimei365.com
 
 # 阿里云oss配置
 aliyunOss:

+ 33 - 0
src/main/resources/mapper/ArticleMapper.xml

@@ -137,5 +137,38 @@
 		group by name
 		order by clickRate desc
 	</select>
+	<select id="getLabelById" resultType="java.lang.String">
+		SELECT label FROM info WHERE id=#{id}
+	</select>
+	<select id="getArticleRelatedLimit" resultType="com.caimei.www.pojo.page.Article">
+		select
+		a.id as id,
+		a.title as title,
+		a.guidanceImage as image,
+		a.publisher as publisher,
+		a.pubdate as publishDate,
+		a.recommendContent as intro,
+		a.infoContent as content,
+		(IFNULL(c.pv, 0) + IFNULL(a.basePv, 0) + IFNULL((c.num + a.basePraise), 0)) as pv,
+		a.label as label,
+		a.typeId as typeId
+		from info as a
+		left join info_praise c on a.id = c.infoId
+		<where>
+			<if test="labels != null and labels != ''">
+				<foreach collection="labels" item="label" open="(" close=")" index="index" separator="OR">
+					a.label like CONCAT(CONCAT('%', #{label}), '%')
+				</foreach>
+			</if>
+			<if test="id != null and id != ''">
+				and a.id != #{id}
+			</if>
+			and NOW() >= a.pubdate
+			and a.enabledStatus = 1
+			and a.auditStatus = 2
+		</where>
+		order by a.pubdate desc
+		limit 3
+	</select>
 
 </mapper>

+ 16 - 9
src/main/resources/mapper/ProductMapper.xml

@@ -72,20 +72,24 @@
         from product as p
         left join cm_product_recommend as pr on pr.recommendProductID = p.productID
         where
-            pr.productID = #{productId} and p.validFlag  = 2
+            pr.productID = #{productId}
+          and p.validFlag  = 2
+          and p.visibility = 3
         order by pr.sort desc
 	</select>
 	<select id="getAutoProductRecommends" resultType="com.caimei.www.pojo.page.ProductList">
-        select
+		select
 			p.productID as id,
 			p.`name` as `name`,
-			p.productType,
-			p.mainImage as image
-        from product as p
-        where
-			p.validFlag  = 2 and
-			p.tinyTypeID = (select tinyTypeID from product as p1 where p1.productID = #{productId})
-        order by p.sellNumber desc limit 0,7
+			p.mainImage as image,
+			IFNULL(p.visibility,3) as visibility,
+			p.productType
+		from product as p
+		where p.validFlag  = 2
+		  and p.commodityType = (select commodityType from product as p1 where p1.productID = #{productId})
+		  and p.smallTypeID = (select smallTypeID from product as p2 where p2.productID = #{productId})
+		  and p.visibility = 3
+		order by p.sellNumber desc limit 0,7
 	</select>
 	<select id="getProductParameters" resultType="com.caimei.www.pojo.page.Parameter">
 		select id as id,
@@ -129,5 +133,8 @@
     <select id="getProductInfo" resultType="java.lang.String">
         select detailinfo from productdetailinfo where detailinfo like '%img-b.caimei365.com%'
 	</select>
+	<select id="getRecommendType" resultType="java.lang.Integer">
+		select recommendType from product where productId=#{productId}
+	</select>
 
 </mapper>

+ 9 - 9
src/main/resources/static/css/activity/attestation.css

@@ -135,9 +135,9 @@ li{list-style:none}
     .section_main.ten .section_content .section_li .logo{ width: 98px;height: 98px;margin-bottom: 28px;border-radius: 50%; }
     .section_main.ten .section_content .section_li .name{ font-size: 20px; color: #fff }
     /*.section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_club_01.png");margin-right: 80px; }*/
-    .section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_device_01.png"); margin-right: 40px;}
-    .section_main.ten .section_content .section_li:nth-child(2){background-image: url("/img/activity/attestation/section_bg_device_02.png"); margin-right: 40px;}
-    .section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_device_03.png"); }
+    .section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_device_03.png"); margin-right: 40px;}
+    .section_main.ten .section_content .section_li:nth-child(2){background-image: url("/img/activity/attestation/section_bg_device_01.png"); margin-right: 40px;}
+    .section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_device_02.png"); }
     .section_main.ten .section_content .section_li:hover { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px);border-bottom-color: #BC1724}
     .section_main.ten .section_content.mobile{display: none !important; }
     /*侧边栏-联系我们*/
@@ -285,18 +285,18 @@ li{list-style:none}
     .section_main.ten{ background: #fff; padding:10vw 8.8vw;}
     .section_main.ten .title{width: 100%;margin-botgbtom:  8vw;}
     .section_main.ten .title h1{line-height: 4.9vw;text-align: center;font-size: 4.8vw;color: #333333;font-weight: normal;}
-    .section_main.ten .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box;margin-top: 8.2vw;}
-    .section_main.ten .section_content .section_li{ display: -webkit-box; display: -ms-flexbox; display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; width: 100%; height: 29.6vw; float: left ;margin:0 4.4vw 4.4vw 0;background-size: 39vw; background-repeat: no-repeat;}
+    .section_main.ten .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box;margin-top: 8.2vw;display: flex;justify-content: space-between; align-items: center;flex-wrap: wrap;}
+    .section_main.ten .section_content .section_li{ display: -webkit-box; display: -ms-flexbox; display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; width: 40vw; height: 29.6vw; background-size: 40vw; background-repeat: no-repeat;margin-bottom: 2.4vw;margin-right: 2.4vw;}
     .section_main.ten .section_content .section_li:nth-child(2n) { margin-right: 0}
     .section_main.ten .section_content .section_li .logo{ width: 12.9vw;height: 12.9vw;margin-bottom: 3.3vw;border-radius: 50%; }
     .section_main.ten .section_content .section_li .name{ font-size: 3.6vw; color: #fff }
     .section_main.ten .section_content .section_li {background-size: cover; background-position: center;}
-    .section_main.ten .section_content .section_li_0{background-image: url("/img/activity/attestation/section_bg_device_01.png") }
-    .section_main.ten .section_content .section_li_1{background-image: url("/img/activity/attestation/section_bg_device_02.png") }
-    .section_main.ten .section_content .section_li_2{background-image: url("/img/activity/attestation/section_bg_device_03.png") }
+    .section_main.ten .section_content .section_li_0{background-image: url(/img/activity/attestation/section_bg_device_03.png) }
+    .section_main.ten .section_content .section_li_1{background-image: url(/img/activity/attestation/section_bg_device_01.png) }
+    .section_main.ten .section_content .section_li_2{background-image: url(/img/activity/attestation/section_bg_device_02.png) }
     /*.section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_club_02.png") }*/
     /*.section_main.ten .section_content .section_li:nth-child(4){background-image: url("/img/activity/attestation/section_bg_device_02.png") }*/
-    .section_main.ten .section_content.pc{display: none !important; }
+    /*.section_main.ten .section_content.pc{display: none !important; }*/
     /*侧边栏-联系我们*/
     .section-tel{width: 52px;height: 92px;position: fixed;right: 0;top: 50%;z-index: 99;border-radius: 2px;-webkit-box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);}
     .section-tel .box{width: 52px;height: 46px;background: #FFFFFF;-webkit-box-sizing: border-box;box-sizing: border-box;padding: 9px 12px;cursor: pointer;position: relative;}

+ 7 - 5
src/main/resources/static/css/article/article.css

@@ -33,7 +33,7 @@ dl,dd,dt{zoom:1}
 .list-select{width:200px;height:32px;margin:5px 0;border:1px solid #e1dedd;border-radius:3px}
 .loadData{position:fixed;left:0;top:0;width:100%;height:100%;display:-webkit-box;-webkit-box-pack:center;-webkit-box-align:center}
 .light-grey{width:50px;height:36px;border:1px solid #ddd;color:#666;border-radius:5px;vertical-align:1px}
-.article img{max-width:100% !important;height:auto !important}
+.article img{width:auto !important;height:auto !important}
 
 @-webkit-keyframes pointerFlashing {from{opacity: 1} to{opacity: 0.1}}
 @keyframes pointerFlashing {from{opacity: 1} to{opacity: 0.1}}
@@ -158,7 +158,7 @@ dl,dd,dt{zoom:1}
 	.new-list .search-tip{ font-size: 16px; color: #333; font-weight: bold; position: relative;line-height: 32px}
 	.new-list .search-tip b{color:#E15616;font-weight:bold;}
 	.new-list .search-tip a{ color:#E15616; text-decoration: underline; }
-	.new-list .search-tip::after {content: ""; display: inline-block;/* position: absolute; left: 0;top: 50%; transform: translateY(-50%);*/ width: 30px; height: 30px; background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 30px; height: 30px;
+	.new-list .search-tip.pointer::after {content: ""; display: inline-block;/* position: absolute; left: 0;top: 50%; transform: translateY(-50%);*/ width: 30px; height: 30px; background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 30px; height: 30px;
 		-webkit-animation: ease pointerFlashing infinite 0.3s;
 		animation: ease pointerFlashing infinite 0.3s; -webkit-transform: rotateY(180deg); transform: rotateY(180deg);vertical-align: -8px;
 		-webkit-filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);
@@ -175,7 +175,7 @@ dl,dd,dt{zoom:1}
 	.article .title{line-height:40px;font-size:28px;color:#333}
 	.article .xinxi{margin-top:5px;padding-bottom:14px;border-bottom:solid 1px #ededed}
 	.article .new-mian{margin:23px 0;width:760px}
-	.article .new-mian img{max-width:100%;display:inline-block;display:block;margin:0 auto;height:auto !important}
+	.article .new-mian img{width:auto !important;display:inline-block;display:block;margin:0 auto;height:auto !important}
 	.article p{font-size:16px;line-height:30px;color:#777;margin-bottom:15px}
 	.dianzan{width:auto;text-align:center}
 	.article .like{color: #e15616; cursor: pointer;display: inline-block;height: 80px;width: 80px;line-height: 110px;margin: 30px auto;border-radius: 50%;background: #fef6f3;text-align: center;position: relative}
@@ -186,7 +186,7 @@ dl,dd,dt{zoom:1}
 
 }
 @media screen and (max-width:768px){
-	body{height: 100vh;overflow-y: scroll;}
+	body{height: 100vh;overflow-y: scroll;position: relative;}
 	.header .logo,.header .home{display:none}
 	.mIcon:before{content:'';display:inline-block;font-size:0;background:url(/img/base/icon_m.png) no-repeat;background-size:100vw auto;transition:all .5s}
 	#scrollTop{display:none;position:fixed;right:0;;z-index:9999;bottom:4vw;}
@@ -221,7 +221,7 @@ dl,dd,dt{zoom:1}
 	.classify.search-tip{ font-size: 3.2vw; font-weight: bold; }
 	.classify.search-tip em{color:#E15616;font-weight:bold;}
 	.classify.search-tip a{ color:#E15616; text-decoration: underline; }
-	.classify.search-tip::after {content: ""; display: inline-block;width: 6.2vw; height: 6.2vw;
+	.classify.search-tip.pointer::after {content: ""; display: inline-block;width: 6.2vw; height: 6.2vw;
 		background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 6.2vw 6.2vw;
 		-webkit-animation: ease pointerFlashing infinite 0.3s;
 		animation: ease pointerFlashing infinite 0.3s; -webkit-transform: rotateY(180deg); transform: rotateY(180deg);vertical-align: -1.6vw;
@@ -270,4 +270,6 @@ dl,dd,dt{zoom:1}
 	.classify{height:10vw;line-height:10vw;border-left:solid 4px #e15616;font-size:3.7vw;color:#333;padding:0 3vw;background:#fff}
 	.article .like{color: #e15616;cursor: pointer;display: block;height: 18.4vw;width: 18.4vw;line-height: 27.4vw;margin: 5vw auto;border-radius: 50%;background: #fef6f3;text-align: center;position: relative}
 	.article .like:before{ width: 8vw;height: 8vw;background-position: -14vw -78.4vw;vertical-align: middle;border-radius: 50%;position: absolute;top: 3.2vw}
+
+	.no-result{text-align: center;padding: 3.2vw 0;}
 }

+ 9 - 2
src/main/resources/static/css/base/base.h5.css

@@ -9,6 +9,7 @@
 .pcOnly,.jqSelect .pc,.baseHeadCenter .headCart,.baseHeadCenter .hotKey,.baseTopNav_nav{display:none!important;}
 .baseHeadTop .wrap ul>li,.baseHeadTop .header_top_left{display:none;}
 .mIcon:before{content:'';display:inline-block;font-size:0;background:url(/img/base/icon_m.png) no-repeat;background-size:100vw auto;transition:all .5s}
+.H5-icon:before{content:'';display:inline-block;font-size:0;background:url(/img/base/H5-icon.png) no-repeat;background-size:100vw auto;transition:all .5s}
 .icon.shop,.icon.heart{vertical-align:middle;display:inline-block;height:5.5vw;line-height:5.5vw}
 .icon.shop:before{width:7.5vw;height:6vw;background-position:-91vw -.5vw}
 .icon.heart:before{width:5.5vw;height:5.5vw;background-position:0 -17vw}
@@ -47,14 +48,20 @@
 /* 头部 */
 .baseHeadCenter{box-sizing:border-box;width:100%;height:26.8vw;padding:0 2vw;position:relative;background:#FFF}
 .baseHeadCenter .logo,.classifyBox .logo{width:23.8vw;height:5.9vw;padding:3.75vw 0;position:absolute;top:0;left:50%;margin-left:-11.9vw}
-.baseHeadCenter .logo img,.classifyBox .logo img{display:block;width:23.8vw;height:5.9vw}
+.baseHeadCenter .logo img,.classifyBox .logo img{display:block;width:24vw;height:6.6vw}
 .baseHeadCenter .mClassBtn,.classifyBox .mClassBtn{float:left}
 .baseHeadCenter .mUserCenter{float:right}
-.baseHeadCenter .mClassBtn,.classifyBox .mClassBtn,.baseHeadCenter .mUserIcon,.baseHeadCenter .mAddCart,.classifyBox .clsHead .close{padding:3.5vw 2.8vw;width:6.4vw;height:6.4vw}
+.baseHeadCenter .mClassBtn,
+.classifyBox .mClassBtn,
+.baseHeadCenter .mUserIcon,
+.baseHeadCenter .mAddCart,
+.baseHeadCenter .mNotice,
+.classifyBox .clsHead .close{padding:3.5vw 1.4vw;width:6.4vw;height:6.4vw}
 .baseHeadCenter .mClassBtn:before,.classifyBox .mClassBtn:before,.baseHeadCenter .mUserIcon:before,.baseHeadCenter .mAddCart:before{content:'';display:block;width:6.4vw;height:6.4vw}
 .baseHeadCenter .mClassBtn:before,.classifyBox .mClassBtn:before{background-position:0 0}
 .baseHeadCenter .mUserIcon:before{background-position:-8.6vw 0}
 .baseHeadCenter .mAddCart:before{background-position:-17vw 0}
+.baseHeadCenter .mNotice:before{content:'';display:block;width:6.4vw;height:6.4vw;background-position:0 0}
 .baseHeadCenter .searchBox{position:absolute;top:13.4vw;left:0;width:100%;padding-top:1.8vw}
 .baseHeadCenter .search{width:93.4vw;height:9.6vw;margin:0 auto;border:1px solid #FFE6DC;border-radius:2px;position:relative}
 .baseHeadCenter .search .jqSelect{width:27vw;height:9.6vw;position:relative;font-size: 0;}

+ 7 - 1
src/main/resources/static/css/base/base.pc.css

@@ -28,6 +28,7 @@ iframe{width:320px !important;height: 280px !important}
 .jqSelect ul li:hover{background:#FEF6F3;color:#E15616}
 .wrap{width:1184px;margin:0 auto;}
 .icon:before,.baseTopNav .nav:after{content:'';display:inline-block;background:url(/img/base/icon.png) no-repeat;font-size:0;}
+.WEB-icon:before{content:'';display:inline-block;background:url(/img/base/WEB-icon.png) no-repeat;font-size:0;}
 .icon.shop,.icon.heart{vertical-align:middle;display:inline-block;height:25px;line-height:25px;}
 .icon.shop:before{width:30px;height:25px;background-position:5px -297px}
 .icon.heart:before{width:25px;height:25px;background-position:-35px -297px}
@@ -79,6 +80,11 @@ iframe{width:320px !important;height: 280px !important}
 .baseHeadTop li.headCart .addBtn{display:inline-block;width:100%;height:40px;line-height:40px;box-sizing:border-box;position:relative;color:#333;font-size:14px;text-align:center;white-space:nowrap}
 .baseHeadTop li.headCart .addBtn:before{display:inline-block;width:20px;height:20px;vertical-align:middle;background-position:-30px -1px;margin-right:2px}
 .baseHeadTop li.headCart .addBtn em{color:#E15616;font-style:normal;margin-left:4px;}
+.baseHeadTop li.headmsg{position:relative;}
+.baseHeadTop li.headmsg .msg-btn{display:inline-block;width:100%;height:40px;line-height:40px;box-sizing:border-box;position:relative;color:#333;font-size:14px;text-align:center;white-space:nowrap}
+.baseHeadTop li.headmsg .msg-btn:before{display:inline-block;width:20px;height:20px;vertical-align:middle;background-position:1px 1px;margin-right:2px}
+.baseHeadTop li.headmsg .msg-btn em{color:#E15616;font-style:normal;margin-left:4px;}
+
 .baseHeadTop .cartData{display:none;position:absolute;right:0;top:40px;width:360px;box-sizing:border-box;background:#FFF;z-index:999;box-shadow:0px 3px 6px rgba(45,48,54,0.2);border-radius:2px}
 .baseHeadTop .cartData .empty{padding:72px 10px;text-align:center;font-size:16px;line-height:26px;}
 .baseHeadTop .cartData .empty a{color:#E15616;margin:0 5px;border-bottom:1px solid #e15616}
@@ -101,7 +107,7 @@ iframe{width:320px !important;height: 280px !important}
 
 .baseHeadCenter,.baseTopNav{width:100%;background:#FFF}
 .baseHeadCenter .wrap{height: 100px;box-sizing: border-box;padding: 10px 0;}
-.baseHeadCenter .logo{float:left;width:178px;height:44px;margin-right:122px;margin-top: 10px;}
+.baseHeadCenter .logo{float:left;width:168px;height:44px;margin-right:122px;margin-top: 10px;}
 .baseHeadCenter .searchBox{width:668px;float:left}
 .baseHeadCenter .search{width:100%;height:44px;line-height:44px;border:1px solid #FFE6DC;position:relative}
 .baseHeadCenter .search:before{content:'';position:absolute;left:104px;top:16px;height:12px;border-right:2px solid #C0C6D1}

+ 1 - 1
src/main/resources/static/css/base/init.css

@@ -17,7 +17,7 @@ header li,footer li{list-style:none;}
 [v-cloak]{display:none;}
 table{border-collapse: collapse;}
 table,td,th{border: 1px solid #EBECEF;}
-figure.image{margin:0 auto;padding:0;}
+figure.image{margin:0 auto;padding:0;width: 100% !important;}
 .favicon.ico{background: url(/img/web.ico)}
 .fl{float: left;}
 .fr{float: right;}

+ 2 - 2
src/main/resources/static/css/help/details.css

@@ -7,8 +7,8 @@ li{list-style:none}
     .pageWrap{width: 968px;}
     .navLayout{min-height: 500px;}
     .news-container{width: 100%;min-height: 600px;background-color: #FFFFFF;margin-top: 24px;box-sizing: border-box;padding:0 32px 32px 32px;border-radius: 8px;}
-    .news-title{width: 100%;line-height: 80px;font-size: 20px;font-weight: bold;text-align: center;color: #333333;}
-    .news-container-html{width: 100%;min-height: 600px;}
+    .news-title{width: 100%;line-height: 100px;font-size: 20px;font-weight: bold;text-align: center;color: #333333;}
+    .news-container-html{width: 800px;margin: 0 auto;min-height: 600px;}
 }
 
 /**

+ 2 - 2
src/main/resources/static/css/product/alliance-page.css

@@ -44,9 +44,9 @@ a{text-decoration:none}
 .zp-main .zp-params{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:24px}
 .zp-main .zp-params .row{width:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}
 .zp-main .zp-params .row .col{font-size:14px;padding:6px 0;line-height:24px}
-.zp-main .zp-params .row .col:first-child{width:14%;color:#949494}
+.zp-main .zp-params .row .col:first-child{color:#949494;width: 15%;}
 .zp-main .zp-params .row .col:first-child::after{content:":";margin-left:4px}
-.zp-main .zp-params .row .col:last-child{-webkit-box-flex:1;-ms-flex:1;flex:1}
+.zp-main .zp-params .row .col:last-child{-webkit-box-flex:1;-ms-flex:1;flex:1;word-break: break-all;padding-left: 16px;padding-right: 16px;text-align: justify;}
 .zp-footer{margin-top:24px;padding:20px 0;background-color:#eee}
 .zp-footer p{text-align:center;font-size:14px;color:#999}
 .zp-footer p a{color:#999;-webkit-transition:color 0.2s;-o-transition:color 0.2s;transition:color 0.2s}

+ 1 - 1
src/main/resources/static/css/product/detail.pc.css

@@ -155,7 +155,7 @@ li{list-style:none;}
 .productInfo .tabTit span:hover{color:#E15621}
 .productInfo .tabTit span.on,.productInfo .tabTit span.on:hover{background:#ffe6dc;color:#e15616;font-weight: bold;}
 .productInfo .tabCon{padding:16px;text-align:center}
-.productInfo .tabCon img{max-width:100%;}
+.productInfo .tabCon img{width:100%;height: auto;}
 .productInfo .tabCon table{width:100%;text-align:left}
 .productInfo .tabCon td{padding:10px 12px;line-height:20px}
 .productInfo .tabCon td a{color: #4688fa;}

+ 0 - 163
src/main/resources/static/css/product/qualityauthorize.css

@@ -1,163 +0,0 @@
-@charset "utf-8";body{margin:0}
-h1,h2,h3,p{margin:0}
-a{text-decoration:none;color:#000}
-ul{margin:0;padding:0;list-style-type:none}
-.fl-left{float:left}
-.fl-right{float:right}
-.fl-clear::after{display:block;content:'';clear:both}
-.params{border-collapse:unset;border:0;width:100%}
-.product-params .params tr td{border:0}
-.product-params .params tr td:nth-child(2n-1){color:#999999}
-.float-zplm{display: none;visibility: hidden;}
-@media screen and (min-width:768px){body{background-color:#F8F8F8}
-.inner{width:1184px;margin:0 auto}
-.container-header{width:100%;height:auto}
-.header-top{width:100%;height:80px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:23px 0;background-image:-o-linear-gradient(right,#191919 0%,#464646 100%);background-image:-webkit-gradient(linear,right top,left top,from(#191919),to(#464646));background-image:linear-gradient(270deg,#191919 0%,#464646 100%)}
-.header-top .logo{width:98px;height:34px;float:left}
-.header-top .logo img{width:98px;height:34px;display:block}
-.container-content{width:100%;height:auto;margin-top:16px}
-.container-content .content-top{width:100%;height:120px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px 16px;background-color:#ffffff;-webkit-box-shadow:0 2px 10px #ebecef;box-shadow:0 2px 10px #ebecef}
-.container-content .content-top-left{width:50%;float:left;height:100%}
-.container-main{width:1184px;height:590px;margin:0 auto;padding:25px;background:#FFF;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box}
-.container-main .img-box{float:left;position:relative;width:540px;height:540px;border:1px solid #ececec;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}
-.container-main .img-box .origin-logo-box{text-align:center;width:80px;position:absolute;top:26px;left:26px;z-index:10}
-.container-main .img-box .product-brand{max-width:80px;height:auto}
-.container-main .img-box .product-img{width:100%;height:100%}
-.container-main .img-box .product-authorize{width:72px;height:72px;position:absolute;bottom:20px;right:30px;z-index:10}
-.product-desc{width:570px;line-height:30px;color:#101010;float:right}
-.product-desc h3{font-size:20px}
-.product-desc .pink-box{margin:30px 0;padding:10px 16px;background:rgb(251,241,242);color:#bc1724}
-.product-desc .pink-box a{color:#bc1724}
-.product-desc .default-box{padding:10px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}
-.product-desc .dls{color:#999}
-.product-desc .statement{padding-right: 15px;text-align: right}
-.product-desc .statement a{color:#bc1724}
-.product-desc .statement a .icon-wenhao{font-weight: bold;margin-left: 5px}
-/*.product-desc .statement a::after{content:'?';display:inline-block;width:14px;height:14px;text-align:center;line-height:16px;font-size:14px;border:1px solid #bc1724;border-radius:50%;margin-left:5px}*/
-.product-desc p{margin:30px 0}
-.product-params{width:1184px;margin:16px auto 0;padding:25px;background:#FFFFFF;-webkit-box-sizing:border-box;box-sizing:border-box}
-.product-params .title{position:relative;padding-bottom:10px;border-bottom:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}
-.product-params .title::after{content:'';display:block;position:absolute;bottom:-2px;left:0;width:72px;height:2px;background:#101010}
-.product-params .title span{font-size:18px;font-weight:bold}
-.product-params .p-content{color:#101010}
-.product-params .pc-params{margin-top:30px}
-.product-params .pc-params li{float:left;width:50%;margin:15px 0}
-.product-params .pc-params li>div{float:left}
-.product-params .pc-params li .p-title{color:#999999}
-.footer{margin-top:60px;padding:20px 0;background-color:#eee}
-.footer p{text-align:center;font-size:14px;color:#999}
-.footer p a{color:#999}
-.product-desc a:hover{color:#F52E3E}
-.product-desc .statement a:hover::after{border-color:#F52E3E}
-.footer p a:hover{color:#F52E3E}
-.footer-mobile{display:none}
-.product-params .params.mobile{display:none}
-
-.statementModel{position:fixed;top:0;left:0;z-index:999;width:100%;height:100vh;background:rgba(0,0,0,.4)}
-.statementModel .model{position:fixed;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);width:620px;height:380px;border-radius:4px;background:#fff;overflow:hidden}
-.statementModel .title{padding:15px 20px;background:#f1f1f1;font-size:18px}
-.statementModel .close{position:absolute;right:20px;top:10px;display:block;width:30px;height:30px;background:url(/img/quality/icon-close.png) no-repeat center;cursor:pointer}
-.statementModel .close:hover{background-image:url(/img/quality/icon-close-hover.png)}
-.statementModel .content{padding:15px;height:296px;overflow-y:scroll;line-height: 1.8;text-align: justify;text-indent: 2em}
-.float-zplm{position:fixed;z-index:99;bottom:16%;right:2%;width:90px}
-.float-zplm img{width:100%}
-.close{position:absolute;display:block;width:32px;height:32px;background:url(/img/quality/mb-close.png) no-repeat center;cursor:pointer;z-index:999;background-size:32px;right:0;top:-50px}
-.container-main .sq-book{position:absolute;width:149px;height:112px;bottom:20px;left:30px;z-index:10;cursor: pointer;}
-.sq-book-modal{width:100%;height:100vh;position:fixed;z-index:997;top:0;left:0;background:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
-.sq-book-img{width:622px;/*height:467px;*/-webkit-box-shadow:0 10px 28px rgba(255,199,30,.26);box-shadow:0 10px 28px rgba(255,199,30,.26);position:fixed;left:0;right:0;margin:0 auto;top:20%;z-index:998}
-.sq-book-img img{width:100%;height:auto}
-
-.not-found {height: calc(100vh - 80px); display: flex;justify-content: center;align-items: center;flex-direction: column;}
-.not-found img{}
-.not-found p{font-size: 20px;color: #a8a8a8;padding: 60px;text-align: center;}
-.qrCodeImage{ width: 160px; position: fixed;right: 0 ;z-index: 99; bottom: 80px;padding: 15px;border-radius: 4px; background: #fff;}
-.qrCodeImage img{ width: 100%; display: block;}
-.qrCodeImage .foot-text{text-align: center;font-size: 14px;line-height: 1.4}
-.qrCodeImage .closeHandle{ display: block;font-size: 26px;position: absolute;left: 0;top: -10px; color: #666;cursor: pointer}
-}
-
-@media screen and (max-width:768px){body{background:#fff}
-.container{font-size:3.6vw;color:#101010}
-.container-header{display:none}
-.container-content{width:100%}
-.container-main{width:100vw}
-.container-main .img-box{width:100vw;position:relative}
-.container-main .product-img{width:100vw}
-.container-main .img-box .origin-logo-box{position:absolute;top:4vw;left:4vw;max-width:16vw;text-align:center;z-index:9}
-.container-main .img-box .origin-logo-box img{max-width:16vw}
-.container-main .img-box .product-authorize{width:13.8vw;height:13.8vw;position:absolute;bottom:3.2vw;right:4vw}
-.product-desc a{color:#bc1724}
-.product-desc h3{background:-o-linear-gradient(left,#101010,#404040);background:-webkit-gradient(linear,left top,right top,from(#101010),to(#404040));background:linear-gradient(to right,#101010,#404040);color:#fefefe;padding:4vw;font-size:4.4vw}
-.product-desc .pink-box{padding:3.2vw 4vw;background:rgb(251,241,242);color:#bc1724;line-height:8vw}
-.product-desc .default-box{width:92.3vw;margin:0 auto;padding:3.2vw 0;border-bottom:0.4vw solid #eee;line-height:8vw}
-.product-desc .statement a{display:block;text-align: right}
-.product-desc .statement a .icon-wenhao{font-weight: bold;margin-left: 5px;}
-.product-desc p{padding:3.2vw 4vw;line-height:6vw}
-.product-desc .sn-number{padding:3.2vw 0;background:#f5f5f5}
-.product-desc .sn-number .item-row{background:rgb(251,241,242);padding:3.2vw 4vw}
-.product-params{padding:3.2vw 4vw}
-.product-params .title{padding:4vw 0;border-bottom:0.4vw solid #eee;font-size:4vw;font-weight:bold}
-.product-params .params{margin-top:3vw;border-spacing:0 4vw}
-.product-params .params tr{line-height:6.6vw}
-.product-params .footer{display:none}
-.product-params .params.mobile td{vertical-align: top}
-.footer{display:none}
-.footer-mobile{padding:8vw 0 4vw;line-height:7vw;text-align:center;background:#f5f5f5}
-.footer-mobile p{color:#b2b2b2;font-size:2.4vw}
-.footer-mobile a{color:#f52e3e;font-size:3vw;font-weight:bold}
-.product-params .pc-params.pc{display:none}
-.statementModel{position:fixed;top:0;left:0;z-index:999;width:100%;height:100vh;background:rgba(0,0,0,.4)}
-.statementModel .model{position:fixed;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);width:86vw;height:128vw;border-radius:4px;background:#fff}
-.statementModel .title{padding:4vw 5vw;background:#f1f1f1;font-size:4.6vw;text-align:center}
-.statementModel .close{position:absolute;right:0;top:-10vw;display:block;width:8.2vw;height:8.2vw;background:url(/img/quality/mb-close.png) no-repeat center;background-size:8.2vw;cursor:pointer}
-.statementModel .content{padding:4vw;height:100vw;overflow-y:scroll;line-height: 1.8;text-align: justify;text-indent: 2em;}
-.float-zplm{position:fixed;z-index:99;bottom:30vw;right:3.4vw;width:15.7vw}
-.float-zplm img{width:100%}
-.close{position:absolute;display:block;width:7.2vw;height:7.2vw;background:url(/img/quality/mb-close.png) no-repeat center;cursor:pointer;z-index:999;background-size:7.2vw;right:0;top:-11.5vw}
-.container-main .sq-book{position:absolute;width:27.2vw;height:20.6vw;bottom:4.1vw;left:4vw;z-index:10;cursor: pointer}
-.sq-book-modal{width:100%;height:100vh;position:fixed;z-index:997;top:0;left:0;background:rgba(0,0,0,.7)}
-.sq-book-img{z-index:998;display:block;width:92vw;/*height:69vw;*/position:fixed;top:41.2vw;left:0;right:0;margin:0 auto;-webkit-box-shadow:0 10px 28px rgba(255,199,30,.26);box-shadow:0 10px 28px rgba(255,199,30,.26)}
-.sq-book-img img{width:100%}
-.not-found{width:100vw;padding-top: 40vw;text-align: center}
-.not-found img{width: 30vw}
-.not-found p{font-size: 4vw;margin-top: 6vw;color: #a8a8a8}
-.qrCodeImage{position: fixed;z-index: 99;padding: 2vw; bottom: 30vw;right: 1vw; width: 30vw; background: #fff;box-shadow: -2px 2px 4px rgba(0,0,0,.05);border-radius: 4px; }
-.qrCodeImage img{ width: 100%;  display: block;}
-.qrCodeImage .foot-text{text-align: center;font-size: 3vw;line-height: 1.4}
-.qrCodeImage .closeHandle{ display: block;font-size: 6vw;position: absolute;left: 0;top: -2vw; color: #666;cursor: pointer}
-
-}.myZoomIn{-webkit-animation:zoomIn 1s ease;animation:zoomIn 1s ease}
-.myZoomOut{-webkit-animation:zoomOut 1s ease;animation:zoomOut 1s ease}
-@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}
-50%{opacity:1}
-}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}
-50%{opacity:1}
-}@-webkit-keyframes zoomOut{0%{opacity:1}
-50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}
-to{opacity:0}
-}@keyframes zoomOut{0%{opacity:1}
-50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}
-to{opacity:0}
-}
-
-@font-face {font-family: "iconfont";
-  src: url('//at.alicdn.com/t/font_2466631_xct76hehlhc.eot?t=1617677320008'); /* IE9 */
-  src: url('//at.alicdn.com/t/font_2466631_xct76hehlhc.eot?t=1617677320008#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANIAAsAAAAABuwAAAL6AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqBeIIBATYCJAMICwYABCAFhG0HMBsnBhEVlClkXyTYnD24tgJVfeZWhGDmcRfFUCmL2UvWCFQafBMPfGvpn905gqC6S0qk+iILBBJI1SGB0DGmRA6NuKHL/dz8F0hxvMbmQL70qQly1JgC8ViccPc/pwUX4fveVZiQ7PPICuh+wpd3uZKDjY2ZkFNmc6RImHbGHmq9BsCYBfY/h0ubXmDzA+Uy17KoF2C8NcAx1x3ZHcgB+C3Da12Kh7yfgKIeY4RpvkgGyYvIsICwadhvIvmCUxT1SF6QbZgbhQtI+eRk8obz0e+H/8aGPIlMiuQs2ujtIJN+F2hMeqBlqEgE1nJ66ItIMQaRsKzRuECaBMdIFd1gNIhjZQZ+g1ZLqoWj/vOELJJeBg1gPhOLsx81PQER2hdh56QLiG2wTU+9W/buMnp/nv5e+fFm/PladjpHY/rT8FXLfy7RsP48+ba8f3rlhbE2t+NN6fqxbDrsN+8OdOu84Q2Q0v3bW2t/6PnDgHRSHk5yOicne0BwOuDkPS1kFdZ3wklZW2emXu+RzaDeqN5rzGw2toxCAHgvCg3oDbhGo4Kf1awXWSqNTt+/3aTvFE/+mjeVnrRa/a9BUZMevf2tOT6wzY7upZ4fvoC++CxkEmidIrHzd/+N4WPS2VXyuPOlCL5Nr7nI3joiw8zkb8oU+LmsgWXR4xBJ8pRMbEosytklAN2waEGs7X5MlXa9iT7IF1g6JHKakMobgozYMZBR0gdZeaaJUDRaZXFJB5YXYgGj3CEI6l4hUdUPqbp3ZMT+QEa3K2TVQx6KVoSONUuGBU+byrgU3MDqCN6aYsU0osWZfXS24ZLznIgwRk49D1i6WY5UMEZeYkK6c2wRBYopgjI6DMOQIGHycS26K5KUDEM1fZO+piijmYqhJYE2wMoR8KyRmJLVhVb5+T7k2AotcUdJl3oMsZTXObDozAHIijAeVPIoj6R2HDYhFKAwEgFlpEchDRKQNPfyoTWhcyf4EyUGrqSGCvXtxdHfrYEiIksC7ZbKbsfYXVImAwAA') format('woff2'),
-  url('//at.alicdn.com/t/font_2466631_xct76hehlhc.woff?t=1617677320008') format('woff'),
-  url('//at.alicdn.com/t/font_2466631_xct76hehlhc.ttf?t=1617677320008') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
-  url('//at.alicdn.com/t/font_2466631_xct76hehlhc.svg?t=1617677320008#iconfont') format('svg'); /* iOS 4.1- */
-}
-
-.iconfont {
-  font-family: "iconfont" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-wenhao:before {
-  content: "\e71d";
-}
-

+ 28 - 14
src/main/resources/static/css/supplier-center/message.css

@@ -4,23 +4,29 @@ li{list-style:none}
  * PC端
  */
 @media screen and (min-width:768px){
-    .pageWrap{width: 968px;margin: auto;padding: 32px 0}
+    .navLayout{min-height: 500px;}
     .content .empty{background-color:#FFF;}
     .content{width: 100%;min-height: 370px;background-color: #FFFFFF;box-sizing: border-box;padding:0 20px 20px 20px;box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.07);margin:0 0 10px 0;}
-    .content .title{width: 100%;height: 56px;border-bottom: solid 1px #e2e7ef;line-height: 56px;color: #22272e;font-size: 16px;}
+    .content .title{width: 100%;height: 56px;border-bottom: solid 1px #e2e7ef;box-sizing: border-box;padding:9px 0;}
+    .content .title .tabs-item{width:15%;height: 38px;float: left;}
+    .content .title .tabs-item a{width:100%;height: 100%;display: block;font-size: 16px;line-height: 38px;text-align: left;color: #9aa5b5;}
+    .content .title .tabs-item.active a{color: #E15616;}
     .content .section .section-top{width: 100%;height: 54px;float: left;box-sizing: border-box;padding: 9px 0;border-bottom: solid 1px #e2e7ef;}
     .content .section .section-top .cheacked{width: 100px;height: 36px;float: left;cursor: pointer;}
+    .content .section .section-top .cheacked .check{margin: 8px 15px;}
     .content .section .section-top .cheacked .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px}
     .content .section .section-top .cheacked span{display: inline-block;line-height: 36px;font-size: 16px;color: #22272e;}
     .content .section .section-top .button{width: 250px;height: 36px;float: right;}
     .content .section .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffe6dc;line-height: 34px;text-align: center;font-size: 14px;color: #E15616;border: solid 1px #e15616;}
     .content .section .section-content{width: 100%;height: auto;float: left;box-sizing: border-box;padding: 10px 0;}
-    .content .section .section-content .new-list{width: 100%;height: 36px;float: left;box-sizing: border-box;}
-    .content .section .section-content .new-list .text{line-height: 36px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;float: left;}
+    .content .section .section-content .new-list{width: 100%;height:80px;float: left;box-sizing: border-box;padding: 15px 0;}
+    .content .section .section-content .new-list .text{line-height: 36px;float: left;}
     .content .section .section-content .new-list .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px;line-height: 16px;cursor: pointer;}
-    .content .section .section-content .new-list .text p{line-height: 36px;font-size: 14px;color: #627386;float: left;width: 600px;overflow: hidden;word-wrap: normal;vertical-align: middle;text-overflow: ellipsis}
+    .content .section .section-content .new-list .text p{width: 700px;height: 48px;line-height: 24px;font-size: 14px;color: #627386;float: left;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;}
+    .content .section .section-content .new-list .text p .link{color: #E15621;cursor: pointer;text-decoration: underline;}
+    .content .section .section-content .new-list .text p .link:hover{text-decoration: underline;}
     .content .section .section-content .new-list .time{line-height: 36px;font-size: 14px;color: #b8bfca;float: right;}
-    .check{float: left;margin: 8px}
+    .check{float: left;margin: 4px 15px;}
     .notclick{opacity: .6}
 }
 
@@ -28,23 +34,31 @@ li{list-style:none}
 * 移动端
 */
 @media screen and (max-width:768px){
-    .content{width: 100%;background-color: #FFFFFF;box-sizing: border-box;padding:3.3vw;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);margin:0 0 2.7vw 0;}
-    .content .title{width: 100%;height: 10vw;line-height: 10vw;color: #22272e;font-size: 3.4vw;}
-    .section-top{width: 100%;height: 54px;float: left;box-sizing: border-box;padding: 10px;background: #fff}
+    footer{display: none;}
+    .content{width: 100%;height: auto;background-color: #FFFFFF;box-sizing: border-box;padding:3.3vw;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);margin:0 0 2.7vw 0;padding-bottom:10px;}
+    .content .title{width: 100%;height: 8.4vw;line-height: 8.4vw;color: #22272e;font-size: 3.4vw;}
+    .content .title .tabs-item.active a{color: #E15616;}
+    .content .title .tabs-item{display:inline-block;height:8.4vw;border:1px solid #b8bfca;line-height:8.4vw;padding:0 3vw;border-radius:4.2vw;margin-right:2.6vw}
+    .content .title .tabs-item a{color:#627386}
+    .content .title .tabs-item a span{color:#e15616}
+    .content .title .tabs-item.active{background-color:#ffe6dc;border-color:#e15616;color:#e15616}
+    .header-tabs .tabs-item.active a{color:#e15616}
+    .section-top{width: 100%;height: 54px;box-sizing: border-box;padding: 10px;background: #fff;position: fixed;bottom: 0;left: 0;z-index: 999;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);}
     .section-top .cheacked{width: 100px;height: 36px;float: left;cursor: pointer;}
     .section-top .cheacked .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px}
     .section-top .cheacked span{display: inline-block;line-height: 36px;font-size: 16px;color: #22272e;}
     .section-top .button{height: 36px;float: right;}
-    .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffd8d8;
-    line-height: 34px;text-align: center;font-size: 14px;color: #f94b4b;border: solid 1px #f94b4b;border-radius: 6.4vw}
+    .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffd8d8;line-height: 34px;text-align: center;font-size: 14px;color: #f94b4b;border: solid 1px #f94b4b;border-radius: 6.4vw}
     .section-top .button .btn.Read{border: .27vw solid #1890f9;color: #1890f9;background: #e0f1ff}
     .content .section .section-content{width: 100%;height: auto;float: left;box-sizing: border-box;padding: 10px 0;}
-    .content .section .section-content .new-list{width: 100%;box-sizing: border-box;}
-    .content .section .section-content .new-list .text{line-height: 36px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;float: left;}
+    .content .section .section-content .new-list{width: 100%;box-sizing: border-box;float: left;margin-bottom: 4vw;}
+    .content .section .section-content .new-list .text{line-height: 36px;}
     .content .section .section-content .new-list .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px;line-height: 16px;cursor: pointer;}
-    .content .section .section-content .new-list .text p{line-height: 36px;font-size: 3.4vw;color: #627386;float: left;width: 77.6vw;overflow: hidden;word-wrap: normal;vertical-align: middle;text-overflow: ellipsis}
+    .content .section .section-content .new-list .text p{line-height: 6vw;font-size: 3.4vw;color: #627386;float: left;width: 77.6vw;}
+    .content .section .section-content .new-list .text p .link{color: #E15621;cursor: pointer;text-decoration: underline;}
     .content .section .section-content .new-list .time{font-size: 3.1vw;color: #b8bfca;float: left;padding-left: 37px}
     input.check {width: 3.5vw;height: 3.5vw;line-height: 3.5vw;vertical-align: top;margin: 3vw 3vw 1.3vw 3.3vw;float: left;}
     .notclick{pointer-events: none;opacity: .6}
+    .empty{padding: 50vw 0}
 }
 

+ 53 - 48
src/main/resources/static/css/supplier-center/shop/goods.css

@@ -5,54 +5,59 @@ li{list-style: none}
     form>div {float: left; height: 40px;font-size: 12px;color: #627386;line-height: 40px;margin-right: 10px;margin-bottom: 10px}
     .Buyer {width:156px; height: 34px;background-color: #ffffff;border-radius: 2px;border: solid 1px #b8bfca;padding-left: 10px;cursor: pointer;}
     .state {width: 168px;height: 36px;background-color: #ffffff;border-radius: 2px;border: solid 1px #b8bfca;padding-left: 10px;color: #627386;cursor: pointer; margin-right: 10px}
-     .state.small{width: 140px;}
-     input::placeholder{color: #9aa5b5;font-size: 12px;}
-     textarea::placeholder{color: #9aa5b5;}
-     #newBtn div{height: 36px;border-radius: 2px;display: inline-block;text-align: center;cursor: pointer}
-      #newBtn{float: left;margin: 0}
-      .query-btn{background-color: #e15616;color: #fff;width: 88px;border: 1px solid #e15616}
-      .goods-main{width: 100%; height: auto; float: left; margin:10px 0;background: #fff;}
-      .goods-main-empty{width: 100%;height: 60px;line-height: 60px;text-align: center;float: left;margin-top: 20px;}
-      .goods-main-empty p{font-size: 14px;color: #333;}
-      .goods-main-empty p a{color: #e15616;text-decoration: underline;margin: 0 3px;}
-      .goods-title{ height: 56px;line-height: 56px;border-bottom: solid 1px #e2e7ef;padding: 0 20px}
-      .goods-main .goods-table ul li{float:left;width: 8%;text-align: center;color: #22272e;position: inherit}
-      .goods-main .goods-table ul li:nth-child(2){ width: 20%;}
-      .goods-main .goods-table ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(4){width: 20%}
-      .goods-main .goods-table ul li:last-child{width: 22%;position: relative}
-      .tbody ul li{height: 96px;font-size: 12px;}
-      .tbody ul{padding: 0 20px;position: relative;height: 96px}
-      .tbodyle ul li:nth-child(2){width: 20%;}
-      .tbody ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(3){ width: 14%}
-      .tbody ul li:last-child{width: 22%}
-      .goods-main .checkbox {overflow: hidden; cursor: pointer;}
-      .tbody .checkbox .box{ display: inline-block; width: 20px;height: 90px;margin-top: 2px;float: left;}
-      .goods-main  .tbody .checkbox span{ display: inline-block;float: left;margin-left: 6px;}
-      .checkbox .icon-weigouxuan:before{ width: 16px;height: 16px; background-position: -332px -32px;}
-      .checkbox .icon-gouxuan:before{width: 16px; height: 16px;background-position: -210px 0px}
-      .goods-main  .tbody .good-info{display: inline-block}
-      .goods-main  .tbody .good-info img{width: 80px;height: 80px;margin-top: 8px}
-      .tbody ul li .good-classFly,.tbody ul li .good-price,.tbody ul li .status{position: relative;top: 50%;left: 50%;transform: translate(-50%, -50%);width: fit-content;}
-      .goods-main  .tbody .good-name{margin-left: 8px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;width: 90px;}
-      .goods-main  .tbody .good-handle{text-align: left;padding: 0 7px;line-height: 35px;position: absolute;width: 180px;top: 0;left: 30px;right: 0;bottom: 0;margin: auto;height: fit-content}
-      .goods-main  .tbody .btn{padding: 0 11px;margin-right: 8px;height: 24px;background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;display: inline-block;line-height: 24px;color: #e15616;}
-      .goods-container .good-footer{width: 95%;height: 56px;float: left;padding: 20px}
-      .goods-container .good-footer .footer-left{float: left;}
-      .goods-container .good-footer .checkbox {line-height: 70px;}
-      .goods-container .good-footer .checkbox .box{line-height: 74px;float: left;}
-      .goods-container .good-footer .checkbox span{display: inline-block;float: left;margin-left: 10px;}
-      .goods-container .good-footer .footer-right{float: right;margin-top: 20px;}
-      .goods-container .good-footer .footer-right .btn{width: 90px;height: 36px;display: block;line-height: 36px;text-align: center;font-size: 14px;border-radius: 2px;color: #FFF;}
-      .goods-container .good-footer .footer-right .btn.icon-weigouxuan{border: solid 1px #9aa5b5;color: #22272e;opacity: .5;}
-      .goods-container .good-footer .footer-right .btn.icon-gouxuan{background-color: #e15616;}
-      .bg-gouxuan{background-color: #f0f3f7;}
-      .good-price p {display: inline-block}
-      .priceTag{position: absolute;    top: 60px; right: 45px}
-      .pageWrap{width: 968px;margin: auto;padding: 32px 0}
-      .empty{background: #fff;margin-top: 10px;}
-      .navLayout{min-height: auto;}
-      .styleborder{border-top: 1px solid #e2e7ef}
-      .checkbox.checklist{line-height: 90px}
+    .state.small{width: 140px;}
+    input::placeholder{color: #9aa5b5;font-size: 12px;}
+    textarea::placeholder{color: #9aa5b5;}
+    #newBtn div{height: 36px;border-radius: 2px;display: inline-block;text-align: center;cursor: pointer}
+    #newBtn{float: left;margin: 0}
+    .query-btn{background-color: #e15616;color: #fff;width: 88px;border: 1px solid #e15616}
+    .goods-main{width: 100%; height: auto; float: left; margin:10px 0;background: #fff;}
+    .goods-main .goods-table .goods-tips{width: 100%;height: 44px;box-sizing: border-box;background: #FFFFFF;padding:0 16px 16px 16px;margin-top: 14px;}
+    .goods-main .goods-table .goods-tips .end-tips{width: 500px;height: 32px;background: #FFF3F3;border-radius: 2px;line-height: 32px;color: #F94B4B;font-size: 12px;}
+    .goods-main .goods-table .goods-tips .end-tips .tips{display:inline-block;width:32px;height:32px;line-height:32px;box-sizing:border-box;position:relative;color:#333;font-size:14px;text-align:center;white-space:nowrap}
+    .goods-main .goods-table .goods-tips .end-tips .tips:before{display:inline-block;width:20px;height:20px;vertical-align:middle;background-position:-24px 1px;margin-right:2px;}
+    .goods-main-empty{width: 100%;height: 60px;line-height: 60px;text-align: center;float: left;margin-top: 20px;}
+    .goods-main-empty p{font-size: 14px;color: #333;}
+    .goods-main-empty p a{color: #e15616;text-decoration: underline;margin: 0 3px;}
+    .goods-title{ height: 56px;line-height: 56px;border-bottom: solid 1px #e2e7ef;padding: 0 20px}
+    .goods-main .goods-table ul li{float:left;width: 8%;text-align: center;color: #22272e;position: inherit}
+    .goods-main .goods-table ul li:nth-child(2){ width: 20%;}
+    .goods-main .goods-table ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(4){width: 20%}
+    .goods-main .goods-table ul li:last-child{width: 22%;position: relative}
+    .tbody ul li{height: 96px;font-size: 12px;}
+    .tbody ul{padding: 0 20px;position: relative;height: 96px}
+    .tbodyle ul li:nth-child(2){width: 20%;}
+    .tbody ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(3){ width: 14%}
+    .tbody ul li:last-child{width: 22%}
+    .goods-main .checkbox {overflow: hidden; cursor: pointer;}
+    .tbody .checkbox .box{ display: inline-block; width: 20px;height: 90px;margin-top: 2px;float: left;}
+    .goods-main  .tbody .checkbox span{ display: inline-block;float: left;margin-left: 6px;}
+    .checkbox .icon-weigouxuan:before{ width: 16px;height: 16px; background-position: -332px -32px;}
+    .checkbox .icon-gouxuan:before{width: 16px; height: 16px;background-position: -210px 0px}
+    .goods-main  .tbody .good-info{display: inline-block}
+    .goods-main  .tbody .good-info img{width: 80px;height: 80px;margin-top: 8px}
+    .tbody ul li .good-classFly,.tbody ul li .good-price,.tbody ul li .status{position: relative;top: 50%;left: 50%;transform: translate(-50%, -50%);width: fit-content;}
+    .goods-main  .tbody .good-name{margin-left: 8px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;width: 90px;}
+    .goods-main  .tbody .good-handle{text-align: left;padding: 0 7px;line-height: 35px;position: absolute;width: 180px;top: 0;left: 30px;right: 0;bottom: 0;margin: auto;height: fit-content}
+    .goods-main  .tbody .btn{padding: 0 11px;margin-right: 8px;height: 24px;background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;display: inline-block;line-height: 24px;color: #e15616;}
+     .goods-main  .tbody .btn.none{background-color: #E1E1E1;border: 1px solid #FFFFFF;color: #FFFFFF;}
+     .goods-container .good-footer{width: 95%;height: 56px;float: left;padding: 20px}
+    .goods-container .good-footer .footer-left{float: left;}
+    .goods-container .good-footer .checkbox {line-height: 70px;}
+    .goods-container .good-footer .checkbox .box{line-height: 74px;float: left;}
+    .goods-container .good-footer .checkbox span{display: inline-block;float: left;margin-left: 10px;}
+    .goods-container .good-footer .footer-right{float: right;margin-top: 20px;}
+    .goods-container .good-footer .footer-right .btn{width: 90px;height: 36px;display: block;line-height: 36px;text-align: center;font-size: 14px;border-radius: 2px;color: #FFF;}
+    .goods-container .good-footer .footer-right .btn.icon-weigouxuan{border: solid 1px #9aa5b5;color: #22272e;opacity: .5;}
+    .goods-container .good-footer .footer-right .btn.icon-gouxuan{background-color: #e15616;}
+    /*.bg-gouxuan{background-color: #f0f3f7;}*/
+    .good-price p {display: inline-block}
+    .priceTag{position: absolute;    top: 60px; right: 45px}
+    .pageWrap{width: 968px;margin: auto;padding: 32px 0}
+    .empty{background: #fff;margin-top: 10px;}
+    .navLayout{min-height: auto;}
+    .styleborder{border-top: 1px solid #e2e7ef}
+    .checkbox.checklist{line-height: 90px}
   }
 
 /*移动*/

+ 27 - 13
src/main/resources/static/css/user-center/message.css

@@ -7,20 +7,26 @@ li{list-style:none}
     .navLayout{min-height: 500px;}
     .content .empty{background-color:#FFF;}
     .content{width: 100%;min-height: 370px;background-color: #FFFFFF;box-sizing: border-box;padding:0 20px 20px 20px;box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.07);margin:0 0 10px 0;}
-    .content .title{width: 100%;height: 56px;border-bottom: solid 1px #e2e7ef;line-height: 56px;color: #22272e;font-size: 16px;}
+    .content .title{width: 100%;height: 56px;border-bottom: solid 1px #e2e7ef;box-sizing: border-box;padding:9px 0;}
+    .content .title .tabs-item{width:18%;height: 38px;float: left;}
+    .content .title .tabs-item a{width:100%;height: 100%;display: block;font-size: 16px;line-height: 38px;text-align: left;color: #9aa5b5;}
+    .content .title .tabs-item.active a{color: #E15616;}
     .content .section .section-top{width: 100%;height: 54px;float: left;box-sizing: border-box;padding: 9px 0;border-bottom: solid 1px #e2e7ef;}
     .content .section .section-top .cheacked{width: 100px;height: 36px;float: left;cursor: pointer;}
+    .content .section .section-top .cheacked .check{margin: 8px 15px;}
     .content .section .section-top .cheacked .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px}
     .content .section .section-top .cheacked span{display: inline-block;line-height: 36px;font-size: 16px;color: #22272e;}
     .content .section .section-top .button{width: 250px;height: 36px;float: right;}
     .content .section .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffe6dc;line-height: 34px;text-align: center;font-size: 14px;color: #E15616;border: solid 1px #e15616;}
     .content .section .section-content{width: 100%;height: auto;float: left;box-sizing: border-box;padding: 10px 0;}
-    .content .section .section-content .new-list{width: 100%;height: 36px;float: left;box-sizing: border-box;}
-    .content .section .section-content .new-list .text{line-height: 36px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;float: left;}
+    .content .section .section-content .new-list{width: 100%;height:80px;float: left;box-sizing: border-box;padding: 15px 0;}
+    .content .section .section-content .new-list .text{line-height: 36px;float: left;}
     .content .section .section-content .new-list .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px;line-height: 16px;cursor: pointer;}
-    .content .section .section-content .new-list .text p{width: 600px;line-height: 36px;font-size: 14px;color: #627386;float: left;overflow: hidden;text-overflow: ellipsis;}
+    .content .section .section-content .new-list .text p{width: 700px;height: 48px;line-height: 24px;font-size: 14px;color: #627386;float: left;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;}
+    .content .section .section-content .new-list .text p .link{color: #E15621;cursor: pointer;text-decoration: underline;}
+    .content .section .section-content .new-list .text p .link:hover{text-decoration: underline;}
     .content .section .section-content .new-list .time{line-height: 36px;font-size: 14px;color: #b8bfca;float: right;}
-    .check{float: left;margin: 8px}
+    .check{float: left;margin: 4px 15px;}
     .notclick{opacity: .6}
 }
 
@@ -28,23 +34,31 @@ li{list-style:none}
 * 移动端
 */
 @media screen and (max-width:768px){
-    .content{width: 100%;background-color: #FFFFFF;box-sizing: border-box;padding:3.3vw;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);margin:0 0 2.7vw 0;}
-    .content .title{width: 100%;height: 10vw;line-height: 10vw;color: #22272e;font-size: 3.4vw;}
-    .section-top{width: 100%;height: 54px;float: left;box-sizing: border-box;padding: 10px;background: #fff}
+    footer{display: none;}
+    .content{width: 100%;height: auto;background-color: #FFFFFF;box-sizing: border-box;padding:3.3vw;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);margin:0 0 2.7vw 0;padding-bottom:10px;}
+    .content .title{width: 100%;height: auto;line-height: 8.4vw;color: #22272e;font-size: 3.4vw;}
+    .content .title .tabs-item.active a{color: #E15616;}
+    .content .title .tabs-item{display:inline-block;height:8.4vw;border:1px solid #b8bfca;line-height:8.4vw;padding:0 3vw;border-radius:4.2vw;margin-right:4vw;margin-bottom: 2vw;}
+    .content .title .tabs-item a{color:#627386}
+    .content .title .tabs-item a span{color:#e15616}
+    .content .title .tabs-item.active{background-color:#ffe6dc;border-color:#e15616;color:#e15616}
+    .header-tabs .tabs-item.active a{color:#e15616}
+    .section-top{width: 100%;height: 54px;box-sizing: border-box;padding: 10px;background: #fff;position: fixed;bottom: 0;left: 0;z-index: 999;box-shadow: 0px .8vw 1.6vw 0px rgba(0, 0, 0, 0.07);}
     .section-top .cheacked{width: 100px;height: 36px;float: left;cursor: pointer;}
     .section-top .cheacked .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px 15px}
     .section-top .cheacked span{display: inline-block;line-height: 36px;font-size: 16px;color: #22272e;}
     .section-top .button{height: 36px;float: right;}
-    .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffd8d8;
-    line-height: 34px;text-align: center;font-size: 14px;color: #f94b4b;border: solid 1px #f94b4b;border-radius: 6.4vw}
+    .section-top .button .btn{width: 90px;height: 34px;float: right;margin-left: 16px;border-radius: 2px;background-color: #ffd8d8;line-height: 34px;text-align: center;font-size: 14px;color: #f94b4b;border: solid 1px #f94b4b;border-radius: 6.4vw}
     .section-top .button .btn.Read{border: .27vw solid #1890f9;color: #1890f9;background: #e0f1ff}
     .content .section .section-content{width: 100%;height: auto;float: left;box-sizing: border-box;padding: 10px 0;}
-    .content .section .section-content .new-list{width: 100%;box-sizing: border-box;}
-    .content .section .section-content .new-list .text{line-height: 36px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;float: left;}
+    .content .section .section-content .new-list{width: 100%;box-sizing: border-box;float: left;margin-bottom: 4vw;}
+    .content .section .section-content .new-list .text{line-height: 36px;}
     .content .section .section-content .new-list .icon{width: 16px;height: 16px;display: block;float: left;padding: 10px;line-height: 16px;cursor: pointer;}
-    .content .section .section-content .new-list .text p{line-height: 36px;font-size: 3.4vw;color: #627386;float: left;width: 77.6vw;overflow: hidden;word-wrap: normal;vertical-align: middle;text-overflow: ellipsis}
+    .content .section .section-content .new-list .text p{line-height: 6vw;font-size: 3.4vw;color: #627386;float: left;width: 77.6vw;}
+    .content .section .section-content .new-list .text p .link{color: #E15621;cursor: pointer;text-decoration: underline;}
     .content .section .section-content .new-list .time{font-size: 3.1vw;color: #b8bfca;float: left;padding-left: 37px}
     input.check {width: 3.5vw;height: 3.5vw;line-height: 3.5vw;vertical-align: top;margin: 3vw 3vw 1.3vw 3.3vw;float: left;}
     .notclick{pointer-events: none;opacity: .6}
+    .empty{padding: 50vw 0}
 }
 

BIN
src/main/resources/static/img/base/H5-icon.png


BIN
src/main/resources/static/img/base/WEB-icon.png


BIN
src/main/resources/static/img/base/logo.png


BIN
src/main/resources/static/img/base/logo_m.png


BIN
src/main/resources/static/img/common/icon-notice-emptys@2x.png


+ 6 - 3
src/main/resources/static/js/account/login.js

@@ -106,7 +106,8 @@ var loginPage = new Vue({
                             token: response.data.token,
                             unionId:response.data.unionId,
                             firstClubType:response.data.firstClubType,
-                            vipFlag: response.data.vipFlag
+                            vipFlag: response.data.vipFlag,
+                            listingFee:response.data.listingFee
                         };
                         _self.setStorages( _self.userData);
                         // 登录成功页面跳转
@@ -135,7 +136,8 @@ var loginPage = new Vue({
                             userIdentity: response.data.userIdentity,
                             permission: response.data.userPermission,
                             token: response.data.token,
-                            unionId:response.data.unionId
+                            unionId:response.data.unionId,
+                            listingFee:response.data.listingFee
                         };
                         _self.setStorages( _self.userData);
                         setTimeout(function(){
@@ -217,7 +219,8 @@ var loginPage = new Vue({
                             permission: response.data.userPermission,
                             token: response.data.token,
                             vipFlag: response.data.vipFlag,
-                            firstClubType: response.data.firstClubType
+                            firstClubType: response.data.firstClubType,
+                            listingFee:response.data.listingFee
                         };
                         _self.setStorages( _self.userData);
                         // 登录成功页面跳转

+ 1 - 1
src/main/resources/static/js/account/register-supplier.js

@@ -60,7 +60,7 @@ var registerPage = new Vue({
             town: ''
         },
         rule:{
-            name: '^[a-zA-Z\\u4e00-\\u9fa5]{2,}$',
+            name: '^[\u4E00-\u9FA5A-Za-z0-9_\\\\(\\)(\\)]+$',
             phone: '^\\d{6,12}$',
             code: '^\\d{6}$',
             license: '^[a-zA-Z0-9_]{18}$',

+ 14 - 13
src/main/resources/static/js/activity/attestation.js

@@ -9,6 +9,13 @@ new Vue({
         ],
         //认证通合作伙伴
         suppileData: [
+            {
+                logo: '/img/activity/attestation/9.png',
+                name: 'Ross',
+                entryRoute: '/12/ross',
+                secondRoute: '',
+                redirect: ''
+            },
             {
                 logo: '/img/activity/attestation/1.jpg',
                 name: '上海品辉医疗科技有限公司',
@@ -28,16 +35,16 @@ new Vue({
                 secondRoute: '',
                 redirect: ''
             },
+        ],
+        // 认证通快捷入口
+        firstEntryList: [
             {
                 logo: '/img/activity/attestation/9.png',
-                name: 'Ross',
+                name: 'ROS\'S机构认证',
                 entryRoute: '/12/ross',
                 secondRoute: '',
                 redirect: ''
             },
-        ],
-        // 认证通快捷入口
-        firstEntryList: [
             {
                 logo: '/img/activity/attestation/shuishu.jpg',
                 name: '水素水设备认证',
@@ -51,17 +58,10 @@ new Vue({
                 secondRoute: '',
                 redirect: ''
             },
-            {
-                logo: '/img/activity/attestation/9.png',
-                name: 'ROS\'S机构认证',
-                entryRoute: '/12/ross',
-                secondRoute: '',
-                redirect: ''
-            },
         ]
     },
     mounted() {
-        this.initSwiper1()
+        // this.initSwiper1()
         this.initSwiper2()
     },
     methods: {
@@ -108,8 +108,9 @@ new Vue({
                 this.popupVisiable = true;
                 return false
             }
+            var zplmDomain = $('#zplmDomain').val()
             // 将要跳转的链接
-            var baseUrl = 'https://zp.caimei365.com' + data.entryRoute + data.secondRoute
+            var baseUrl = zplmDomain + data.entryRoute + data.secondRoute
             window.open(baseUrl, '_blank')
         }
     }

+ 25 - 24
src/main/resources/static/js/article/common.js

@@ -10,20 +10,20 @@ var articleSide = new Vue({
         adList: [],
     },
     methods: {
-        getLabels: function(){
-            var _self = this;
-            $.getJSON("/article/labels", function (r) {
-                if (r.code === 0 && r.data) {
-                    _self.labelList = r.data;
-                    _self.labelList.map(function(item){
-                        if (_self.labelId === item.id) {
-                            _self.labelTxt = item.name;
-                            $("#labelTxt").text(_self.labelTxt);
-                        }
-                    })
-                }
-            });
-        },
+        // getLabels: function(){
+        //     var _self = this;
+        //     $.getJSON("/article/labels", function (r) {
+        //         if (r.code === 0 && r.data) {
+        //             _self.labelList = r.data;
+        //             _self.labelList.map(function(item){
+        //                 if (_self.labelId === item.id) {
+        //                     _self.labelTxt = item.name;
+        //                     $("#labelTxt").text(_self.labelTxt);
+        //                 }
+        //             })
+        //         }
+        //     });
+        // },
         getRecommend: function(typeId, pageNum){
             var _self = this;
             $.getJSON("/article/recommend",{
@@ -35,15 +35,16 @@ var articleSide = new Vue({
                 }
             });
         },
-        getAds: function(){
-            var _self = this;
-            $.getJSON("/article/ads", function (r) {
-                if (r.code === 0 && r.data) {
-                    _self.adList = r.data;
-                }
-            });
-        },
+        // getAds: function(){
+        //     var _self = this;
+        //     $.getJSON("/article/ads", function (r) {
+        //         if (r.code === 0 && r.data) {
+        //             _self.adList = r.data;
+        //         }
+        //     });
+        // },
         clickAD: function(id, link){
+            debugger;
             $.getJSON("/article/ad/click", {id: id}, function (r) {
                 window.open(link);
             });
@@ -53,9 +54,9 @@ var articleSide = new Vue({
         var _self = this;
         this.typeId = $("#typeId").val()*1;
         this.labelId = $("#labelId").val()*1;
-        this.getLabels();
+        // this.getLabels();
         if (isPC) {
-            this.getAds();
+            // this.getAds();
             this.getRecommend(this.typeId, 1);
             //换一批15秒请求一次
             setInterval(function(){

+ 13 - 13
src/main/resources/static/js/article/detail.js

@@ -25,25 +25,25 @@ var articleRelated = new Vue({
         related: {}
     },
     methods: {
-        getRelatedList: function () {
-            var _self = this;
-            if(this.infoId ===0){return;}
-            $.getJSON("/article/related",{
-                id: this.infoId,
-                labels: this.articleLabels
-            }).done(function (r) {
-                if (r.code === 0 && r.data) {
-                    _self.related = r.data;
-                }
-            });
-        },
+        // getRelatedList: function () {
+        //     var _self = this;
+        //     if(this.infoId ===0){return;}
+        //     $.getJSON("/article/related",{
+        //         id: this.infoId,
+        //         labels: this.articleLabels
+        //     }).done(function (r) {
+        //         if (r.code === 0 && r.data) {
+        //             _self.related = r.data;
+        //         }
+        //     });
+        // },
 
     },
     created: function () {
         this.infoId = $("#articleId").val() ? $("#articleId").val()*1 : 0;
         this.articleLabels = $("#articleLabels").val()?$("#articleLabels").val():"";
         // 获取相关阅读
-        this.getRelatedList();
+        // this.getRelatedList();
     },
     mounted: function () {
         var _self = this;

+ 2 - 2
src/main/resources/static/js/article/list.js

@@ -162,8 +162,8 @@ var articleList = new Vue({
                 var scrollTop =  $(this).scrollTop();
                 var documentHeight = $(document).height();
                 var windowHeight = $(this).height() ;
-                if( scrollTop + windowHeight == documentHeight ){
-                    console.log("到底部了!");
+                // alert(scrollTop + windowHeight == documentHeight)
+                if( scrollTop + windowHeight + 100 > documentHeight ){
                     //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
                     var totalPage = Math.ceil(_self.listRecord / _self.params.size)?Math.ceil(_self.listRecord / _self.params.size):1;
                     var next = _self.params.num+1;

+ 62 - 5
src/main/resources/static/js/base.js

@@ -8,6 +8,7 @@ var GLOBAL_SHOP_ID = 0;  // 供应商Id
 var GLOBAL_VIP_FLAG = 0; // 超级会员标记
 var GLOBAL_CLUB_TYPE = 0; // 会员类型 1 医美机构  2 胜美机构
 var IDENTITY = 0; // 用户标记
+var isForbidTabs = true; //控制菜单
 if(localStorage.getItem('userInfo')){
     globalUserData = JSON.parse(localStorage.getItem('userInfo'));
     GLOBAL_TOKEN = globalUserData.token;
@@ -24,6 +25,9 @@ if(localStorage.getItem('userInfo')){
     }else if(GLOBAL_CLUB_TYPE == 1){
         IDENTITY = 5;
     }
+    if(globalUserData.listingFee === 1){
+        isForbidTabs = false;
+    }
 } else {
     var pathname = window.location.pathname;
     var weChatLoginFlag = (Number(getBaseCookie("weChatAutoLogin"))===1 || Number(getBaseCookie("weChatAutoLogin"))===2);
@@ -55,6 +59,7 @@ var globalHead = new Vue({
             productCount: 0,
             priceTotal: 0
         },
+        noticeNum:0,
         shopId:'',
         userIdentity:'',
         articleType: '',
@@ -139,6 +144,45 @@ var globalHead = new Vue({
                 }
             });
         },
+        getAuthClubCount:function (clubId) {
+            var _self = this;
+            PublicApi.getAuthClubCount({commonId: clubId},function(response){
+                if (response.code === 0 && response.data) {
+                    var data = response.data;
+                    if(data.count>99){
+                        _self.noticeNum = '99+'
+                    }else{
+                        _self.noticeNum = data.count
+                    }
+                    console.log('noticeNum',_self.noticeNum)
+                }else{
+                    console.log('获取机构通知消息数量异常')
+                }
+            });
+        },
+        getAuthShopCount:function (shopId) {
+            var _self = this;
+            PublicApi.getAuthShopCount({commonId: shopId},function(response){
+                if (response.code === 0 && response.data) {
+                    var data = response.data;
+                    if(data.count>99){
+                        _self.noticeNum = '99+'
+                    }else{
+                        _self.noticeNum = data.count
+                    }
+                }else{
+                   console.log('获取供应商通知消息数量异常')
+                }
+            });
+        },
+        goMsgLinkFn:function (url) {
+            var _self = this;
+            if(_self.loginStatus){
+                window.location.href= url;
+            }else{
+                window.location.href='/login.html';
+            }
+        },
         goCartsLinkFn:function(){
             var _self = this;
             if(_self.loginStatus){
@@ -182,17 +226,30 @@ var globalHead = new Vue({
         }
     },
     created: function () {
+        var _self = this;
         // 判断登录状态
         if (globalUserData.token) {
             this.loginStatus = true;
             this.userData = globalUserData;
-            var userId = this.userData.userId;
-            if(userId){
-                var _self = this;
-                // 获取头部购物车数据
+            if(this.userData.userIdentity === 3){
+                // 获取头部通知消息数量
                 setTimeout(function(){
-                    _self.getHeadCart(userId);
+                    _self.getAuthShopCount(_self.userData.shopId);
+                }, 1000);
+                // 获取头部通知消息数量
+                var timerShopCount = setInterval(function(){
+                    _self.getAuthShopCount(_self.userData.shopId);
+                }, 1000*120);
+            }else{
+                setTimeout(function(){
+                    // 获取头部购物车数据
+                    _self.getHeadCart(_self.userData.userId);
+                    _self.getAuthClubCount(_self.userData.clubId);
                 }, 1000);
+                // 获取头部通知消息数量
+                var timerClubCount = setInterval(function(){
+                    _self.getAuthClubCount(_self.userData.clubId);
+                }, 1000*120);
             }
         }
         // 信息中心

+ 12 - 12
src/main/resources/static/js/common/serviceapi/product.service.js

@@ -28,18 +28,18 @@ var ProductApi = {
                 callback(res);
             });
         },
-        GetProductDdtailsImages: function (params, callback) {//获取商品图片
-            Http.AjaxService({
-                url:'/commodity/product/detail/images',
-                type:'get',
-                data:params,
-                json:true,
-                isHost:true
-            })
-            .then(function(res){
-                callback(res);
-            });
-        },
+        // GetProductDdtailsImages: function (params, callback) {//获取商品图片
+        //     Http.AjaxService({
+        //         url:'/commodity/product/detail/images',
+        //         type:'get',
+        //         data:params,
+        //         json:true,
+        //         isHost:true
+        //     })
+        //     .then(function(res){
+        //         callback(res);
+        //     });
+        // },
         GetProductDdtailsPrice: function (params, callback) {//获取商品价格
             Http.AjaxService({
                 url:'/commodity/price/detail',

+ 44 - 0
src/main/resources/static/js/common/serviceapi/supplier.service.js

@@ -619,5 +619,49 @@ var SupplierApi = {
                 callback(res);
             });
         },
+        getAuthShopMessageCount: function (params, callback) {//供应商消息通知中心未读消息数量
+            Http.AjaxService({
+                url: '/user/login/auth/shopMessageCount',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        getAuthShopMessageList: function (params, callback) {//供应商消息通知列表
+            Http.AjaxService({
+                url: '/user/login/auth/shopMessageList',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        authDeleteMessage: function (params, callback) {//删除通知消息
+            Http.AjaxService({
+                url: '/user/login/auth/deleteMessage',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        authUpdateRead: function (params, callback) {//标记通知消息
+            Http.AjaxService({
+                url: '/user/login/auth/updateRead',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
 
 };

+ 45 - 1
src/main/resources/static/js/common/serviceapi/user.service.js

@@ -374,5 +374,49 @@ var UserApi = {
             }).then(function (res) {
                 callback(res);
             });
-        }
+        },
+        getAuthClubMessageCount: function (params, callback) {//机构消息通知中心未读消息数量
+            Http.AjaxService({
+                url: '/user/login/auth/ClubMessageCount',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        getAuthClubMessageList: function (params, callback) {//机构消息通知列表
+            Http.AjaxService({
+                url: '/user/login/auth/ClubMessageList',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        authDeleteMessage: function (params, callback) {//删除通知消息
+            Http.AjaxService({
+                url: '/user/login/auth/deleteMessage',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        authUpdateRead: function (params, callback) {//标记通知消息
+            Http.AjaxService({
+                url: '/user/login/auth/updateRead',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
 };

+ 24 - 0
src/main/resources/static/js/common/serviceapi/utils.service.js

@@ -547,6 +547,30 @@ var PublicApi = {
                 .then(function(res){
                     callback(res)
                 });
+        },
+        getAuthClubCount:function(params,callback){ // 获取机构未读消息数量
+            Http.AjaxService({
+                url:'/user/login/auth/ClubCount',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+                .then(function(res){
+                    callback(res)
+                });
+        },
+        getAuthShopCount:function(params,callback){ // 获取供应商未读消息数量
+            Http.AjaxService({
+                url:'/user/login/auth/ShopCount',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+                .then(function(res){
+                    callback(res)
+                });
         }
 
 };

+ 1 - 1
src/main/resources/static/js/document/beauty-archive.js

@@ -140,7 +140,7 @@ var beautyArchive = new Vue({
                 window.location.href = '/404.html'
             }
             if (product.redirectType === 1) {
-                url = '/product-' + product.productId + '.html?open=caimei365';
+                url = '/product-' + product.productId +'-'+globalUserData.userId+ '.html?open=caimei365';
             } else if (product.redirectType === 2) {
                 url = '/document/archive-detail.html' + '?id=' + product.archiveId;
             } else {

+ 2 - 1
src/main/resources/static/js/product/alliance-page.js

@@ -100,9 +100,10 @@ var zplm = new Vue({
         // 获取授权信息
         fetchProductAuthInfo: function fetchProductAuthInfo() {
             var that = this;
+            var zplmServer = $('#zplmServer').val()
             var data = {productId:that.productId}
             $.ajax({
-                url: 'https://zplma.caimei365.com/wx/auth/product/details',
+                url: zplmServer + '/wx/auth/product/details',
                 data: data,
                 xhrFields: {//此处为跨域后台保持session一致,切勿删除!!!
                     withCredentials: true

+ 99 - 49
src/main/resources/static/js/product/detail.js

@@ -135,41 +135,41 @@ var productDetail = new Vue({
                 }
             });
         },
-        getImages: function () {
-            var _self = this;
-            if (!this.productId) {
-                return;
-            }
-            ProductApi.GetProductDdtailsImages({productId: _self.productId}, function (response) {
-                if (response.code === 0 && response.data) {
-                    _self.images = response.data;
-                    setTimeout(function () {
-                        if (isPC) {
-                            var magnifier = new ImageMagnifier(
-                                '#imgShown .smallImage li',
-                                '#imgShown .bigImage',
-                                '#imgShown .zoomImage',
-                                '#imgShown .mask',
-                                '#imgShown .zoom',
-                                "on"
-                            ).init();
-                        } else {
-                            var swiper = new Swiper('#swiperImage', {
-                                loop: true,
-                                autoplay: {
-                                    delay: 2000,
-                                    disableOnInteraction: false
-                                },
-                                pagination: {
-                                    el: '.swiper-pagination',
-                                    type: 'fraction'
-                                }
-                            });
-                        }
-                    }, 500);
-                }
-            });
-        },
+        // getImages: function () {
+        //     var _self = this;
+        //     if (!this.productId) {
+        //         return;
+        //     }
+        //     ProductApi.GetProductDdtailsImages({productId: _self.productId}, function (response) {
+        //         if (response.code === 0 && response.data) {
+        //             _self.images = response.data;
+        //             setTimeout(function () {
+        //                 if (isPC) {
+        //                     var magnifier = new ImageMagnifier(
+        //                         '#imgShown .smallImage li',
+        //                         '#imgShown .bigImage',
+        //                         '#imgShown .zoomImage',
+        //                         '#imgShown .mask',
+        //                         '#imgShown .zoom',
+        //                         "on"
+        //                     ).init();
+        //                 } else {
+        //                     var swiper = new Swiper('#swiperImage', {
+        //                         loop: true,
+        //                         autoplay: {
+        //                             delay: 2000,
+        //                             disableOnInteraction: false
+        //                         },
+        //                         pagination: {
+        //                             el: '.swiper-pagination',
+        //                             type: 'fraction'
+        //                         }
+        //                     });
+        //                 }
+        //             }, 500);
+        //         }
+        //     });
+        // },
         getProductDetails: function () {
             var _self = this;
             ProductApi.GetProductDdtails({userId: GLOBAL_USER_ID, productId: _self.productId}, function (response) {
@@ -317,18 +317,18 @@ var productDetail = new Vue({
                 }
             });
         },
-        getParameters: function () {//获取商品参数
-            var _self = this;
-            if (!this.productId) {
-                return;
-            }
-            ProductApi.GetProductDdtailsParameter({productId: _self.productId}, function (response) {
-                if (response.code === 0 && response.data) {
-                    _self.parameters = response.data;
-                    console.log(_self.parameters)
-                }
-            });
-        },
+        // getParameters: function () {//获取商品参数
+        //     var _self = this;
+        //     if (!this.productId) {
+        //         return;
+        //     }
+        //     ProductApi.GetProductDdtailsParameter({productId: _self.productId}, function (response) {
+        //         if (response.code === 0 && response.data) {
+        //             _self.parameters = response.data;
+        //             console.log(_self.parameters)
+        //         }
+        //     });
+        // },
         toggleThisLadder: function (event) {
             var el = event.currentTarget;
             if ($(el).hasClass("on")) {
@@ -804,7 +804,7 @@ var productDetail = new Vue({
         this.productId = this.couponParam.productId = this.listQuery.productId = $("#productId").val();
         this.userId = this.couponParam.userId = this.listQuery.userId = GLOBAL_USER_ID;
         this.productStock = $("#productStock").val();
-        this.getImages();
+        // this.getImages();
         // identity: 0个人,1协销,2会员机构,3供应商,4普通机构
         // visibility:3:所有人可见,2:普通机构可见,1:会员机构可见 4:仅医美机构可见
         var visible = $("#productVisibility").val() * 1;
@@ -821,7 +821,7 @@ var productDetail = new Vue({
         this.userId = this.couponParam.userId = GLOBAL_USER_ID;
         this.getProductDetails();
         this.getProductPrice();
-        this.getParameters();
+        // this.getParameters();
         this.queryProductDetilsCoupons();
         this.getCommodityCombinationList();
         console.log('GLOBAL_CLUB_TYPE',GLOBAL_CLUB_TYPE)
@@ -830,5 +830,55 @@ var productDetail = new Vue({
         //     ,titCell:".tabTit span"
         //     ,trigger: "click"
         // });
+        setTimeout(function () {
+            if (isPC) {
+                var magnifier = new ImageMagnifier(
+                    '#imgShown .smallImage li',
+                    '#imgShown .bigImage',
+                    '#imgShown .zoomImage',
+                    '#imgShown .mask',
+                    '#imgShown .zoom',
+                    "on"
+                ).init();
+            } else {
+                var swiper = new Swiper('#swiperImage', {
+                    loop: true,
+                    autoplay: {
+                        delay: 2000,
+                        disableOnInteraction: false
+                    },
+                    pagination: {
+                        el: '.swiper-pagination',
+                        type: 'fraction'
+                    }
+                });
+            }
+        }, 500);
+        setTimeout(function () {
+            if (isPC) {
+                $('#productRecommend').slide({
+                    mainCell: ".swiper-wrapper",
+                    titCell: ".swiper-pagination span",
+                    effect: "leftLoop",
+                    interTime: 3000,
+                    autoPlay: true,
+                    scroll: 7,
+                    vis: 7,
+                    trigger: "mouseover"
+                });
+            } else {
+                var swiper = new Swiper('#productRecommend', {
+                    slidesPerView: 3,
+                    spaceBetween: 0,
+                    autoplay: {
+                        delay: 3000,
+                        disableOnInteraction: false
+                    },
+                    pagination: {
+                        el: '.swiper-pagination'
+                    }
+                });
+            }
+        }, 500);
     }
 });

+ 0 - 131
src/main/resources/static/js/product/qualityauthorize.js

@@ -1,131 +0,0 @@
-/**
- *Created by ZHJY on 2021/03/12.
- */
-var qualityAuthorize = new Vue({
-    el:"#qualityAuthorize",
-    data: {
-        //是否显示声明对话框
-        showStatement:false,
-        //是否为手机屏幕
-        isPC:window.isPC,
-        //产品id
-        productId:'5',
-        //产品参数对象
-        parameters:null,
-        //声明内容
-        statementContent:'',
-        //控制授权证书是否弹出
-        isShowSqBookModal:false,
-        sqBookModal:'',
-        cmContent:'',
-        isCmComtent:false,
-        message:'',
-        isLoading:false,
-        showQrcodeImage:true
-    },
-    filters:{
-        snCode:function (code) {
-            return code.replace(/^(\w{2})\w+(\w{4})$/,"$1******$2");
-        }
-    },
-    methods: {
-        //弹窗声明框
-        showStatementModel:function(){
-            this.showStatement = true
-        },
-        //关闭声明框
-        closeStatementModel:function(){
-            this.showStatement = false
-        },
-        //获取商品参数对象
-        initParams:function(){
-           var _that = this;
-            var NODE_ENV_BASE_URL = $("#coreServer").val();
-            var data = {productId:_that.productId}
-            $.ajax({
-                url: NODE_ENV_BASE_URL + '/wx/auth/product/details',
-                data: data,
-                xhrFields: {//此处为跨域后台保持session一致,切勿删除!!!
-                    withCredentials: true
-                },
-                type: 'GET',
-                dataType: "json",
-                async: false,
-                // contentType: contentType,
-                contentType: 'application/json;charset=UTF-8',
-            }).then(res =>{
-                if(res.code === 0){
-                    _that.parameters = res.data;
-                    console.log(_that.parameters)
-                    _that.isLoading = true;
-                }else{
-                    _that.message = res.msg;
-                    _that.isLoading = true;
-                }
-            })
-           // ProductApi.GetAuthProductDeatil({productId:_that.productId},function(res){
-           //      if(res.code === 0){
-           //          _that.parameters = res.data;
-           //          console.log(_that.parameters)
-           //          _that.isLoading = true;
-           //      }else{
-           //          _that.message = res.msg;
-           //          _that.isLoading = true;
-           //      }
-           //      // else{
-           //      //     //如果该产品不存在,跳转到404页面
-           //      //     window.location.href = '/404.html'
-           //      // }
-           // });
-        },
-        // 代理声明弹出框
-        openStatementDialog:function(flag){
-            if(flag === 1){
-            //代理声明
-                this.isCmComtent = false;
-                this.statementContent = this.parameters.statementContent
-            }else{
-            //采美声明
-                this.isCmComtent = true;
-                this.cmContent = `
-                <p>目前,在市面上经常发现不少伪劣医疗美容产品/仪器,让众多的消费者无法辨别产品/仪器的真假,并且给品牌方及品牌代理商造成不少困扰</p>
-                <p>为了提高消费者对产品/仪器的可信度。由采美信息技术有限公司发起并提供技术支持,且得到各品牌与代理商的认可及授权后,共同打造正品
-                联盟平台。将产品/仪器的品牌授牌信息纳入到正品联盟平台。消费者可通过授权牌上二维码扫码得知该产品/仪器的品牌授权信息。通过这些信
-                息即可得知产品/仪器的真假,是否为品牌以及品牌代理商授权过的正品,从而解决消费者与品牌/品牌代理商的困扰。</p>
-                `;
-            }
-            this.showStatement = true;
-        },
-        //授权证书弹出
-        showSqBookModal:function(){
-            this.isShowSqBookModal = true
-        },
-        //授权证书影藏
-        hideSqBookModal:function(){
-           this.isShowSqBookModal = false;
-        },
-        //关闭微信二维码
-        handleColseQrCodeImage: function(){
-            this.showQrcodeImage = false
-        }
-    },
-    // created:function() {
-    //     var _that = this;
-    //     Vue.nextTick(function () {
-    //         _that.initParams()
-    //     })
-    // }
-    mounted:function () {
-        setBaseCookie("weChatAutoLogin", 2);
-        this.sqBookModal = $('#sq-book-modal');
-        console.log(1);
-        //根据地址获取产品id
-        var _that = this;
-        var pathname = window.location.pathname;
-        this.productId = pathname.split('-')[1].split('.')[0];
-        this.initParams();
-        setTimeout(function () {
-            _that.isShowSqBookModal = true;
-        }, 500);
-    }
-});

+ 3 - 0
src/main/resources/static/js/supplier-center/dashboard.js

@@ -28,6 +28,9 @@
                      _this.userInfo = res.data.user;
                      _this.promotions = res.data.promotions;
                      _this.rankingList = res.data.salesRankingList;
+                     if(res.data.constraint === '0'){
+                         CAIMEI.Alert('您的供应商账号上架费将于30日后到期,到期后将无法发布和编辑商品,同时也会影响到其他采美提供的支持服务。请联系采美工作人员进行续费,联系电话0755-22907771 或15338851365', '确定', false);
+                     }
                      if (res.data.unReadMessageCount>99){
                          res.data.unReadMessageCount = '99+';
                          _this.msgFlag = true

+ 129 - 80
src/main/resources/static/js/supplier-center/message.js

@@ -1,12 +1,22 @@
 ;var helpSuggestion = new Vue({
     el: "#dashboard",
+    mixins: [noticeMixin],
     data: {
         btnLoading: false,
         isRequset:false,
-        listQuery:{
-            userId: '',
-            pageNum:1,
-            pageSize:10,
+        mssageTabBarIndex:0,
+        mssageTabBar: [
+            {messageType: '',text: '全部消息',bages:0},
+            {messageType: 2,text: '账户通知',bages:0},
+            {messageType: 3,text: '服务通知',bages:0},
+        ],
+        allCount:0,
+        listQuery: {
+            source: 1,
+            commonId: 0,
+            messageType: '',
+            pageNum: 1,
+            pageSize: 10
         },
         noMore:false,
         listRecord: 0,
@@ -18,7 +28,18 @@
         checklist:[],
         msgId:'',
     },
-     computed: {
+    filters: {
+        NumBadge: function (n) {//处理
+            var num = '';
+            if (n > 100) {
+                num = 99
+            } else {
+                num = n;
+            }
+            return num;
+        }
+    },
+    computed: {
         pageTotal: function () {
             var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
             return total > 0 ? total : 1;
@@ -39,10 +60,10 @@
         }
     },
     methods: {
-         toPagination: function (pageNum) {//点击切换分页
+        toPagination: function (pageNum) {//点击切换分页
             if (pageNum <= this.pageTotal) {
                 this.listQuery.pageNum = pageNum;
-                this. GetMyPcMymessageInfo();
+                this. getAuthShopMessageList();
             }
         },
         checkNum: function () {//输入跳转分页
@@ -52,110 +73,138 @@
                 this.pageInput = 1;
             }
         },
-        GetMyPcCenterInfo:function(){
+        changeTabsFn:function(index,messageType){//点击Tab切换消息通知
+            this.mssageTabBarIndex = index;
+            this.listQuery.messageType = messageType;
+            this.listQuery.pageNum = 1;
+            this.messagesList =[];
+            this. getAuthShopMessageList();
+        },
+        getAuthShopMessageCount:function(){//查询tabs数量
             var _self = this;
-           SupplierApi.GetMymessageList(_self.listQuery,function (response) {
-                if(response.code == 0){
+            SupplierApi.getAuthShopMessageCount({commonId:_self.listQuery.commonId},function (response) {
                 var data = response.data;
-                  if (data.results.length>0){
-                         _self.messagesList = data.results;
-                         _self.listRecord =  data.totalRecord;
-                         _self.requestFlag = true;
-                     }else {
-                     _self.requestFlag = false;
-                      _self.listRecord =  data.totalRecord;
-                     }
+                _self.mssageTabBar[0].bages = _self.allCount = data.count;
+                _self.mssageTabBar[1].bages = data.accountCount;
+                _self.mssageTabBar[2].bages = data.notificationCount;
+            })
+        },
+        getAuthShopMessageList:function(){
+            var _self = this;
+            SupplierApi.getAuthShopMessageList(_self.listQuery,function (response) {
+                if(response.code == 0){
+                    _self.isRequset = false;
+                    _self.isCheckedAll = false;
+                    var data = response.data;
+                    if (data.list.length>0){
+                        if(isPC){
+                            _self.messagesList = data.list.map(function (el) {
+                                el.check = false
+                                return el;
+                            });
+                        }else{
+                            var list = data.list.map(function (el) {
+                                el.check = false
+                                return el;
+                            });
+                            _self.messagesList = _self.messagesList.concat(list);
+                        }
+                        _self.listRecord =  data.total;
+                        _self.requestFlag = true;
+                    }else {
+                        _self.requestFlag = false;
+                        _self.listRecord =  data.total;
+                    }
                 }else{
                     CAIMEI.Alert(response.msg, '确定', false);
                     _self.requestFlag = false;
                 }
             })
         },
+        checkedContains(arr, val) {// 校验
+            return arr.some(item => item === val)
+        },
         checkedItemFn:function(item){ //单选
             var _self = this;
-                    if(event.target.checked){
-                         _self.checklist.push(item.messageID);
-                         _self.msgId = _self.checklist.toString()+','
-                    }else {
-                      _self.checklist.splice(_self.checklist.indexOf(item.messageID), 1);
-                      _self.msgId = _self.checklist.toString()+','
-                    }
-                    if(_self.checklist.length==_self.messagesList.length){
-                        _self.isCheckedAll=true;
-                    }else {
-                       _self.isCheckedAll=false;
-                    }
-
+            if(event.target.checked){
+                if(!_self.checkedContains(_self.checklist,item.id)){
+                    _self.checklist.push(item.id);
+                }
+            }else {
+                _self.checklist.splice(_self.checklist.indexOf(item.id), 1);
+            }
+            _self.msgId = _self.checklist.toString()+','
+            if(_self.checklist.length==_self.messagesList.length){
+                _self.isCheckedAll=true;
+            }else {
+                _self.isCheckedAll=false;
+            }
         },
         checkedAllFn: function () { //全選
             var _self = this;
             _self.isCheckedAll = !_self.isCheckedAll;
-                if (_self.isCheckedAll) {
-                    _self.checklist = [];
-                    _self.messagesList.forEach(function (item) {
-                            item.check = true;
-                             _self.checklist.push(item.messageID);
-                             _self.msgId = _self.checklist.toString()+','
-                        })
-                }else{
-                     _self.messagesList.forEach(function(item){
-                          item.check = false;
-                    });
-                    _self.checklist = [];
-                    _self.msgId = ''
-                }
+            if (_self.isCheckedAll) {
+                _self.checklist = [];
+                _self.messagesList.forEach(function (item) {
+                    item.check = true;
+                    _self.checklist.push(item.id);
+                    _self.msgId = _self.checklist.toString()+','
+                })
+            }else{
+                _self.messagesList.forEach(function(item){
+                    item.check = false;
+                });
+                _self.checklist = [];
+                _self.msgId = ''
+            }
         },
-       deleteMessageFn: function(){//删除消息
-             var _this =this;
-             if(_this.messagesList==''){
-                 CAIMEI.Alert('暂无消息', '确定', false);
-             }else if(_this.checklist.length==0) {
-                 CAIMEI.Alert('未选择任何消息', '确定', false);
-             }else {
-                PublicApi.deleteMessage({messageIds:_this.msgId},function (res) {
+        deleteMessageFn: function(){//删除消息
+            var _this =this;
+            if(this.allCount === 0){
+                CAIMEI.dialog('暂无消息');
+            }else if(_this.checklist.length==0){
+                CAIMEI.dialog('请勾选未读消息');
+            }else{
+                SupplierApi.authDeleteMessage({id:_this.msgId},function (res) {
                     if (res.code==0){
-                      CAIMEI.dialog('刪除成功');
-                      location.reload();
+                        CAIMEI.dialog('刪除成功');
+                        setTimeout(function (){
+                            _this.getAuthShopMessageList();
+                        },500)
                     }else {
-                      CAIMEI.Alert(res.msg, '确定', false);
+                        CAIMEI.Alert(res.msg, '确定', false);
                     }
                 })
-             }
+            }
         },
-       signMessageFn: function(){//标记为已读
-           var _this =this;
+        signMessageFn: function(){//标记为已读
+            var _this =this;
             console.log(_this.checklist);
             console.log(_this.msgId);
-            if(_this.messagesList==''){
-             CAIMEI.Alert('暂无消息', '确定', false);
+            if(this.allCount === 0){
+                CAIMEI.dialog('暂无未读消息');
             }else if(_this.checklist.length==0){
-              CAIMEI.Alert('未选择任何消息', '确定', false);
+                CAIMEI.dialog('请勾选未读消息');
             }else {
-                     PublicApi.markAsRead({messageIds:_this.msgId},function (res) {
+                SupplierApi.authUpdateRead({userType:2,Id:_this.msgId},function (res) {
                     if(res.code==0){
-                     CAIMEI.dialog('已读成功');
-                     location.reload();
+                        CAIMEI.dialog('标记已读成功');
+                        setTimeout(function (){
+                            _this.getAuthShopMessageCount();
+                            _this.getAuthShopMessageList();
+                        },500)
                     }else {
-                     CAIMEI.Alert(res.msg, '确定', false);
+                        CAIMEI.Alert(res.msg, '确定', false);
                     }
                 })
             }
-
-        },
-        showBadge:function(n){//处理标签
-            var num ='';
-            if(n>100){num = 99}else{num = n;}
-            return num;
-        },
-        toFixedFn:function(text){//处理小数点后两位数
-            return Number(text).toFixed(2);
-        },
-
+        }
     },
     mounted: function () {
         if(globalUserData){
-            this.listQuery.userId = globalUserData.userId;
-            this.GetMyPcCenterInfo();
+            this.listQuery.commonId = globalUserData.shopId;
+            this.getAuthShopMessageCount();
+            this.getAuthShopMessageList();
         }
          if(!isPC){
             $('footer').addClass("noneImportant");
@@ -172,7 +221,7 @@
                         if (_self.requestFlag){
                             _self.listQuery.pageNum = next;
                             // 获取列表数据
-                            _self.GetMyPcMymessageInfo();
+                            _self.getAuthShopMessageList();
                         }
                         _self.requestFlag = false;
                     }else{

+ 59 - 0
src/main/resources/static/js/supplier-center/mixins/noticeMixin.js

@@ -0,0 +1,59 @@
+'use strict';
+var noticeMixin = function () {// 通知消息
+    return {
+        data(){
+            return{}
+        },
+        computed: {
+
+        },
+        mounted() {
+            var _this = this;
+            window.handleUsersClick  = this.handleUsersClick;
+        },
+        methods: {
+            hanldeNoticeText(cell){ // 根据tab计算返回显示文案
+                const $EventFunction = {
+                    2:this.noticeUsersText(cell),
+                    3:this.noticeServeText(cell),
+                }
+                return $EventFunction[cell.messageType]
+            },
+            noticeUsersText(cell) { // 账户通知文案
+                const linkMap = {
+                    3:`<span data-type="${cell.shopMessType}" data-id="${cell.productId}" class="link" onclick="handleUsersClick($(this))" class="link">编辑商品</span>`,
+                    5:`<span data-type="${cell.shopMessType}" data-id="${cell.productId}" class="link" onclick="handleUsersClick($(this))" class="link">上传</span>`
+                }
+                const map = {
+                    1: '您的注册信息已审核通过,恭喜您成为采美平台供应商用户。您可以上架商品到采美商城进行出售了。',
+                    2: `恭喜您(微信昵称:${cell.content})成功成为【${cell.shopName}】的运营人员。`,
+                    3: `商品”${cell.productName}“,上架审核未通过,暂时不能上架采美商城,请重新${linkMap[cell.shopMessType]}进行提交。`,
+                    4: `商品”${cell.productName}“,新品展示审核未通过,未能展示在采美商城新品橱窗。`,
+                    5: `商品”${cell.productName}“,该商品的资质证书将于${cell.content}后失效,请及时${linkMap[cell.shopMessType]}新证书。`
+                }
+                return map[cell.shopMessType]
+            },
+            noticeServeText(cell){//服务通知文案处理
+                const map = {
+                    1: `您的供应商账号上架费将于${cell.content},到期后将无法发布和编辑商品,同时也会影响到其他采美提供的支持服务。请联系采美工作人员进行续费请联系采美工作人员进行续费请联系采美工作人员进行续费,联系电话0755-22907771 或15338851365`
+                }
+                return map[cell.shopTieredType]
+            },
+            handleUsersClick($event){
+                let shopMessType  = Number($event[0].attributes[0].value);
+                let productId  = Number($event[0].attributes[1].value);
+                if(shopMessType === 1 || shopMessType === 2 || shopMessType === 4){
+                    return;
+                }
+                const linkJumpMap = {
+                    3:`/supplier/release.html?productId=${productId}&type=edit`,
+                    5:`/supplier/release.html?productId=${productId}&type=edit`,
+                }
+                window.open(linkJumpMap[shopMessType]);
+            },
+            handleServeClick($event){
+                console.log('服务通知跳转');
+            }
+        }
+    };
+}();

+ 27 - 18
src/main/resources/static/js/supplier-center/shop/goods.js

@@ -35,6 +35,7 @@ var myGoods = new Vue({
         isCheckedAll:false,
         noMore:false,
         check:false,
+        isForbid:false
     },
     filters: {
         newvalidFlagFilters: function(value) {
@@ -93,6 +94,7 @@ var myGoods = new Vue({
                 if(response.code == 0){
                     _this.isRequest = true;
                     _this.featuredNum = response.data.featuredNum;
+                    _this.isForbid = response.data.listingFee === 1 ? true : false
                     var data = response.data.productPage;
                     if(data.results && data.results.length>0){
                         _this.productsList = data.results;
@@ -266,8 +268,9 @@ var myGoods = new Vue({
         },
         ItemDownshelf: function(pros){//下架商品
             var _this = this;
+            if(this.isForbid){ return }
             CAIMEI.Modal('确定下架该商品吗?','取消','确定',function () {
-                 SupplierApi.SupplierSoldOut({productIds:pros.productId},function (response) {
+                SupplierApi.SupplierSoldOut({productIds:pros.productId},function (response) {
                     if (response.code == 0){
                         CAIMEI.dialog('下架成功~');
                         _this.productsList = [];
@@ -281,53 +284,58 @@ var myGoods = new Vue({
         AddPushHotFn: function(pros){//添加主页推荐
             var _this = this;
             var num = 4-this.featuredNum;
+            if(this.isForbid){ return }
             CAIMEI.Modal('总共能添加4个主推商品,您还能添加'+num+'个确定将该商品添加为主推商品吗?','取消','确定',function () {
-                 SupplierApi.SwitchFeatured({productId:pros.productId,featuredFlag:1,shopId:_this.shopId},function (response) {
+                SupplierApi.SwitchFeatured({productId:pros.productId,featuredFlag:1,shopId:_this.shopId},function (response) {
                     if (response.code == 0){
                         CAIMEI.dialog('添加成功~');
                         _this.productsList = [];
                         _this.GetMyproductDataInfo();
                     }else{
-                         CAIMEI.Alert(response.msg,'确定');
+                        CAIMEI.Alert(response.msg,'确定');
                     }
                 })
             })
         },
         DeletePushHotFn: function(pros){//删除主页推荐
             var _this = this;
-             CAIMEI.Modal('是否把该商品从主推商品中删除?','取消','确定',function () {
-                  SupplierApi.SwitchFeatured({productId:pros.productId,featuredFlag:0,shopId:_this.shopId},function (response) {
+            if(this.isForbid){ return }
+            CAIMEI.Modal('是否把该商品从主推商品中删除?','取消','确定',function () {
+                SupplierApi.SwitchFeatured({productId:pros.productId,featuredFlag:0,shopId:_this.shopId},function (response) {
                     if (response.code == 0){
                         CAIMEI.dialog('删除成功~');
                         _this.productsList = [];
                         _this.GetMyproductDataInfo();
                     }else{
-                         CAIMEI.Alert(response.msg,'确定');
+                        CAIMEI.Alert(response.msg,'确定');
                     }
                 })
-             })
+            })
         },
         pageLinkDetils: function(pros){//预览商品
+            if(this.isForbid){ return }
             window.open('/product-'+pros.productId+'.html');
         },
         editGoodFn: function(pros){//编辑商品
+            if(this.isForbid){ return }
             location.href ='/supplier/release.html?productId='+pros.productId+'&type=edit';
         },
         ischeck: function(pros){//为未选中的时候改变为true,反之为true
             var _this = this;
+            if(this.isForbid){ return }
             pros.isChecked = !pros.isChecked;
             if(pros.isChecked){
-                  _this.checkList.push(pros);
-                }else {
-                  _this.checkList.splice(_this.checkList.indexOf(pros), 1);
-                };
-                 if( _this.checkList.length>0){
-                     _this.check = true;
-                     _this.isProductChecked = true;
-                 } else {
-                     _this.isProductChecked = false;
-                     _this.check = false;
-                 }
+                _this.checkList.push(pros);
+            }else {
+                _this.checkList.splice(_this.checkList.indexOf(pros), 1);
+            };
+            if( _this.checkList.length>0){
+                _this.check = true;
+                _this.isProductChecked = true;
+            } else {
+                _this.isProductChecked = false;
+                _this.check = false;
+            }
 
             _this.updateCheckAllBtn();
         },
@@ -349,6 +357,7 @@ var myGoods = new Vue({
         },
         checkedAll: function() {
             var _this = this;
+            if(this.isForbid){ return }
             _this.isCheckedAll = !_this.isCheckedAll;
             if(_this.isCheckedAll){
                 _this.isProductChecked = true

+ 123 - 72
src/main/resources/static/js/user-center/message.js

@@ -1,13 +1,25 @@
 ;
 var helpSuggestion = new Vue({
     el: "#dashboard",
+    mixins: [noticeMixin],
     data: {
         btnLoading: false,
         isRequset:true,
-        listQuery:{
-            userId: '',
-            pageNum:1,
-            pageSize:10,
+        mssageTabBarIndex:0,
+        mssageTabBar: [
+            {messageType: '',text: '全部消息',bages:0},
+            {messageType: 1,text: '交易物流',bages:0},
+            {messageType: 2,text: '账户通知',bages:0},
+            {messageType: 3,text: '服务通知',bages:0},
+            {messageType: 4,text: '优惠促销',bages:0},
+        ],
+        allCount:0,
+        listQuery: {
+            source: 1,
+            commonId: 0,
+            messageType: '',
+            pageNum: 1,
+            pageSize: 10
         },
         noMore:false,
         listRecord: 0,
@@ -19,7 +31,18 @@ var helpSuggestion = new Vue({
         checklist:[],
         msgId:'',
     },
-     computed: {
+    filters: {
+        NumBadge: function (n) {//处理
+            var num = '';
+            if (n > 100) {
+                num = 99
+            } else {
+                num = n;
+            }
+            return num;
+        }
+    },
+    computed: {
         pageTotal: function () {
             var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
             return total > 0 ? total : 1;
@@ -43,7 +66,7 @@ var helpSuggestion = new Vue({
          toPagination: function (pageNum) {//点击切换分页
             if (pageNum <= this.pageTotal) {
                 this.listQuery.pageNum = pageNum;
-                this. GetMyPcMymessageInfo();
+                this. getAuthClubMessageList();
             }
         },
         checkNum: function () {//输入跳转分页
@@ -53,72 +76,106 @@ var helpSuggestion = new Vue({
                 this.pageInput = 1;
             }
         },
-
-        GetMyPcMymessageInfo:function(){
+        changeTabsFn:function(index,messageType){//点击Tab切换消息通知
+            this.mssageTabBarIndex = index;
+            this.listQuery.messageType = messageType;
+            this.listQuery.pageNum = 1;
+            this.messagesList = [];
+            this. getAuthClubMessageList();
+        },
+        getAuthClubMessageCount:function(){//查询tabs数量
+            var _self = this;
+            UserApi.getAuthClubMessageCount({commonId:_self.listQuery.commonId},function (response) {
+                var data = response.data;
+                _self.mssageTabBar[0].bages = _self.allCount = data.count;
+                _self.mssageTabBar[1].bages = data.tradeCount;
+                _self.mssageTabBar[2].bages = data.account;
+                _self.mssageTabBar[3].bages = data.notificationCount;
+                _self.mssageTabBar[4].bages = data.promotionCount;
+            })
+        },
+        getAuthClubMessageList:function(){
             var _self = this;
-            UserApi.GetMymessageList(_self.listQuery,function (response) {
+            UserApi.getAuthClubMessageList(_self.listQuery,function (response) {
                 if(response.code == 0){
                     _self.isRequset = false;
-                     if (response.data.results.length>0){
-                      var data = response.data;
-                         _self.messagesList = data.results;
-                         _self.listRecord =  data.totalRecord;
+                    _self.isCheckedAll = false;
+                    var data = response.data;
+                    if (data.list.length>0){
+                        if(isPC){
+                            _self.messagesList = data.list.map(function (el) {
+                                el.check = false
+                                return el;
+                            });
+                        }else{
+                            var list = data.list.map(function (el) {
+                                el.check = false
+                                return el;
+                            });
+                            _self.messagesList = _self.messagesList.concat(list);
+                        }
+                         _self.listRecord =  data.total;
                          _self.requestFlag = true;
                      }else {
-                     _self.requestFlag = false;
-                      _self.listRecord =  data.totalRecord;
+                        _self.requestFlag = false;
+                        _self.listRecord =  data.total;
                      }
                 }else{
                     CAIMEI.Alert(response.msg, '确定', false);
-                     _self.requestFlag = false;
+                    _self.requestFlag = false;
                 }
             })
         },
+        checkedContains(arr, val) {// 校验
+            return arr.some(item => item === val)
+        },
         checkedItemFn:function(item){ //单选
             var _self = this;
-                    if(event.target.checked){
-                         _self.checklist.push(item.messageId);
-                         _self.msgId = _self.checklist.toString()+','
-                    }else {
-                      _self.checklist.splice(_self.checklist.indexOf(item.messageId), 1);
-                      _self.msgId = _self.checklist.toString()+','
-                    }
-                    if(_self.checklist.length==_self.messagesList.length){
-                        _self.isCheckedAll=true;
-                    }else {
-                       _self.isCheckedAll=false;
-                    }
-
+            if(event.target.checked){
+                if(!_self.checkedContains(_self.checklist,item.id)){
+                    _self.checklist.push(item.id);
+                }
+            }else {
+              _self.checklist.splice(_self.checklist.indexOf(item.id), 1);
+            }
+            _self.msgId = _self.checklist.toString()+','
+            if(_self.checklist.length==_self.messagesList.length){
+                _self.isCheckedAll=true;
+            }else {
+               _self.isCheckedAll=false;
+            }
         },
-          checkedAllFn: function () { //全選
+        checkedAllFn: function () { //全選
             var _self = this;
             _self.isCheckedAll = !_self.isCheckedAll;
-                if (_self.isCheckedAll) {
-                    _self.checklist = [];
-                    _self.messagesList.forEach(function (item) {
-                             item.check = true;
-                             _self.checklist.push(item.messageId);
-                             _self.msgId = _self.checklist.toString()+','
-                        })
-                }else{
-                     _self.messagesList.forEach(function(item){
-                          item.check = false;
-                    });
-                    _self.checklist = [];
-                    _self.msgId = ''
-                }
+            if (_self.isCheckedAll) {
+                _self.checklist = [];
+                _self.messagesList.forEach(function (item) {
+                         item.check = true;
+                         _self.checklist.push(item.id);
+                         _self.msgId = _self.checklist.toString()+','
+                    })
+            }else{
+                 _self.messagesList.forEach(function(item){
+                      item.check = false;
+                });
+                _self.checklist = [];
+                _self.msgId = ''
+            }
         },
         deleteMessageFn: function(){//删除消息
              var _this =this;
-             if(_this.messagesList==''){
-                 CAIMEI.Alert('暂无消息', '确定', false);
-             }else if(_this.checklist.length==0) {
-                 CAIMEI.Alert('未选择任何消息', '确定', false);
-             }else {
-                PublicApi.deleteMessage({messageIds:_this.msgId},function (res) {
+            if(this.allCount === 0){
+                CAIMEI.dialog('暂无消息');
+            }else if(_this.checklist.length==0){
+                CAIMEI.dialog('请勾选未读消息');
+            }else{
+                UserApi.authDeleteMessage({id:_this.msgId},function (res) {
                     if (res.code==0){
                       CAIMEI.dialog('刪除成功');
-                       location.reload()
+                      setTimeout(function (){
+                          _this.getAuthClubMessageList();
+                      },500)
                     }else {
                       CAIMEI.Alert(res.msg, '确定', false);
                     }
@@ -129,37 +186,31 @@ var helpSuggestion = new Vue({
           var _this =this;
             console.log(_this.checklist);
             console.log(_this.msgId);
-            if(_this.messagesList==''){
-             CAIMEI.Alert('暂无消息', '确定', false);
+            if(this.allCount === 0){
+                CAIMEI.dialog('暂无未读消息');
             }else if(_this.checklist.length==0){
-              CAIMEI.Alert('未选择任何消息', '确定', false);
+                CAIMEI.dialog('请勾选未读消息');
             }else {
-                     PublicApi.markAsRead({messageIds:_this.msgId},function (res) {
+                UserApi.authUpdateRead({userType:1,Id:_this.msgId},function (res) {
                     if(res.code==0){
-                     CAIMEI.dialog('已读成功');
-                     location.reload()
+                        CAIMEI.dialog('标记已读成功');
+                        setTimeout(function (){
+                            _this.getAuthClubMessageCount();
+                            _this.getAuthClubMessageList();
+                        },500)
                     }else {
-                     CAIMEI.Alert(res.msg, '确定', false);
+                        CAIMEI.Alert(res.msg, '确定', false);
                     }
                 })
             }
-
-        },
-        showBadge:function(n){//处理标签
-            var num ='';
-            if(n>100){num = 99}else{num = n;}
-            return num;
-        },
-        toFixedFn:function(text){//处理小数点后两位数
-            return Number(text).toFixed(2);
-        },
-
+        }
     },
     mounted: function () {
         var _self=this;
         if(globalUserData){
-            this.listQuery.userId = globalUserData.userId;
-            this.GetMyPcMymessageInfo();
+            this.listQuery.commonId = globalUserData.clubId;
+            this.getAuthClubMessageCount()
+            this.getAuthClubMessageList();
         }
         if(!isPC){
             $('footer').addClass("noneImportant");
@@ -176,7 +227,7 @@ var helpSuggestion = new Vue({
                         if (_self.requestFlag){
                             _self.listQuery.pageNum = next;
                             // 获取列表数据
-                            _self.GetMyPcMymessageInfo();
+                            _self.getAuthClubMessageList();
                         }
                         _self.requestFlag = false;
                     }else{

+ 154 - 0
src/main/resources/static/js/user-center/mixins/noticeMixin.js

@@ -0,0 +1,154 @@
+'use strict';
+var noticeMixin = function () {// 通知消息
+    return {
+        data(){
+            return{}
+        },
+        computed: {
+
+        },
+        mounted() {
+            var _this = this;
+            window.handleOrderClick  = this.handleOrderClick;
+            window.handleUsersClick  = this.handleUsersClick;
+            window.handleCouponClick  = this.handleCouponClick;
+        },
+        methods: {
+            hanldeNoticeText(cell){ // 根据tab计算返回显示文案
+                const $EventFunction = {
+                    1:this.noticeOrderText(cell),
+                    2:this.noticeUsersText(cell),
+                    3:this.noticeServeText(cell),
+                    4:this.noticeCouponText(cell)
+                }
+                return $EventFunction[cell.messageType]
+            },
+            noticeOrderText(cell) { // 交易物流通知文案
+                const linkMap = {
+                        1:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))">立即支付</span>`,
+                        2:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))" >查看订单</span>`,
+                        3:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))">查看订单</span>`,
+                        4:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))">查看订单</span>`,
+                        5:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))">查看物流</span>`,
+                        6:`<span data-type="${cell.orderMessageType}" data-orderId="${cell.orderId}" data-status="${cell.status}" data-onlinePayFlag="${cell.onlinePayFlag}" class="link" onclick="handleOrderClick($(this))">查看订单</span>`
+                }
+                const map = {
+                    1: `您已成功下单"${cell.productName}"等${cell.productCount}种商品,订单等待支付,点击${linkMap[cell.orderMessageType]}进行付款,支付完成后采美将尽快安排发货。`,
+                    2: `订单(${cell.productName}"等${cell.productCount}种商品)已支付完成,将立即安排发货,点击${linkMap[cell.orderMessageType]}查看订单详情`,
+                    3: `订单(${cell.productName}"等${cell.productCount}种商品)已${cell.refundType === 1 ? '部分退' : '全部退'}款/货成功,退款金额¥${cell.content},金额到账时间可能存在延迟,具体以支付方通知为准。点击${linkMap[cell.orderMessageType]}查看退款详情`,
+                    4: `订单(${cell.productName}"等${cell.productCount}种商品)${cell.content},点击${linkMap[cell.orderMessageType]}查看订单详情`,
+                    5: `订单(${cell.productName}"等${cell.productCount}种商品)已发货,点击${linkMap[cell.orderMessageType]}查看物流详情`,
+                    6: `订单(${cell.productName}"等${cell.productCount}种商品)因超时已被系统自动收货,点击${linkMap[cell.orderMessageType]}查看订单详情`,
+                }
+                return map[cell.orderMessageType]
+            },
+            noticeUsersText(cell) { // 账户通知文案
+                const linkMap = {
+                    2:`<span data-type="${cell.accountType}" class="link" onclick="handleUsersClick($(this))">会员中心</span>`,
+                    3:`<span data-type="${cell.accountType}" class="link" onclick="handleUsersClick($(this))">会员中心</span>`,
+                    4:`<span data-type="${cell.accountType}" class="link" onclick="handleUsersClick($(this))">会员中心</span>`,
+                    6:`<span data-type="${cell.accountType}" class="link" onclick="handleUsersClick($(this))">修改资料</span>`
+                }
+                const map = {
+                    1: '欢迎成为采美机构用户,祝您开启愉快的采购之旅。',
+                    2: `您已成功购买${cell.content}采美平台超级会员服务,在服务期内每月可领多张大额优惠券,还有更多超级会员专属权益等您体验,点击${linkMap[cell.accountType]}去体验吧。`,
+                    3: `您的超级会员服务将于${cell.content}到期,到期后将无法享受专属会员权益,赶快去${linkMap[cell.accountType]}续费吧 。`,
+                    4: `您已获得采美平台赠送的${cell.content}超级会员,在服务期内每月可领多张大额优惠券,还有更多超级会员专属权益等您体验,点击${linkMap[cell.accountType]}去体验吧。`,
+                    5: '恭喜您成功升级为资质机构用户!现在可以查看更多商品的信息啦,采美平台也将为您提供更多专业服务。',
+                    6: `您的账号升级资质机构失败!点击${linkMap[cell.accountType]}重新提交吧。`,
+                    7: `恭喜您(微信昵称:${cell.content})成功成为机构运营人员,祝您开启愉快的采购之旅。`
+                }
+                return map[cell.accountType]
+            },
+            noticeCouponText(cell) { // 优惠促销通知文案
+                const linkMap = {
+                    1:`<span data-type="${cell.couponMessageType}" class="link" onclick="handleCouponClick($(this))">领券中心</span>`,
+                    2:`<span data-type="${cell.couponMessageType}" class="link" onclick="handleCouponClick($(this))">优惠券中心</span>`,
+                    3:`<span data-type="${cell.couponMessageType}" class="link" onclick="handleCouponClick($(this))">领券中心</span>`,
+                }
+                const copunMap = {
+                    0: `采美平台送您${cell.couponFee}元优惠券,众多大牌正品等着您,赶快去${linkMap[cell.couponMessageType]}领取下单吧。`,
+                    1: `采美平台${cell.content}类商品大优惠,特送您${cell.couponFee}元优惠券,赶快去${linkMap[cell.couponMessageType]}领取下单吧。`,
+                    2: `为了答谢您对采美平台的支持,采美送您${cell.couponFee}元优惠券,赶快去${linkMap[cell.couponMessageType]}领取下单吧。`,
+                    3: `【${cell.content}】赠送您${cell.couponFee}元的店铺专属优惠券,众多火爆商品等您来!赶快去${linkMap[cell.couponMessageType]}领取下单吧。`,
+                    4: `恭喜成功注册采美平台,现赠送您${cell.couponFee}元新用户优惠券,赶快去${linkMap[cell.couponMessageType]}领取下单吧。`,
+                }
+                const map = {
+                    1: copunMap[cell.couponType],
+                    2: `您有${cell.couponFee}元优惠券将于${cell.content}过期,赶快去${linkMap[cell.couponMessageType]}查看使用吧。`,
+                    3: `您有${cell.couponFee}元优惠券尚未领取,优惠券将于${cell.content}后下架,赶快去${linkMap[cell.couponMessageType]}领取下单吧0`,
+
+                }
+                return map[cell.couponMessageType]
+            },
+            noticeServeText(cell){//服务通知文案处理
+                console.log('服务通知文案处理');
+            },
+            handleOrderClick($event){// 订单点击事件
+                let orderMessageType  = Number($event[0].attributes[0].value);
+                let orderId  = Number($event[0].attributes[1].value);
+                let status  = Number($event[0].attributes[2].value);
+                let onlinePayFlag  = Number($event[0].attributes[3].value);
+                let statusVal = [ { val: [11, 12, 13, 21, 22, 23, 111], status: true }];
+                let isOnliyPay = false;
+                statusVal.forEach(el => {
+                    el.val.forEach(value => {
+                        if (status === value) {
+                            isOnliyPay = el.status
+                        }
+                    })
+                })
+                if(orderMessageType === 1){
+                    if(!isOnliyPay){
+                        CAIMEI.dialog('订单已完成支付',false);
+                    }else{
+                        let payLinkMap = {
+                            0:'/pay/caimei-paylist.html?orderId='+orderId,
+                            1:'/pay/caimei-payunder.html?orderId='+orderId,
+                        }
+                        let linkJumpMap = {
+                            1:payLinkMap[onlinePayFlag]
+                        }
+                        window.open(linkJumpMap[orderMessageType]);
+                    }
+                }else{
+                    let linkJumpMap = {
+                        2:'/user/order/detail.html?orderId='+orderId,
+                        3:'/user/order/detail.html?orderId='+orderId,
+                        4:'/user/order/detail.html?orderId='+orderId,
+                        5:'/user/order/logistics.html?orderId='+orderId,
+                        6:'/user/order/detail.html?orderId='+orderId
+                    }
+                    window.open(linkJumpMap[orderMessageType]);
+                }
+            },
+            handleUsersClick($event){
+                console.log('账户通知跳转');
+                const accountType  = Number($event[0].attributes[0].value);
+                if(accountType === 1 || accountType === 5 || accountType === 7){
+                    return;
+                }
+                const linkJumpMap = {
+                    2:'/user/member.html',
+                    3:'/user/member.html',
+                    4:'/user/member.html',
+                    6:'/user/setting/upgrade.html',
+                }
+                window.open(linkJumpMap[accountType]);
+            },
+            handleServeClick($event){
+                console.log('服务通知跳转');
+            },
+            handleCouponClick($event){
+                console.log('优惠促销通知跳转');
+                const couponMessageType  = Number($event[0].attributes[0].value);
+                const linkJumpMap = {
+                    1:`/user/coupon-collection.html`,
+                    2:`/user/coupon-collection.html`,
+                    3:`/user/coupon.html`,
+                }
+                window.open(linkJumpMap[couponMessageType]);
+            },
+        }
+    };
+}();

+ 9 - 9
src/main/resources/static/js/user-center/setting/information.js

@@ -116,15 +116,15 @@ var informationPage = new Vue({
                     _self.addressfrom.userId = data.user.userId;
                     _self.addressfrom.contractEmail = data.user.contractEmail ? data.user.contractEmail : '';
                     _self.addressfrom.provinceId = data.club.provinceId ? data.club.provinceId : 0;
-                    _self.addressfrom.cityId = data.club.cityId ? data.club.cityId : null;
-                    _self.addressfrom.townId = data.club.townId ? data.club.townId : null;
-                    _self.clubUpgradeUser.provinceId = data.club.provinceId ? data.club.provinceId : null;
-                    _self.clubUpgradeUser.cityId = data.club.cityId ? data.club.cityId : null;
-                    _self.clubUpgradeUser.townId= data.club.townId ? data.club.townId : null;
-                    _self.clubUpgradeUser.shopPhoto = data.club.shopPhoto ? data.club.shopPhoto : null;
-                    _self.clubUpgradeUser.businessLicense = data.club.businessLicense ? data.club.businessLicense : null;
-                    _self.clubUpgradeUser.firstClubType = data.club.firstClubType ? data.club.firstClubType : null;
-                    _self.clubUpgradeUser.secondClubType = data.club.secondClubType ? data.club.secondClubType :null;
+                    _self.addressfrom.cityId = data.club.cityId ? data.club.cityId : '';
+                    _self.addressfrom.townId = data.club.townId ? data.club.townId : '';
+                    _self.clubUpgradeUser.provinceId = data.club.provinceId ? data.club.provinceId : '';
+                    _self.clubUpgradeUser.cityId = data.club.cityId ? data.club.cityId : '';
+                    _self.clubUpgradeUser.townId= data.club.townId ? data.club.townId : '';
+                    _self.clubUpgradeUser.shopPhoto = data.club.shopPhoto ? data.club.shopPhoto : '';
+                    _self.clubUpgradeUser.businessLicense = data.club.businessLicense ? data.club.businessLicense : '';
+                    _self.clubUpgradeUser.firstClubType = data.club.firstClubType ? data.club.firstClubType : '';
+                    _self.clubUpgradeUser.secondClubType = data.club.secondClubType ? data.club.secondClubType :'';
                     _self.clubUpgradeUser.address = data.club.address ? data.club.address : null;
                     _self.firstClubType = _self.clubUpgradeUser.firstClubType;
                     if( _self.clubUpgradeUser.firstClubType == 1){

+ 0 - 81
src/main/resources/templates/activity/approveIframe.html

@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="https://www.thymeleaf.org ">
-<head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>供应商信息</title>
-    <style>
-        html {
-            width: 100%;
-            height: 100%;
-        }
-
-        body {
-            width: 100%;
-            height: 100%;
-            margin: 0;
-            background: linear-gradient(45deg, #f5f6fa, #dcdde1, #f5f6fa);
-        }
-
-        .iframe {
-            margin: 0 auto;
-            background: #fff;
-        }
-
-        @media screen and (min-width: 768px) {
-            body {
-                display: flex;
-                justify-content: center;
-                align-items: center;
-            }
-
-            .iframe iframe {
-                width: 375px;
-                height: 800px;
-            }
-        }
-
-        @media screen and (max-width: 768px) {
-            .iframe {
-                width: 100%;
-                height: 100%;
-            }
-
-            .iframe iframe {
-                width: 100%;
-                height: 100%;
-            }
-        }
-
-    </style>
-</head>
-<body>
-<input type="hidden" th:value="${zplmDomain}" id="zplmDomain">
-<div class="iframe" id="iframe">
-    <iframe :src="resultSrc" frameborder="0"></iframe>
-</div>
-
-<script src="/lib/vue2.6.12.min.js"></script>
-<script>
-    new Vue({
-        data: {
-            appId: ''
-        },
-        computed: {
-            resultSrc: function () {
-                var zplmDomain = document.querySelector('#zplmDomain').value;
-                return zplmDomain + '/#/pages/entry/auth?appId=' + this.appId;
-                // return `http://localhost:8081/#/pages/entry/auth?appId=${this.appId}`
-            }
-        },
-        created: function () {
-            this.appId = window.localStorage.getItem('approveAppId');
-            var title = window.localStorage.getItem('approveIframeName');
-            window.document.title = title;
-        }
-    }).$mount('#iframe')
-</script>
-</body>
-</html>

+ 14 - 16
src/main/resources/templates/activity/attestation.html

@@ -5,9 +5,7 @@
     <title>采美365网-认证通-一款专业的正品认证SaaS软件系统</title>
     <template th:replace="components/head-link"></template>
     <link th:href="@{/css/activity/attestation.css(v=${version})}" rel="stylesheet" type="text/css">
-    <link type="text/css" rel="stylesheet" href="/lib/swiper.min.css">
     <template th:replace="components/analysis"></template>
-    <script charset="utf-8" type="text/javascript" src="/lib/swiper.min.js"></script>
 </head>
 <body>
 <input type="hidden" th:value="${zplmDomain}" id="zplmDomain">
@@ -15,8 +13,8 @@
 <template th:replace="components/header"></template>
 
 <!-- 商品列表 -->
-<div id="attestation">
-    <!-- banner   -->
+<div id="attestation" >
+<!-- banner   -->
     <div class="section_banner">
         <h1>认证通</h1>
         <p>一款专业的正品认证SaaS软件系统</p>
@@ -27,19 +25,19 @@
                 <div class="title">
                     <h1>认证通快捷入口</h1>
                 </div>
-                <div class="swiper-container section_content mobile" id="mySwiper1">
-                    <div class="swiper-wrapper">
-                        <div class="section_li swiper-slide"
-                             :class="'section_li_' + index"
-                             v-for="(data , index) in firstEntryList"
-                             @click="handleClick(data)">
-                            <img class="logo" :src="data.logo">
-                            <div class="name" v-text="data.name"></div>
-                        </div>
-                    </div>
-                </div>
+<!--                <div class="swiper-container section_content mobile" id="mySwiper1">-->
+<!--                    <div class="swiper-wrapper">-->
+<!--                        <div class="section_li swiper-slide"-->
+<!--                             :class="'section_li_' + index"-->
+<!--                             v-for="(data , index) in firstEntryList"-->
+<!--                             @click="handleClick(data)">-->
+<!--                            <img class="logo" :src="data.logo">-->
+<!--                            <div class="name" v-text="data.name"></div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
                 <div class="section_content clear pc">
-                    <div class="section_li" v-for="(data , index) in firstEntryList" @click="handleClick(data)">
+                    <div class="section_li" :class="'section_li_' + index" v-for="(data , index) in firstEntryList" @click="handleClick(data)">
                         <img class="logo" :src="data.logo">
                         <div class="name" v-text="data.name"></div>
                     </div>

+ 8 - 3
src/main/resources/templates/article/components/article-sidebar.html

@@ -1,3 +1,4 @@
+<html xmlns:th="http://www.w3.org/1999/xhtml">
 <div class="other" id="articleSide" v-cloak>
     <div id="mHotWord">
         <div class="tags clearfix">
@@ -5,7 +6,8 @@
                 热搜词
             </p>
             <div class="tag">
-                <a v-for="label in labelList"  :href="'/info/label-' + label.id + '-1.html'" :style="'opacity:'+label.sort" v-text="label.name"></a>
+<!--                    <a v-for="label in labelList"  :href="'/info/label-' + label.id + '-1.html'" :style="'opacity:'+label.sort" v-text="label.name"></a>-->
+                <a th:each="label : ${labels}" th:href="'/info/label-' + ${label.id} + '-1.html'" th:text="${label.name}"></a>
             </div>
         </div>
         <a href="javascript:void(0);" class="close"></a>
@@ -32,8 +34,11 @@
         </div>
     </div>
     <div v-if="isPC" class="tui">
-        <a v-for="ad in adList" href="javascript:void(0);" class="tui-img" @click="clickAD(ad.id,ad.link)">
-            <img :src="ad.image" alt="ad.title"/>
+<!--        <a v-for="ad in adList" href="javascript:void(0);" class="tui-img" @click="clickAD(ad.id,ad.link)">-->
+<!--            <img :src="ad.image" alt="ad.title"/>-->
+<!--        </a>-->
+        <a th:each="ad : ${ads}" class="tui-img" th:href="${ad.link}" @click="clickAD(ad.id,ad.link)">
+            <img th:src="${ad.image}" th:alt="${ad.title}"></img>
         </a>
     </div>
 </div>

+ 10 - 10
src/main/resources/templates/article/detail.html

@@ -51,23 +51,23 @@
         <!--相关阅读-->
         <div class="new-list dataRousce" id="articleRelated">
             <p class="classify biaoqian">相关阅读</p>
-            <div class="row" v-for="item in related.list">
+            <div class="row" th:each="item : ${articles}">
                 <div class="new-img">
-                    <a :href="'/info/detail-'+item.id+'-1.html'" target="_blank">
-                        <img :src="item.image"/>
+                    <a th:href="'/info/detail-'+${item.id}+'-1.html'" target="_blank">
+                        <img th:src="${item.image}"/>
                     </a>
                 </div>
                 <div class="new-blurb">
-                    <a :href="'/info/detail-'+item.id+'-1.html'" target="_blank">
-                        <p class="title" v-html="item.title"></p>
+                    <a th:href="'/info/detail-'+${item.id}+'-1.html'" target="_blank">
+                        <p class="title" th:utext="${item.title}"></p>
                     </a>
                     <p class="xinxi">
-                        <em v-if="!isPC" class="pv icon mIcon" v-text="item.pv"></em>
-                        <em class="write icon mIcon" v-text="item.publisher"></em>
-                        <em  v-if="item.publishDate" class="time icon mIcon" v-text="item.publishDate.substr(0,10)"></em>
+                        <em v-if="!isPC" class="pv icon mIcon" th:utext="${item.pv}"></em>
+                        <em class="write icon mIcon" th:text="${item.publisher}"></em>
+                        <em th:if="${item.publishDate}" class="time icon mIcon" th:text="${item.publishDate}"></em>
                     </p>
-                    <p class="introduction" v-html="item.intro"></p>
-                    <p v-if="isPC" class="P_img"><em class="pv icon mIcon" v-text="item.pv"></em></p>
+                    <p class="introduction" th:utext="${item.intro}"></p>
+                    <p v-if="isPC" class="P_img"><em class="pv icon mIcon" th:text="${item.pv}"></em></p>
                 </div>
             </div>
             <div id="scrollTop">

+ 12 - 8
src/main/resources/templates/article/list.html

@@ -26,19 +26,23 @@
                     <input class="keyword" type="text" :value="params.keyword" placeholder="请输入关键词" />
                     <a class="searchBtn" href="javascript:void(0);">搜索</a>
                 </div>
-                <p v-if="isPC" class="result search-tip">
-                    <span>为你找到相关文章<b v-text="listRecord"></b>条,</span>
-                    <span>同时为您找到相关产品<b v-text="productRecord"></b>个</span>
-                    <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
+                <p v-if="isPC" class="result search-tip" :class="{pointer:productRecord && productRecord > 0}">
+                    <span>为你找到相关文章<b v-text="listRecord"></b>条<template v-if="productRecord && productRecord > 0">,</template></span>
+                    <template  v-if="productRecord && productRecord > 0">
+                        <span>同时为您找到相关产品<b v-text="productRecord"></b>个</span>
+                        <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
+                    </template>
                 </p>
             </div>
             <p v-else-if="params.labelId" class="classify biaoqian">
                 <em id="labelTxt"></em>相关的文章
             </p>
-            <p v-if="params.keyword && !isPC" class="classify search-tip">
-                <span>为你找到相关文章<em v-text="listRecord"></em>条,</span>
-                <span>同时为您找到相关产品<em v-text="listRecord"></em>个</span>
-                <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
+            <p v-if="params.keyword && !isPC" class="classify search-tip" :class="{pointer:productRecord && productRecord > 0}">
+                <span>为你找到相关文章<em v-text="listRecord"></em>条<template v-if="productRecord && productRecord > 0">,</template></span>
+                <template v-if="productRecord && productRecord > 0">
+                    <span>同时为您找到相关产品<em v-text="productRecord"></em>个</span>
+                    <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
+                </template>
             </p>
             <div v-if="listData.length>0" class="dataRousce">
                 <!--<div class="search-tip">为你找到相关文章59条,同时为您找到相关产品59条<a href="/">点击前往</a></div>-->

+ 13 - 3
src/main/resources/templates/components/header.html

@@ -5,6 +5,10 @@
             <div class="header_top_left">欢迎来到采美采购服务平台</div>
             <div class="header_top_left"></div>
             <ul class="header_top_ul" >
+                <li class="headmsg">
+                    <a v-if="userIdentity===3" @click="goMsgLinkFn('/supplier/message/list.html')" href="javascript:void(0)" class="WEB-icon msg-btn">消息<em v-text="'('+noticeNum+')'"></em></a>
+                    <a v-else  @click="goMsgLinkFn('/user/message/list.html')" href="javascript:void(0)" class="WEB-icon msg-btn">消息<em v-text="'('+noticeNum+')'"></em></a>
+                </li>
                 <li class="headCart">
                     <a v-if="userIdentity!=3" href="javascript:void(0)" class="addBtn icon" @click="goCartsLinkFn" onclick="_czc.push(['_trackEvent','顶部导航','购物车','点击','','Um_Event_Cart'])">购物车<em v-text="'('+headCart.cartCount+')'"></em></a>
                     <div class="cartData">
@@ -65,9 +69,15 @@
                 <img class="h5Only" src="/img/base/logo_m.png" alt="采美 生美/医美采购服务平台"/>
             </a>
             <div class="mf h5Only mUserCenter">
-                <a :href="loginStatus?'/shopping/cart.html':'javascript:void(0);'" :class="loginStatus?'mAddCart mIcon':'mAddCart mIcon toLogin'" title="购物车" rel="nofollow"></a>
-                <a v-if="loginStatus" @click="showGlobalMenu()" class="mUserIcon mIcon" href="javascript:void(0);" title="个人中心" rel="nofollow"></a>
-                <a v-else class="mUserIcon mIcon toLogin" href="javascript:void(0);" title="个人中心" rel="nofollow"></a>
+                <template v-if="loginStatus">
+                    <a href="/shopping/cart.html" :class="loginStatus?'mAddCart mIcon':'mAddCart mIcon toLogin'" title="购物车" rel="nofollow"></a>
+                    <a v-if="userIdentity===3" @click="goMsgLinkFn('/supplier/message/list.html')" href="javascript:void(0);" :class="loginStatus?'mNotice H5-icon':'mNotice H5-icon toLogin'" title="消息" rel="nofollow"></a>
+                    <a v-else @click="goMsgLinkFn('/user/message/list.html')" href="javascript:void(0);" :class="loginStatus?'mNotice H5-icon':'mNotice H5-icon toLogin'" title="消息" rel="nofollow"></a>
+                    <a @click="showGlobalMenu()" class="mUserIcon mIcon" href="javascript:void(0);" title="个人中心" rel="nofollow"></a>
+                </template>
+                <template v-else>
+                    <a class="mUserIcon mIcon toLogin" href="javascript:void(0);" title="个人中心" rel="nofollow"></a>
+                </template>
             </div>
             <div class="searchBox" id="topSearch">
                 <div class="search">

+ 13 - 13
src/main/resources/templates/index.html

@@ -144,34 +144,34 @@
                             <div class="swiper-wrapper section_page_main type_08 recommendBox-wrapper recommendBox-wrapperHot clear mfw section_8 max">
                                 <!-- 商品/图片 列表 -->
                                 <a :href="'/product-'+pros.product.productId+'.html'" class="swiper-slide page_main_item hot ad_04" target="_blank" v-for="pros in floor.floorImageList4">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.product.image" :alt="pros.name">
-                                    <div class="page_main_type" v-if="pros && pros.product.productType && pros.product.productType === 2">医疗器械</div>
+                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.product.image" :alt="pros.product && pros.product.name">
+                                    <div class="page_main_type" v-if="pros.product && pros.product.productType === 2">医疗器械</div>
                                     <div class="page_main_text">
-                                        <span class="tag" v-if="pros.product.beautyActFlag == 1">美博会</span>
-                                        <span v-text="pros.product.name"></span>
+                                        <span class="tag" v-if="pros.product && pros.product.beautyActFlag == 1">美博会</span>
+                                        <span v-text="pros.product && pros.product.name"></span>
                                     </div>
                                     <div class="page_main_price">
                                         <!-- 商品价格 -->
                                         <div class="main_price_text">
                                             <!-- 正常商品 -->
-                                            <template v-if="pros.product.productCategory == 1">
+                                            <template v-if="pros.product && pros.product.productCategory == 1">
                                                 <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="pros.product.couponsLogo">优惠券</p>
+                                                    <p class="couponTag" v-if="pros.product && pros.product.couponsLogo">优惠券</p>
                                                     <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                                    <template v-if="pros.product.svipProductFlag === 1">
+                                                    <template v-if="pros.product && pros.product.svipProductFlag === 1">
                                                         <div class="svip-tag">
                                                             <div class="svip-icon">SVIP</div>
                                                             <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
                                                             <template v-if="showVipPriceTag(pros.product)">
                                                                 <div class="svip-price">
-                                                                    <span v-html="pros.product.svipPriceTag"></span>
+                                                                    <span v-html="pros.product && pros.product.svipPriceTag"></span>
                                                                 </div>
                                                             </template>
                                                         </div>
                                                     </template>
                                                     <template v-else>
-                                                        <p class="listTag" v-if="pros.product.actStatus ==1 && pros.product.promotions">
-                                                            <span v-text="pros.promotions.name"></span>
+                                                        <p class="listTag" v-if="pros.product.actStatus == 1 && pros.product.promotions">
+                                                            <span v-text="pros.product.promotions && pros.product.promotions.name"></span>
                                                             <template v-if="PromotionsFormat(pros.product.promotions)">
                                                                 <!--单品优惠:优惠价-->
                                                                 <span class="price_unit">:¥</span><span class="price_num">{{ pros.product.price | NumFormat }}</span>
@@ -181,15 +181,15 @@
                                                 </div>
                                                 <div class="main_price_login">
                                                     <!--priceFlag 0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                    <template v-if="pros.product.priceFlag == 1">
+                                                    <template v-if="pros.product && pros.product.priceFlag == 1">
                                                         <em class="price_grade"><span>¥</span>价格未公开</em>
                                                     </template>
                                                     <!--机构价仅会员可见 && 用户是普通机构-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG!=1">
+                                                    <template v-else-if="pros.product && pros.product.priceFlag==2 && GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG!=1">
                                                         <em class="price_grade_club"><span>¥</span>会员可见</em>
                                                     </template>
                                                     <!--机构价仅医美机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==3 && (GLOBAL_CLUB_TYPE !=1)">
+                                                    <template v-else-if="pros.product && pros.product.priceFlag==3 && (GLOBAL_CLUB_TYPE !=1)">
                                                         <em class="price_grade_club red"><span>¥</span>仅医美机构可见</em>
                                                     </template>
                                                     <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->

+ 3 - 3
src/main/resources/templates/pay/caimei-paylist.html

@@ -87,13 +87,13 @@
                         待付金额:<span class="red">¥{{ paidAmount | NumFormat }}</span>
                     </div>
                     <div class="content-viw">
-                        开户行:<span>广发银行(深圳科苑支行)</span>
+                        开户行:<span>华夏银行深圳分行营业部</span>
                     </div>
                     <div class="content-viw">
-                        户名:<span>周仁声</span>
+                        户名:<span>周倩如</span>
                     </div>
                     <div class="content-viw">
-                        银行卡号:<span>6214 6202 2800 0415 461</span>
+                        银行卡号:<span>6230 2100 9221 2400</span>
                     </div>
                     <div class="content-viw">
                         订单标识:<span v-text="orderIdentificationId"></span><span class="copy" @click="copyOrderBtnSubmitFn">复制</span>

+ 3 - 3
src/main/resources/templates/pay/caimei-payunder.html

@@ -29,13 +29,13 @@
             <div class="pay-bank">
                 <div class="pay-bank-content">
                     <div class="content-viw">
-                        开户行:<span>广发银行(深圳科苑支行)</span>
+                        开户行:<span>华夏银行深圳分行营业部</span>
                     </div>
                     <div class="content-viw">
-                        户名:<span>周仁声</span>
+                        户名:<span>周倩如</span>
                     </div>
                     <div class="content-viw">
-                        银行卡号:<span>6214 6202 2800 0415 461</span>
+                        银行卡号:<span>6230 2100 9221 2400</span>
                     </div>
                     <div class="content-viw">
                         订单标识:<span v-text="orderIdentificationId"></span><span class="copy" @click="copyOrderBtnSubmitFn">复制</span>

+ 3 - 3
src/main/resources/templates/product/alliance-page.html

@@ -10,6 +10,7 @@
 		<link th:href="@{/css/product/alliance-page.css(v=${version})}" rel="stylesheet" type="text/css">
 	</head>
 	<body>
+		<input type="hidden" th:value="${zplmServer}" id="zplmServer">
 		<div id="zplm" v-cloak v-loading="isRequest">
 			<template v-if="!isRequest && !errorMessage">
 				<!-- 顶部 -->
@@ -90,10 +91,9 @@
 								:class="!isPc && index % 2 ? 'animate__fadeInLeftBig' : 'animate__fadeInRightBig'"
 								v-for="(param , index) in productAuthInfo.paramList"
 								:key="index"
-								:style="[noWarp]"
 							>
-								<div class="col" v-text="param.name"></div>
-								<div class="col" v-text="param.content"></div>
+								<div class="col" v-text="param.paramName"></div>
+								<div class="col" v-text="param.paramContent"></div>
 							</div>
 						</div>
 					</div>

+ 33 - 9
src/main/resources/templates/product/detail.html

@@ -27,14 +27,14 @@
                 <div class="cm-product-cover-tag"  v-if="pcActType === 1"></div>
                 <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
                 <div v-if="isPC" class="bigImage">
-                    <img :src="images[0]">
+                    <img th:src="${images[0]}">
                     <span class="mask"></span>
 <!--                    <span class="cm-product-cover-tag" v-if="isPC && pcActType === 1">云上美博会</span>-->
                 </div>
                 <div id="swiperImage" class="smallImage swiper-container">
                     <ul class="swiper-wrapper clear">
-                        <li class="swiper-slide mfc" v-for="img in images">
-                            <img :src="img">
+                        <li class="swiper-slide mfc" th:each="img : ${images}">
+                            <img th:src="${img}">
 <!--                            <span class="cm-product-cover-tag" v-if="!isPC && pcActType === 1">云上美博会</span>-->
 <!--                            <span class="cm-product-cover-tag" v-if="!isPC && pcActType === 1"></span>-->
                         </li>
@@ -43,7 +43,7 @@
                 </div>
                 <div v-if="isPC" class="zoomImage">
                     <div class="zoom">
-                        <img :src="images[0]">
+                        <img th:src="${images[0]}">
                     </div>
                 </div>
             </div>
@@ -417,7 +417,31 @@
             </div>
         </div>
         <!--相关推荐区域-->
-        <div class="recommendBox" v-if="recommends.length>0">
+        <div v-if="!GLOBAL_USER_ID" class="recommendBox" th:if="${lists.size()>0}">
+            <div class="hd">相关推荐</div>
+            <div id="productRecommend" class="swiper-container">
+                <ul class="swiper-wrapper" v-cloak>
+                    <li class="swiper-slide mfc" th:each="p : ${lists}">
+                        <div class="item">
+                            <a class="image" th:href="'/product-'+${p.id}+'.html'" target="_blank">
+                                <img th:src="${p.image}" th:alt="${p.name}"
+                                     onerror="javascript:this.src='/img/base/placeholder.png';">
+                                <span th:html="${p.name}"></span>
+                            </a>
+                        </div>
+                    </li>
+                    <!--<li class="swiper-slide  defaulImg" v-for="(item,index) in recommendIndex">
+                       <div class="item">
+                            <a href="javascript:0" class="image">
+                                <img src="/img/base/placeholder.png" alt="">
+                            </a>
+                     </div>
+                    </li>-->
+                </ul>
+                <div class="swiper-pagination mfc"><span v-if="isPC" v-for="i in recommendPage"></span></div>
+            </div>
+        </div>
+        <div class="recommendBox" v-if="GLOBAL_USER_ID && recommends.length>0">
             <div class="hd">相关推荐</div>
             <div id="productRecommend" class="swiper-container">
                 <ul class="swiper-wrapper" v-cloak>
@@ -454,7 +478,7 @@
         <div class="productInfo">
             <div class="tabTit">
                 <span :class="tabsIndex == 0 ? 'on' : ''" @click="detailsClicktab(0)">商品详情</span>
-                <span :class="tabsIndex == 1 ? 'on' : ''" v-if="parameters.length>0 && !isNoneDisabled" @click="detailsClicktab(1)">相关参数</span>
+                <span :class="tabsIndex == 1 ? 'on' : ''" th:if="${null!=params && params.size()>0}" v-if="!isNoneDisabled" @click="detailsClicktab(1)">相关参数</span>
                 <span :class="tabsIndex == 2 ? 'on' : ''" v-if="isServiceInfo && !isNoneDisabled" @click="detailsClicktab(2)">服务项目</span>
                 <span :class="tabsIndex == 3 ? 'on' : ''" v-if="isTrainingMethod" @click="detailsClicktab(3)">培训方案</span>
                 <span v-if="archiveId !== 0" :class="tabsIndex == 4 ? 'on' : ''" @click="detailsClicktab(4)">相关资料</span>
@@ -482,9 +506,9 @@
                 </div>
                 <div class="item" v-if="tabsIndex == 1">
                     <table>
-                        <tr v-for="pa in parameters">
-                            <td v-text="pa.paramsName"></td>
-                            <td v-text="pa.paramsContent"></td>
+                        <tr th:each="pa : ${params}">
+                            <td th:text="${pa.name}"></td>
+                            <td th:text="${pa.content}"></td>
                         </tr>
                     </table>
                 </div>

+ 0 - 143
src/main/resources/templates/product/qualityauthorize.html

@@ -1,143 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="https://www.thymeleaf.org ">
-<head>
-    <title>设备认证</title>
-    <template th:replace="components/head-link"></template>
-    <link th:href="@{/css/product/qualityauthorize.css(v=${version})}" rel="stylesheet" type="text/css">
-    <template th:replace="components/analysis"></template>
-</head>
-<body>
-<input type="hidden" th:value="${coreServer}" id="coreServer">
-<input type="hidden" th:value="${agent}" id="userAgent">
-<div class="container" id="qualityAuthorize">
-    <!-- 顶部logo区域 -->
-    <div class="container-header clear">
-        <div class="header-top">
-            <div class="inner">
-                <!-- <div class="logo"><img src="/img/quality/icon-logo.png" alt=""></div> -->
-                <div class="logo">设备认证</div>
-            </div>
-        </div>
-    </div>
-    <!-- 顶部logo区域end-->
-    <template v-if="parameters">
-        <!-- 主体内容区域 -->
-        <div class="container-content">
-            <div class="container-main fl-clear">
-                <!-- 图片区域 -->
-                <div class="img-box">
-                    <img class="product-img" :src="isPC?parameters.pcImage:parameters.appletsImage">
-                    <div class="origin-logo-box"><img class="product-brand" :src="parameters.authLogo"></div>
-                    <img class="product-authorize" src="/img/quality/pro-authorization.png">
-                    <template v-if="parameters.appletsCertificateImage">
-                        <img class="sq-book" @click="showSqBookModal" v-show="!isShowSqBookModal"
-                             :src="isPC?parameters.appletsCertificateImage:parameters.appletsCertificateImage">
-                    </template>
-                </div>
-                <!-- 商品介绍区域 -->
-                <div class="product-desc">
-                    <!-- 商品介绍区域 -->
-                    <h3>{{parameters.productName}}</h3>
-                    <div class="pink-box">
-                        <div class="item-row"><span>品牌:{{parameters.brandName}}</span></div>
-                        <div class="fl-clear">
-                            <span class="fl-left">产地:{{parameters.productionPlace}}</span>
-                            <a class="fl-right" target="_blank" :href="parameters.securityLink"
-                               v-if="parameters.securityLink">官网认证>></a></div>
-                    </div>
-                    <!-- 代理声明区域-->
-                    <div class="default-box" v-if="parameters.shopType === 2">
-                        <div class="item-row"><span class="dls">代理商:</span><span>{{parameters.shopName}}</span></div>
-                        <div class="item-row statement">
-                            <!-- 弹窗 -->
-                            <a href="#" @click.prevent="openStatementDialog(1)" v-if="parameters.statementType === 1">代理声明>></a>
-                            <!-- 链接 -->
-                            <a :href="parameters.statementLink" target="_blank" v-if="parameters.statementType === 2">代理声明>></a>
-                            <!-- 图片 -->
-                            <a :href="parameters.statementImage" target="_blank" v-if="parameters.statementType === 3">代理声明>></a>
-                            <!-- 文件 -->
-                            <a :href="parameters.statementFile.url" target="_blank"
-                               v-if="parameters.statementType === 4"
-                               :download="parameters.statementFile.name">代理声明>></a>
-                        </div>
-                    </div>
-                    <p>该仪器由{{parameters.agentFlag !== 0 ? parameters.shopName :
-                        parameters.brandName}}授予{{parameters.authParty}}正品拥有</p>
-                    <div class="pink-box sn-number">
-                        <div class="item-row"><span>SN码:{{parameters.snCode | snCode}}</span></div>
-                    </div>
-                </div>
-            </div>
-            <div class="product-params">
-                <div class="title"><span>产品参数</span></div>
-                <!-- 手机端布局 -->
-                <table class="params mobile">
-                    <tbody>
-                    <tr v-for="(item , index) in parameters.paramList" :key="index">
-                        <td style="width: 80px;">{{item.name}}:</td>
-                        <td>{{item.content}}</td>
-                    </tr>
-                    </tbody>
-                </table>
-                <!-- 电脑端布局 -->
-                <ul class="pc-params pc fl-clear">
-                    <li class="fl-clear" v-for="(item,index) in parameters.paramList" :key="index">
-                        <div class="p-title">{{item.name}}:</div>
-                        <div class="p-content">{{item.content}}</div>
-                    </li>
-                </ul>
-            </div>
-        </div>
-        <!-- 底部声明 -->
-        <div class="footer">
-            <p><a href="#" @click.prevent="openStatementDialog">采美声明</a>&nbsp;|&nbsp;由采美信息技术提供技术支持</p>
-        </div>
-        <div class="footer-mobile">
-            <p><a href="#" @click.prevent="openStatementDialog">采美声明</a></p>
-            <p>— 由采美网提供技术支持 —</p>
-        </div>
-        <!--声明对话框-->
-        <div class="statementModel" v-show="showStatement" style="display: none">
-            <div class="model"><i class="close" @click="closeStatementModel"></i>
-                <!-- 标题 -->
-                <div class="title">{{isCmComtent?'采美声明':'代理声明'}}</div>
-                <!-- 内容 -->
-                <div class="content" v-if="!isCmComtent">{{statementContent}}</div>
-                <div class="content" v-html="cmContent" else></div>
-            </div>
-        </div>
-        <div class="float-zplm"><a target="_blank"
-                                   href="https://www-b.caimei365.com/topic-6.html?name=%E6%AD%A3%E5%93%81%E8%81%94%E7%9B%9F"><img
-                src="/img/quality/float-img.png"></a></div>
-
-        <!-- 微信二维码 -->
-        <div class="qrCodeImage" v-if="showQrcodeImage && parameters.qrCodeImage">
-            <span class="closeHandle" @click="handleColseQrCodeImage">&times;</span>
-            <img :src="parameters.qrCodeImage" alt="公众号"/>
-            <div class="foot-text">
-                <div v-if="!isPC">长按识别</div>
-                <div>关注公众号了解更多</div>
-            </div>
-        </div>
-        <!--授权图模态框-->
-        <div class="sq-book-modal" @click="hideSqBookModal" v-show="isShowSqBookModal" id="sq-book-modal"></div>
-        <transition enter-active-class="myZoomIn" leave-active-class="myZoomOut">
-            <div class="sq-book-img myZoomIn" v-show="isShowSqBookModal">
-                <i class="close" @click="hideSqBookModal"></i>
-                <img :src="isPC?parameters.appletsCertificateImage:parameters.appletsCertificateImage">
-            </div>
-        </transition>
-    </template>
-    <template v-else>
-        <div class="not-found" v-if="isLoading">
-            <img src="https://static.caimei365.com/www/not-found.png">
-            <p>该商品授权信息不存在!</p>
-        </div>
-    </template>
-</div><!-- 引入底部 -->
-<template th:replace="components/foot-link"></template>
-<script charset="utf-8" type="text/javascript"
-        th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/product/qualityauthorize.js(v=${version})}"></script>
-</body>

+ 2 - 2
src/main/resources/templates/supplier-center/components/tableft.html

@@ -14,7 +14,7 @@
         <div class="con" style="display:none">
             <a :href="'/supplier-'+GLOBAL_SHOP_ID+'.html'">查看店铺</a>
             <a href="/supplier/decoration.html">装扮主页</a>
-            <a href="/supplier/release.html">发布商品</a>
+            <a href="/supplier/release.html" v-if="isForbidTabs">发布商品</a>
             <a href="/supplier/goods.html">我的商品</a>
             <a href="/supplier/brand.html">品牌管理</a>
         </div>
@@ -66,7 +66,7 @@
                 <div class="con">
                     <a :href="'/supplier-'+GLOBAL_SHOP_ID+'.html'">查看店铺</a>
                     <a href="/supplier/decoration.html">装扮主页</a>
-                    <a href="/supplier/release.html">发布商品</a>
+                    <a href="/supplier/release.html" v-if="isForbidTabs">发布商品</a>
                     <a href="/supplier/goods.html">我的商品</a>
                     <a href="/supplier/brand.html">品牌管理</a>
                 </div>

+ 0 - 6
src/main/resources/templates/supplier-center/dashboard.html

@@ -63,12 +63,6 @@
                         <span class="perfect" v-if="homeData.dataIntegrity!='100%'" @click="perfect">立即完善</span>
                         <span class="ziliao">资料完整度:<span>{{homeData.dataIntegrity}}</span></span>
                     </div>
-                    <div class="message">
-                      <a href="/supplier/message/list.html">
-                        <span class="msg_num" v-if="msgFlag">{{homeData.unReadMessageCount}}</span>
-                        <span class="icon mIcon msg"></span>
-                        </a>
-                    </div>
                 </div>
                 <div class="product">
                     <p>商品数据</p>

+ 28 - 9
src/main/resources/templates/supplier-center/message/list.html

@@ -25,9 +25,13 @@
             <template th:replace="supplier-center/components/tableft"></template>
             <div class="right">
                 <div class="content clear">
-                    <div class="title">所有消息</div>
+                    <div class="title">
+                        <div class="tabs-item"  v-for="(item, index) in mssageTabBar" :key="index" @click="changeTabsFn(index,item.messageType)" :class="mssageTabBarIndex == index ? 'active':''">
+                            <a href="javascript: void(0);">{{item.text}}<span>({{item.bages | NumBadge}})</span></a>
+                        </div>
+                    </div>
                     <div class="section">
-                        <div class="section-top" v-if="isPC">
+                        <div class="section-top" v-if="messagesList.length > 0 && isPC">
                             <div class="cheacked">
                               <input type="checkbox" v-model="isCheckedAll" class="check" @click="checkedAllFn">
                                 <span>全选</span>
@@ -38,21 +42,21 @@
                             </div>
                         </div>
                         <div class="section-content" v-if="messagesList.length > 0">
-                            <div class="new-list" v-for="(item, index) in messagesList" :key="index" :class="item.readFlag==1?'notclick':''">
+                            <div class="new-list" v-for="(item, index) in messagesList" :key="index" :class="item.saved==1?'notclick':''">
                                 <div class="text">
-                                 <input type="checkbox"  class="check" v-model="item.check" @change="checkedItemFn(item)" />
-                                    <p>{{item.content}}</p>
+                                    <input type="checkbox"  class="check" v-model="item.check" @change="checkedItemFn(item)" />
+                                    <p v-html="hanldeNoticeText(item)"></p>
                                 </div>
-                                <div class="time">{{item.addTime}}</div>
+                                <div class="time">{{item.time}}</div>
                             </div>
                         </div>
                         <div v-else class="empty">
-                            <img src="/img/common/empty.png">
+                            <img src="/img/common/icon-notice-emptys@2x.png">
                             <div class="msg"><p>暂无数据</p></div>
                         </div>
                     </div>
                 </div>
-                  <div class="section-top" v-if="!isPC">
+                <div class="section-top" v-if="messagesList.length > 0 && !isPC">
                     <div class="cheacked">
                      <input type="checkbox" class="check"  v-model="isCheckedAll" @click="checkedAllFn">
                         <span>全选</span>
@@ -61,7 +65,21 @@
                          <a href="javascript:void(0);" class="btn Read" @click="signMessageFn">标为已读</a>
                          <a href="javascript:void(0);" class="btn" @click="deleteMessageFn">删除</a>
                     </div>
-                 </div>
+                </div>
+                <div v-if="(!isPC) && noMore" class="noMore">---- 没有更多了 ----</div>
+                <div v-if="isPC && pageTotal>1" class="pageWrap clear">
+                    <a v-if="listQuery.pageNum>1" class="prev" @click="toPagination(listQuery.pageNum*1-1)" href="javascript:void(0);"></a>
+                    <template v-for="n in showPageBtn">
+                        <a v-if="n" :class="{'on':(n==listQuery.pageNum)}" @click="toPagination(n)" href="javascript:void(0);" v-text="n"></a>
+                        <span v-else>···</span>
+                    </template>
+                    <a v-if="listQuery.pageNum<pageTotal" class="next" @click="toPagination(listQuery.pageNum*1+1)" href="javascript:void(0);"></a>
+                    <span>共<b v-text="pageTotal>1?pageTotal:1"></b>页</span>
+                    <span>跳至</span>
+                    <input v-model="pageInput" @blur="checkNum()"/>
+                    <span>页</span>&nbsp;
+                    <a class="btn" href="javascript:void(0);" @click="toPagination(pageInput)">点击跳转</a>
+                </div>
             </div>
         </div>
 
@@ -76,6 +94,7 @@
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/supplier.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/mixins/noticeMixin.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/message.js(v=${version})}"></script>
 </body>
 </html>

+ 11 - 5
src/main/resources/templates/supplier-center/shop/goods.html

@@ -108,6 +108,12 @@
                             <li>新品展示</li>
                             <li>操作</li>
                         </ul>
+                        <div class="goods-tips" v-if="isForbid">
+                            <div class="end-tips">
+                                <span class="WEB-icon tips"></span>
+                                <span>您的上架费已到期,已禁止商品的所有操作,支付账户上架费后才能继续操作。</span>
+                            </div>
+                        </div>
                         <div class="tbody">
                             <ul v-for="(product, index) in productsList" :key="index"
                                 :class="[product.isChecked ?'bg-gouxuan':'']">
@@ -171,11 +177,11 @@
                                 </li>
                                 <li>
                                     <div class="good-handle">
-                                        <a class="btn " href="javascript: void(0);" v-if="[0,1,2,3,8,9].indexOf(product.validFlag)!=-1" @click="editGoodFn(product)">编辑</a>
-                                        <a class="btn primary" href="javascript: void(0);" v-if="[2].indexOf(product.validFlag)!=-1" @click="pageLinkDetils(product)">查看</a>
-                                        <a class="btn " href="javascript: void(0);" v-if="[2].indexOf(product.validFlag)!=-1" @click="ItemDownshelf(product)">下架</a>
-                                        <a class="btn danger" href="javascript: void(0);" v-if="product.isDelFeatured" @click="DeletePushHotFn(product)">删除主页推荐</a>
-                                        <a class="btn success" href="javascript: void(0);" v-if="product.isAddFeatured" @click="AddPushHotFn(product)">添加主页推荐</a>
+                                        <a :class="isForbid? 'none':''" class="btn " href="javascript: void(0);" v-if="[0,1,2,3,8,9].indexOf(product.validFlag)!=-1" @click="editGoodFn(product)">编辑</a>
+                                        <a :class="isForbid? 'none':''" class="btn primary" href="javascript: void(0);" v-if="[2].indexOf(product.validFlag)!=-1" @click="pageLinkDetils(product)">查看</a>
+                                        <a :class="isForbid? 'none':''" class="btn " href="javascript: void(0);" v-if="[2].indexOf(product.validFlag)!=-1" @click="ItemDownshelf(product)">下架</a>
+                                        <a :class="isForbid? 'none':''" class="btn danger" href="javascript: void(0);" v-if="product.isDelFeatured" @click="DeletePushHotFn(product)">删除主页推荐</a>
+                                        <a :class="isForbid? 'none':''" class="btn success" href="javascript: void(0);" v-if="product.isAddFeatured" @click="AddPushHotFn(product)">添加主页推荐</a>
                                     </div>
                                 </li>
                             </ul>

+ 0 - 1
src/main/resources/templates/supplier/index.html

@@ -170,7 +170,6 @@
                         <a th:href="${supplier.medicalPracticeLicenseImg3}" target="_blank" th:if="not${#strings.isEmpty(supplier.medicalPracticeLicenseImg3)}">
                             <img th:src="${supplier.medicalPracticeLicenseImg3}">
                         </a>
-                         <div class="cont" th:if="${#strings.isEmpty(supplier.medicalPracticeLicenseImg1)}">暂无</div>
                     </div>
                 </div>
                 <div class="part" >

+ 0 - 7
src/main/resources/templates/user-center/dashboard.html

@@ -47,13 +47,6 @@
                             </div>
                             <div class="msg"><span>资料完整度:<em class="red">{{degree}}</em></span><a href="/user/setting/information.html">立即完善</a></div>
                         </div>
-                        <div class="message">
-                            <a href="/user/message/list.html">
-                                <i class="icon mIcon">
-                                    <span  v-if="unReadMessageCount>0" :class="[unReadMessageCount < 10 ? 'circular':'ellipse']">{{unReadMessageCount >= 99 ? '99+' : unReadMessageCount}}</span>
-                                </i>
-                            </a>
-                        </div>
                     </div>
                     <div class="svip-content clear">
                         <div class="title order">超级会员</div>

+ 13 - 8
src/main/resources/templates/user-center/message/list.html

@@ -28,9 +28,13 @@
                     <img src="/img/base/loading.gif">
                 </div>
                 <div class="content clear" v-else>
-                    <div class="title">所有消息</div>
+                    <div class="title">
+                        <div class="tabs-item"  v-for="(item, index) in mssageTabBar" :key="index" @click="changeTabsFn(index,item.messageType)" :class="mssageTabBarIndex == index ? 'active':''">
+                            <a href="javascript: void(0);">{{item.text}}<span>({{item.bages | NumBadge}})</span></a>
+                        </div>
+                    </div>
                     <div class="section">
-                        <div class="section-top" v-if="isPC">
+                        <div class="section-top" v-if="messagesList.length > 0 && isPC">
                             <div class="cheacked" >
                             <input type="checkbox" v-model="isCheckedAll" class="check" @click="checkedAllFn">
                                 <span>全选</span>
@@ -41,21 +45,21 @@
                             </div>
                         </div>
                         <div class="section-content" v-if="messagesList.length > 0">
-                            <div class="new-list" v-for="(item, index) in messagesList" :key="index" :class="item.readFlag==1?'notclick':''">
+                            <div class="new-list" v-for="(item, index) in messagesList" :key="index" :class="item.saved==1?'notclick':''">
                                 <div class="text">
                                     <input type="checkbox"  class="check" v-model="item.check" @change="checkedItemFn(item)" />
-                                    <p>{{item.content}}</p>
+                                    <p v-html="hanldeNoticeText(item)"></p>
                                 </div>
-                                <div class="time">{{item.addTime}}</div>
+                                <div class="time">{{item.time}}</div>
                             </div>
                         </div>
                         <div v-else class="empty">
-                            <img src="/img/common/empty.png">
+                            <img src="/img/common/icon-notice-emptys@2x.png">
                             <div class="msg"><p>暂无数据</p></div>
                         </div>
                     </div>
                 </div>
-                <div class="section-top" v-if="!isPC">
+                <div class="section-top" v-if="messagesList.length > 0 && !isPC">
                     <div class="cheacked" >
                      <input type="checkbox" class="check"  @change="checkedAllFn" v-model="isCheckedAll">
                         <span>全选</span>
@@ -65,7 +69,7 @@
                          <a href="javascript:void(0);" class="btn" @click="deleteMessageFn">删除</a>
                     </div>
                  </div>
-                 <div v-if="(!isPC) && noMore" class="noMore">---- 没有更多了 ----</div>
+                <div v-if="(!isPC) && noMore" class="noMore">---- 没有更多了 ----</div>
                 <div v-if="isPC && pageTotal>1" class="pageWrap clear">
                     <a v-if="listQuery.pageNum>1" class="prev" @click="toPagination(listQuery.pageNum*1-1)" href="javascript:void(0);"></a>
                     <template v-for="n in showPageBtn">
@@ -92,6 +96,7 @@
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/mixins/noticeMixin.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/message.js(v=${version})}"></script>
 </body>
 </html>