Преглед изворни кода

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

zhengjinyi пре 2 година
родитељ
комит
e20ae61e0a
28 измењених фајлова са 858 додато и 304 уклоњено
  1. 8 1
      src/main/resources/static/css/base/base.h5.css
  2. 6 0
      src/main/resources/static/css/base/base.pc.css
  3. 28 14
      src/main/resources/static/css/supplier-center/message.css
  4. 53 48
      src/main/resources/static/css/supplier-center/shop/goods.css
  5. 27 13
      src/main/resources/static/css/user-center/message.css
  6. BIN
      src/main/resources/static/img/base/H5-icon.png
  7. BIN
      src/main/resources/static/img/base/WEB-icon.png
  8. BIN
      src/main/resources/static/img/common/icon-notice-emptys@2x.png
  9. 6 3
      src/main/resources/static/js/account/login.js
  10. 1 1
      src/main/resources/static/js/account/register-supplier.js
  11. 62 5
      src/main/resources/static/js/base.js
  12. 44 0
      src/main/resources/static/js/common/serviceapi/supplier.service.js
  13. 45 1
      src/main/resources/static/js/common/serviceapi/user.service.js
  14. 24 0
      src/main/resources/static/js/common/serviceapi/utils.service.js
  15. 3 0
      src/main/resources/static/js/supplier-center/dashboard.js
  16. 121 80
      src/main/resources/static/js/supplier-center/message.js
  17. 59 0
      src/main/resources/static/js/supplier-center/mixins/noticeMixin.js
  18. 27 18
      src/main/resources/static/js/supplier-center/shop/goods.js
  19. 115 72
      src/main/resources/static/js/user-center/message.js
  20. 154 0
      src/main/resources/static/js/user-center/mixins/noticeMixin.js
  21. 9 9
      src/main/resources/static/js/user-center/setting/information.js
  22. 13 3
      src/main/resources/templates/components/header.html
  23. 2 2
      src/main/resources/templates/supplier-center/components/tableft.html
  24. 0 6
      src/main/resources/templates/supplier-center/dashboard.html
  25. 27 8
      src/main/resources/templates/supplier-center/message/list.html
  26. 11 5
      src/main/resources/templates/supplier-center/shop/goods.html
  27. 0 7
      src/main/resources/templates/user-center/dashboard.html
  28. 13 8
      src/main/resources/templates/user-center/message/list.html

+ 8 - 1
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}
@@ -50,11 +51,17 @@
 .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;}

+ 6 - 0
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}

+ 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: 160vw;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: 160vw;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/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}$',

+ 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);
             }
         }
         // 信息中心

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

@@ -607,5 +607,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

@@ -538,6 +538,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)
+                });
         }
 
 };

+ 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

+ 121 - 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,130 @@
                 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){
+                        _self.messagesList = data.list.map(function (el) {
+                            el.check = false
+                            return el;
+                        });
+                        _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 +213,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

+ 115 - 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,98 @@ 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){
+                         _self.messagesList = data.list.map(function (el) {
+                             el.check = false
+                             return el;
+                         });
+                         _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 +178,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 +219,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){

+ 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">

+ 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>

+ 27 - 8
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>
@@ -40,19 +44,19 @@
                         <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="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 - 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>