Przeglądaj źródła

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

Administrator 4 lat temu
rodzic
commit
566f552f76
83 zmienionych plików z 2498 dodań i 25 usunięć
  1. 8 0
      src/main/java/com/caimei/www/controller/authorized/supplier/SupplierPageController.java
  2. 1 1
      src/main/resources/config/dev/application-dev.yml
  3. 5 2
      src/main/resources/static/css/base/init.css
  4. 498 0
      src/main/resources/static/css/supplier-center/shop/preview.css
  5. 129 0
      src/main/resources/static/css/supplier-center/shop/release.css
  6. 4 3
      src/main/resources/static/css/user-center/order/detail.css
  7. BIN
      src/main/resources/static/img/supplier/Retract.png
  8. BIN
      src/main/resources/static/img/supplier/icon-star@2x.png
  9. BIN
      src/main/resources/static/img/supplier/icon-tel.png
  10. BIN
      src/main/resources/static/img/supplier/selected.png
  11. 10 2
      src/main/resources/static/js/shopping/cart.js
  12. 75 0
      src/main/resources/static/js/supplier-center/shop/preview.js
  13. 1022 0
      src/main/resources/static/js/supplier-center/shop/release.js
  14. 4 1
      src/main/resources/static/js/user-center/order/detail.js
  15. 1 0
      src/main/resources/static/js/user-center/order/list.js
  16. 4 0
      src/main/resources/static/lib/ckeditor5-new/ckeditor.js
  17. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/af.js
  18. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ar.js
  19. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ast.js
  20. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/az.js
  21. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/bg.js
  22. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ca.js
  23. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/cs.js
  24. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/da.js
  25. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/de-ch.js
  26. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/de.js
  27. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/el.js
  28. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/en-au.js
  29. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/en-gb.js
  30. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/en.js
  31. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/eo.js
  32. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/es.js
  33. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/et.js
  34. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/eu.js
  35. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/fa.js
  36. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/fi.js
  37. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/fr.js
  38. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/gl.js
  39. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/gu.js
  40. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/he.js
  41. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/hr.js
  42. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/hu.js
  43. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/id.js
  44. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/it.js
  45. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ja.js
  46. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/km.js
  47. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/kn.js
  48. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ko.js
  49. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ku.js
  50. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/lt.js
  51. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/lv.js
  52. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ms.js
  53. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/nb.js
  54. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ne.js
  55. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/nl.js
  56. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/no.js
  57. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/oc.js
  58. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/pl.js
  59. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/pt-br.js
  60. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/pt.js
  61. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ro.js
  62. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ru.js
  63. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/si.js
  64. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sk.js
  65. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sl.js
  66. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sq.js
  67. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sr-latn.js
  68. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sr.js
  69. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/sv.js
  70. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/th.js
  71. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/tr.js
  72. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/tt.js
  73. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/ug.js
  74. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/uk.js
  75. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/vi.js
  76. 0 0
      src/main/resources/static/lib/ckeditor5-new/translations/zh.js
  77. 137 0
      src/main/resources/static/lib/js/magnifier.js
  78. 1 1
      src/main/resources/templates/product/detail.html
  79. 2 2
      src/main/resources/templates/shopping/cart.html
  80. 160 5
      src/main/resources/templates/supplier-center/shop/preview.html
  81. 429 3
      src/main/resources/templates/supplier-center/shop/release.html
  82. 5 2
      src/main/resources/templates/user-center/order/detail.html
  83. 3 3
      src/main/resources/templates/user-center/order/list.html

+ 8 - 0
src/main/java/com/caimei/www/controller/authorized/supplier/SupplierPageController.java

@@ -50,6 +50,8 @@ public class SupplierPageController extends BaseController {
 	private static final String GOODS_LIST = "supplier-center/shop/goods";
     /** 商品预览 */
 	private static final String GOODS_PREVIEW = "supplier-center/shop/preview";
+	/** 查看示例 */
+	private static final String SHOP_EXAMPLE = "supplier-center/shop/example";
     /** 系统消息列表 */
     private static final String MESSAGE = "supplier-center/message/list";
 
@@ -168,6 +170,12 @@ public class SupplierPageController extends BaseController {
         return GOODS_PREVIEW;
     }
 
+    /** 查看示例 */
+    @GetMapping("/supplier/goods/example.html")
+    public String goodsExample() {
+        return SHOP_EXAMPLE;
+    }
+
     /** 消息列表 */
     @GetMapping("/supplier/message/list.html")
     public String settingMessage() {return MESSAGE;}

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

@@ -52,7 +52,7 @@ logging:
 
 # 服务域名
 caimei:
-  spiServer: http://192.168.2.56:8008
+  spiServer: http://192.168.2.75:8008
   imageDomain: https://img-b.caimei365.com
   wwwDomain: https://www-b.caimei365.com
 

+ 5 - 2
src/main/resources/static/css/base/init.css

@@ -2,7 +2,7 @@
 html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,p,pre,img,table,tr,th,td,form,input,textarea,button{margin:0;padding:0;}
 body,input,textarea,button,select{font-family:'Microsoft YaHei',SimSun,Arial,Helvetica,sans-serif;}
 body{width:100%;min-height:100%;font-size:14px;color:#4A4F58;background:#F5F5F5;}
-.clear{clear:both;}
+.clear{clear:both;*height:1%;zoom: 1;}
 .clear:after{content:'';display:table;clear:both;}
 ::-ms-clear,::-ms-reveal{display:none;}
 a{text-decoration:none;color:#4A4F58;}
@@ -12,7 +12,7 @@ img{border:none;vertical-align:middle;}
 button{border:none;outline:none;}
 input{outline:none;box-shadow:none;}
 pre{white-space:pre-wrap;}
-li{list-style-position:inside;}
+ul,li{list-style-position:inside;list-style: none;}
 header li,footer li{list-style:none;}
 [v-cloak]{display:none;}
 table{border-collapse: collapse;}
@@ -37,3 +37,6 @@ input[type=checkbox][disabled=disabled]{cursor:default;}
   from{opacity:0;-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0);}
   to{opacity:1;-webkit-transform:none;transform:none;}
 }
+/*公共吐司文字居中*/
+.jconfirm-box.jconfirm-hilight-shake.jconfirm-type-default.jconfirm-type-animated{text-align: center !important;font-size: 16px !important;}
+.jconfirm .jconfirm-box div.jconfirm-title-c{text-align: left !important;}

+ 498 - 0
src/main/resources/static/css/supplier-center/shop/preview.css

@@ -0,0 +1,498 @@
+.preview-container{
+    width: 100%;
+    height: auto;
+    background-color: #f6f6f6;
+    margin-bottom: 20px;
+    opacity: 0;
+}
+.preview-container.active{
+    opacity: 1;
+}
+.preview-container-top{
+    width: 100%;
+    height: 80px;
+    background-color: #FFC684;
+    font-size: 30px;
+    color: #FFF;
+    line-height: 80px;
+    text-align: center;
+}
+.inner-container{
+    width: 1200px;
+    height: auto;
+    margin: 0 auto;
+}
+.preview-header{
+    width: 100%;
+    height: 590px;
+    padding: 12px;
+    background-color: #FFFFFF;
+    margin: 10px 0 20px 0;
+    box-sizing: border-box;
+}
+.preview-header .preview-banner{
+    width: 450px;
+    height: 548px;
+    float: left;
+    border:1px solid #EFEFEF;
+    position: relative;
+}
+.preview-header .preview-info{
+    width: 700px;
+    height: 546px;
+    float: right;
+}
+.preview-header .preview-banner-big{
+    width: 448px;
+    height: 448px;
+    float: left;
+}
+.preview-header .preview-banner-big .preview-img{
+    width: 100%;
+    height: 100%;
+    display: block;
+}
+.preview-header .preview-banner-big span{
+    display: none;
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 215px;
+    height: 215px;
+    border: 1px solid #aaa;
+    background: rgba(255,208,22,0.4);
+    opacity: .5;
+    filter: alpha(opacity: 50);
+    cursor: move;
+}
+.preview-header .preview-banner-small{
+    width: 100%;
+    height: 98px;
+    padding:  10px;
+    float: left;
+    box-sizing: border-box;
+}
+.preview-header .preview-banner-small .item{
+    width: 74px;
+    height: 74px;
+    border: 2px solid #FFF;
+    margin-right: 10px;
+    float: left;
+    background-color: #fff;
+    cursor: pointer;
+}
+.preview-header .preview-banner-small .item:last-child{
+    margin-right: 0;
+}
+.preview-header .preview-banner-small .item img{
+    width: 100%;
+    height: 100%;
+    display: block;
+    opacity: .5;
+    -moz-transition: .5s;
+    -webkit-transition: .5s;
+    transition: .5s;
+}
+.preview-header .preview-banner-small .item.item-cur{
+    border-color: #e15616;
+}
+.preview-header .preview-banner-small .item.item-cur img{
+    opacity: 1;
+}
+.preview-header .preview-box{
+    display: none;
+    overflow: hidden;
+    position: absolute;
+    right: -555px;
+    top: 0;
+    width: 548px;
+    height: 548px;
+    border: 1px solid #e4e4e4;
+    z-index: 9999;
+    background: #FFFFFF;
+}
+.preview-header .preview-box img{
+    width: 1096px;
+    height: 1096px;
+    margin-right: 10px;
+    display: block;
+}
+.preview-info .preview-info-title{
+    width: 100%;
+    height: auto;
+    float: left;
+}
+.preview-info .preview-info-title .info-p{
+    width: 100%;
+    height: auto;
+    float: left;
+}
+.preview-info .preview-info-title .info-p.classly{
+    font-size: 14px;
+    color: #999;
+}
+.preview-info .preview-info-title .info-p.name{
+    font-size: 18px;
+    color: #333;
+    font-weight: bold;
+    line-height: 24px;
+    height: auto;
+    width: 100%;
+    margin: 10px 0;
+}
+.preview-info .preview-info-title .info-p.label .label-s{
+    font-size: 12px;
+    background: #A69DFE;
+    color: #fff;
+    padding: 5px 10px;
+    border-radius: 2px;
+    margin: 0 10px 5px 0;
+    display: inline-block;
+}
+.preview-info  .preview-info-main{
+    width: 100%;
+    height: 326px;
+    padding:16px 20px;
+    background-color: #FDF8F6;
+    border-radius: 2px;
+    float: left;
+    margin-top: 15px;
+}
+.preview-info  .preview-info-main .info{
+    width: 100%;
+    height: 30px;
+    float: left;
+    margin-bottom: 5px;
+    line-height: 30px;
+}
+.preview-info  .preview-info-main .info .label{
+    width: 70px;
+    height: 30px;
+    float: left;
+    display: block;
+    font-size: 14px;
+    line-height: 30px;
+    text-align: right;
+    color: #999;
+}
+.preview-info  .preview-info-main .info p{
+    float: left;
+    height: 100%;
+    padding-left: 20px;
+}
+.preview-info  .preview-info-main .info.price .fave-tag{
+    width: 54px;
+    height: 22px;
+    display: inline-block;
+    border-radius: 2px;
+    background:linear-gradient(45deg,rgba(255,42,42,1) 0%,rgba(255,145,0,1) 100%);
+    box-shadow:0px 3px 6px rgba(255,145,0,0.17);
+    font-size: 14px;
+    text-align: center;
+    line-height: 22px;
+    color: #FFF;
+    float: left;
+    margin-right: 5px;
+    margin-top: 4px;
+}
+.preview-info  .preview-info-main .info.price .fave-text{
+    font-size: 14px;
+    color: #FF2A2A;
+}
+.preview-info  .preview-info-main .info.price .fave-text .big{
+    font-size: 24px;
+}
+.preview-info  .preview-info-main .info.price .fave-text-none{
+    font-size: 14px;
+    color: #333;
+    text-decoration: line-through;
+}
+.preview-info  .preview-info-main .info .num-box{
+    width: 93px;
+    height: 24px;
+    border-radius: 4px ;
+    border: 1px solid #EEE;
+    float: left;
+    margin-top: 2px;
+    margin-left: 20px;
+}
+.preview-info  .preview-info-main .info .num-box span{
+    display: inline-block;
+    float: left;
+    line-height: 24px;
+    font-size: 14px;
+    text-align: center;
+    height: 24px;
+}
+.preview-info  .preview-info-main .info .num-box span:nth-child(2){
+    width: 45px;
+    border-right:1px solid #EEE;
+    border-left:1px solid #EEE;
+    color: #e15616;
+}
+.preview-info  .preview-info-main .info .num-box span:nth-child(1),
+.preview-info  .preview-info-main .info .num-box span:nth-child(3){
+    width: 22px;
+    color: #999;
+}
+.preview-info  .preview-info-main .info.sever{
+    margin-top: 10px;
+    border-top: 1px dashed #F9DDD0;
+    line-height: 40px;
+    height: 40px;
+}
+.preview-info  .preview-info-main .info.sever .label{
+    line-height: 40px;
+}
+.preview-info  .preview-info-main .info.sever .text{
+    padding-left: 24px;
+    background: url("img/supplier/selected.png") left center no-repeat;
+    margin-right: 15px;
+}
+.preview-info  .preview-info-btn{
+    width: 100%;
+    height: 36px;
+    float: left;
+    margin-top: 20px;
+}
+.preview-info  .preview-info-btn .info-btn{
+    float: left;
+    width: 154px;
+    height: 36px;
+    float: left;
+    margin: 0 10px;
+    border-radius: 2px;
+    line-height: 36px;
+    text-align: center;
+    font-size: 14px;
+}
+.preview-info  .preview-info-btn .info-btn.buy{
+    background-color: #e15616;
+    color: #FFF;
+}
+.preview-info  .preview-info-btn .info-btn.cart{
+    background-color: #FFF;
+    color: #e15616;
+    border: 1px solid #e15616;
+}
+/*下半部分*/
+.preview-bottom{
+    width: 100%;
+    min-height:522px ;
+}
+.preview-bottom .preview-left{
+    width: 890px;
+    min-height:522px ;
+    float: left;
+    background: #fff;
+}
+.preview-bottom .preview-right{
+    width: 290px;
+    min-height:522px ;
+    float: right;
+}
+.preview-bottom .preview-left .preview-tabs{
+    width: 100%;
+    height: 40px;
+    border-bottom: 1px solid #e15616;
+}
+.preview-bottom .preview-left .preview-tabs-item{
+    width: 128px;
+    height: 39px;
+    line-height: 39px;
+    background-color: #FFF;
+    font-size: 16px;
+    color:#333 ;
+    float: left;
+    text-align: center;
+    cursor: pointer;
+}
+.preview-bottom .preview-left .preview-tabs-item.active{
+    background-color: #e15616;
+    color: #FFF;
+}
+.preview-bottom .preview-left .preview-section{
+    width: 100%;
+    height: auto;
+    padding:10px 20px;
+}
+.preview-bottom .preview-left  .preview-section-html{
+    width: 100%;
+    height: auto;
+}
+.preview-bottom .preview-left  .preview-section-html img{
+    width: 100%;
+    height: auto;
+    display: block;
+}
+.preview-bottom .preview-section .parameter-main {
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+    background-color: #FFFFFF;
+    border: 1px solid #EFEFEF;
+    border-radius: 4px;
+}
+.preview-bottom .preview-section .parameter-main .item-tabody {
+    width: 100%;
+    height: auto;
+    border-bottom: 1px solid #EFEFEF;
+    font-size: 14px;
+    display: flex;
+    flex-wrap: wrap;
+}
+.preview-bottom .preview-section .parameter-main .item-td{
+    width: 238px;
+    float: left;
+    border-right: 1px solid #EFEFEF;
+    color: #999999;
+    padding:10px 20px;
+    display: flex;
+    flex: 2;
+    flex-direction: column;
+}
+.preview-bottom .preview-section .parameter-main .item-tr{
+    width: 462px;
+    float: left;
+    color: #333333;
+    padding:10px 20px;
+    display: flex;
+    flex: 8;
+    flex-direction: column;
+}
+.preview-bottom .preview-section .parameter-main .item-tr:last-child{
+    border-bottom: none;
+}
+.preview-bottom .preview-section .parameter-text{
+    width: 100%;
+    height: auto;
+    margin-bottom: 30px;
+}
+.preview-bottom .preview-section .parameter-text-title{
+    font-size: 16px;
+    color: #333;
+    line-height: 36px;
+    text-align: left;
+}
+.preview-bottom .preview-section .parameter-text-p{
+    font-size: 14px;
+    color: #999;
+    line-height: 24px;
+    text-align: justify;
+}
+.preview-bottom .preview-section .none{
+    font-size: 14px;
+    color: #e15616;
+    line-height: 36px;
+    text-align: center;
+}
+.preview-right .preview-shopinfo{
+    width: 100%;
+    height: auto;
+    background-color: #FFF;
+    margin-bottom: 20px;
+    float: left;
+}
+.preview-right .preview-shopinfo .title{
+    width: 100%;
+    padding: 0 15px;
+    height: 40px;
+    background-color: #FFA347;
+    line-height: 40px;
+    font-size: 16px;
+    color: #FFF;
+    float: left;
+}
+.preview-right .preview-shopinfo .shopinfo-main{
+    width: 100%;
+    padding: 0 15px;
+    background-color: #FFF;
+    float: left;
+}
+.preview-right .preview-shopinfo .shopinfo-main .name{
+    width: 100%;
+    height: 40px;
+    border-bottom: 1px solid #f7f7f7;
+    float: left;
+    font-size: 16px;
+    color: #333;
+    line-height: 40px;
+    overflow: hidden;
+    text-overflow:ellipsis;
+    white-space: nowrap;
+}
+.preview-right .preview-shopinfo .shopinfo-main .shopinfo-text{
+    width: 100%;
+    height: auto;
+    float: left;
+    margin-bottom: 10px;
+}
+.preview-right .preview-shopinfo .shopinfo-main .shopinfo-text h1{
+    font-size: 14px;
+    color: #333;
+    font-weight: normal;
+    line-height: 24px;
+}
+.preview-right .preview-shopinfo .shopinfo-main .shopinfo-text p{
+    font-size: 12px;
+    color: #666;
+    font-weight: normal;
+    line-height: 24px;
+}
+.preview-right .preview-shopinfo .shopinfo-main .shopinfo-text .star{
+    width: 16px;
+    height: 16px;
+    display: block;
+    float: left;
+    margin: 0 4px;
+    background: url(img/supplier/icon-star@2x.png)no-repeat center center;
+    margin-top: 4px;
+}
+.preview-right .preview-shopinfo .shopinfo-main .shopinfo-btn{
+    width:266px;
+    height:36px;
+    background:rgba(225,86,22,1);
+    opacity:1;
+    border-radius:2px;
+    margin: 0 auto;
+    font-size: 14px;
+    color: #FFFF;
+    line-height: 36px;
+    text-align: center;
+    cursor: pointer;
+}
+.preview-right .preview-shopinfo .shopinfo-main .tel{
+    width: 120px;
+    height: 131px;
+    float: left;
+    padding-top: 30px;
+}
+.preview-right .preview-shopinfo .shopinfo-main .tel p{
+    font-size: 16px;
+    color: #333;
+    line-height: 24px;
+    text-align: left;
+}
+.preview-right .preview-shopinfo .shopinfo-main .tel-icon{
+    width:  131px;
+    height: 131px;
+    float: right;
+    background: url(img/supplier/icon-tel.png)no-repeat center center;
+    background-size: contain;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 129 - 0
src/main/resources/static/css/supplier-center/shop/release.css

@@ -0,0 +1,129 @@
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+}
+input[type="number"]{
+    -moz-appearance: textfield;
+}
+div{box-sizing: border-box;}
+.container{width: 100%;height: auto;box-sizing: border-box;background-color: #FFFFFF;padding: 0 16px;}
+.release-stepbox{width: 100%;height: 70px;padding: 10px 100px;box-sizing: border-box;}
+.release-stepbox .stepSpan{float: left;width:94px;padding: 0 15px;margin-right: 80px;position: relative;}
+.release-stepbox .stepSpan:last-child{margin-right: 0;}
+.release-stepbox .stepSpan .line{width: 80px;height: 2px;background: #999999;position: absolute;right:-80px;top: 50%;}
+.release-stepbox .stepSpan p{font-size: 16px;line-height: 24px;color: #999999;text-align: center;}
+.release-stepbox .stepSpan p span{display: inline-block;width: 24px;height: 24px;font-size: 14px;text-align: center;line-height: 24px;background: #999999;color: #FFFFFF;border-radius: 40px;margin-top: 5px;}
+.release-stepbox .stepSpan.active .line{background: #E15616;}
+.release-stepbox .stepSpan.active  p{color:#E15616 ;}
+.release-stepbox .stepSpan.active p span{background: #E15616;}
+.release-container{width: 100%;height: auto;border-top: 2px solid #F5F5F5;padding:20px 0;opacity: 0;}
+.release-container.active{opacity: 1;}
+.release-main-container{width: 100%;padding: 0 220px;box-sizing: border-box;}
+.release-from{width: 100%;height:auto;margin-bottom: 15px;line-height: 32px;font-size: 14px;color: #333;}
+.release-from.text p .em{color: #e15616;}
+.release-from.none{margin-bottom: 0;}
+.release-from .release-label{width: 100%;float: left;text-align: left;height: 32px;}
+.release-from .release-label span{color: #FF0000;}
+.release-from .release-input{width: 100%;height: auto;float: left;position: relative;}
+.release-from .release-input .input{width: 100%;height: 36px;padding: 0 10px;border-radius: 2px;border: 1px solid #EFEFEF;float: left;font-size: 13px;box-sizing: border-box;}
+.release-from .release-input .input.price{padding-left: 30px;}
+.release-from .release-input .yang{width: 30px;height: 36px;position: absolute;left: 0;top: 0;line-height: 36px;text-align: center;}
+.release-from .release-input .unit{height: 36px;padding: 0 10px;position: absolute;right: 0;top: 0;line-height: 36px;text-align: right;font-size: 14px;}
+.release-from .release-input .tax{display: block;float: left;}
+.release-from .release-input .mg{margin-left: 10px;}
+.release-from .release-input .edit-btn{display: block;float: left;margin-left: 20px;color: #e15616;text-decoration: underline;}
+.release-from .release-input .input.keyword{width: 243px;margin:0 10px 10px 0;}
+.release-from .release-input .p{display: block;position: absolute;right: 0;bottom: 0;line-height: 32px;font-size: 12px;color: #FF9100;text-decoration: underline;}
+.release-from .release-input .add{display: inline-block;width: 100%;height: 20px;float: right;line-height: 20px;font-size: 14px;color: #FF9100;text-align: right;}
+.release-from .release-input .add span{font-size: 20px;}
+.release-from .release-input .input.keyword:nth-child(2n){margin-right: 0;}
+.release-from .release-input .release-param{width:100%;height: auto;padding: 0 10px;border: 1px solid #EFEFEF;float: left;margin-bottom: 10px;border-radius: 2px;position: relative;}
+.release-from .release-input .release-param .param-input{width: 100%;height: 36px;border: none;font-size: 13px;line-height: 36px;}
+.release-from .release-input .release-param .param-input:first-child{border-bottom: 1px solid #EFEFEF;}
+.release-from .release-input .release-param .del-btn{display: block;line-height: 64px;color: #FF0000;font-size: 14px;position: absolute;top: 0;right: -40px;}
+.release-from .release-input .release-opt{width: 100%;height: 155px;border: 1px solid #e4e7ed;border-radius: 2px;background-color: #fff;box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);overflow: hidden;overflow-y: scroll;box-sizing: border-box;margin: 5px 0;padding: 10px 0;z-index: 88;position: absolute;top: 25px;left: 0;}
+.release-from .release-input .textarea{width: 420px;height: 150px;position: relative;padding: 10px;overflow: hidden;}
+.release-from .release-input .textarea .limit-text{position: absolute;right: 15px;bottom: 10px;line-height: 30px;font-size:13px ;color: #D0D0D0;}
+.release-from .release-input .textarea .limit-text .red{color:#e15616 ;}
+.release-from .release-input .textarea textarea{width: 100%;height: 100%;border: 1px solid #EBEBEB;border-radius: 2px;resize: none;padding: 10px;font-size: 13px;color: #333;}
+.release-from .release-input .release-opt .opt-item{font-size: 14px;padding: 0 10px;position: relative;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;color: #606266;height: 34px;line-height: 34px;box-sizing: border-box;cursor: pointer;}
+.release-from .release-input .release-opt .opt-item:hover {background-color: #F5E7E0;color: #e15616;}
+.release-from .release-input.upload{height: 78px;}
+.release-from .release-input.upload.image{height: auto;width: 500px;}
+.release-from .release-input.Editor{width: 600px;min-height: 540px;margin: 0;}
+.release-from  .upload-file{width: 76px;height: 76px;border: 1px solid #EBEBEB;border-radius: 2px;position: relative;float: left;margin-right: 10px;margin-bottom: 10px;cursor: pointer;}
+.release-from  .upload-file .icon-del{width: 16px;height: 16px;display: block;background: url("/img/base/icon.png") no-repeat;background-position: -175px -300px;position: absolute;right: -8px;top: -8px;cursor: pointer;}
+.release-from  .upload-file .icon-add{display: block;width:26px ;height: 26px;background: url("/img/base/icon.png") no-repeat;background-position: -168px -374px;position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;}
+.release-from  .upload-file .input-file{width: 76px;height: 76px;opacity:0;cursor: pointer;}
+.release-from  .upload-file .upload-img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+.release-from .release-input .input.tags{width: 303px;}
+.release-from .release-input .add-btn{width: 107px;height: 34px;border-radius: 2px;border: 1px solid #e15616;float: left;margin-left: 10px;text-align: center;line-height: 34px;font-size: 14px;color:#e15616 ;cursor: pointer;}
+.release-from .release-input .add-btn.active{background-color: #e15616;color: #FFF;}
+.release-from .release-tips{width: 100%;color: #FF0000;float: left;}
+.release-from.text{height: auto;}
+.release-from .text{width: 100%;line-height: 32px;font-size: 12px;color: #999999;margin-top: 8px;}
+.release-from .tags-main{width: 100%;height: auto;}
+.release-from .tags-main .item-tags{padding: 0 10px;line-height: 28px;background: #FFF3E5;text-align: center;font-size:14px;color:  #333333;margin: 5px;border-radius: 2px;float: left;position: relative;}
+.release-from .tags-main .item-tags .del-tags{width: 16px;height: 16px;display: block;background: url("/img/base/icon.png") no-repeat;background-position: -175px -300px;position: absolute;right: -5px;top: -5px;cursor: pointer;}
+.release-from .select-main{padding: 0 10px;cursor: pointer;width: 133px;height: 32px;border: 1px solid #EFEFEF;border-radius: 2px;line-height: 32px;color: #333;font-size: 14px;margin-right: 10px;float: left;appearance: none;-webkit-appearance: none;-moz-appearance: none;position: relative;}
+.release-from .select-main:last-child{margin-right: 0;}
+.release-from .select-main.border{border: 1px solid #e15616;}
+.release-from .select-main .select{cursor: pointer;width: 113px;height: 30px;line-height: 30px;color: #606266;font-size: 12px;float: left;appearance: none;-webkit-appearance: none;-moz-appearance: none;border: none;background: url("/img/supplier/Retract.png") no-repeat scroll right 0px center transparent;}
+.release-from .select-main .option-main{width: 100%;min-height:50px;max-height: 200px;border: 1px solid #e4e7ed;border-radius: 2px;background-color: #fff;box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);overflow: hidden;overflow-y: scroll;box-sizing: border-box;margin: 5px 0;padding: 10px 0;z-index: 88;position: absolute;top: 28px;left: 0;}
+.release-from .select-main .option {font-size: 14px;padding: 0 20px;position: relative;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;color: #606266;height: 34px;line-height: 34px;box-sizing: border-box;cursor: pointer;}
+.release-from .select-main .option:hover {background-color: #F5E7E0;color: #e15616;}
+.release-from .from-button{width: 100%;height: 70px;padding: 10px 0;}
+.release-from .from-button.last{margin-left: 0;}
+.release-from .from-button.last .btn{width: 153px;}
+.release-from .from-button .btn{box-sizing: border-box;width: 232px;height: 50px;background-color: #e15616;box-shadow: 0px 3px 6px 0px rgba(249, 75, 75, 0.17);border-radius: 2px;display: block;line-height: 50px;text-align: center;float: left;margin: 0 5px;}
+.release-from .from-button .btn.prev{border: 1px solid #e15616;background-color: #ffe6dc;color: #e15616;}
+.release-from .from-button .btn.next{background-color: #e15616;color: #fff;}
+.release-from .from-button .btn.eyes{background-color:#A69DFE;color: #fff;}
+/*预览*/
+.preview-container{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background: rgba(0,0,0,.5);z-index: 99999;display: none;}
+.preview-container .preview-content{width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;}
+.preview-container .preview-content img{border-radius: 4px;}
+/*销售信息*/
+input[type="radio"]{opacity:0;}
+.release-from .release-input .release-props{width: 100%;height: 36px;}
+.release-from .release-input .release-props .release-radio{width:150px;height:36px;margin-right:10px;line-height:34px;box-sizing:border-box;font-size:14px;text-align:center;display:inline-block}
+.release-from .release-input .release-props .release-radio.second{width:100px;}
+.release-from .release-input .release-props .release-radio input{display:none}
+.release-from .release-input .release-props .release-radio i{display:block;font-style:normal;cursor:pointer;width:100%;height:100%;position:relative;overflow:hidden;border-radius:2px;background:#FFF;border:1px solid #b8bfca;color:#627386;}
+.release-from .release-input .release-props .release-radio i:before{position:absolute;right:0;bottom:0;display:none;width:20px;height:20px;background-position:-208px -253px}
+.release-from .release-input .release-props .release-radio input:checked + i{border-color:#e15616;color:#e15616}
+.release-from .release-input .release-props .release-radio input:checked + i:before{display:block}
+.release-from .release-input .release-province{width: 100%;height: auto;margin-top: 20px;}
+.release-from .release-input .release-province .province-item{line-height:26px;padding: 0 10px;text-align: center;font-size: 14px;color: #333;background: #F5F5F5;border-radius: 2px;display: block;margin: 0 10px 10px 0;float: left;}
+.release-from .release-input .release-province .province-item.active{background: #e15616;color: #FFF;}
+/*税率弹窗*/
+.popup{width: 100%;height: 100%;background: rgba(0,0,0,0.3);position: fixed;top: 0;left: 0;z-index: 999;opacity: 0;}
+.popup.active{opacity: 1;}
+.popup-layer{-webkit-overflow-scrolling: touch;width: 338px;position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin: auto;background-color: #fff;-webkit-background-clip: content;border-radius: 2px;box-shadow: 1px 1px 50px rgba(0,0,0,.3);z-index: 1000;}
+.popup-layer.bran{height: 330px;}
+.popup-layer.edit{height: 153px;}
+.popup-layer .popup-title{padding: 0 80px 0 20px;height: 42px;line-height: 42px;border-bottom: 1px solid #eee;font-size: 14px;color: #333;overflow: hidden;background-color: #F8F8F8;border-radius: 2px 2px 0 0;position: relative;}
+.popup-title .popup-close{width: 16px;height: 16px;display: block;position: absolute;right: 10px;top: 13px;background-position: 1px -40px;cursor: pointer;}
+.popup-layer .popup-content{padding: 16px;}
+.popup-layer .popup-content .popup-from{height: auto;color: #999999;line-height: 32px;position: relative;}
+.popup-layer .popup-content .popup-from input{width: 260px;height: 32px;border: 1px solid #EFEFEF;font-size: 14px;color: #333;padding: 0 10px;margin-left: 10px;box-sizing: border-box;}
+.popup-layer .popup-content .popup-from span{display: inline-block;height: 32px;font-size: 14px;color: #999;float: left;}
+.popup-layer .popup-content .popup-from .popup-p{width: 240px;height: 32px;font-size: 14px;color: #333;padding: 0 10px;float: left;}
+.popup-layer .popup-content .popup-from .popup-textarea{height: 78px;float: left;margin-left: 10px;width: 236px;border-radius: 2px;}
+.popup-layer .popup-content .popup-from textarea{width: 100%;height: 100%;font-size: 12px;resize:none;border: 1px solid #EFEFEF;padding: 5px;}
+.popup-layer .popup-content .popup-from  .poze{width: 40px;height: 30px;text-align: center;font-size: 14px;position: absolute;right: 0;top: 0;padding: 0 10px;}
+.popup-layer .popup-content .popup-tips{color: #FF0000;float: left;margin-left: 10px;}
+.popup-layer .popup-content .popup-from .popup-upload{height: 48px;float: left;margin-left: 10px;}
+.popup-layer .popup-content .popup-from  .upload-file{width: 48px;height: 48px;border: 1px solid #EFEFEF;border-radius: 2px;position: relative;cursor: pointer;}
+.popup-layer .popup-content .popup-from .upload-file .icon-del{width: 16px;height: 16px;display: block;background: url("/img/base/icon.png") no-repeat;background-position: -175px -300px;position: absolute;right: -8px;top: -8px;cursor: pointer;}
+.popup-layer .popup-content .popup-from  .upload-file .icon-add{display: block;width:26px ;height: 26px;background: url("/img/base/icon.png") no-repeat;background-position: -168px -374px;position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;}
+.popup-layer .popup-content .popup-from .upload-file .input-file{width: 48px;height: 48px;opacity:0;cursor: pointer;margin-left: 0;padding: 0;}
+.popup-layer .popup-content .popup-from  .upload-file .upload-img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+.popup-layer .popup-button{text-align: right;padding: 0 15px 12px;pointer-events: auto;user-select: none;-webkit-user-select: none;}
+.popup-layer .popup-button .btn{height: 28px;line-height: 28px;margin: 5px 5px 0;padding: 0 15px;border: 1px solid #dedede;background-color: #fff;color: #333;border-radius: 2px;font-weight: 400;cursor: pointer;text-decoration: none;display: inline-block;}
+.popup-layer .popup-button .btn.btn-confim{border-color: #E15616;background-color: #E15616;color: #fff}
+.popup-layer .popup-button .btn.btn-cancel{}
+.ck-editor {min-width: 600px !important;}
+.ck-content {min-height: 500px;}
+.footTop{height: 100px;}
+.baseHeadCenter .keyword{height: 40px;line-height: 40px;}

+ 4 - 3
src/main/resources/static/css/user-center/order/detail.css

@@ -66,9 +66,10 @@ li{list-style:none}
     .order-container .section-shopinfo .product{width: 100%;height: auto;float: left;}
     .order-container .section-shopinfo .section-prosinfo{width: 100%;height: 126px;padding: 16px 0;}
     .order-container .section-shopinfo .product-t{width: 100%;height: 100px;float: left;}
-    .order-container .section-shopinfo .product-t .image{width: 98px;height: 98px;float: left;border: 1px solid #e2e7ef;margin-right: 10px;}
+    .order-container .section-shopinfo .product-t .image{width: 98px;height: 98px;float: left;border: 1px solid #e2e7ef;margin-right: 10px;position: relative;}
     .order-container .section-shopinfo .product-t .image img{width: 98px;height: 98px;display: block;}
-    .order-container .section-shopinfo .product-t .text{width: 818px;float: left;}
+    .order-container .section-shopinfo .product-t .image .tip{width: 40px;height: 20px;border-radius: 2px;font-size: 12px;line-height: 20px;text-align: center;display: block;position: absolute;top: 0;left: 0;color: #FFFFFF; background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);}
+    .order-container .section-shopinfo .product-t .text{width: 810px;float: left;}
     .order-container .section-shopinfo .product-t .tit{float: left;width: 100%;margin-bottom: 6px;line-height: 22px;font-size: 16px;text-align: left;color: #22272E;}
     .order-container .section-shopinfo .product-t .info{width: 100%;height: auto;float: left;}
     .order-container .section-shopinfo .product-t .info-l{width: 170px;height: auto;float: left;}
@@ -83,7 +84,7 @@ li{list-style:none}
     .order-container .section-shopinfo .info-r .activity .tit p{line-height: 24px;font-size: 12px;color: #22272E;text-align: left;box-sizing: border-box;color: #e15616;text-align: center;padding-right: 16px;}
     .order-container .section-shopinfo .info-r .activity .tit .icon{width: 16px;height: 16px;display: block;position: absolute;top: 4px;right: 4px;}
     .order-container .section-shopinfo .info-r .activity .tit .icon:before{width: 16px;height: 16px;background-position: -93px -3px;}
-    .order-container .section-shopinfo .info-r .activity .action{display:none; min-width: 198px;min-height: 74px;box-sizing: border-box;padding: 10px;border: 1px solid rgba(225, 86, 22, 0.3);background-color: #FFF;position: absolute;bottom: -74px;left: -1px;border-radius: 2px;}
+    .order-container .section-shopinfo .info-r .activity .action{display:none; min-width: 232px;min-height: 74px;box-sizing: border-box;padding: 10px;border: 1px solid rgba(225, 86, 22, 0.3);background-color: #FFF;position: absolute;bottom: -74px;left: -1px;border-radius: 2px;}
     .order-container .section-shopinfo .info-r .activity .action p{color: #22272E;text-align: left;font-size: 12px;line-height: 20px;}
     .order-container .section-shopinfo .info-r .activity .action p .btn{height: 24px;position: absolute;bottom: 0;left: 0;}
     .order-container .section-shopinfo .info-r .activity .action p span{cursor: pointer;display: block;float: right;width: 56px;height: 24px;background-color: #e15616;border-radius: 2px;line-height: 24px;text-align: center;font-size: 12px;color: #FFF;}

BIN
src/main/resources/static/img/supplier/Retract.png


BIN
src/main/resources/static/img/supplier/icon-star@2x.png


BIN
src/main/resources/static/img/supplier/icon-tel.png


BIN
src/main/resources/static/img/supplier/selected.png


+ 10 - 2
src/main/resources/static/js/shopping/cart.js

@@ -68,6 +68,13 @@ var shoppingCart = new Vue({
             $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
             if(!isPC){looseBody();}
         },
+        ckeckItem: function(event){
+            var el = event.currentTarget;
+            if(!$(el).prop("checked")){
+                $(el).parents('.supplierItem').find('.supplierTit').find('input.check').prop("checked", false);
+            }
+            this.computedPrice();
+        },
         ckeckSupplier: function(event, supplierChecked){
             var el = event.currentTarget;
             var _self = this;
@@ -157,12 +164,13 @@ var shoppingCart = new Vue({
                     if(promotions.mode ===2){
                         var promotionsPrice = 0;
                         promotions.productList.forEach(function(product){
-                            promotionsPrice += product.number * product.price;
+                            if (_self.submitIds.includes(product.productId*1)){
+                                promotionsPrice += product.number * product.price;
+                            }
                         });
                         if(promotionsPrice>=promotions.touchPrice){
                             reducedPrice += promotions.reducedPrice;
                             totalPrice -= promotions.reducedPrice;
-
                         }
                     } else if (promotions.type===1 && promotions.mode ===1) {
                         promotions.productList.forEach(function(product){

+ 75 - 0
src/main/resources/static/js/supplier-center/shop/preview.js

@@ -0,0 +1,75 @@
+/**
+ * Created by ZHJY on 2020/6/18.
+ */
+
+var previewContainer = new Vue({
+    el:"#previewContainer",
+    data: {
+        tabIndex:0,
+        userId:'',
+        shopId:'',
+        isRequest:false,
+        shopInfo:{},
+        shopData:{},
+        previewBigimage:'',
+        previewThumb:[],
+        previewTags:[],
+        previewParams:[],
+    },
+    computed: {
+
+    },
+    methods: {
+        shopInfoData: function(){
+            var _this = this;
+            SupplierApi.SupplierViewShopInfo({userId:_this.userId},function(response){
+                if(response.code ==0 ){
+                    _this.isRequest = true;
+                    _this.shopData = response.data.shop;
+                }
+            });
+        },
+        infoFata: function(){
+            var _this = this;
+            _this.previewThumb = _this.shopInfo.params.image;
+        },
+        changeTab: function(index){
+            this.tabIndex = index;
+        },
+        homePageFn: function(){
+            window.open('/supplier/index.html?id='+this.shopId);
+        },
+        toFixedFn: function(text){
+            return Number(text).toFixed(2);
+        },
+        gernerateTitleId: function(index){
+            return "title_" +index
+        },
+        setArray: function(arr){//回显处理字符串
+            var _ARRAY = [];
+            arr.split(',').forEach(function(item,index){
+                var _OBJ = {name:item};
+                _ARRAY.push(_OBJ)
+            });
+            return _ARRAY
+        },
+    },
+    mounted: function () {
+        var _this = this;
+        if(globalUserData){
+            _this.userId = globalUserData.userId;
+            _this.shopId = globalUserData.shopId;
+        }
+        if( CAIMEI.Storage.getItem('adProductPeview')){
+            _this.shopInfo =JSON.parse(CAIMEI.Storage.getItem('adProductPeview'));
+            _this.infoFata();
+            _this.shopInfoData();
+            _this.previewBigimage = _this.shopInfo.params.image[0].image;
+            _this.previewTags =_this.setArray(_this.shopInfo.tags);
+            _this.previewParams =_this.shopInfo.params.param;
+            console.log(_this.previewTags);
+        }
+        var magnifier = new mag('.preview-banner-big', '.preview-box','#CM____pic_thumb','.hover','.bigitem');
+            magnifier.init();
+    }
+});

+ 1022 - 0
src/main/resources/static/js/supplier-center/shop/release.js

@@ -0,0 +1,1022 @@
+/**
+ * Created by ZHJY on 2020/9/17.
+ */
+jqMultipleShow("click", ".navList", ".tab", ".con");
+$('.navLayout').find('.navList').removeClass("on").find('.con').hide().find('a').removeClass("on");
+$('.navLayout').find('.navList').eq(1).addClass("on").find('.con').show().find('a').eq(2).addClass("on");
+var releaseContainer = new Vue({
+    el:"#releaseContainer",
+    data: {
+        NODE_ENV_BASE_URL:'',
+        releaseType:'',
+        productId:'',
+        activeNum:0,
+        isSelectActive:0,
+        isRequest:false,
+        isAddBrand:false,//控制提交品牌弹窗
+        tagsText:'',//标签输入框
+        brandImage:'',//品牌LOGO
+        brandTextarea:'',//品牌描述
+        brandAssociationList:[],//品牌联想
+        isNoneBrand:false,
+        releaseParams:{
+            userID:0,
+            shopID:0,
+            name:'', //商品名称
+            aliasName:'',//内部商品名称
+            tinyTypeID:'',//三级分类ID
+            brandID:'',//品牌ID
+            tags:'',//商品标签
+            unit:'',//包装规格
+            productCode:'',//商品编码
+            productType:'',//商品类型,
+            machineType:'',//医疗器械类型
+            searchKey:'',//搜索关键词
+            qualificationImg:"",//器械资质
+            normalPrice:'',//市场价
+            price1:'',//售价
+            costPrice:'',//结算价
+            includedTax:3,//是否含税
+            invoiceType:1,//发票类型
+            taxPoint:13,//税率
+            minBuyNumber:'',//起订量
+            stock:'',//库存
+            step:1,//购买数量
+            byFlag:0,//运费
+            allAreaFlag:1,//销售区域
+            provinceIDs:0,//指定区域
+            detailInfo:'',//商品详情信息
+            orderInfo :'',//订购方案
+            serviceInfo:'',//服务详情
+            firstClassifyName:'',
+            twoClassifyName:'',
+            threeClassifyName:'',
+            brandName:'',
+        },
+        params:{
+            param:[],//相关参数
+            image:[],//商品图片
+        },
+        viewer:{},
+        tagsList:[],//本地存储标签
+        searchKeyArr:[],//本地存储关键词
+        paramKeyList:[{paramsName:'',paramsContent:''}],//相关参数
+        formData:new FormData(),
+        classificationFirstList:[{name:'请选择',value:''}],
+        classificationTwoList:[{name:'请选择',value:''}],
+        classificationThreeList:[{name:'请选择',value:''}],
+        keywordText:'请务必准确定义关键词,关键词会影响商品的搜索结果,建议从品牌,商品学名,商品别名,商品大类别和商品小类别5个方面考虑,每个关键词不超过16个汉字',
+        selectText:{
+            bigTypeID:'请选择一级分类',
+            smallTypeID:'请选择二级分类',
+            tinyTypeID:'请选择三级分类',
+            goodsType:'请选择商品类型',
+            apparatusType:'请选择器械类型',
+        },
+        goodsTypeList:[
+            {name:'妆字号',value:1},
+            {name:'械字号',value:2},
+            {name:'其他',value:0},
+        ],
+        apparatusTypeList:[
+            {name:'一类医疗器械',value:1},
+            {name:'二类医疗器械',value:2},
+            {name:'三类医疗器械',value:3},
+        ],
+        searchKeyList:[
+            {placeholder:'建议输入品牌关键词',value:""},
+            {placeholder:'建议输入品牌学名关键词',value:""},
+            {placeholder:'建议输入商品别名/市场称呼关键词',value:""},
+            {placeholder:'建议输入商品大类别关键词',value:""},
+            {placeholder:'建议输入商品小类别关键词',value:""},
+        ],
+        productDetailInfoID:null,
+        ProvinceList:[],
+        GoodsImagesList:[],
+        isProvince:false,
+        provinceIns:0,
+        oldNum:0,
+        newNum: 0,
+        orderingMin:0,
+        orderingMax:500,
+        severiMin:0,
+        severiMax:500,
+        isTaxPonitEditPopup:false,
+        isTaxPonitEdit:false,
+        fromMessage:'',//提示文字
+        isBrandAssociation:false,
+        vShow_Name:false,
+        vShow_AliasName:false,
+        vShow_TinyTypeID:false,
+        vShow_BrandID:false,
+        vShow_GoodsType:false,
+        vShow_QualificationImg:false,
+        vShow_Tags:false,
+        vShow_Unit:false,
+        vShow_NormalPrice:false,
+        vShow_Price1:false,
+        vShow_includedTax:false,
+        vShow_MinBuyNumber:false,
+        vShow_Stock:false,
+        vShow_isProvince:false,
+        vShow_taxPoint:false,
+        vShow_GoodsImages:false,
+        vShow_detailInfoEditor:true,
+        vShow_orderInfoEditor:true,
+    },
+    computed: {
+
+    },
+    methods: {
+        GetEditReleaseProductInfo: function(productId){
+            var _this = this;
+            SupplierApi.EditReleaseProductInfo({productId:productId},function(response){
+                if(response.code == 0){
+                    console.log(response);
+                    var data = response.data;
+                    _this.releaseParams.tinyTypeID = data.tinyTypeID;
+                    _this.releaseParams.brandID = data.brandID;
+                    _this.releaseParams.name = data.name;
+                    _this.releaseParams.aliasName = data.aliasName;
+                    _this.releaseParams.productType = data.productType;
+                    _this.releaseParams.machineType = data.machineType;
+                    _this.releaseParams.qualificationImg = data.qualificationImg;
+                    _this.releaseParams.unit = data.unit;
+                    _this.releaseParams.productCode = data.productCode;
+                    _this.releaseParams.normalPrice = data.normalPrice;
+                    _this.releaseParams.price1 = data.price1;
+                    _this.releaseParams.includedTax = data.includedTax == '' ? 1 : data.includedTax;
+                    _this.releaseParams.invoiceType = data.invoiceType;
+                    _this.releaseParams.taxPoint = data.taxPoint;
+                    _this.releaseParams.costPrice = data.costPrice;
+                    _this.releaseParams.minBuyNumber = data.minBuyNumber;
+                    _this.releaseParams.stock = data.stock;
+                    _this.releaseParams.step = data.step;
+                    _this.releaseParams.byFlag = data.byFlag;
+                    _this.releaseParams.allAreaFlag = data.allAreaFlag;
+                    _this.releaseParams.detailInfo = data.productDetail.detailInfo;
+                    _this.releaseParams.serviceInfo = data.productDetail.serviceInfo;
+                    _this.releaseParams.orderInfo = data.productDetail.orderInfo;
+                    _this.productDetailInfoID = data.productDetail.productDetailInfoID;
+                    _this.tagsList = _this.setTagArray(data.tags);
+                    _this.EchoProductFn(data.productType);
+                    _this.EchoMachineTypeFn(data.machineType);
+                    _this.selectText.bigTypeID = data.bigTypeName;
+                    _this.selectText.smallTypeID = data.smallTypeName;
+                    _this.selectText.tinyTypeID = data.tinyTypeName;
+                    _this.releaseParams.firstClassifyName = data.bigTypeName;
+                    _this.releaseParams.twoClassifyName = data.smallTypeName;
+                    _this.releaseParams.threeClassifyName = data.tinyTypeName;
+                    _this.releaseParams.brandName = data.brandName;
+                    _this.GoodsImagesList = _this.EchoGoodsImagesListFn(data.imageList);
+                    if(data.searchKey != null){
+                        _this.setSearchKeyArray(data.searchKey);
+                    }
+                    if(data.parametersList == ''){
+                        _this.paramKeyList = [{paramsName:'',paramsContent:''}];
+                    }else{
+                        _this.paramKeyList = data.parametersList;
+                    }
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        EchoProductFn : function(type) {
+            switch (type) {
+                case '0' && null:
+                    this.selectText.goodsType = '其他';
+                    break;
+                case '1':
+                    this.selectText.goodsType = '妆字号';
+                    break;
+                case '2':
+                    this.selectText.goodsType = '械字号';
+                    break;
+            }
+        },
+        EchoMachineTypeFn : function(type) {
+            switch (type) {
+                case '1' && null:
+                    this.selectText.apparatusType = '一类医疗器械';
+                    break;
+                case '2':
+                    this.selectText.apparatusType = '二类医疗器械';
+                    break;
+                case '3':
+                    this.selectText.apparatusType = '三类医疗器械';
+                    break;
+            }
+        },
+        EchoGoodsImagesListFn: function(arr){//处理商品主图回显
+            var newArray =[];
+            arr.forEach( function(el){ newArray.push(el.image) });
+            return newArray;
+        },
+        touchmoveFn: function(){
+            this.isSelectActive =0;
+        },
+        showOption: function(type){//显示option
+            var _this = this;
+            switch (type) {
+                case 'first':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=1;
+                    break;
+                case 'two':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=2;
+                    break;
+                case 'three':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=3;
+                    break;
+                case 'type':
+                    _this.vShow_GoodsType = false;
+                    _this.isSelectActive=4;
+                    break;
+                case 'ratus':
+                    _this.isSelectActive=5;
+                    break;
+            }
+        },
+        SelectChangeTypeFn: function(option){//选择商品类型
+            var _this = this;
+            _this.releaseParams.productType = Number(option.value);
+            _this.selectText.goodsType = option.name;
+            _this.isSelectActive = 0;
+            _this.vShow_GoodsType = false;
+        },
+        SelectChangeApparatusFn: function(option){//选择器械类型
+            var _this = this;
+            _this.releaseParams.machineType = option.value;
+            console.log( _this.releaseParams.machineType)
+            _this.selectText.apparatusType = option.name;
+            _this.isSelectActive = 0;
+            _this.vShow_GoodsType = false;
+        },
+        bindBrandAssociationFn: function(e){//品牌输入联想
+            var _this = this;
+            var name = e.target.value;
+            if (name != ''){
+                SupplierApi.GetBrandAssociation({userId: _this.releaseParams.userID,name:name},function(response){
+                    if(response.code ==0){
+                        if(response.data&&response.data.length>0){
+                            _this.brandAssociationList = response.data;
+                            _this.isBrandAssociation = true;
+                        }else{
+                            _this.brandAssociationList = [];
+                            _this.isBrandAssociation = false;
+                        }
+                    }
+                });
+            }else{
+                _this.isBrandAssociation = false;
+            }
+        },
+        brandAssociationFn: function(){//失去焦点判断是否存在品牌信息
+            var _this = this;
+            if(_this.releaseParams.brandName == ''){
+                CAIMEI.dialog('请输入商品品牌名称');
+            }else{
+                SupplierApi.CheckSupplierBrandDetection({name:_this.releaseParams.brandName},function(response){
+                    if(response.code ==0){
+                        CAIMEI.dialog('您的品牌可以使用~');
+                        _this.releaseParams.brandID = response.data.id;
+                    }else{
+                        _this.releaseParams.brandID = '';
+                        CAIMEI.Modal('您输入的品牌名称暂未被采美收录,请检查品牌名称是否输入正确或者向采美提交该品牌','确定','去提交',function () {
+                            setTimeout(function(){
+                                _this.isAddBrand = true;
+                            },200);
+                        });
+                    }
+                });
+            }
+        },
+        uploadBrandImagesFn: function(){//上传品牌LOGO
+            var _this = this;
+            var inputDOM = _this.$refs.brandImage;
+            var formData = new FormData();
+            var file = inputDOM.files;
+            formData.append('file', file[0]);
+            SupplierApi.uploadimg(formData,function(response){
+                _this.brandImage = response.data;
+            });
+        },
+        removeBrandImageFn: function(){//删除品牌LOGO
+            var _this = this;
+            _this.brandImage = '';
+        },
+        confimAddBrandPopup: function(){//确定提交新品牌
+            var _this = this;
+            var params = {
+                    name:_this.releaseParams.brandName,
+                    userID:_this.releaseParams.userID,
+                    logo:_this.brandImage,
+                    description:_this.brandTextarea
+            };
+            SupplierApi.AddSupplierBrand(params,function(response){
+                if(response.code == 0){
+                    CAIMEI.Alert('品牌提交成功,将在1-2个工作日内进行审核~','确定',true,function () {
+                        _this.releaseParams.brandID = response.data.id;
+                        _this.isBrandAssociation = false;
+                        _this.isAddBrand = false;
+                    });
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            });
+        },
+        hideAddBrandPopup: function(){//取消提交新品牌
+            var _this = this;
+            _this.isAddBrand = false;
+        },
+        SelectChangeAssociationFn: function(option){//选择品牌
+            var _this = this;
+            _this.releaseParams.brandName = option.name;
+            _this.releaseParams.brandID = option.id;
+            _this.isBrandAssociation = false;
+            _this.vShow_BrandID = false;
+        },
+        GetFistClassFn: function(){//获取一级分类菜单
+            var _this = this;
+            PublicApi.GetFirstClassFication({},function (response) {
+                if(response.code == 0){
+                    _this.classificationFirstList = response.data;
+                    _this.isRequest = true
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        GetTwoClassFn: function(value){//获取一级分类菜单
+            var _this = this;
+            PublicApi.GetTwoClassFication({bigTypeId:value},function (response) {
+                if(response.code == 0){
+                    _this.classificationTwoList = response.data;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        GetThreeClassFn: function(value){//获取一级分类菜单
+            var _this = this;
+            PublicApi.GetThreeClassFication({smallTypeId:value},function (response) {
+                if(response.code == 0){
+                    _this.classificationThreeList = response.data;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        ChangeClassificationFirst: function(option){//选择一级分类
+            var _this = this;
+            _this.selectText.bigTypeID = option.name;
+            _this.releaseParams.firstClassifyName = option.name;
+            _this.selectText.smallTypeID='请选择二级分类';
+            _this.selectText.tinyTypeID = '请选择三级分类';
+            _this.isSelectActive = 0;
+            _this.GetTwoClassFn(option.bigTypeID);
+        },
+        ChangeClassificationTwo: function(option){//选择二级分类
+            var _this = this;
+            if(!option.smallTypeID){_this.isSelectActive = 0; return;}
+            _this.selectText.smallTypeID = option.name;
+            _this.selectText.tinyTypeID = '请选择三级分类';
+            _this.releaseParams.twoClassifyName = option.name;
+            _this.isSelectActive = 0;
+            _this.GetThreeClassFn(option.smallTypeID);
+        },
+        ChangeClassificationThree: function(option){//选择三级分类
+            var _this = this;
+            if(!option.tinyTypeID){_this.isSelectActive = 0; return;}
+            _this.releaseParams.tinyTypeID = option.tinyTypeID;
+            _this.selectText.tinyTypeID = option.name;
+            _this.releaseParams.threeClassifyName = option.name;
+            _this.isSelectActive = 0;
+            _this.vShow_TinyTypeID = false;
+        },
+        addTag:function(){//添加标签
+            var _this = this;
+            if(_this.tagsText == ''){
+                _this.vShow_Tags = true;
+                _this.fromMessage = '请输入商品标签!';
+            }else if(_this.in_array(_this.tagsText,_this.tagsList)){
+                _this.vShow_Tags = true;
+                _this.fromMessage = '商品标签已存在!';
+            }else{
+                _this.tagsList.push({"tag":_this.tagsText});
+                _this.tagsText = '';
+                _this.vShow_Tags = false;
+                _this.fromMessage = '';
+            }
+        },
+        removeTags:function(index){//删除标签
+            this.tagsList.splice(index,1);
+        },
+        in_array:function(search,array){//判断标签是否已存在
+            for(var i in array){
+                if(array[i].tag==search){
+                    return true;
+                }
+            }
+            return false;
+        },
+        uploadQualificationsFn: function(el) {//上传资质证书
+            var _this = this;
+            var inputDOM = _this.$refs.inputer;
+            var file = inputDOM.files;
+            _this.formData.append('file', file[0]);
+            SupplierApi.uploadimg(_this.formData,function(response){
+                _this.releaseParams.qualificationImg = response.data;
+                _this.vShow_QualificationImg = false;
+            });
+        },
+        removeQualificationsFn: function(){//删除资质图片
+            var _this = this;
+            _this.releaseParams.qualificationImg  = '';
+        },
+        addParamsFn: function(){//添加参数
+            var _this = this;
+            if(_this.paramKeyList.length>50){return;}
+            var obj ={paramsName:'',paramsContent:''};
+            _this.paramKeyList.push(obj)
+        },
+        removeParamsFn: function(index){//删除参数
+            var _this = this;
+            _this.paramKeyList.splice(index,1);
+        },
+        radioChangeInvoiceType: function(event) {//选择发票类型
+            var _this = this;
+            _this.releaseParams.invoiceType= event.target.value;
+            switch (_this.releaseParams.invoiceType) {
+                case '1':
+                    _this.releaseParams.taxPoint = 13;
+                    _this.isTaxPonitEdit = true;
+                    break;
+                case '2':
+                    _this.releaseParams.taxPoint = 6;
+                    _this.isTaxPonitEdit = true;
+                    break;
+                case '3':
+                    _this.releaseParams.taxPoint = '';
+                    _this.isTaxPonitEdit = false;
+                    break;
+            }
+        },
+        taxPonitEdit: function(){//修改税率
+            this.isTaxPonitEditPopup = true;
+        },
+        hideTaxPonitEditPopup: function(){//取消修改税率弹窗
+            var _this = this;
+            if(_this.releaseParams.taxPoint == ''){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '请输入税率';
+                return
+            }
+            if(_this.releaseParams.taxPoint == 0){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '税率不能为0';
+                return
+            }
+            this.isTaxPonitEditPopup = false;
+        },
+        confimTaxPonitEditPopup: function(){//确定修改税率
+            var _this = this;
+            if(_this.releaseParams.taxPoint == ''){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '请输入税率';
+                return
+            }
+            if(_this.releaseParams.taxPoint == 0){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '税率不能为0';
+                return
+            }
+            this.isTaxPonitEditPopup = false;
+        },
+        radioChangeStep: function(event){//选择指定购买数量
+            this.releaseParams.step= event.target.value;
+        },
+        radioChangeByFlag: function(event){//选择运费
+            this.releaseParams.byFlag= event.target.value;
+        },
+        radioChangeAllAreaFlag: function(event){//选择指定区域
+            var _this = this;
+            _this.releaseParams.areaFlag= event.target.value;
+            if( _this.releaseParams.areaFlag == '0'){
+                _this.isProvince=true;
+                _this.GetProvinceFn();
+            }else{
+                _this.vShow_isProvince = false;
+                _this.isProvince=false;
+            }
+        },
+        addProvinceFn: function(item){//选择指定区域
+            item.isChecked = ! item.isChecked;
+        },
+        GetProvinceFn: function(){//查询指定区域
+            var _this = this;
+            PublicApi.GetProvince({},function(response){
+                if(response.code == 0){
+                    var arr =[];
+                    var data = response.data;
+                    data.forEach(function(el){
+                        CAIMEI.returnedTarget();
+                        arr.push(Object.assign({},el,{ isChecked : false }))
+                    });
+                    _this.ProvinceList =arr;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        uploadGoodsImagesFn: function(event){//上传商品图片
+            var _this = this;
+            var inputDOM = _this.$refs.goodsImages;
+            var file = inputDOM.files;
+            _this.formData.append('file', file[0]);
+            SupplierApi.uploadimg(_this.formData,function(response){
+                _this.GoodsImagesList.push(response.data);
+                event.target.value = '';
+            });
+        },
+        showViewerImageFn: function(index ){//预览上传图片
+            var _this = this;
+            var DomEven = '#uploadGoodsImages'+index;
+            var ViewerDom = document.querySelector(DomEven);
+            _this.viewer = new Viewer(ViewerDom, {url:'data-image'});
+        },
+        removeGoodsImagesFn: function(index){//删除商品图片
+            var _this = this;
+            _this.GoodsImagesList.splice(index,1);
+        },
+        orderingTextConInput: function(event){//订购方案文字控制
+            var value = event.target.value;
+            var len = parseInt(value.length);
+            if (len > this.orderingMax) return;
+            this.orderingMin = len;
+            if(this.orderingMin == 500){
+                return;
+            }
+        },
+        severiTextConInput: function(event){//服务项目文字控制
+            var value = event.target.value;
+            var len = parseInt(value.length);
+            if (len > this.severiMax) return;
+            this.severiMin = len;
+            if(this.severiMin == 500){
+                return;
+            }
+        },
+        PrevStep: function(){//返回上一步
+            this.activeNum--;
+            this.scrollIntoView();
+        },
+        NextStep: function(){//进入第二步
+            var _this = this;
+            var KeyString = '',TagString='';
+            if(_this.releaseParams.name == ''){
+                _this.vShow_Name = true;
+                _this.fromMessage = '请输入商品显示名';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_Name = false;
+                },2000);
+                return
+            }
+            if(_this.releaseParams.aliasName == ''){
+                _this.vShow_AliasName = true;
+                _this.fromMessage = '请输入内部商品名';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_AliasName = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.tinyTypeID == ''){
+                _this.vShow_TinyTypeID = true;
+                _this.fromMessage = '请选择商品分类';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_TinyTypeID = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.brandID == ''){
+                _this.vShow_BrandID = true;
+                _this.fromMessage = '请选择商品品牌';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_BrandID = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.productType === ""){
+                _this.vShow_GoodsType = true;
+                _this.fromMessage = '请选择商品类型';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_GoodsType = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.productType == 2){
+                if(_this.releaseParams.machineType == ''){
+                    _this.vShow_GoodsType = true;
+                    _this.fromMessage = '请选择器械类型';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_GoodsType = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.qualificationImg == ''){
+                    _this.vShow_QualificationImg = true;
+                    _this.fromMessage = '请上传资质图片';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_QualificationImg = false;
+                    },2000);
+                    return;
+                }
+            }
+            //商品标签
+            if(_this.tagsList =='') {
+                _this.vShow_Tags = true;
+                _this.fromMessage = '请添加商品标签';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_Tags = false;
+                },2000);
+                return;
+            }else{
+                _this.tagsList.forEach(function(el){
+                    TagString += el.tag+',';
+                });
+                _this.releaseParams.tags = TagString.substring(0, TagString.lastIndexOf(','));
+            }
+            if(_this.releaseParams.unit == ''){
+                _this.vShow_Unit = true;
+                _this.fromMessage = '请输入包装规格';
+                setTimeout(function(){
+                    _this.vShow_Unit = false;
+                },2000);
+                _this.scrollIntoView();
+                return;
+            }
+            //搜索关键词
+            if(_this.searchKeyList!=''){
+                _this.searchKeyList.forEach(function(el){
+                    KeyString+=el.value+',';
+                });
+                _this.releaseParams.searchKey = KeyString.substring(0, KeyString.lastIndexOf(','));
+            }
+            if( _this.paramKeyList[0].paramsName == ''){
+                _this.params.param = [];
+            }else{
+                _this.params.param = _this.paramKeyList;
+            }
+            _this.activeNum++;
+            _this.scrollIntoView();
+        },
+        NextStep1: function(){//进入第三步
+            var _this = this;
+            if(_this.releaseParams.normalPrice == ''){
+                _this.vShow_NormalPrice = true;
+                _this.fromMessage = '请输入市场价';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_NormalPrice = false;
+                },2000);
+                return
+            }
+            if(_this.releaseParams.normalPrice == 0){
+                _this.vShow_NormalPrice = true;
+                _this.fromMessage = '市场价不能为0';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_NormalPrice = false;
+                },2000);
+                return
+            }
+            if(_this.releaseParams.price1 == ''){
+                _this.vShow_Price1 = true;
+                _this.fromMessage = '请输入售价';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_Price1 = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.price1 == 0){
+                _this.vShow_Price1 = true;
+                _this.fromMessage = '售价不能为0';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_Price1 = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.includedTax == 3){
+                _this.vShow_includedTax = true;
+                _this.fromMessage = '请选择是否含税';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_includedTax = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.minBuyNumber === ''){
+                _this.vShow_MinBuyNumber = true;
+                _this.fromMessage = '请输入起订量';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_MinBuyNumber = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.stock === ''){
+                _this.vShow_Stock = true;
+                _this.fromMessage = '请输入库存';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_Stock = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.minBuyNumber > _this.releaseParams.stock){
+                _this.vShow_MinBuyNumber = true;
+                _this.fromMessage = '起订量不能大于库存';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_MinBuyNumber = false;
+                },2000);
+                return;
+            }
+            if(_this.releaseParams.areaFlag == '0'){
+                _this.ProvinceList.forEach(function(el){
+                    if(el.isChecked){
+                        _this.releaseParams.provinceIDs+=el.provinceID+',';
+                    }
+                });
+                if(_this.releaseParams.provinceIDs == ''){
+                    _this.vShow_isProvince = true;
+                    _this.fromMessage = '请选择指定区域';
+                    setTimeout(function(){
+                        _this.vShow_isProvince = false;
+                    },2000);
+                    return;
+                }
+            }
+            _this.activeNum++;
+            _this.scrollIntoView();
+            if(_this.vShow_detailInfoEditor){
+                _this.initCKeditor();
+            }
+        },
+        NextStep2: function() {//点击进入第四步
+            var _this = this;
+            var detailInfo= detailInfoEditor.getData();
+            _this.releaseParams.detailInfo = detailInfo;
+            if(_this.GoodsImagesList ==''){
+                CAIMEI.dialog('请上传商品图片');
+                return;
+            }
+            if( _this.releaseParams.detailInfo ==''){
+                CAIMEI.dialog('请填写商品详情');
+                return;
+            }
+            _this.params.image = [];
+            _this.GoodsImagesList.forEach(function(el,index){
+                var imageObject = {};
+                if(index == 0 ){
+                    imageObject = {productImageId:'',image:el,mainFlag:'1'};
+                }else{
+                    imageObject = {productImageId:'',image:el,mainFlag:'0'};
+                }
+                _this.params.image.push(imageObject);
+            });
+            _this.activeNum++;
+            _this.scrollIntoView();
+            if(_this.vShow_orderInfoEditor){
+                _this.initOrderCKeditor();
+                _this.initSeverCKeditor();
+            }
+        },
+        initCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_detailInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#detailInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/formData/ckeditorImage'
+                }
+            }).then(function(editor) {
+                window.detailInfoEditor = editor;
+                var detailInfo= detailInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+                console.log(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        initOrderCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_orderInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#orderInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/formData/ckeditorImage'
+                }
+            }).then(function(editor) {
+                window.orderInfoEditor = editor;
+                var detailInfo= orderInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+                console.log(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        initSeverCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_orderInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#severInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/formData/ckeditorImage'
+                }
+            }).then(function(editor) {
+                window.severInfoEditor = editor;
+                var detailInfo= severInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        addReleaseGoodSubmitFn: function(){//提交发布商品
+            var _this = this;
+            _this.releaseParams.orderInfo = orderInfoEditor.getData();
+            _this.releaseParams.serviceInfo = severInfoEditor.getData();
+            if(_this.releaseType == 'edit'){
+                _this.releaseParams.productDetailInfoID = _this.productDetailInfoID;
+                _this.releaseParams.productID = _this.productId;
+                CAIMEI.returnedTarget();
+                _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
+                delete _this.releaseParams.imageList;
+                delete _this.releaseParams.parametersList;
+                delete _this.releaseParams.productDetail;
+            }else{
+                CAIMEI.returnedTarget();
+                _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
+            }
+            // console.log( _this.releaseParams);
+            SupplierApi.AddSupplierReleaseProduct(_this.releaseParams,function(response){
+                if(response.code == 0){
+                    CAIMEI.dialog('提交成功,等待审核',true,function () {
+                        location.href = '/supplier/myProduct.html';
+                        if(CAIMEI.Storage.getItem('adProductPeview')){
+                            CAIMEI.Storage.removeItem('adProductPeview');
+                        }
+                    });
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            });
+        },
+        addReleasePeview: function(){//预览按钮
+            var _this = this;
+            CAIMEI.returnedTarget();
+            _this.releaseParams.orderInfo = orderInfoEditor.getData();
+            _this.releaseParams.serviceInfo = severInfoEditor.getData();
+            _this.releaseParams = Object.assign(_this.releaseParams,{params:_this.params});
+            CAIMEI.Storage.setItem('adProductPeview', JSON.stringify(_this.releaseParams));
+            setTimeout(function(){
+                window.open('/supplier/goods/preview.html');
+            },1000)
+        },
+        blur_name: function(e){//商品名失去焦点
+            var _this = this;
+            _this.vShow_Name = false;
+            if(e.target.value == ''){
+                _this.vShow_Name = true;
+                _this.fromMessage = '请输入商品显示名';
+                setTimeout(function(){
+                    _this.vShow_Name = false;
+                },2000);
+            }else{
+                _this.vShow_Name = false;
+            }
+        },
+        blur_aliasName: function(e){//内部商品名失去焦点
+            var _this = this;
+            _this.vShow_AliasName = false;
+            if(e.target.value == ''){
+                _this.vShow_AliasName = true;
+                _this.fromMessage = '请输入内部商品名';
+                setTimeout(function(){
+                    _this.vShow_AliasName = false;
+                },2000);
+            }else{
+                _this.vShow_AliasName = false;
+            }
+        },
+        blur_taxPoint: function(event){
+            var E_TaxPoint = event.target.value;
+            if(E_TaxPoint!=''){
+                this.releaseParams.taxPoint = parseFloat(E_TaxPoint);
+            }else{
+                this.releaseParams.taxPoint = '';
+            }
+            this.vShow_taxPoint = false;
+        },
+        blur_tags: function(e){
+            this.vShow_Tags = false;
+        },
+        blur_aliasUnit: function(e){
+            this.vShow_Unit = false;
+        },
+        input_normalPrice: function(e){
+            this.vShow_NormalPrice = false;
+        },
+        input_price1: function(e){
+            this.vShow_Price1 = false;
+        },
+        input_minBuyNumber: function(event){
+            this.vShow_MinBuyNumber = false;
+            var E_Number = event.target.value;
+            if(E_Number!=''){
+                this.releaseParams.minBuyNumber = parseInt(E_Number.replace(/[^0-9]/g,''));
+            }else{
+                this.releaseParams.minBuyNumber = '';
+            }
+        },
+        input_stock: function(event){
+            this.vShow_Stock = false;
+            var E_stock = event.target.value;
+            if(E_stock!=''){
+                this.releaseParams.stock = parseInt(E_stock.replace(/[^0-9]/g,''));
+            }else{
+                this.releaseParams.stock = '';
+            }
+        },
+        toFixedFn: function(text){
+            return Number(text).toFixed(2);
+        },
+        scrollIntoView: function(){
+            document.getElementById('releaseContainer').scrollIntoView({block: 'start', behavior: 'smooth'});
+        },
+        setTagArray: function(arr){//回显处理商品标签
+            var arrSplit = arr.split(',');
+            var _ARRAY = [];
+            arrSplit.forEach(function(item){
+                var _OBJ = {tag:item};
+                _ARRAY.push(_OBJ)
+            });
+            return _ARRAY
+        },
+        setSearchKeyArray: function(arr){//回显处理商品搜索关键词
+            var _this = this;
+            var arrSplit = arr.split(',');
+            return _this.searchKeyList.map(function(el,index){
+                el.value = arrSplit[index] || '';
+            })
+        },
+        gernerateTitleId: function(index){
+            return "title_" +index
+        },
+        dragstart: function(value) {  // 记录初始信息
+            this.oldNum = value;
+        },
+        dragend: function(value) {   // 做最终操作
+            if (this.oldNum != this.newNum) {
+                var oldIndex = this.GoodsImagesList.indexOf(this.oldNum);
+                var newIndex = this.GoodsImagesList.indexOf(this.newNum);
+                var newItems = this.GoodsImagesList;
+                // 删除老的节点
+                newItems.splice(oldIndex, 1);
+                // 在列表中目标位置增加新的节点
+                newItems.splice(newIndex, 0, this.oldNum);
+                // this.items一改变,transition-group就起了作用
+                this.GoodsImagesList = newItems;
+            }
+        },
+        dragenter: function(value) {//记录移动过程中信息
+            this.newNum = value;
+        },
+    },
+    mounted: function () {
+        var _this = this;
+        // var NODE_ENV_BASE_URL = $('#spiServer').val();
+        var NODE_ENV_BASE_URL = 'https://spi-b.caimei365.com';
+        _this.NODE_ENV_BASE_URL = NODE_ENV_BASE_URL;
+        if(globalUserData){
+            _this.releaseParams.userID = globalUserData.userId;
+            _this.releaseParams.shopID = globalUserData.shopId;
+            _this.releaseType = CAIMEI.getUrlParam('type');
+            if(  _this.releaseType == 'edit'){
+                _this.productId = Number(CAIMEI.getUrlParam('productID'));
+                _this.GetEditReleaseProductInfo(_this.productId);
+            }
+        }
+        _this.GetFistClassFn();
+    }
+});

+ 4 - 1
src/main/resources/static/js/user-center/order/detail.js

@@ -183,9 +183,12 @@ var orderPage = new Vue({
                 window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderID='+_self.orderId;
             }
         },
-        hidePaymentConfirm:function(){
+        hidePaymentConfirm:function(){//隐藏弹窗
             var _self = this;
             _self.modelType = 0;
+        },
+        hanldQueryExpressFn:function(){//跳转查看物流
+
         },
         copyOrderBtnSubmitFn:function(){//复制订单标识
             var _self = this;

+ 1 - 0
src/main/resources/static/js/user-center/order/list.js

@@ -119,6 +119,7 @@ var orderPage = new Vue({
             _self.GetQueryOrderListData()
         },
         searchOrderListFn:function(){//搜索
+            var _self = this;
             _self.GetQueryOrderListData();
         },
         GetQueryOrderNumInfo:function(){//查询tabs数量

Plik diff jest za duży
+ 4 - 0
src/main/resources/static/lib/ckeditor5-new/ckeditor.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/af.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ar.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ast.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/az.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/bg.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ca.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/cs.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/da.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/de-ch.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/de.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/el.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/en-au.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/en-gb.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/en.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/eo.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/es.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/et.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/eu.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/fa.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/fi.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/fr.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/gl.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/gu.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/he.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/hr.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/hu.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/id.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/it.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ja.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/km.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/kn.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ko.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ku.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/lt.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/lv.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ms.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/nb.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ne.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/nl.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/no.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/oc.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/pl.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/pt-br.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/pt.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ro.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ru.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/si.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sk.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sl.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sq.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sr-latn.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sr.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/sv.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/th.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/tr.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/tt.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/ug.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/uk.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/vi.js


Plik diff jest za duży
+ 0 - 0
src/main/resources/static/lib/ckeditor5-new/translations/zh.js


+ 137 - 0
src/main/resources/static/lib/js/magnifier.js

@@ -0,0 +1,137 @@
+/*
+ show  //正常状态的框
+ bigshow   // 放大的框的盒子
+ smallshow  //缩小版的框
+ mask   //放大的区域(黑色遮罩)
+ bigitem  //放大的框
+
+ */
+//        var obj = new mag('.show', '.bigshow','.smallshow','.mask','.bigitem');
+//        obj.init()
+function mag(show, bigshow,smallshow,mask,bigitem) {
+    this.show = show;
+    this.bigshow = bigshow;
+    this.smallshow = smallshow;
+    this.mask = mask;
+    this.bigitem = bigitem;
+    this.obj = {
+        prev: '.prev',
+        next: '.next',
+        middle: '.middle',
+        middleBox: '.middle_box'
+    }
+}
+mag.prototype = {
+    init: function () {
+        var that = this;
+        that.start();
+        this.showHover();
+        this.smallImgHover();
+        this.showMove();
+        this.prevClick();
+        this.nextClick();
+    },
+    start: function () {
+        var that = this;
+        var buil=$(that.show).width()/$(that.mask).width()*$(that.bigshow).width();
+        $(that.bigitem).css("width",buil);
+        $(that.smallshow ).find('.item').eq(0).addClass('item-cur');
+        var midhei=$(that.obj.middle + ' li').innerWidth()*$(that.obj.middle + ' li').length;
+        $(that.obj.middle).width(midhei);
+    },
+    showHover: function () {
+        var that = this;
+        $(that.show).hover(function(){
+            $(that.bigshow).show();
+            $(that.mask).show();
+        },function(){
+            $(that.bigshow).hide();
+            $(that.mask).hide();
+        });
+    },
+    smallImgHover: function () {
+        var that = this;
+        $(that.smallshow ).find('.item').mouseover(function(){
+            var src=$(this).attr("data-src");
+            if($(this).hasClass('item-cur')){
+	    		return;
+	    	}
+            $(this).addClass('item-cur').siblings('.item').removeClass('item-cur');
+            $(that.show + '>img').attr("src",src);
+            $(that.bigitem+ '>img').attr("src",src);
+        });
+    },
+    showMove:function(){
+        var that = this;
+        $(that.show).mousemove(function(e){
+            var bigx=$(this).offset().left;
+            var bigy=$(this).offset().top;
+            var x= e.clientX;
+            var y= e.clientY;
+            var scrollx=$(window).scrollLeft();
+            var scrolly=$(window).scrollTop();
+            var ox=x+scrollx-bigx-$(that.mask).width()/2;
+            var oy=y+scrolly-bigy-$(that.mask).height()/2;
+            if(ox<=0){
+                ox=0
+            }
+            if(ox>$(that.show).width()-$(that.mask).width()){
+                ox=$(that.show).width()-$(that.mask).width();
+            }
+            if(oy<=0){
+                oy=0
+            }
+            if(oy>$(that.show).height()-$(that.mask).height()){
+                oy=$(that.show).height()-$(that.mask).height();
+            }
+            $(that.mask).css({left:ox});
+            $(that.mask).css({top:oy});
+            var bei=$(that.show).width()/$(that.mask).width();
+            $(that.bigitem+ '>img').css(
+                { marginLeft:-bei*ox,
+                    marginTop:-bei*oy
+                })
+        });
+    },
+    prevClick: function () {
+        var that = this;
+        $(that.obj.prev).click(function(){
+            if($(that.obj.middle).width()-$(that.obj.middleBox).width()>0){
+                if(Math.abs(parseInt($(that.obj.middle).css("marginLeft")))>$(that.obj.middleBox).width()){
+                    $(that.obj.middle).css("marginLeft",parseInt($(that.obj.middle).css("marginLeft"))+$(that.obj.middleBox).width())
+                }
+                if(Math.abs(parseInt($(that.obj.middle).css("marginLeft")))<$(that.obj.middleBox).width()){
+                    $(that.obj.middle).css("marginLeft","0px");
+                    $(that.obj.next).removeClass("nextnone");
+                    $(that.obj.prev).addClass("prevnone");
+                }
+            }else{
+                return;
+            }
+        });
+    },
+    nextClick: function () {
+        var that = this;
+        $(that.obj.next).click(function(){
+            if($(that.obj.middle).width()-$(that.obj.middleBox).width()>0){
+                var shuzi=$(that.obj.middle).width()-Math.abs(parseInt($(that.obj.middle).css("marginLeft")))-$(that.obj.middleBox).width();
+                if(shuzi>$(that.obj.middleBox).width()){
+                    $(that.obj.middle).css("marginLeft",-$(that.obj.middleBox).width()+parseInt($(that.obj.middle).css("marginLeft")))
+                }
+                if(shuzi<$(that.obj.middleBox).width()){
+                    $(that.obj.middle).css("marginLeft",-($(that.obj.middle).width()-$(that.obj.middleBox).width()))
+                    $(that.obj.next).addClass("nextnone");
+                    $(that.obj.prev).removeClass("prevnone");
+                }
+            }else{
+                return;
+            }
+
+        });
+    }
+
+}
+
+
+
+

+ 1 - 1
src/main/resources/templates/product/detail.html

@@ -240,7 +240,7 @@
                     <div class="tit">所在地区:</div>
                     <div class="con" th:text="${product.shopAddress}"></div>
                     <div class="tit">满意度:<i th:each="i:${#numbers.sequence(1,5)}" class="icon heart"></i></div>
-                    <a th:href="@{'/shop/home.html?sid=' + ${product.shopId}}" class="btn">查看主页</a>
+                    <a th:href="@{'/supplier/index.html?id=' + ${product.shopId}}" class="btn">查看主页</a>
                 </div>
             </div>
             <div class="contact">

+ 2 - 2
src/main/resources/templates/shopping/cart.html

@@ -83,7 +83,7 @@
                 </div>
                 <div class="cartItem clear"  v-for="cart in supplier.cartList" >
                     <div class="c0">
-                        <input class="check" type="checkbox" name="cartList" :value="cart.productId" v-model="submitIds" @change="computedPrice()">
+                        <input class="check" type="checkbox" name="cartList" :value="cart.productId" v-model="submitIds" @change="ckeckItem($event)">
                     </div>
                     <div class="c1"><a :href="'/product-'+cart.productId+'.html'" target="_blank">
                         <img class="image" :src="cart.image">
@@ -198,7 +198,7 @@
                 <div class="item">商品数量:<em v-text="totalCount"></em></div>
             </div>
             <div class="right mfbt">
-                <div class="item">合计:<em v-text="'¥'+toFloat(totalPrice)"></em><span class="del"><del v-text="'¥'+toFloat(originalPrice)"></del><em>减{{'¥'+toFloat(reducedPrice)}}</em></span></div>
+                <div class="item">合计:<em v-text="'¥'+toFloat(totalPrice)"></em><span v-if="reducedPrice>0" class="del"><del v-text="'¥'+toFloat(originalPrice)"></del><em>减{{'¥'+toFloat(reducedPrice)}}</em></span></div>
                 <a class="submit" href="javascript:void(0);" @click="submitCart()">去结算</a>
             </div>
         </div>

+ 160 - 5
src/main/resources/templates/supplier-center/shop/preview.html

@@ -4,20 +4,175 @@
 <head>
     <title>采美365网-中国美业全方位线上交易服务互动平台,做美业,上采美</title>
     <template th:replace="components/head-link"></template>
-
+    <link th:href="@{/css/supplier-center/shop/preview.css(v=${version})}" rel="stylesheet" type="text/css">
 </head>
 <body>
 <!-- 引用头部 -->
 <template th:replace="components/header"></template>
-
-<!-- 我的采美 -->
-<div>
-
+<!-- 预览商品 -->
+<div class="preview-container" id="previewContainer" v-show="isRequest" :class="isRequest ? 'active' : ''">
+    <div class="inner-container">
+        <div class="preview-header clear">
+            <div class="preview-banner clear">
+                <div class="preview-banner-big">
+                    <img class="preview-img" :src="previewBigimage">
+                    <span class="hover"></span>
+                </div>
+                <div class="preview-banner-small" id="CM____pic_thumb">
+                    <ul class="preview-thumb-ul">
+                        <li class="item" v-for="(item, index) in previewThumb" :key="index" :data-src="item.image">
+                            <img :src="item.image">
+                        </li>
+                    </ul>
+                </div>
+                <div class="preview-box" id="mag">
+                    <div class="bigitem">
+                        <img id="magnifierImg" :src="previewBigimage"/>
+                    </div>
+                </div>
+            </div>
+            <div class="preview-info">
+                <div class="preview-info-title">
+                    <p class="info-p classly">
+                        <span>所属分类:</span>
+                        <span>{{shopInfo.firstClassifyName}}</span> >
+                        <span>{{shopInfo.twoClassifyName}}</span> >
+                        <span>{{shopInfo.threeClassifyName}}</span>
+                    </p>
+                    <p class="info-p name">{{shopInfo.aliasName}}</p>
+                    <p class="info-p label"><span class="label-s" v-for="(item, index) in previewTags" :key="index">{{item.name}}</span></p>
+                </div>
+                <div class="preview-info-main clear">
+                    <div class="info price">
+                        <span class="label">价&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格:</span>
+                        <p>
+                            <span class="fave-tag">优惠价</span>
+                            <span class="fave-text">¥<span class="big">{{toFixedFn(shopInfo.price1)}}</span></span>
+                            <span class="fave-text-none">¥{{toFixedFn(shopInfo.normalPrice)}}</span>
+                        </p>
+                    </div>
+                    <div class="info bind">
+                        <span class="label">品&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;牌:</span>
+                        <p>{{shopInfo.brandName}}</p>
+                    </div>
+                    <div class="info unit">
+                        <span class="label">包装规格:</span>
+                        <p>{{shopInfo.unit}}</p>
+                    </div>
+                    <div class="info num">
+                        <span class="label">商品编码:</span>
+                        <p>{{shopInfo.productCode}}</p>
+                    </div>
+                    <div class="info price">
+                        <span class="label">起&nbsp;批&nbsp;量:</span>
+                        <p>{{shopInfo.minBuyNumber}}</p>
+                    </div>
+                    <div class="info price">
+                        <span class="label">库&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;存:</span>
+                        <p>{{shopInfo.stock}}</p>
+                    </div>
+                    <div class="info">
+                        <span class="label">采&nbsp;购&nbsp;量:</span>
+                        <div class="num-box">
+                            <span>-</span>
+                            <span>{{shopInfo.minBuyNumber}}</span>
+                            <span>+</span>
+                        </div>
+                    </div>
+                    <div class="info sever">
+                        <span class="label">服&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;务:</span>
+                        <p>
+                            <span class="text">无忧退货</span>
+                            <span class="text">急速退款</span>
+                            <span class="text">正品保证</span>
+                        </p>
+                    </div>
+                </div>
+                <div class="preview-info-btn">
+                    <div class="info-btn cart">加入购物车</div>
+                    <div class="info-btn buy">立即购买</div>
+                </div>
+            </div>
+        </div>
+        <div class="preview-bottom clear">
+            <div class="preview-left">
+                <div class="preview-tabs">
+                    <div class="preview-tabs-item" :class="{ active: tabIndex === 0 }" @click="changeTab(0)">产品介绍</div>
+                    <div class="preview-tabs-item" :class="{ active: tabIndex === 1 }" @click="changeTab(1)" v-show="previewParams.length>0">相关参数</div>
+                    <div class="preview-tabs-item" :class="{ active: tabIndex === 2 }" @click="changeTab(2)" v-show="shopInfo.orderInfo !='' || shopInfo.serviceInfo != ''">服务项目</div>
+                    <div class="preview-tabs-item" :class="{ active: tabIndex === 3 }" @click="changeTab(3)">评价(0)</div>
+                </div>
+                <div class="preview-section" v-show="tabIndex === 0">
+                    <div class="preview-section-html" v-html="shopInfo.detailInfo"></div>
+                </div>
+                <div class="preview-section" v-show="tabIndex === 1">
+                    <div class="parameter-main clear">
+                        <div class="item-tabody clear" v-for="(item, index) in previewParams" :key="index" >
+                            <div class="item-td">{{item.paramsName}}</div>
+                            <div class="item-tr">{{item.paramsContent}}</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="preview-section" v-show="tabIndex === 2">
+                    <div class="parameter-text" v-if="shopInfo.orderInfo !=''">
+                        <div class="parameter-text-title">订购方案:</div>
+                        <div class="parameter-text-p" v-html="shopInfo.orderInfo"></div>
+                    </div>
+                    <div class="parameter-text" v-if="shopInfo.serviceInfo !=''">
+                        <div class="parameter-text-title">服务详情:</div>
+                        <div class="parameter-text-p" v-html="shopInfo.serviceInfo"></div>
+                    </div>
+                </div>
+                <div class="preview-section" v-show="tabIndex === 3">
+                    <p class="none">该商品暂无评价!</p>
+                </div>
+            </div>
+            <div class="preview-right">
+                <div class="preview-shopinfo">
+                    <div class="title">供应商信息</div>
+                    <div class="shopinfo-main">
+                        <div class="name">{{shopData.name}}</div>
+                        <div class="shopinfo-text">
+                            <h1>经营范围:</h1>
+                            <p>{{shopData.businessScope}}</p>
+                        </div>
+                        <div class="shopinfo-text">
+                            <h1>所在地区:</h1>
+                            <p>{{shopData.provincialAddress}}</p>
+                        </div>
+                        <div class="shopinfo-text">
+                            <h1><span style="float: left;">满&nbsp;意&nbsp;度:</span><span><i class="star"v-for="i in 5"></i></span></h1>
+                        </div>
+                        <div class="shopinfo-text">
+                            <div class="shopinfo-btn" @click="homePageFn">查看主页</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="preview-shopinfo">
+                    <div class="title">联系方式</div>
+                    <div class="shopinfo-main">
+                        <div class="name">采美客服(转接供应商)</div>
+                    </div>
+                    <div class="shopinfo-main">
+                        <div class="tel">
+                            <p>电话:</p>
+                            <p>0755-22907771</p>
+                            <p>153-3885-1365</p>
+                        </div>
+                        <div class="tel-icon"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
 </div>
 
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/js/magnifier.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/shop/preview.js(v=${version})}"></script>
 
 </body>
 </html>

+ 429 - 3
src/main/resources/templates/supplier-center/shop/release.html

@@ -4,20 +4,446 @@
 <head>
     <title>采美365网-中国美业全方位线上交易服务互动平台,做美业,上采美</title>
     <template th:replace="components/head-link"></template>
+    <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/supplier-center/shop/release.css(v=${version})}" rel="stylesheet" type="text/css">
 
 </head>
 <body>
 <!-- 引用头部 -->
 <template th:replace="components/header"></template>
 
-<!-- 我的采美 -->
-<div>
-
+<!-- 发布商品 -->
+<div id="releaseContainer">
+    <div class="navLayout" v-cloak>
+        <div v-if="isPC" class="crumbs">
+            <span>我的采美</span>
+            <span>&gt;</span>
+            <span>我的店铺</span>
+            <span>&gt;</span>
+            <span>发布商品</span>
+        </div>
+        <div class="wrap clear">
+            <!--左侧导航-->
+            <template th:replace="supplier-center/components/tableft"></template>
+            <div class="right">
+                <div class="container shadow" @click.stop="touchmoveFn" >
+                    <div class="release-stepbox">
+                        <div class="stepSpan active">
+                            <p>基本信息</p>
+                            <p><span>1</span></p>
+                            <p class="line"></p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 1 || activeNum == 2 || activeNum == 3 ? 'active':''">
+                            <p>销售信息</p>
+                            <p><span>2</span></p>
+                            <p class="line"></p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 2 || activeNum == 3 ? 'active':''">
+                            <p>上传图片</p>
+                            <p><span>3</span></p>
+                            <p class="line"></p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 3 ? 'active':''">
+                            <p>服务项目</p>
+                            <p><span>4</span></p>
+                        </div>
+                    </div>
+                    <div class="release-container clear"  v-show="isRequest" :class="isRequest ? 'active' : ''" >
+                        <div class="release-main-container clear" v-show="activeNum == 0">
+                            <div class="release-from none clear" >
+                                <div class="release-label"><span class="star">*</span>商品显示名:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.name" maxlength="40" type="text" placeholder="请输入该商品在商城显示的名称" @blur="blur_name"></div>
+                                <div class="release-tips" v-show="vShow_Name">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text">
+                                <P class="text">不超过40个汉字,请尽可能包含商品关键词,便于搜索</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>内部商品名:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.aliasName" maxlength="40" type="text" placeholder="请输入该商品在您公司内部的名称" @blur="blur_aliasName"></div>
+                                <div class="release-tips" v-show="vShow_AliasName">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品分类:</div>
+                                <div class="release-input">
+                                    <div class="select-main" :class="[isSelectActive == 1 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.bigTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('first')">
+                                        <div class="option-main" v-if="isSelectActive == 1">
+                                            <div class="option" v-for="x in classificationFirstList" :key="x.bigTypeID" @click="ChangeClassificationFirst(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 2 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.smallTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('two')">
+                                        <div class="option-main" v-if="isSelectActive == 2">
+                                            <div class="option" v-for="x in classificationTwoList" :key="x.value" @click="ChangeClassificationTwo(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 3 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.tinyTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('three')">
+                                        <div class="option-main" v-if="isSelectActive == 3">
+                                            <div class="option" v-for="x in classificationThreeList" :key="x.value" @click="ChangeClassificationThree(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_TinyTypeID">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品品牌:</div>
+                                <div class="release-input">
+                                    <input class="input tags" type="text" v-model="releaseParams.brandName" maxlength="10" placeholder="请输入商品所属品牌" @input="bindBrandAssociationFn" >
+                                    <div class="add-btn active" v-show="tagsList.length<6" @click="brandAssociationFn()">检测</div>
+                                    <div class="release-opt" v-show="isBrandAssociation">
+                                        <div class="opt-item" v-for="x in brandAssociationList" :key="x.id" @click="SelectChangeAssociationFn(x)">{{x.name}}</div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_BrandID">{{fromMessage}}</div>
+                            </div>
+                            <div class="popup" v-show="isAddBrand" :class="isAddBrand ? 'active':''">
+                                <div class="popup-layer bran">
+                                    <div class="popup-title"> <p>提交品牌</p> <i class="popup-close layui-layer-ico"  @click="hideAddBrandPopup"></i></div>
+                                    <div class="popup-content">
+                                        <div class="popup-from clear"><span>商品品牌:</span><p class="popup-p">{{releaseParams.brandName}}</p></div>
+                                        <div class="popup-from clear" style="margin-top: 10px">
+                                            <span>品牌logo:</span>
+                                            <div class="popup-upload">
+                                                <div class="upload-file" v-if="brandImage!=''">
+                                                    <img :src="brandImage" alt="" class="upload-img">
+                                                    <i class="icon-del" @click="removeBrandImageFn"></i>
+                                                </div>
+                                                <div class="upload-file" v-else>
+                                                    <i class="icon-add"></i>
+                                                    <input ref="brandImage" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadBrandImagesFn">
+                                                </div>
+                                            </div>
+                                        </div>
+                                        <div class="popup-from clear" style="margin-top: 10px">
+                                            <span>品牌描述:</span>
+                                            <div class="popup-textarea">
+                                                <textarea name="" v-model="brandTextarea" cols="30" rows="10" maxlength="200" placeholder="请描述品牌信息,不超过200字"></textarea>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="popup-button">
+                                        <div class="btn btn-confim" @click="confimAddBrandPopup">确定</div>
+                                        <div class="btn btn-cancel" @click="hideAddBrandPopup">取消</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品类型:</div>
+                                <div class="release-input">
+                                    <div class="select-main" :class="[isSelectActive == 4 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.goodsType" type="text" readonly="readonly" placeholder="请选择商品类型" @click.stop.prevent="showOption('type')">
+                                        <div class="option-main" v-if="isSelectActive == 4">
+                                            <div class="option" v-for="x in goodsTypeList" :key="x.value" @click="SelectChangeTypeFn(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 5 ? 'border' : '']" v-if="releaseParams.productType == 2">
+                                        <input class="select" v-model="selectText.apparatusType" type="text" readonly="readonly" placeholder="请选择器械类型" @click.stop.prevent="showOption('ratus')">
+                                        <div class="option-main" v-if="isSelectActive == 5">
+                                            <div class="option" v-for="x in apparatusTypeList" :key="x.value" @click="SelectChangeApparatusFn(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_GoodsType">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>资质证书:</div>
+                                <div class="release-input upload">
+                                    <div class="upload-file" v-if="releaseParams.qualificationImg!=''">
+                                        <img :src="releaseParams.qualificationImg" alt="" class="upload-img">
+                                        <i class="icon-del" @click="removeQualificationsFn"></i>
+                                    </div>
+                                    <div class="upload-file" v-else>
+                                        <i class="icon-add"></i>
+                                        <input ref="inputer" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadQualificationsFn">
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_QualificationImg">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from none clear">
+                                <div class="release-label"><span class="star">*</span>商品标签:</div>
+                                <div class="release-input">
+                                    <input class="input tags" v-model="tagsText" type="text" placeholder="请输入商品标签" maxlength="15" @focus="blur_tags">
+                                    <div class="add-btn" v-show="tagsList.length<6" @click="addTag()">添加标签</div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_Tags">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text">
+                                <P class="text" style="line-height: 24px;">简述商品功效和特性,最多可添加6个标签,每个标签字数不超过15个汉字(如:美白祛斑,消除皱纹)</P>
+                            </div>
+                            <div class="release-from clear" v-show="tagsList.length>0">
+                                <div class="tags-main">
+                                    <div class="item-tags" v-for="(item, index) in tagsList" :key="index">
+                                        {{item.tag}}<i class="del-tags" @click="removeTags(index)"></i>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>包装规格:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.unit" type="text" placeholder="请输入包装规格,如:台,30ml/瓶" @blur="blur_aliasUnit"></div>
+                                <div class="release-tips" v-show="vShow_Unit">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label">商品编码:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.productCode" type="text" placeholder="建议输入品牌关键词"></div>
+                            </div>
+                            <div class="release-from none clear">
+                                <div class="release-label">搜索关键词:</div>
+                                <div class="release-input">
+                                    <input  v-for="(item, index) in searchKeyList" :key="index" class="input keyword" type="text" :placeholder="item.placeholder" v-model="searchKeyList[index].value" maxlength="16">
+                                    <a href="/supplier/goods/example.html" target="_blank" class="p">查看示例></a>
+                                </div>
+                            </div>
+                            <div class="release-from text" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">{{keywordText}}</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label">相关参数:</div>
+                                <div class="release-input clear">
+                                    <div class="release-param" v-for="(item, index) in paramKeyList" :key="index">
+                                        <input class="param-input" v-model="paramKeyList[index].paramsName" type="text" placeholder="参数名称" maxlength="10">
+                                        <input class="param-input" v-model="paramKeyList[index].paramsContent" type="text" placeholder="参数信息" maxlength="50">
+                                        <a href="javascript: void(0);" class="del-btn" v-show="index>0" @click="removeParamsFn">删除</a>
+                                    </div>
+                                    <a href="javascript: void(0);" class="add" @click="addParamsFn">添加参数<span>+</span></a>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button">
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep">下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="release-main-container" v-show="activeNum == 1">
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>市场价:</div>
+                                <div class="release-input" id="normalPrice">
+                                    <input class="input price" v-model="releaseParams.normalPrice" maxlength="40" type="number" placeholder="请输入商品市场价" @input="input_normalPrice">
+                                    <span class="unit">{{releaseParams.unit}}</span>
+                                    <span class="yang">¥</span>
+                                </div>
+                                <div class="release-tips" v-show="vShow_NormalPrice">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>售价:</div>
+                                <div class="release-input">
+                                    <input class="input price" v-model="releaseParams.price1" maxlength="40" type="number" placeholder="请输入商品售价" @input="input_price1">
+                                    <span class="unit">{{releaseParams.unit}}</span>
+                                    <span class="yang">¥</span>
+                                </div>
+                                <div class="release-tips" v-show="vShow_Price1">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>售价是否含税:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="1" ><i class="icon mIcon">含税</i></label>
+                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="0" checked><i class="icon mIcon">不含税</i></label>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_includedTax">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-show="releaseParams.includedTax == 1 || releaseParams.includedTax == 0">
+                                <div class="release-input">
+                                    <div class="release-props" >
+                                        <label class="release-radio">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="1" @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">开增值税发票</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="2" checked @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">开普通发票</i>
+                                        </label>
+                                        <label class="release-radio" v-show="releaseParams.includedTax == 0">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="3" checked @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">不开发票</i>
+                                        </label>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear" v-show="releaseParams.invoiceType != '3' && releaseParams.includedTax == 0 && releaseParams.taxPoint>0">
+                                <div class="release-input">
+                                    <span class="tax" :style="{color:'#FF0000'}">*</span>
+                                    <span class="tax">税率:<span class="mg">{{releaseParams.taxPoint}}%</span></span>
+                                    <a href="javascript: void(0);" class="edit-btn" v-show="releaseParams.includedTax == 0" @click="taxPonitEdit">修改</a>
+                                </div>
+                                <div class="release-tips" v-show="vShow_Price1">{{fromMessage}}</div>
+                            </div>
+                            <div class="popup" v-show="isTaxPonitEditPopup" :class="isTaxPonitEditPopup?'active':''">
+                                <div class="popup-layer edit">
+                                    <div class="popup-title"> <p>修改税率</p> <i class="popup-close layui-layer-ico" @click="hideTaxPonitEditPopup"></i></div>
+                                    <div class="popup-content">
+                                        <div class="popup-from"><span>税率:</span>
+                                            <input type="number" v-model="releaseParams.taxPoint" maxlength="4" @ placeholder="请输入税率" @focus="blur_taxPoint"><span class="poze">%</span>
+                                        </div>
+                                        <div class="popup-tips" v-show="vShow_taxPoint">{{fromMessage}}</div>
+                                    </div>
+                                    <div class="popup-button">
+                                        <div class="btn btn-confim" @click="confimTaxPonitEditPopup">确定</div>
+                                        <div class="btn btn-cancel" @click="hideTaxPonitEditPopup">取消</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label">结算价:</div>
+                                <div class="release-input">
+                                    <input class="input price" v-model="releaseParams.costPrice" maxlength="40" type="number" placeholder="请输入商品结算价">
+                                    <span class="unit">{{releaseParams.unit}}</span>
+                                    <span class="yang">¥</span>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>起订量:</div>
+                                <div class="release-input">
+                                    <input class="input" v-model="releaseParams.minBuyNumber" maxlength="40" type="number" placeholder="请输入商品起订量" @input="input_minBuyNumber">
+                                </div>
+                                <div class="release-tips" v-show="vShow_MinBuyNumber">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>库存:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.stock" maxlength="40" type="number" placeholder="请输入商品库存量" @input="input_stock"></div>
+                                <div class="release-tips" v-show="vShow_Stock">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>购买数量:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <div class="release-props" >
+                                            <label class="release-radio">
+                                                <input type="radio" name="step" v-model="releaseParams.step" value="1"  @click="radioChangeStep">
+                                                <i class="icon mIcon">逐步增长</i>
+                                            </label>
+                                            <label class="release-radio">
+                                                <input type="radio" name="step" v-model="releaseParams.step" value="2" checked @click="radioChangeStep">
+                                                <i class="icon mIcon">以起订量增长</i>
+                                            </label>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>运费:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio">
+                                            <input type="radio" name="byFlag" v-model="releaseParams.byFlag" value="0"  @click="radioChangeByFlag">
+                                            <i class="icon mIcon">买家承担</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="byFlag" v-model="releaseParams.byFlag" value="1" checked @click="radioChangeByFlag">
+                                            <i class="icon mIcon">卖家承担</i>
+                                        </label>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>销售区域:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio">
+                                            <input type="radio" name="allAreaFlag" v-model="releaseParams.allAreaFlag" value="1"  @click="radioChangeAllAreaFlag">
+                                            <i class="icon mIcon">全部区域</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="allAreaFlag" v-model="releaseParams.allAreaFlag" value="0" checked @click="radioChangeAllAreaFlag">
+                                            <i class="icon mIcon">指定区域</i>
+                                        </label>
+                                    </div>
+                                    <div class="release-province clear" v-show="releaseParams.allAreaFlag==0">
+                                        <a class="province-item" href="javascript: void(0);" v-for="(item, index) in ProvinceList" :key="index" :class="item.isChecked ? 'active':''"  @click="addProvinceFn(item,index)" >{{item.name}}</a>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_isProvince">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep1">下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="release-main-container" v-show="activeNum == 2">
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品图片:</div>
+                                <div class="release-input upload image"  id="uploadGoodsImages">
+                                    <div class="upload-file"  v-for="(item, index) in GoodsImagesList" :key="index"
+                                         draggable="true"
+                                         @dragstart="dragstart(item)"
+                                         @dragenter="dragenter(item)"
+                                         @dragend="dragend(item)"
+                                    >
+                                        <img :data-original='item' :src="item" :id="'uploadGoodsImages'+ index" :data-image="item" alt="" class="upload-img" @click="showViewerImageFn(index)">
+                                        <i class="icon-del" @click="removeGoodsImagesFn(index)"></i>
+                                    </div>
+                                    <div class="upload-file" v-show="GoodsImagesList.length<5">
+                                        <i class="icon-add"></i>
+                                        <input ref="goodsImages" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadGoodsImagesFn">
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_GoodsImages">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">最多上传<span class="em">5张</span>图片,可拖动图片改变位置,第一张默认为产品主图;</P>
+                                <P class="text" style="line-height: 24px;">仅支持<span class="em">JPG、GIF、JPEG</span>和<span class="em">BMP</span>格式,建议图片<span class="em">分辨率在750*750以上,</span></P>
+                                <P class="text" style="line-height: 24px;"><span class="em">每张图小于5M</span>;图片请避免全文字,否则有可能审核不通过</P>
+                            </div>
+                            <div class="release-from clear" style="margin-top: 30px;">
+                                <div class="release-label"><span class="star">*</span>商品详情:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="detailInfoEditor" v-html="releaseParams.detailInfo"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from text" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">建议图文并茂并按照<span class="em">产品介绍>产品功效>操作流程>效果分享>疗程建议>注意事项>产品证书</span>的顺序进行描述;</P>
+                                <P class="text" style="line-height: 24px;">上传图片时,对每张图都填写关键词描述,有利于商品的曝光。</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep2">下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="release-main-container" v-show="activeNum == 3">
+                            <div class="release-from clear">
+                                <div class="release-label">订购方案:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="orderInfoEditor" v-html="releaseParams.orderInfo" placeholder="建议从合作分成,活动形式两方面进行描述"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label">服务详情:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="severInfoEditor" v-html="releaseParams.serviceInfo" placeholder="建议从服务案例,美业年限,团队人数和资历认证各方面进行描述"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button last">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="addReleaseGoodSubmitFn">提交</a>
+                                    <a href="javascript: void(0);" class="btn next"  @click="addReleasePeview">预览商品</a>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="preview-container">
+                            <div class="preview-content">
+                                <img src="" class="preview-bigimg" alt="" style="border: 2px dashed #DBDBDB">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
 </div>
 
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/ckeditor5-new/ckeditor.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/shop/release.js(v=${version})}"></script>
 
 </body>
 </html>

+ 5 - 2
src/main/resources/templates/user-center/order/detail.html

@@ -90,7 +90,10 @@
                                 <div class="product">
                                     <div class="section-prosinfo" v-for="(pros, pIndex) in shop.orderProductList" :key="pIndex">
                                         <div class="product-t">
-                                            <div class="image"><img :src="pros.productImage" alt=""></div>
+                                            <div class="image">
+                                                <img :src="pros.productImage" alt="">
+                                                <span class="tip">赠品</span>
+                                            </div>
                                             <div class="text">
                                                 <p class="tit">{{pros.name}}</p>
                                                 <div class="info">
@@ -213,7 +216,7 @@
                         <a class="btn cancel" href="javascript: void(0);" v-if="['0','111'].indexOf(orderInfo.status)!=-1" @click="hanldCancelOrderFn()">取消订单</a>
                         <a class="btn primary" href="javascript: void(0);" v-if="['0'].indexOf(orderInfo.status)!=-1"  @click="hanldConfirmOrderFn()">确认订单</a>
                         <a class="btn cancel" href="javascript: void(0);" v-if="['6'].indexOf(orderInfo.status)!=-1" @click="hanldDeleteOrderFn()">删除订单</a>
-<!--                        <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(order.status)!=-1" @click="hanldQueryExpressFn()">查看物流</a>-->
+                        <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(orderInfo.status)!=-1" @click="hanldQueryExpressFn()">查看物流</a>
                         <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(orderInfo.status)!=-1" @click="hanldReceivingOrderFn()">确认收货</a>
                     </div>
                 </div>

+ 3 - 3
src/main/resources/templates/user-center/order/list.html

@@ -25,7 +25,7 @@
                     <div class="header-tp">
                         <div class="header-tabs">
                             <div class="tabs-item"  v-for="(item, index) in orderTabBar" :key="index" @click="changeOrderFn(index,item.state)" :class="orderTabBarIndex == index ? 'active':''">
-                                <a href="javascript: void(0);">{{item.text}}(<span>{{item.bages | NumBadge}}</span>)</a>
+                                <a href="javascript: void(0);">{{item.text}}<span v-if="index!=0">({{item.bages | NumBadge}})</span></a>
                             </div>
                         </div>
                         <div class="header-ser">
@@ -54,7 +54,7 @@
                             </div>
                         </div>
                         <div class="header-button">
-                            <a class="btn-server" href="javascript: void(0);" target="_blank" @click="searchOrderListFn">搜索</a>
+                            <a class="btn-server" href="javascript: void(0);"  @click="searchOrderListFn">搜索</a>
                         </div>
                     </div>
                 </div>
@@ -102,7 +102,7 @@
                                     <a class="btn cancel" href="javascript: void(0);" v-if="['0','111'].indexOf(order.status)!=-1" @click="hanldCancelOrderFn(order.orderID)">取消订单</a>
                                     <a class="btn primary" href="javascript: void(0);" v-if="['0'].indexOf(order.status)!=-1"  @click="hanldConfirmOrderFn(order.orderID)">确认订单</a>
                                     <a class="btn cancel" href="javascript: void(0);" v-if="['6'].indexOf(order.status)!=-1" @click="hanldDeleteOrderFn(order.orderID)">删除订单</a>
-                            <!--    <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(order.status)!=-1" @click="hanldQueryExpressFn()">查看物流</a>-->
+                                    <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(order.status)!=-1" @click="hanldQueryExpressFn()">查看物流</a>
                                     <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(order.status)!=-1" @click="hanldReceivingOrderFn(order.orderID)">确认收货</a>
                                 </div>
                             </div>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików