فهرست منبع

购物车促销bugfix

chao 4 سال پیش
والد
کامیت
d855d817d4

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

@@ -179,9 +179,9 @@
 .priceTag .ladder i{font-style:normal;display:inline-block;width:35vw;text-align:center}
 .priceTag .ladder .t{color:#627386}
 .priceTag .ladder .p{color:#f94b4b}
-.priceTag .close{display:block;width:46vw;height:10vw;line-height:10vw;text-align:center;background-color:#ffe6dc;border-radius:2px;border:1px solid #e15616;margin:6vw auto 0}
+.priceTag .close{display:block;width:46vw;height:10vw;line-height:10vw;text-align:center;background-color:#ffe6dc;border-radius:2px;border:1px solid #e15616;margin:6vw auto 0;}
 .priceTag .promotion>div{display:block;box-sizing:border-box;width:82vw;padding:3.3vw;background:#FFF;border-radius:1.6vw;position:relative;top:50%;margin:-60vw auto 0 auto;line-height:8vw;font-size:3.7vw}
-.priceTag .promotion p{text-align:left}
+.priceTag .promotion p{text-align:left;clear:both;}
 .priceTag .promotion p>em{color:#E15616;font-style:normal}
 .priceTag .promotion .p{display:block;height:12vw;padding:1vw 0 1vw 12vw;position:relative;line-height:5vw}
 .priceTag .promotion .p img{width:10vw;height:10vw;position:absolute;left:0;top:1vw}

+ 3 - 2
src/main/resources/static/css/base/base.pc.css

@@ -271,12 +271,13 @@ header{box-shadow: 0 2px 10px #ebecef;}
 .priceTag .ladder .p{color:#f94b4b}
 .priceTag .close{background:#E15616;color:#fff;border-radius:2px;cursor:pointer;display:inline-block;padding:0 20px;height:30px;line-height:30px;font-style:normal;}
 .priceTag .promotion{font-size:14px;line-height:30px;padding:8px 15px;width:320px;}
-.priceTag .promotion p{text-align:left}
+.priceTag .promotion p{text-align:left;clear:both;}
 .priceTag .promotion p>em{color:#E15616;font-style:normal}
-.priceTag .promotion .p{display:block;height:40px;padding:10px 0 10px 50px;position:relative;line-height:20px}
+.priceTag .promotion .p{display:block;height:40px;padding:10px 0 10px 50px;position:relative;line-height:20px;}
 .priceTag .promotion .p img{width:40px;height:40px;position:absolute;left:0;top:10px}
 .priceTag .promotion .p span{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
 .priceTag .promotion p.r{text-align:right;}
+.priceTag .promotion p.c{text-align:center;}
 .priceTag .promotion .more{color:#f55c5c;text-decoration:underline;float:right;}
 /*  加载  */
 .loading {box-sizing: border-box;padding: 200px 0;text-align: center;}

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

@@ -8,7 +8,7 @@
 .formLine input,.formLine select{box-sizing:border-box;width:100%;height:36px;line-height:34px;text-indent:1.2em;background-color:#FFF;border:1px solid #b8bfca;border-radius:2px}
 .formLine textarea{width:100%;height:114px;margin-top: 20px; box-sizing:border-box;border:solid 1px #b8bfca;padding:10px 16px;line-height:20px;resize: none;border-radius: 2px;outline: none;}
 .formLine select{width:154px}
-.formLine.error input{border-color:#f94b4b}
+.formLine.error input,.formLine.error textarea{border-color:#f94b4b}
 .formLine input:focus{border-color:#ffe6dc;}
 .formLine p{height:auto;line-height:32px}
 .formLine p em{font-style:normal;color:#f94b4b;margin:0 5px}

+ 0 - 154
src/main/resources/static/css/shopping/cart.css

@@ -1,154 +0,0 @@
-@charset "utf-8";
-li{list-style:none}
-/**
- * PC端
- */
-@media screen and (min-width:768px){
-    input[type="number"]{-moz-appearance:none;-webkit-appearance: none;}
-    input::-webkit-outer-spin-button,input::-webkit-inner-spin-button {-webkit-appearance:none;}
-    .loading{box-sizing:border-box;padding:200px 0;text-align:center}
-    .empty{box-sizing:border-box;padding:100px 0;text-align:center;color:#4A4F58;line-height:30px;font-size:16px}
-    .empty img{width:180px;height:180px}
-    .empty a{color:#E15616}
-    .pageTitle{height:57px;line-height:57px;padding-top:16px}
-    .pageTitle h1{color:#2D3036;font-size:16px;font-weight:bold;float:left}
-    .pageTitle .step{float:right;color:#999999;font-size:14px;height:44px;line-height:44px}
-    .pageTitle .step span{display:inline-block;height:20px;line-height:20px;vertical-align:middle;position:relative;}
-    .pageTitle .step span:before{font-style:normal;font-size:20px;vertical-align:text-top;margin-right:5px}
-    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
-    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
-    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
-    .pageTitle .step span:after{position:absolute;left:0;top:10px;content:'';width:50px;}
-    .pageTitle .step span:first-child{padding-left:0}
-    .pageTitle .step span:first-child:after{display:none}
-    .pageTitle .step span.on{color:#E15616}
-    .listWrap{width:1184px}
-    .listWrap .cartTit,.listWrap .supplierItem{box-sizing:border-box;padding:0 14px;text-align:center;width:100%;background:#FFF;margin-bottom:8px;box-shadow:0px 3px 6px rgba(0,0,0,0.07)}
-    .listWrap .supplierItem.disable{background:#f1f0f5}
-    .listWrap .supplierItem em{font-style: normal}
-    .listWrap .supplierTit{border-bottom:1px solid #F7F7F7;height:60px;line-height:60px;text-align: left;}
-    .listWrap .supplierTit .img{width:auto;height:32px;border:1px solid #F7F7F7;margin-right:10px}
-    .listWrap .supplierTit .name{color:#9aa5b5}
-    .listWrap .cartTit,.listWrap .supplierBtn{height:60px;line-height:60px}
-    .listWrap .cartTit{color:#333333}
-    .listWrap .supplierItem,.listWrap .supplierBtn{color:#22272E}
-    .listWrap .supplierBtn{border-top:1px solid #F5F5F5;text-align:right;}
-    .listWrap .supplierBtn em {color:#f55c5c;font-size:16px;}
-    .listWrap .cartItem{width:100%;height:100px;line-height:100px;margin-top:10px;padding:14px 0;font-size: 16px}
-    .listWrap .cartItem:first-child{margin-top:0}
-    .listWrap .cartItem .c2{text-align:left}
-    .listWrap .cartItem>div>*{vertical-align:middle}
-    .listWrap .c0{float:left;width:34px;text-align:left;}
-    .listWrap .c1{float:left;}
-    .listWrap .c2{float:left;width:400px}
-    .listWrap .cartTit .c2{padding-left: 75px;}
-    .listWrap .c3{float:left;width:200px}
-    .listWrap .c4{float:left;width:142px;}
-    .listWrap .c5{float:left;width:185px;position: relative}
-    .listWrap .c6{float:left;width:142px}
-    .listWrap .c7{float:right;width:118px}
-    .listWrap .c10{float:left;width:495px}
-    .listWrap .check{width:16px;height:16px;line-height:14px;vertical-align:middle}
-    .listWrap .image{display:block;width:100px;height:100px;border:1px solid #F7F7F7}
-    .listWrap .name, .listWrap .unit{line-height:20px;display:inline-block;max-height:100px;overflow:hidden;vertical-align:middle}
-    .listWrap .cartItem .name{padding-left:14px}
-    .listWrap .cartItem .name .tag{display: inline-block;background:#f94b4b;color:#FFF;font-size:12px;padding:0 6px;height:20px;line-height:20px;border-radius:2px;font-style:normal;margin-right:5px}
-    .listWrap .c7 em,.listWrap .c10 em{color:#f94b4b;font-style:normal}
-    .listWrap .number{display:inline-block;width:96px;line-height:24px;height:24px;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
-    .listWrap .number>em{display:inline-block;width:24px;height:22px;background:#FFE6DC;font-size:20px;font-style:normal;line-height:20px;vertical-align:top;cursor:pointer}
-    .listWrap .number input{width:48px;border:none;line-height:22px;font-size:14px;vertical-align:top;text-align:center;color:#E15616}
-    .listWrap .del{color: #9AA5B5;font-size:20px;position:relative;cursor:pointer;display:inline-block;height:40px;line-height:40px;width:30px}
-    .listWrap .del .tips{position:absolute;top:40px;left:4px;opacity:0;white-space:nowrap;background-color:#f94b4b;color:#FFF;border-radius:3px;line-height:30px;font-size:12px;text-align:center;display:inline-block;transition:all .8s;padding:0 10px;font-style:normal}
-    .listWrap .del .tips:before{content:"";width:10px;height:10px;background:#f94b4b;position:absolute;top:-3px;left:6px;transform:rotate(45deg)}
-    .listWrap .del:hover{color:#f94b4b}
-    .listWrap .del:hover .tips{opacity:1}
-    .listWrap .price{position:relative;display:inline-block;line-height:24px;}
-    .listWrap .price>em{font-style:normal;font-size:16px;display:inline-block;width:100%;}
-    .listWrap .price>del{font-size:16px;display:inline-block;width:100%;}
-    .invalidTit{height:44px;line-height:44px;padding-top:16px;font-size:16px}
-    .invalidTit .tit{color:#22272e;float:left}
-    .invalidTit .delAll{color:#e15616;float:right;cursor:pointer;}
-    .invalidTit .tit em{font-style:normal;color:#e15616}
-    .summaryWrap{width:100%;background:#FFF;margin:16px 0 -29px 0;}
-    .summaryWrap .summary{width:1184px;margin:0 auto;font-size:18px;padding:11px 0;height:50px;line-height:50px;text-align:right;}
-    .summaryWrap .summary em{font-style:normal}
-    .summaryWrap .summary .left,.summaryWrap .summary .right{display:inline;}
-    .summaryWrap .summary .left .item:first-child{float:left;}
-    .summaryWrap .summary .item{display:inline-block;margin-right:32px;position:relative;}
-    .summaryWrap .summary .check{width:14px;height:14px;line-height:14px;vertical-align:top;margin:18px 16px 0 16px}
-    .summaryWrap .summary .delete{margin-left:16px;color:#f55c5c}
-    .summaryWrap .summary .right .item{position:relative;text-align:right;}
-    .summaryWrap .summary .right .item em{color:#f55c5c}
-    .summaryWrap .summary .submit{display:inline-block;width:232px;height:50px;line-height:50px;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
-    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
-    .pageTitle .step label.line{width: 50px;height: 1px;background: #707070;display: inline-block; margin: 0px 10px}
-    .summaryWrap .summary .item .del{position:absolute;right:0;top:-20px;cursor:pointer;height:24px;font-size:14px}
-    .summaryWrap .summary .item .del em{position:absolute;top:-12px;height:24px;white-space:nowrap;right:0;background:#ff4500;line-height:24px;color:#FFF;padding:0 12px;border-radius:2px}
-    .summaryWrap .summary .item .del em:before{content:'';width:0;height:0;border-width:5px 5px 0 5px;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:24px;left:50%}
-
-
-
-}
-
-/**
-* 移动端
-*/
-@media screen and (max-width:768px){
-    .loading{box-sizing:border-box;padding:20vw 0;text-align:center}
-    .empty{box-sizing:border-box;padding:15vw 0;text-align:center;color:#4A4F58;line-height:8vw;font-size:3.4vw}
-    .empty img{width:40vw;height:40vw}
-    .empty a{color:#E15616}
-    .pageTitle .step{width:100%;height:12.4vw;line-height:12.4vw;background:#FFF;color:#9AA5B5;font-size:3.1vw;text-align:center;}
-    .pageTitle .step span{display:inline-block;height:4.2vw;line-height:4.2vw;vertical-align:middle;position:relative;padding-left:6.4vw}
-    .pageTitle .step span:before{font-style:normal;font-size:5.2vw;vertical-align:text-top;margin-right:1vw}
-    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
-    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
-    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
-    .pageTitle .step span:after{position:absolute;left:0;top:2.05vw;content:'';width:5.4vw;border-top:1px solid #9AA5B5}
-    .pageTitle .step span:first-child{padding-left:0}
-    .pageTitle .step span:first-child:after{display:none}
-    .pageTitle .step span.on{color:#E15616}
-    .pageTitle h1{color:#2D3036;font-size:3.7vw;font-weight:bold;height:10vw;line-height:10vw;padding:0 3.3vw;}
-    .listWrap .supplierItem{width:100%;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-bottom:1.2vw;}
-    .listWrap .supplierItem.disable{background:#f1f0f5}
-    .listWrap .supplierItem em{font-style: normal}
-    .listWrap .supplierTit{border-bottom:1px solid #F7F7F7;height:7.4vw;line-height:7.4vw;padding:1.3vw 3.3vw;}
-    .listWrap .cartItem{padding:2.2vw 3.3vw;height:24vw;line-height:24vw;position:relative;}
-    .listWrap .supplierBtn{border-top:1px solid #F7F7F7;width:93vw;margin:0 auto;height:10.6vw;line-height:10.6vw;color:#22272e;font-size:3.4vw;text-align:right;}
-    .listWrap .supplierBtn em {color: #f55c5c;}
-    .listWrap .supplierItem .c0{float:left;width:9.6vw;text-align:center}
-    .listWrap .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:middle}
-    .listWrap .supplierItem .c1{float:left;width:24vw}
-    .listWrap .supplierItem .image{display:block;box-sizing:border-box;width:24vw;height:24vw;border:1px solid #F7F7F7}
-    .listWrap .supplierTit .img{width:7.4vw;height:7.4vw;border:1px solid #F7F7F7;margin-right:2vw}
-    .listWrap .supplierTit .name{color:#9aa5b5}
-    .listWrap .cartItem .c2,.listWrap .cartItem .c3,.listWrap .cartItem .c4,.listWrap .cartItem .c10{position:absolute;left:39vw;line-height:5vw}
-    .listWrap .cartItem .c2{top:2.2vw;height:10vw;width:58vw;}
-    .listWrap .cartItem .c2 .name{color:#22272e;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
-    .listWrap .cartItem .c3{top:14vw;height:5vw}
-    .listWrap .cartItem .c4{bottom:2.2vw;height:5vw}
-    .listWrap .cartItem .c5{position:absolute;right:3.3vw;bottom:2.2vw;height:6.4vw;line-height:6.4vw}
-    .listWrap .cartItem .c10{color:#f94b4b;top:16vw;height:5vw}
-    .listWrap .cartItem .number{display:inline-block;width:26.6vw;line-height:6.4vw;height:6.4vw;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
-    .listWrap .cartItem .number>em{display:inline-block;width:6.4vw;height:6.4vw;background:#FFE6DC;font-size:4vw;line-height:6vw;vertical-align:top}
-    .listWrap .cartItem .number input{width:13.5vw;border:none;line-height:6vw;vertical-align:top;text-align:center;color:#E15616;font-size:3.4vw}
-    .invalidTit{height:9vw;line-height:9vw;font-size:3.7vw;padding:0 3.3vw;}
-    .invalidTit .tit{color:#22272e;float:left}
-    .invalidTit .delAll{color:#e15616;float:right}
-    .invalidTit .tit em{font-style:normal;color:#e15616}
-    .summaryWrap{width:100%;background:#FFF;margin:1.4vw 0}
-    .summaryWrap .summary{width:93vw;margin:0 auto;font-size:3.4vw;padding-bottom:3.3vw}
-    .summaryWrap .summary em{font-style:normal}
-    .summaryWrap .summary .left{height:9.4vw;line-height:9.4vw}
-    .summaryWrap .summary .right{height:11.2vw;line-height:11.2vw}
-    .summaryWrap .summary .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:top;margin:3vw 3vw 0 3.3vw}
-    .summaryWrap .summary .delete{width:12vw;height:6vw;line-height:6vw;display:inline-block;text-align:center;color:#f55c5c}
-    .summaryWrap .summary .right .item{position:relative;text-align:right;margin-left:6.8vw}
-    .summaryWrap .summary .right .item em{color:#f55c5c}
-    .summaryWrap .summary .submit{display:inline-block;width:30.4vw;height:11.2vw;line-height:11.2vw;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
-    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
-    .summaryWrap .summary .item .del{position:absolute;right:0;top:-4vw;cursor:pointer;height:6vw;font-size:3.1vw}
-    .summaryWrap .summary .item .del em{position:absolute;top:0;left:100%;height:5vw;white-space:nowrap;background:#ff4500;line-height:5vw;color:#FFF;padding:0 1vw;border-radius:2px}
-
-}
-

+ 0 - 248
src/main/resources/static/css/shopping/confirm.css

@@ -1,248 +0,0 @@
-@charset "utf-8";
-li{list-style:none}
-/**
- * PC端
- */
-@media screen and (min-width:768px){
-    input[type="number"]{-moz-appearance:none;-webkit-appearance: none;}
-    input::-webkit-outer-spin-button,input::-webkit-inner-spin-button {-webkit-appearance:none;}
-    .loading{box-sizing:border-box;padding:200px 0;text-align:center}
-    .empty{box-sizing:border-box;padding:100px 0;text-align:center;color:#4A4F58;line-height:30px;font-size:16px}
-    .empty img{width:180px;height:180px}
-    .empty a{color:#E15616}
-    .pageTitle{height:57px;line-height:57px;padding-top:16px;width: 100%;box-sizing: border-box;padding: 0 16px;}
-    .pageTitle h1{color:#2D3036;font-size:16px;font-weight:bold;float:left}
-    .pageTitle h1 span{color:#627386;font-size:12px;font-weight:normal;}
-    .pageTitle .step{float:right;color:#999999;font-size:14px;height:44px;line-height:44px}
-    .pageTitle .step span{display:inline-block;height:20px;line-height:20px;vertical-align:middle;position:relative;}
-    .pageTitle .step span:before{font-style:normal;font-size:20px;vertical-align:text-top;margin-right:5px}
-    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
-    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
-    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
-    .pageTitle .step span:after{position:absolute;left:0;top:10px;content:'';width:50px;}
-    .pageTitle .step span:first-child{padding-left:0}
-    .pageTitle .step span:first-child:after{display:none}
-    .pageTitle .step span.on{color:#E15616}
-    .pageTitle .step label.line{width: 50px;height: 1px;background: #707070;display: inline-block; margin: 0px 10px}
-    .pageTitle .step label.line.on{background: #E15616;}
-
-    .container{width:1184px;min-height: 600px;margin: 0 auto;}
-    .container .content{width:100%;height: auto;float: left;margin-bottom: 20px;position: relative;}
-    .container .content .title{width:100%;height: 36px;float: left;font-size: 16px;box-sizing: border-box;padding: 0 16px;line-height: 36px;color: #22272e;}
-    .container .content .section{width:100%;height: auto;float: left;box-sizing: border-box;padding:16px;box-shadow: 0px 3px 6px 0px rgba(34, 39, 46, 0.07);background-color: #ffffff;}
-    .container .content .section.address-none{height: 318px;position: absolute;left: 0;top: 36px;}
-    .container .content .section.address-none .address-main{width: 626px; float: left;height: 100%;}
-    .container .content .section.address-none .formLine{padding-bottom:16px;font-size:14px;position:relative;width: 100%;height: auto;float: left;}
-    .container .content .section.address-none .formLine input{box-sizing:border-box;width:100%;height:36px;line-height:34px;text-indent:1.2em;background-color:#FFF;border:1px solid #b8bfca;border-radius:2px}
-    .container .content .section.address-none .formLine select{box-sizing:border-box;width:162px;height:36px;line-height:34px;text-indent:1.2em;background-color:#FFF;border:1px solid #b8bfca;border-radius:2px}
-    .container .content .section.address-none .formLine textarea{width:100%;height:114px;box-sizing:border-box;border:solid 1px #b8bfca;padding:10px 16px;line-height:20px;resize: none;border-radius: 2px;outline: none;}
-    .container .content .section.address-none .label{width: 90px;float: left;}
-    .container .content .section.address-none .label.tex{height: 114px;}
-    .container .content .section.address-none .label p{height:auto;line-height:36px;font-size: 14px;text-align: right;}
-    .container .content .section.address-none .label p em{font-style:normal;color:#f94b4b;margin:0 5px}
-    .container .content .section.address-none .form-input{width: 496px;float: left;}
-    .container .content .section.address-none .address-sub{width: 456px; float: right;height: 100%;position: relative;box-sizing: border-box;padding: 98px 90px;}
-    .container .content .section.address-none .address-sub:before{content:'';width: 1px;height: 90px;border-left: 1px dashed #b8bfca;position: absolute;left: 0;top: 50%;margin-top: -45px;}
-    .container .content .section.address-none .address-sub .checked{width: 100%;height: 16px;line-height: 16px;float: left;cursor: pointer;}
-    .container .content .section.address-none .address-sub .checked .icon{width:16px;height: 16px;display: block;float: left;margin-right: 5px;}
-    .container .content .section.address-none .address-sub .checked .icon-weigouxuan:before{width:16px;height: 16px;background-position: -288px 0;}
-    .container .content .section.address-none .address-sub .checked .icon-gouxuan:before{width:16px;height: 16px;background-position: -262px 0;}
-    .container .content .section.address-none .address-sub .checked span{font-size: 14px;color:#1890f9;}
-    .container .content .section.address-none .address-sub .button{width: 100%;height: 36px;float: left;margin-top: 35px;}
-    .container .content .section.address-none .address-sub .btn{width: 128px;height: 34px;float: left;line-height: 34px;text-align: center;font-size: 14px;display: block;border: 1px solid #E15616;}
-    .container .content .section.address-none .address-sub .btn-confirm{background-color: #E15616;color: #ffffff;margin-right: 15px;}
-    .container .content .section.address-none .address-sub .btn-cancel{background-color: #FFE6DC;color: #E15616;}
-
-    .container .content .section.address{height: 123px;}
-    .container .content .section.address .address-info{width: 810px;float: left;height: 100%;}
-    .container .content .section.address .address-info .info-p{line-height: 91px;text-align: center;color: #b8bfca;}
-    .container .content .section.address .address-info .info-left{width: 580px;float: left;height: 100%;}
-    .container .content .section.address .address-info .info-left p{width: 100%;height: 30px;line-height: 30px;font-size: 14px;color: #22272e;}
-    .container .content .section.address .address-info .info-left p .label{color: #627386;margin-right: 5px;display: inline-block;min-width: 60px;height:30px;text-align: justify;vertical-align: top;}
-    .container .content .section.address .address-info .info-left p .label:after{content: '';display: inline-block;width: 100%;}
-    .container .content .section.address .address-info .info-right{width: 150px;height: 100%;float: right;}
-    .container .content .section.address .address-info .info-right .info-top{height: 24px;width: 100%;line-height: 24px;font-size: 14px;}
-    .container .content .section.address .address-info .info-right .info-top .defau{height: 100%;float: left;}
-    .container .content .section.address .address-info .info-right .icon{height: 24px;width: 24px;display: block;float: left;margin-right: 5px;}
-    .container .content .section.address .address-info .info-right .icon:before{height: 24px;width: 24px;background-position: -255px -330px;}
-    .container .content .section.address .address-info .info-right .span-s{display: inline-block;height: 24px;width: 73px;background-color: #f94b4b;font-size: 12px;color: #FFFFFF;border-radius: 12px;text-align: center;}
-    .container .content .section.address .address-info .info-right a{display: inline-block;height: 24px;font-size: 14px;color: #1890f9;margin-left: 8px;float: left}
-    .container .content .section.address .address-sub{width: 320px; float: right;height: 100%;position: relative;box-sizing: border-box;padding:0 96px;}
-    .container .content .section.address .address-sub.add{padding:27px 96px;}
-    .container .content .section.address .address-sub:before{content:'';width: 1px;height: 90px;border-left: 1px dashed #b8bfca;position: absolute;left: 0;top: 0;}
-    .container .content .section.address .address-sub .btn{width: 128px;height: 34px;float: left;line-height: 34px;text-align: center;font-size: 14px;display: block;border: 1px solid #FFFFFF;margin: 3px 0}
-    .container .content .section.address .address-sub .btn-none{color: #1890f9;}
-    .container .content .section.address .address-sub .btn-confirm{background-color: #FFE6DC;color: #E15616;border-color: #E15616;}
-    /*  选择地址  */
-    .model-address-content{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background-color: rgba(0,0,0,.4);}
-    .model-address-content .model-content{width: 650px;height: 593px;padding:0 0 16px 0;position: absolute;top: 0;left: 0;right:0;bottom:0;background-color:#FFFFFF;margin: auto;border-radius: 2px;box-sizing: border-box;}
-    .model-address-content .title{width: 100%;height: 42px;float: left;box-sizing: border-box;position: relative;padding: 0 16px;border-bottom: 1px solid #e2e7ef;}
-    .model-address-content .title p{font-size: 14px;line-height: 42px;text-align: left;color: #22272e;float: left;}
-    .model-address-content .title .icon{width: 16px;height: 16px;display: block;position: absolute;right:0;top: 0;cursor: pointer;padding: 10px;}
-    .model-address-content .title .icon:before{width: 16px;height: 16px;background-position: -318px 0;}
-    .model-address-content .content{width:100%;height: 499px;box-sizing: border-box;padding: 16px;float: left;overflow: hidden;overflow-y: auto;}
-    .model-address-content .content .list{cursor:pointer;position: relative;width:100%;height: 145px;box-sizing: border-box;padding: 16px;float: left;margin-bottom: 16px;border: 1px solid #b8bfca;border-radius: 2px;}
-    .model-address-content .content .list .list-left{width: 100%;height:auto;float: left}
-    .model-address-content .content .list .list-right{width:auto;height:24px;position: absolute;top: 16px;right: 12px;}
-    .model-address-content .content .list p{width: 100%;height: 36px;line-height: 36px;font-size: 14px;color: #22272e;}
-    .model-address-content .content .list p .label{color: #627386;margin-right: 5px;display: inline-block;min-width: 60px;height:36px;text-align: justify;vertical-align: top;}
-    .model-address-content .content .list p .label:after{content: '';display: inline-block;width: 100%;}
-    .model-address-content .content .list .list-defalut{float: left;}
-    .model-address-content .content .list .list-btn{background-color: #ffe6dc;border-radius: 12px;border: 1px solid #E15616;color:#E15616;float: left;display: inline-block;width:48px;height: 22px;font-size: 12px;margin-left: 8px;text-align: center;line-height: 22px;}
-    .model-address-content .content .list .list-defalut .icon{height: 24px;width: 24px;display: block;float: left;margin-right: 5px;}
-    .model-address-content .content .list .list-defalut .icon:before{height: 24px;width: 24px;background-position: -255px -330px;}
-    .model-address-content .content .list .list-defalut .span-s{display: inline-block;height: 24px;line-height:24px;padding: 0 15px;background-color: #f94b4b;font-size: 12px;color: #FFFFFF;border-radius: 12px;text-align: center;cursor: pointer;}
-    .model-address-content .content .list .seclet{width: 40px;height: 40px;position: absolute;bottom: 0;right: 0;opacity: 0;}
-    .model-address-content .content .list .seclet .icon{width:40px;height: 40px;display: block;}
-    .model-address-content .content .list .seclet .icon:before{width: 40px;height: 40px;background-position: -308px -453px;}
-    .model-address-content .content .list.checked{border-color: #E15616;}
-    .model-address-content .content .list.checked .seclet{opacity: 1;}
-    .model-address-content .button{width: 100%;height: 36px;float: left;box-sizing: border-box;padding: 0 187px;}
-    .model-address-content .button .btn{width: 128px;height: 34px;float: left;line-height: 34px;text-align: center;font-size: 14px;display: block;border: 1px solid #E15616;}
-    .model-address-content .button .btn-confirm{background-color: #E15616;color: #ffffff;margin-right: 15px;}
-    .model-address-content .button .btn-cancel{background-color: #FFE6DC;color: #E15616;}
-    /* 进货单 */
-    .container .section.product{}
-    .container .section.product .title{width: 100%;height: 50px;line-height: 50px;box-sizing: border-box;float: left;font-size: 14px;line-height: 40px;border-bottom: 1px solid #efefef;}
-    .container .section.product .tr {float: left;}
-    .container .section.product .tr-info {width: 440px;}
-    .container .section.product .tr-amount {width: 240px;text-align: center;}
-    .container .section.product .tr-price {width: 240px;text-align: center;}
-    .container .section.product .tr-sum {width: 200px;text-align: center;}
-    .container .section.product .good_content{width: 100%;height: auto;float: left;}
-    .container .section.product .good_main{width: 100%;height: auto;}
-    .container .section.product .good_main .main_title{width: 100%;height: 50px;font-size: 16px;text-align: left;line-height: 50px;color: #22272e;}
-    .container .section.product .good_main .main_content_ul{width: 100%;height: 100px;padding: 12px 0;border-bottom: 1px solid #F7F7F7;}
-    .container .section.product .good_main .main_content .th{height: 100px;line-height: 100px;float: left;}
-    .container .section.product .good_main .main_content .th-info{width: 440px;}
-    .container .section.product .good_main .main_content .th-info .th-name{    float: left;width: 265px;padding: 10px;line-height: 40px;margin-left: 10px;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;text-align: justify;}
-    .container .section.product .good_main .main_content .th-info .th-image{width: 100px;height: 100px;border: 1px solid #F7F7F7;float: left;}
-    .container .section.product .good_main .main_content .th-info .th-image img{width: 100px;height: 100px;display: block;}
-    .container .section.product .good_main .main_content .th-amount {width: 240px;text-align: center;}
-    .container .section.product .good_main .main_content .th-price {width: 240px;text-align: center;}
-    .container .section.product .good_main .main_content .th-sum {width: 200px;text-align: center;}
-    .container .section.product .good_main .main_content_bt{width: 100%;height: 50px;font-size: 16px;text-align: right;line-height: 50px;color: #22272e;}
-    .container .section.product .good_main .main_content_bt span{color: #f94b4b;}
-    .container .section.product .main_footer{line-height: 42px;font-size: 14px;color: #333333;}
-    .container .section.product .main_footer .main_input {width: 1094px;height: 42px;background: #FFF;border-radius: 3px;border: none;padding: 0 10px;font-size: 14px;border: solid 1px #b8bfca;}
-    /* 发票信息   */
-    .container .section.invoice{}
-    .container .section.invoice .invoice-tabs{width: 100%;height: 38px;float: left;margin-bottom: 10px;}
-    .container .section.invoice .invoice-tabs span{display: inline-block;float: left;line-height: 36px;font-size: 14px;color: #333;}
-    .container .section.invoice .invoice-tabs .tab-radio{float: left;margin-left: 10px;}
-    .container .section.invoice .tab-radio .diyBox{width:180px;height:36px;margin-right:10px;line-height:34px;box-sizing:border-box;font-size:14px;text-align:center;display:inline-block}
-    .container .section.invoice .tab-radio .diyBox 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;}
-    .container .section.invoice .tab-radio .diyBox.second{width:100px;}
-    .container .section.invoice .tab-radio .diyBox input{display:none}
-    .container .section.invoice .tab-radio .diyBox i:before{position:absolute;right:0;bottom:0;display:none;width:20px;height:20px;background-position:-208px -253px}
-    .container .section.invoice .tab-radio .diyBox input:checked + i{border-color:#e15616;color:#e15616}
-    .container .section.invoice .tab-radio .diyBox input:checked + i:before{display:block}
-    .container .section.invoice .invoice-content{width: 100%;height:auto;float: left;}
-    .container .section.invoice .main_content{width: 100%;height:auto;float: left;margin: 10px 0;}
-    .container .section.invoice .main_content span{display: inline-block;float: left;line-height: 36px;font-size: 14px;color: #333;}
-    .container .section.invoice .main_content .main_item{display: inline-block;float: left;line-height: 36px;font-size: 14px;color: #333;margin-left: 10px;}
-    .container .section.invoice .main_content .tab-radio{float: left;margin-left: 10px;}
-    .container .section.invoice .main_content .main_item_conten{width: 100%;height:auto;padding-left: 70px;box-sizing: border-box;}
-    .container .section.invoice .main_content .group-from{width: 100%;height: 38px;margin:10px 0;}
-    .container .section.invoice .main_content .label-input{width:540px;height: 36px;background: #FFF;border-radius: 3px;font-size: 14px;border: solid 1px #b8bfca;padding: 0 10px;line-height: 36px;}
-    .container .section.invoice .invoice-main{width: 100%;height:auto;float: left;}
-    .container .section.invoice .invoice-from{width: 100%;height:38px;float: left;margin: 10px 0;}
-    .container .section.invoice .invoice-from .label{width: 104px;height:38px;line-height:38px;float: left;display: inline-block;font-size: 14px;color: #627386;text-align: right;margin-right: 5px;}
-    .container .section.invoice .invoice-from .label-input{width:500px;height: 36px;background: #FFF;border-radius: 3px;font-size: 14px;border: solid 1px #b8bfca;padding: 0 10px;line-height: 36px;}
-    /*余额抵扣*/
-    .container .section.userMoney{padding:17px 16px;}
-    .container .section.userMoney .icon{width: 16px;height: 16px;display: block;float: left;margin-right: 5px;cursor: pointer;}
-    .container .section.userMoney .icon-weigouxuan:before{width: 16px;height: 16px;background-position: -236px 0;}
-    .container .section.userMoney .icon-gouxuan:before{width: 16px;height: 16px;background-position: -210px 0;}
-    .container .section.userMoney .text{float: left;height: 16px;line-height: 16px;font-size: 14px;color: #333;margin-right: 15px;}
-    .container .section.userMoney .text .red{color: #FF2A2A;}
-    .container .section.footer .footer_content{width: 340px;height: 100%;float: right;}
-    .footer_content .footer_left{height: 100%;}
-    .footer_content .footer_left p{height: 36px;line-height: 36px;font-size: 14px;color: #333;text-align: right;}
-    .footer_content .footer_right p{height: 36px;line-height: 36px;font-size: 14px;color: #333;text-align: right;}
-    .footer_content .footer_right p.red{color: #FF2A2A;}
-    .footer_content .footer_right .select{height: 36px;}
-    .footer_content .footer_right .select select{cursor: pointer;width: 80px;height: 30px;border: 1px solid #CECECE;line-height: 30px;color: #2A81FF;font-size: 14px;margin-top: 3px;float: right;}
-    /* 底部按钮 */
-    .footer_button{width: 100%;background: #FFFFFF;margin-bottom: 20px;float: left;box-sizing: border-box;padding:10px 16px;}
-    .footer_button .footer_inner{width: 1152px;margin: 0 auto;padding: 0;}
-    .footer_button .button_back .back{display: block;line-height: 54px;font-size: 16px;color: #E15616;position: relative;padding-left: 30px;}
-    .footer_button .button_back .back .icon{width: 20px;height: 20px;display: block;position: absolute;left: 0;top: 5px;}
-    .footer_button .button_back .back .icon:before{width: 20px;height: 20px;background-position:-345px 0;}
-    .footer_button .button_confim{width: 410px;}
-    .footer_button .button_confim p{float: left;line-height: 50px;font-size: 14px;color: #333;}
-    .footer_button .button_confim p.red{color: #FF2A2A;}
-    .footer_button .confimBtn{width: 232px;height: 50px;border-radius: 2px;display: block;line-height: 50px;text-align: center;font-size: 14px;float: right;background: #e15616;color: #FFF;cursor: pointer;display: block;}
-    .footer_button .confimBtn.active{background: #EFEFEF;color:#999999;}
-
-
-
-
-
-
-
-
-}
-
-/**
-* 移动端
-*/
-@media screen and (max-width:768px){
-    .loading{box-sizing:border-box;padding:20vw 0;text-align:center}
-    .empty{box-sizing:border-box;padding:15vw 0;text-align:center;color:#4A4F58;line-height:8vw;font-size:3.4vw}
-    .empty img{width:40vw;height:40vw}
-    .empty a{color:#E15616}
-    .pageTitle .step{width:100%;height:12.4vw;line-height:12.4vw;background:#FFF;color:#9AA5B5;font-size:3.1vw;text-align:center;}
-    .pageTitle .step span{display:inline-block;height:4.2vw;line-height:4.2vw;vertical-align:middle;position:relative;padding-left:6.4vw}
-    .pageTitle .step span:before{font-style:normal;font-size:5.2vw;vertical-align:text-top;margin-right:1vw}
-    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
-    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
-    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
-    .pageTitle .step span:after{position:absolute;left:0;top:2.05vw;content:'';width:5.4vw;border-top:1px solid #9AA5B5}
-    .pageTitle .step span:first-child{padding-left:0}
-    .pageTitle .step span:first-child:after{display:none}
-    .pageTitle .step span.on{color:#E15616}
-    .pageTitle h1{color:#2D3036;font-size:3.7vw;font-weight:bold;height:10vw;line-height:10vw;padding:0 3.3vw;}
-    .listWrap .supplierItem{width:100%;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-bottom:1.2vw;}
-    .listWrap .supplierItem.disable{background:#f1f0f5}
-    .listWrap .supplierItem em{font-style: normal}
-    .listWrap .supplierTit{border-bottom:1px solid #F7F7F7;height:7.4vw;line-height:7.4vw;padding:1.3vw 3.3vw;}
-    .listWrap .cartItem{padding:2.2vw 3.3vw;height:24vw;line-height:24vw;position:relative;}
-    .listWrap .supplierBtn{border-top:1px solid #F7F7F7;width:93vw;margin:0 auto;height:10.6vw;line-height:10.6vw;color:#22272e;font-size:3.4vw;text-align:right;}
-    .listWrap .supplierBtn em {color: #f55c5c;}
-    .listWrap .supplierItem .c0{float:left;width:9.6vw;text-align:center}
-    .listWrap .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:middle}
-    .listWrap .supplierItem .c1{float:left;width:24vw}
-    .listWrap .supplierItem .image{display:block;box-sizing:border-box;width:24vw;height:24vw;border:1px solid #F7F7F7}
-    .listWrap .supplierTit .img{width:7.4vw;height:7.4vw;border:1px solid #F7F7F7;margin-right:2vw}
-    .listWrap .supplierTit .name{color:#9aa5b5}
-    .listWrap .cartItem .c2,.listWrap .cartItem .c3,.listWrap .cartItem .c4,.listWrap .cartItem .c10{position:absolute;left:39vw;line-height:5vw}
-    .listWrap .cartItem .c2{top:2.2vw;height:10vw;width:58vw;}
-    .listWrap .cartItem .c2 .name{color:#22272e;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
-    .listWrap .cartItem .c3{top:14vw;height:5vw}
-    .listWrap .cartItem .c4{bottom:2.2vw;height:5vw}
-    .listWrap .cartItem .c5{position:absolute;right:3.3vw;bottom:2.2vw;height:6.4vw;line-height:6.4vw}
-    .listWrap .cartItem .c10{color:#f94b4b;top:16vw;height:5vw}
-    .listWrap .cartItem .number{display:inline-block;width:26.6vw;line-height:6.4vw;height:6.4vw;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
-    .listWrap .cartItem .number>em{display:inline-block;width:6.4vw;height:6.4vw;background:#FFE6DC;font-size:4vw;line-height:6vw;vertical-align:top}
-    .listWrap .cartItem .number input{width:13.5vw;border:none;line-height:6vw;vertical-align:top;text-align:center;color:#E15616;font-size:3.4vw}
-    .invalidTit{height:9vw;line-height:9vw;font-size:3.7vw;padding:0 3.3vw;}
-    .invalidTit .tit{color:#22272e;float:left}
-    .invalidTit .delAll{color:#e15616;float:right}
-    .invalidTit .tit em{font-style:normal;color:#e15616}
-    .summaryWrap{width:100%;background:#FFF;margin:1.4vw 0}
-    .summaryWrap .summary{width:93vw;margin:0 auto;font-size:3.4vw;padding-bottom:3.3vw}
-    .summaryWrap .summary em{font-style:normal}
-    .summaryWrap .summary .left{height:9.4vw;line-height:9.4vw}
-    .summaryWrap .summary .right{height:11.2vw;line-height:11.2vw}
-    .summaryWrap .summary .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:top;margin:3vw 3vw 0 3.3vw}
-    .summaryWrap .summary .delete{width:12vw;height:6vw;line-height:6vw;display:inline-block;text-align:center;color:#f55c5c}
-    .summaryWrap .summary .right .item{position:relative;text-align:right;margin-left:6.8vw}
-    .summaryWrap .summary .right .item em{color:#f55c5c}
-    .summaryWrap .summary .submit{display:inline-block;width:30.4vw;height:11.2vw;line-height:11.2vw;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
-    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
-    .summaryWrap .summary .item .del{position:absolute;right:0;top:-4vw;cursor:pointer;height:6vw;font-size:3.1vw}
-    .summaryWrap .summary .item .del em{position:absolute;top:0;left:100%;height:5vw;white-space:nowrap;background:#ff4500;line-height:5vw;color:#FFF;padding:0 1vw;border-radius:2px}
-
-}
-

+ 285 - 0
src/main/resources/static/css/shopping/shopping.css

@@ -0,0 +1,285 @@
+@charset "utf-8";
+li{list-style:none}
+.addressWrap input[type=checkbox]:after{color:#1890f9;border-color:#1890f9;}
+.addressWrap input[type=checkbox]:checked:after{background:#1890f9;border-color:#1890f9;color:#FFF;}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    input[type="number"]{-moz-appearance:none;-webkit-appearance:none}
+    input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}
+    .loading{box-sizing:border-box;padding:200px 0;text-align:center}
+    .empty{box-sizing:border-box;padding:100px 0;text-align:center;color:#4A4F58;line-height:30px;font-size:16px}
+    .empty img{width:180px;height:180px}
+    .empty a{color:#E15616}
+    .pageTitle{height:57px;line-height:57px;padding-top:16px}
+    .pageTitle h1{color:#2D3036;font-size:16px;font-weight:bold;float:left}
+    .pageTitle h1 span{color:#627386;font-size:12px;font-weight:normal;margin-left:10px}
+    h2.title{height:36px;font-size:16px;padding:0 16px;line-height:36px;color:#22272e;font-weight:normal;clear:both}
+    .pageTitle .step{float:right;color:#999999;font-size:14px;height:44px;line-height:44px}
+    .pageTitle .step span{display:inline-block;height:20px;line-height:20px;vertical-align:middle;position:relative;padding-right:55px;}
+    .pageTitle .step span:before{font-style:normal;font-size:20px;vertical-align:text-top;margin-right:5px}
+    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
+    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
+    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
+    .pageTitle .step span:after{position:absolute;right:0;top:10px;content:'';width:50px;border-top:1px solid #9AA5B5;}
+    .pageTitle .step span:nth-of-type(3){padding-right:0}
+    .pageTitle .step span:nth-of-type(3):after{display:none}
+    .pageTitle .step span.on,.pageTitle .step span.prev{color:#E15616}
+    .pageTitle .step span.prev:after{border-color:#E15616;}
+    .listWrap .cartTit,.listWrap .supplierItem,.addressWrap,.balanceWrap,.invoiceWrap,.totalPriceWrap{box-sizing:border-box;padding:0 14px;text-align:center;width:100%;background:#FFF;margin-bottom:8px;box-shadow:0px 3px 6px rgba(0,0,0,0.07)}
+    /* 商品清单 */
+    .listWrap{width:1184px}
+    .listWrap .supplierItem.disable{background:#f1f0f5}
+    .listWrap .supplierItem em{font-style:normal}
+    .listWrap .supplierTit{border-bottom:1px solid #F7F7F7;height:60px;line-height:60px;text-align:left}
+    .listWrap .supplierTit .img{width:auto;height:32px;border:1px solid #F7F7F7;margin-right:10px}
+    .listWrap .supplierTit .name{color:#9aa5b5}
+    .listWrap .cartTit,.listWrap .supplierBtn{height:60px;line-height:60px}
+    .listWrap .cartTit{color:#333333}
+    .listWrap .supplierItem,.listWrap .supplierBtn{color:#22272E}
+    .listWrap .supplierBtn{border-top:1px solid #F5F5F5;text-align:right}
+    .listWrap .supplierBtn em{color:#f55c5c;font-size:16px}
+    .listWrap .supplierBtn .note{float:left;}
+    .listWrap .supplierBtn .note input{width:600px;height:36px;line-height:36px;background:#F7F7F7;border-radius:5px;border:none;padding:0 10px;font-size:14px}
+    .listWrap .cartItem{width:100%;height:100px;line-height:100px;margin-top:10px;padding:14px 0;font-size:16px}
+    .listWrap .cartItem:first-child{margin-top:0}
+    .listWrap .cartItem .c2{text-align:left}
+    .listWrap .cartItem>div>*{vertical-align:middle}
+    .listWrap .c0{float:left;width:34px;text-align:left}
+    .listWrap .c1{float:left;width:102px;height:100%}
+    .listWrap .c2{float:left;width:400px}
+    .listWrap .c3{float:left;width:200px}
+    .listWrap .c4{float:left;width:142px}
+    .listWrap .c5{float:left;width:185px;position:relative}
+    .listWrap .c6{float:left;width:142px}
+    .listWrap .c7{float:right;width:118px}
+    .listWrap .c10{float:left;width:495px}
+    .listWrap .c11{float:left;width:480px;text-align:left}
+    .listWrap .check{width:16px;height:16px;line-height:14px;vertical-align:middle}
+    .listWrap .image{display:block;width:100px;height:100px;border:1px solid #F7F7F7}
+    .listWrap .name,.listWrap .unit{line-height:20px;display:inline-block;max-height:100px;overflow:hidden;vertical-align:middle}
+    .listWrap .cartItem .name{padding-left:14px}
+    .listWrap .cartItem .name .tag{display:inline-block;background:#f94b4b;color:#FFF;font-size:12px;padding:0 6px;height:20px;line-height:20px;border-radius:2px;font-style:normal;margin-right:5px}
+    .listWrap .c7 em,.listWrap .c10 em{color:#f94b4b;font-style:normal}
+    .listWrap .number{display:inline-block;width:96px;line-height:24px;height:24px;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
+    .listWrap .number>em{display:inline-block;width:24px;height:22px;background:#FFE6DC;font-size:20px;font-style:normal;line-height:20px;vertical-align:top;cursor:pointer}
+    .listWrap .number input{width:48px;border:none;line-height:22px;font-size:14px;vertical-align:top;text-align:center;color:#E15616}
+    .listWrap .del{color:#9AA5B5;font-size:20px;position:relative;cursor:pointer;display:inline-block;height:40px;line-height:40px;width:30px}
+    .listWrap .del .tips{position:absolute;top:40px;left:4px;opacity:0;white-space:nowrap;background-color:#f94b4b;color:#FFF;border-radius:3px;line-height:30px;font-size:12px;text-align:center;display:inline-block;transition:all .8s;padding:0 10px;font-style:normal}
+    .listWrap .del .tips:before{content:"";width:10px;height:10px;background:#f94b4b;position:absolute;top:-3px;left:6px;transform:rotate(45deg)}
+    .listWrap .del:hover{color:#f94b4b}
+    .listWrap .del:hover .tips{opacity:1}
+    .listWrap .price{position:relative;display:inline-block;line-height:24px}
+    .listWrap .price>em{font-style:normal;font-size:16px;display:inline-block;width:100%}
+    .listWrap .price>del{font-size:16px;display:inline-block;width:100%}
+    .invalidTit{height:44px;line-height:44px;padding-top:16px;font-size:16px}
+    .invalidTit .tit{color:#22272e;float:left}
+    .invalidTit .delAll{color:#e15616;float:right;cursor:pointer}
+    .invalidTit .tit em{font-style:normal;color:#e15616}
+    /* 底部结算 */
+    .summaryWrap{width:100%;background:#FFF;margin:16px 0 -29px 0;position:relative}
+    .summaryWrap .summary{width:1184px;margin:0 auto;font-size:18px;padding:11px 0;height:50px;line-height:50px;text-align:right}
+    .summaryWrap .summary em{font-style:normal}
+    .summaryWrap .summary .left,.summaryWrap .summary .right{display:inline}
+    .summaryWrap .summary .left .item:first-child{float:left}
+    .summaryWrap .summary .item{display:inline-block;margin-right:32px;position:relative}
+    .summaryWrap .summary .check{width:14px;height:14px;line-height:14px;vertical-align:top;margin:18px 16px 0 16px}
+    .summaryWrap .summary .delete{margin-left:16px;color:#f55c5c}
+    .summaryWrap .summary .right .item{position:relative;text-align:right}
+    .summaryWrap .summary .right .item em{color:#f55c5c}
+    .summaryWrap .summary .submit{display:inline-block;width:232px;height:50px;line-height:50px;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
+    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
+    .summaryWrap .summary .item .del{position:absolute;right:0;top:-20px;cursor:pointer;height:24px;font-size:14px}
+    .summaryWrap .summary .item .del em{position:absolute;top:-12px;height:24px;white-space:nowrap;right:0;background:#ff4500;line-height:24px;color:#FFF;padding:0 12px;border-radius:2px}
+    .summaryWrap .summary .item .del em:before{content:'';width:0;height:0;border-width:5px 5px 0 5px;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:24px;left:50%}
+    .summaryWrap .summary .back{color:#f55c5c}
+    .summaryWrap .summary .back .icon:before{width:20px;height:20px;background-position:-345px 0;margin-right:15px}
+    /* 收货地址 */
+    .addressWrap{padding:16px;position:relative}
+    .addressWrap .info{position:relative;width:810px;text-align:left}
+    .addressWrap .info>p{height:30px;line-height:30px;font-size:14px;color:#22272e}
+    .addressWrap .info>p .label{color:#627386;margin-right:5px;display:inline-block;min-width:60px;height:30px;text-align:justify;vertical-align:top}
+    .addressWrap .info>p .label:after{content:'';display:inline-block;width:100%}
+    .addressWrap .info .btnBox{height:24px;line-height:24px;font-size:14px;color:#1890f9;position:absolute;top:0;right:0}
+    .addressWrap .info .btnBox .default .icon:before{height:24px;width:24px;background-position:-255px -330px}
+    .addressWrap .info .btnBox .default span{display:inline-block;height:24px;background-color:#f94b4b;font-size:12px;color:#FFFFFF;border-radius:12px;text-align:center;vertical-align:top;padding:0 12px;margin-left:5px;cursor:pointer}
+    .addressWrap .info .btnBox .default a{display:inline-block;height:24px;line-height:24px;vertical-align:top;margin-left:15px;color:#1890f9}
+    .addressWrap .info .btnBox .group{position:absolute;right:-345px;top:0}
+    .addressWrap .btnBox .group{text-align:center;width:320px;height:92px;padding-top:5px;box-sizing:border-box;border-left:1px dashed #b8bfca}
+    .addressWrap .btnBox .group .btn{display:block;width:128px;height:34px;line-height:34px;margin:0 auto;text-align:center;font-size:14px;color:#1890f9;border:1px solid #FFFFFF}
+    .addressWrap .btnBox .group .btn.con{background-color:#FFE6DC;color:#E15616;border-color:#E15616}
+    .addressWrap .btnBox .group .btn.save{background-color:#E15616;color:#FFF;border-color:#E15616}
+    .addressWrap .formLine{padding-bottom:16px;font-size:14px;position:relative;padding-left:90px;text-align:left;width:526px}
+    .addressWrap .formLine .label{position:absolute;left:0;top:0;width:90px;text-align:right;line-height:36px;font-size:14px}
+    .addressWrap .formLine .checked{top:8px}
+    .addressWrap .formLine .errTips{display:none}
+    .addressWrap .formLine.error .errTips{display:block}
+    .addressWrap .formLine input{width:496px;height:36px}
+    .addressWrap .formLine textarea{width:496px;min-height:114px;padding:10px 16px;line-height:20px;resize:none}
+    .addressWrap .formLine select{width:162px;height:36px}
+    .addressWrap .form{position:relative}
+    .addressWrap .form .btnBox{position:absolute;left:686px;top:100px}
+    .addressWrap .form .btnBox .group{width:450px}
+    .addressWrap .form .btnBox .group .btn{display:inline-block}
+    .addressWrap .form .btnBox .group .btn.save{margin-right:15px}
+    .addressWrap .btnBox .group p:first-child{line-height:32px}
+    .addressWrap .btnBox .group .check{display:inline-block;height:18px;line-height:18px;color:#1890f9}
+    .addressWrap .btnBox .group .check input{vertical-align:top;margin-right:10px}
+    .model-address-content{width:100%;height:100%;position:fixed;top:0;left:0;background-color:rgba(0,0,0,.4)}
+    .model-address-content .model-content{width:650px;height:593px;padding:0 0 16px 0;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#FFFFFF;margin:auto;border-radius:2px;box-sizing:border-box}
+    .model-address-content .title{width:100%;height:42px;float:left;box-sizing:border-box;position:relative;padding:0 16px;border-bottom:1px solid #e2e7ef}
+    .model-address-content .title p{font-size:14px;line-height:42px;text-align:left;color:#22272e;float:left}
+    .model-address-content .title .icon{width:16px;height:16px;display:block;position:absolute;right:0;top:0;cursor:pointer;padding:10px}
+    .model-address-content .title .icon:before{width:16px;height:16px;background-position:-318px 0}
+    .model-address-content .content{width:100%;height:499px;box-sizing:border-box;padding:16px;float:left;overflow:hidden;overflow-y:auto}
+    .model-address-content .content .list{cursor:pointer;position:relative;width:100%;height:145px;box-sizing:border-box;padding:16px;float:left;margin-bottom:16px;border:1px solid #b8bfca;border-radius:2px}
+    .model-address-content .content .list .list-left{width:100%;height:auto;float:left}
+    .model-address-content .content .list .list-right{width:auto;height:24px;position:absolute;top:16px;right:12px}
+    .model-address-content .content .list p{width:100%;height:36px;line-height:36px;font-size:14px;color:#22272e}
+    .model-address-content .content .list p .label{color:#627386;margin-right:5px;display:inline-block;min-width:60px;height:36px;text-align:justify;vertical-align:top}
+    .model-address-content .content .list p .label:after{content:'';display:inline-block;width:100%}
+    .model-address-content .content .list .list-defalut{float:left}
+    .model-address-content .content .list .list-btn{background-color:#ffe6dc;border-radius:12px;border:1px solid #E15616;color:#E15616;float:left;display:inline-block;width:48px;height:22px;font-size:12px;margin-left:8px;text-align:center;line-height:22px}
+    .model-address-content .content .list .list-defalut .icon{height:24px;width:24px;display:block;float:left;margin-right:5px}
+    .model-address-content .content .list .list-defalut .icon:before{height:24px;width:24px;background-position:-255px -330px}
+    .model-address-content .content .list .list-defalut .span-s{display:inline-block;height:24px;line-height:24px;padding:0 15px;background-color:#f94b4b;font-size:12px;color:#FFFFFF;border-radius:12px;text-align:center;cursor:pointer}
+    .model-address-content .content .list .list-defalut a{display:inline-block;height:24px;line-height:24px;vertical-align:top;margin-left:15px;color:#1890f9}
+    .model-address-content .content .list .seclet{width:40px;height:40px;position:absolute;bottom:0;right:0;opacity:0}
+    .model-address-content .content .list .seclet .icon{width:40px;height:40px;display:block}
+    .model-address-content .content .list .seclet .icon:before{width:40px;height:40px;background-position:-308px -453px}
+    .model-address-content .content .list.checked{border-color:#E15616}
+    .model-address-content .content .list.checked .seclet{opacity:1}
+    .model-address-content .button{width:100%;height:36px;float:left;box-sizing:border-box;padding:0 187px}
+    .model-address-content .button .btn{width:128px;height:34px;float:left;line-height:34px;text-align:center;font-size:14px;display:block;border:1px solid #E15616}
+    .model-address-content .button .btn-confirm{background-color:#E15616;color:#ffffff;margin-right:15px}
+    .model-address-content .button .btn-cancel{background-color:#FFE6DC;color:#E15616}
+    /* 余额 */
+    .balanceWrap{padding:16px;text-align:left}
+    .balanceWrap .text{display:inline-block;height:16px;line-height:16px;font-size:14px;color:#333;margin-left:15px;vertical-align:top}
+    .balanceWrap .text .red{color:#FF2A2A}
+    .totalPriceWrap{line-height:36px;text-align:right;padding:16px}
+    .totalPriceWrap span{display:inline-block;width:200px}
+    .totalPriceWrap span em{font-style:normal;color:#FF2A2A}
+    /* 发票 */
+    .invoiceWrap{padding:16px;text-align:left}
+    .invoiceForm .formLine{position:relative;padding-left:120px;width:456px}
+    .invoiceForm .formLine .label{position:absolute;left:0;top:0;width:120px;text-align:right;line-height:36px;font-size:14px}
+    .invoiceForm .formLine input[disabled]{border:none}
+
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .loading{box-sizing:border-box;padding:20vw 0;text-align:center}
+    .empty{box-sizing:border-box;padding:15vw 0;text-align:center;color:#4A4F58;line-height:8vw;font-size:3.4vw}
+    .empty img{width:40vw;height:40vw}
+    .empty a{color:#E15616}
+    .pageTitle .step{width:100%;height:12.4vw;line-height:12.4vw;background:#FFF;color:#9AA5B5;font-size:3.1vw;text-align:center}
+    .pageTitle .step span{display:inline-block;height:4.2vw;line-height:4.2vw;vertical-align:middle;position:relative;padding-right:6.4vw}
+    .pageTitle .step span:before{font-style:normal;font-size:5.2vw;vertical-align:text-top;margin-right:1vw}
+    .pageTitle .step span:nth-of-type(1):before{content:'\2776'}
+    .pageTitle .step span:nth-of-type(2):before{content:'\2777'}
+    .pageTitle .step span:nth-of-type(3):before{content:'\2778'}
+    .pageTitle .step span:after{position:absolute;right:0;top:2.05vw;content:'';width:5.4vw;border-top:1px solid #9AA5B5}
+    .pageTitle .step span:nth-of-type(3){padding-right:0}
+    .pageTitle .step span:nth-of-type(3):after{display:none}
+    .pageTitle .step span.on,.pageTitle .step span.prev{color:#E15616}
+    .pageTitle .step span.prev:after{border-color:#E15616;}
+    .pageTitle h1,h2.title{color:#2D3036;font-size:3.7vw;font-weight:bold;height:10vw;line-height:10vw;padding:0 3.3vw}
+    .pageTitle h1 span{font-size:3.1vw;font-weight:normal;color:#627386;margin-left:2vw}
+    .gradient i{width:5vw;height:1vw;background:linear-gradient(-45deg,#f9d14b 25%,#e15616 0,#e15616 50%,#1674e1 0,#1674e1 75%,#f9d14b 0)}
+    /* 商品清单 */
+    .listWrap .supplierItem{width:100%;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-bottom:1.2vw}
+    .listWrap .supplierItem.disable{background:#f1f0f5}
+    .listWrap .supplierItem em{font-style:normal}
+    .listWrap .supplierTit{border-bottom:1px solid #F7F7F7;height:7.4vw;line-height:7.4vw;padding:1.3vw 3.3vw}
+    .listWrap .cartItem{padding:2.2vw 3.3vw;height:24vw;line-height:24vw;position:relative}
+    .listWrap .supplierBtn{border-top:1px solid #F7F7F7;width:93vw;margin:0 auto;line-height:10.6vw;color:#22272e;font-size:3.4vw;text-align:right}
+    .listWrap .supplierBtn em{color:#f55c5c}
+    .listWrap .supplierBtn .note{text-align:left;white-space:nowrap;overflow:hidden}
+    .listWrap .supplierBtn .note input{width:79vw;height:8vw;line-height:8vw;background:#F7F7F7;border-radius:1vw;border:none;padding:0 2vw;font-size:3.1vw}
+    .listWrap .supplierItem .c0{float:left;width:9.6vw;text-align:center}
+    .listWrap .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:middle}
+    .listWrap .supplierItem .c1{float:left;width:24vw}
+    .listWrap .supplierItem .image{display:block;box-sizing:border-box;width:24vw;height:24vw;border:1px solid #F7F7F7}
+    .listWrap .supplierTit .img{width:7.4vw;height:7.4vw;border:1px solid #F7F7F7;margin-right:2vw}
+    .listWrap .supplierTit .name{color:#9aa5b5}
+    .listWrap .cartItem .c2,.listWrap .cartItem .c3,.listWrap .cartItem .c4,.listWrap .cartItem .c10{position:absolute;left:39vw;line-height:5vw}
+    .listWrap .cartItem .c2{top:2.2vw;height:10vw;width:58vw}
+    .listWrap .cartItem .c2 .name{color:#22272e;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
+    .listWrap .cartItem .c3{top:14vw;height:5vw}
+    .listWrap .cartItem .c4{bottom:2.2vw;height:5vw}
+    .listWrap .cartItem .c5{position:absolute;right:3.3vw;bottom:2.2vw;height:6.4vw;line-height:6.4vw}
+    .listWrap .cartItem .c10{color:#f94b4b;top:16vw;height:5vw}
+    .listWrap .cartItem .number{display:inline-block;width:26.6vw;line-height:6.4vw;height:6.4vw;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
+    .listWrap .cartItem .number>em{display:inline-block;width:6.4vw;height:6.4vw;background:#FFE6DC;font-size:4vw;line-height:6vw;vertical-align:top}
+    .listWrap .cartItem .number input{width:13.5vw;border:none;line-height:6vw;vertical-align:top;text-align:center;color:#E15616;font-size:3.4vw}
+    .invalidTit{height:9vw;line-height:9vw;font-size:3.7vw;padding:0 3.3vw}
+    .invalidTit .tit{color:#22272e;float:left}
+    .invalidTit .delAll{color:#e15616;float:right}
+    .invalidTit .tit em{font-style:normal;color:#e15616}
+    /* 底部结算 */
+    .summaryWrap{width:100%;background:#FFF;margin:1.4vw 0}
+    .summaryWrap .summary{width:93vw;margin:0 auto;font-size:3.4vw;padding:1.5vw 0}
+    .summaryWrap .summary em{font-style:normal}
+    .summaryWrap .summary .left{height:9.4vw;line-height:9.4vw}
+    .summaryWrap .summary .right{height:11.2vw;line-height:11.2vw}
+    .summaryWrap .summary .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:top;margin:3vw 3vw 0 3.3vw}
+    .summaryWrap .summary .delete{width:12vw;height:6vw;line-height:6vw;display:inline-block;text-align:center;color:#f55c5c}
+    .summaryWrap .summary .right .item{position:relative;text-align:right;margin-left:6.8vw}
+    .summaryWrap .summary .right .item em{color:#f55c5c}
+    .summaryWrap .summary .submit{display:inline-block;width:30.4vw;height:11.2vw;line-height:11.2vw;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
+    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
+    .summaryWrap .summary .item .del{position:absolute;right:0;top:-4vw;cursor:pointer;height:6vw;font-size:3.1vw}
+    .summaryWrap .summary .item .del em{position:absolute;top:0;left:100%;height:5vw;white-space:nowrap;background:#ff4500;line-height:5vw;color:#FFF;padding:0 1vw;border-radius:2px}
+    /* 收货地址 */
+    .addressWrap{box-sizing:border-box;width:100%;position:relative}
+    .addressWrap .info,.model-address-content .content .list{line-height:7.4vw;background:#FFF;padding:3.3vw}
+    .model-address-content .content .list{margin-bottom:1vw;border-bottom:1px dashed #eee;position:relative}
+    .addressWrap .info>p,.model-address-content .content .list p{display:inline-block;min-width:49%;line-height:5vw;font-size:3.4vw;color:#22272e}
+    .addressWrap .info>p .label,.model-address-content .content .list p .label{color:#627386;margin-right:2vw}
+    .addressWrap .info .btnBox,.model-address-content .content .list-right{padding-top:2vw}
+    .addressWrap .info .btnBox .btn,.model-address-content .content .list-btn{display:inline-block;height:8vw;line-height:8vw;font-size:3.4vw;color:#1890f9;padding:0 3vw;border-radius:4.5vw;background-color:#e0f1ff;border:solid 1px #1890f9}
+    .addressWrap .info .btnBox .btn.con,.model-address-content .content .list-btn{background-color:#ffd8d8;color:#f94b4b;border-color:#f94b4b;margin-left:2vw}
+    .model-address-content .content .list-btn{padding:0 6vw}
+    .addressWrap .btnBox .group .btn.save{background-color:#E15616;color:#FFF;border-color:#E15616}
+    .addressWrap .info .btnBox .default,.model-address-content .content .list-defalut{height:8vw;line-height:8vw}
+    .addressWrap .info .btnBox .default .mIcon,.model-address-content .content .list-defalut .mIcon{display:inline-block;vertical-align:middle}
+    .addressWrap .info .btnBox .default .mIcon:before,.model-address-content .content .list-defalut .mIcon:before{height:8vw;width:8vw;background-position:-94.1vw -36.7vw}
+    .addressWrap .info .btnBox .default span,.model-address-content .content .list-defalut span{display:inline-block;height:6vw;line-height:6vw;font-size:3.1vw;color:#FFFFFF;background-color:#f94b4b;border-radius:3vw;padding:0 3vw;vertical-align:middle}
+    .addressWrap .info .btnBox .default a,.model-address-content .content .list-defalut a{display:inline-block;height:6vw;line-height:6vw;margin-left:2vw;color:#1890f9;vertical-align:middle}
+    .model-address-content .content .list-defalut a{padding:0;margin:0}
+    .addressWrap .formWrap,.model-address-content{position:fixed;bottom:0;left:0;width:100%;height:100%;margin:0 auto;background-color:rgba(74,79,88,.7);z-index:999}
+    .addressWrap .formWrap .form,.model-content{width:100%;box-sizing:border-box;position:absolute;bottom:0;left:0;background:#FFF;border-radius:2vw 2vw 0 0;padding:3.3vw}
+    .addressWrap .formWrap .form .group{text-align:center}
+    .addressWrap .btnBox .group p:first-child{margin-bottom:5vw}
+    .addressWrap .formWrap .form .group .check{display:inline-block;color:#1890f9}
+    .addressWrap .formWrap .form .group .check input{vertical-align:top;margin-right:2vw}
+    .addressWrap .formWrap .form .group .btn{display:inline-block;width:40vw;height:11vw;line-height:11vw;text-align:center;font-size:3.4vw;color:#e15616;border:1px solid #e15616;background:#FFE6DC}
+    .addressWrap .formWrap .form .group .btn.save{background-color:#E15616;color:#FFF;border-color:#E15616}
+    .model-address-content .content{max-height:80vh;box-sizing:border-box;overflow:hidden;overflow-y:auto}
+    .model-address-content .content .list .seclet{width:6vw;height:6vw;position:absolute;bottom:0;right:0;opacity:0}
+    .model-address-content .content .list .seclet .mIcon{width:6vw;height:6vw;display:block}
+    .model-address-content .content .list .seclet .mIcon:before{width:6vw;height:6vw;background-position:-75.1vw -7.8vw}
+    .model-address-content .content .list.checked{border:1px solid #E15616}
+    .model-address-content .content .list.checked .seclet{opacity:1}
+    .model-address-content .button{text-align:center;padding-top:3.3vw}
+    .model-address-content .button .btn{display:inline-block;width:40vw;height:11vw;line-height:11vw;text-align:center;font-size:3.4vw;color:#e15616;border:1px solid #e15616;background:#FFE6DC}
+    .model-address-content .button .btn-confirm{background-color:#E15616;color:#FFF;border-color:#E15616;margin-right:2vw}
+    /* 余额 */
+    .balanceWrap,.totalPriceWrap,.invoiceWrap{width:100%;box-sizing:border-box;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-bottom:1.2vw;text-align:left;padding:3.4vw}
+    .balanceWrap .text{display:inline-block;height:4vw;line-height:4vw;color:#333;margin-left:2vw;vertical-align:top;white-space:nowrap}
+    .balanceWrap .text .red{color:#FF2A2A}
+    .totalPriceWrap{color:#333;line-height:6vw;text-align:left;padding:3.3vw}
+    .totalPriceWrap span{width:46vw;float:right;text-align:right}
+    .totalPriceWrap span em{font-style:normal;color:#FF2A2A}
+    .totalPriceWrap:after,.invoiceWrap:after,.invoiceWrap .formLine:after{content:'';display:table;clear:both}
+    /* 发票 */
+    .invoiceWrap .formLine .diyBox {width: 28vw;}
+
+
+}
+

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


+ 399 - 516
src/main/resources/static/js/shopping/confirm.js

@@ -4,438 +4,445 @@ var shoppingConfirm = new Vue({
         userId: 0,
         userIdentity: '',
         userToken: '',
-        optionData:'',
-        subType:'',//跳转类型
-        cartType:'',//提交订单类型
-        goodsList:[],//商品列表
-        isEmpty:false,//是否显示列表
-        allPrice:'',//订单总价格
-        allCount:'',//订单总数量
-        productKind:'',//商品种类
-        payAllPrice:'',//支付价格
-        surplusMoney:0.00,//显示勾选后的剩余抵扣
-        userMoney:0.00,	//显示可使用余额
-        deductMoney:0.00,//显示已使用的余额
-        productIds:'',//商品ID
-        productCount:'',//提交订单的商品数量
-        addressList:[],//收货地址
-        addressData:{},//初始化地址信息
-        hanldAddressData:{},//选择确定的地址信息
-        isAddType:'',
-        addAddressData:{
-            addressID:'',
-            allAddress:'所在地区',
-            userID: '',			//用户id ,只在新增收货地址时传
-            shouHuoRen: '',		//收货人
-            mobile:'',			//收货人手机
-            townID:'',			//区ID
-            address: '',	//地址
-            defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
-        },//初始化地址信息
-        addressID:'',//地址ID
-        townID:'',//区ID
-        freightText:'',
-        freightMoney:'',
-        selectedFreight:'',//默认邮费
-        hanldFreePostFlag:'',//
-        hanldFreight:'',//
-        isRequest:false,
-        isFiexdClass:'float',
-        isDefaultFlag:false,
-        isShowAddress:false,
-        isShowInvoice:false,
-        isShowBalance:false,
-        isShwoAddModel:false,
-        isShowCascader:false,
-        isConDisabled:false,
-        isSubDisabled:false,
-        isCheckedBalabce:false,
-        isDefaultChecked:false,
-        balanceDeductionFlag:2,
-        isAddressListLength:false,
-        invoiceType:'1',
-        invoiceTitle:0,
-        goodRemark:[],
-        optionList:['到付'],
-        ProvinceList:[],
-        cityArray:[],
-        townArray:[],
-        currentTab:0,
-        choseAddressText:'',//选取的地址信息
-        freightData:'',//运费信息
-        orderInfo:[],//提交的商品信息
-        payInfo:{},	//订单信息
-        addTabList:[
-            {name:'省'},
-            {name:'区'},
-            {name:'市'}
-        ],
-        addressFrom: {
-            name:'',
-            province: '',
+        type: '',
+        productIds: '',
+        listData: [],
+        kindCount: 0,
+        totalCount: 0,
+        totalPrice: 0,
+        address: {
+            id: '',
+            townId: '',
+            cityId: '',
+            provinceId: '',
+            name: '',
+            mobile: '',
+            desc: '',
+            town: '',
             city: '',
-            town: ''
-        },
-        invoiceData:{//初始化发票信息
-            id:'',
-            invoiceTitle:'',	 //单位名称
+            province: '',
+            default: '',
+            selectedId: ''
+        },
+        addressList: [],
+        isShowAddressList: false,
+        isShowAddressForm: false,
+        addressForm: {
+            id: '',
+            name: '',
+            mobile: '',
+            townId: '',
+            cityId: '',
+            provinceId: '',
+            desc: '',
+            default: ''
+        },
+        provinceOptions:[],
+        cityOptions:[],
+        townOptions:[],
+        saveLoading: false,
+        rule:{
+            name: '^[a-zA-Z\\u4e00-\\u9fa5]{2,}$',
+            mobile: '^\\d{6,12}$'
+        },
+        balance: {
+            flag: false,        //使用余额抵扣
+            originUserMoney: 0, //初始化后不能改变,用于还原余额抵扣
+            userMoney: 0,	    //显示可使用余额
+            deductMoney: 0,     //显示已使用的余额
+            surplusMoney: 0     //显示勾选后的剩余抵扣
+        },
+        payInfo: {
+            clauseId: 0,         //条款(暂时保留)
+            orderShouldPayFee: 0,//提交的总价
+            balancePayFlag: 0,   //余额抵扣的状态 0不使用,1使用
+            freight: 0,          //邮费
+            freePostFlag:-1      // 0包邮 -1到付 1 有运费
+        },
+        invoice: {
+            type: 0,
+            invoiceTitleType: 0, //发票抬头类型 1企业 0个人
+            invoiceTitle: '',    //单位名称
             corporationTaxNum:'',//纳税人识别号
             registeredAddress: '',//单位地址
             registeredPhone:'',	 //注册电话
             openBank:'',		//开户银行
-            bankAccountNo: ''  ,//银行账号
-            type:0
+            bankAccountNo: ''  //银行账号
         },
-        invoiceTypeList:[
-            {value:'1',name:'不开发票'},
-            {value:'2',name:'普通发票'},
-            {value:'3',name:'增值税发票'}
-        ],
-        invoiceTitleList:[
-            {value:'0',name:'个人'},
-            {value:'1',name:'公司'},
-        ],
-        peopleInvoiceData:{
-            invoiceTitle:'',   //单位名称
-            invoiceContent:'明细', //商品明细
-            corporationTaxNum:'',//纳税人识别号
-            invoiceTitleType:'0'//发票抬头类型 1企业 0个人
-        },
-        checkedAddressItemIndex:0,
-    },
-    filters: {
-        NumFormat:function(text) {
-            return Number(text).toFixed(2);
-        }
+        submitLoading: false
     },
     computed: {
 
+    },
+    filters: {
+        NumFormat:function(num) {
+          var temp = String(num).split('.');
+          if (temp.length === 1 || temp[1].length < 2) {
+            return Number(num).toFixed(2);
+          }else{
+            return Number(num);
+          }
+        }
     },
     methods: {
-        getAddressList:function(userId,pageSize){//获取收货地址
-            var _self = this;
-            OrderApi.GetAddressList({userID:userId,pageNum:1,pageSize:pageSize},function (response) {
-                if(response.code == 0){
-                    var data = response.data;
-                    if(data.results != ''){
-                        _self.addressList = [];
-                        _self.addressList = data.results;
-                        _self.addressData =  data.results[0];
-                        _self.addressID = data.results[0].addressID;
-                        _self.townID = data.results[0].townID;
-                        _self.getFreightData();
-                        _self.isAddressListLength = false;
-                    }else{
-                        _self.isAddressListLength = true;
-                        _self.addressData = _self.addressData;
-                        _self.GetProvinceFn()
-                    }
-                }else {
-                    CAIMEI.Alert(response.msg, '确定', false);
-                }
-            })
+        blurHandle: function(event) {
+            var el = event.currentTarget;
+            verifyHandle(el);
         },
-        getConfirmInfo: function (productIds, productCount) {//订单初始化
+        getConfirmList: function (productCount) {
             var _self = this;
-            if(_self.userId ===0){return;}
-            OrderApi.GetOrderConfirmInfo({userId: _self.userId,count: productCount,productIds: productIds},function(response){
-                if (response.code === 0 && response.data) {
-                    var data = response.data;
-                    _self.isRequest = true;
-                    _self.goodsList = data.list;
-                    _self.allPrice =  data.totalPrice;
-                    _self.allCount =  data.totalCount;
-                    _self.payAllPrice = data.totalPrice;
-                    _self.productKind = data.productKind;
-                    _self.userMoney = data.userMoney;
+            if(this.userId ===0){return;}
+            OrderApi.GetOrderConfirmInfo({
+                userId: _self.userId,
+                count: productCount,
+                productIds: this.productIds
+            },function(r){
+                if (r.code === 0 && r.data) {
+                    _self.listData = r.data.list;
+                    _self.totalPrice =  r.data.totalPrice;
+                    _self.totalCount =  r.data.totalCount;
+                    _self.kindCount = r.data.kindCount;
+                    _self.balance.userMoney = r.data.userMoney;
+                    _self.balance.originUserMoney = r.data.userMoney;
+                    _self.payInfo.orderShouldPayFee = r.data.totalPrice;
                     _self.getAddressList(_self.userId,20);
                 }else{
-                    CAIMEI.Alert(response.msg, '确定', false);
+                    CAIMEI.Alert(r.msg, '确定', false);
                 }
             });
         },
-        getFreightData :function(){//获取邮费信息
+        // 获取邮费
+        getFreight: function(townId){
             var _self = this;
-            var params ={userId:_self.userId,productIds:_self.productIds,totalPrice:_self.allPrice,townId:_self.addressData.townID};
-            OrderApi.GetOrderPostage(params,function (response) {
-                if(response.code == 0){
-                    _self.freightData = response.data;
-                    _self.hanldFreePostFlag = response.data.freePostFlag;
-                    _self.hanldFreight = response.data.freight;
-                    switch(_self.freightData.freePostFlag){
-                        case 0:
-                            _self.freightText = '包邮';
-                            _self.freightData.freight  = 0;
-                            break;
-                        case 1:
-                            _self.freightText = '';
-                            _self.freightMoney =  _self.freightData.freight;
-                            var key = '到付';
-                            _self.optionList = [key];
-                            _self.optionList.unshift(_self.orderPriceToFixed(_self.freightMoney));
-                            _self.selectedFreight = _self.optionList[0];
-                            break;
-                        case -1:
-                            _self.freightText = '到付';
-                            _self.freightData.freight  = 0;
-                            break;
-                    };
-                    if(_self.hanldFreePostFlag == 1){
-                        _self.payAllPrice = _self.allPrice + response.data.freight;
-                        _self.attributePallPrice();
-                    }else{
-                        _self.payAllPrice = _self.allPrice;
-                        _self.attributePallPrice();
-                    }
+            OrderApi.GetOrderPostage({
+                userId: this.userId,
+                productIds: this.productIds,
+                totalPrice: this.totalPrice,
+                townId: townId
+            },function (r) {
+                if(r.code === 0 && r.data){
+                    _self.payInfo.freePostFlag = r.data.freePostFlag;
+                    _self.payInfo.freight = (r.data.freePostFlag===1 ? r.data.freight : 0);
+                    _self.payInfo.orderShouldPayFee = _self.totalPrice + _self.payInfo.freight;
                 }else{
                     CAIMEI.Alert(response.msg, '确定', false);
                 }
             })
         },
-        toggleThisLadder: function(event){
-            var el = event.currentTarget;
-            if($(el).hasClass("on")){
-                $(el).removeClass("on").siblings('.mFixed').hide();
-                if(!isPC){looseBody();}
-            }else{
-                $(el).addClass("on").siblings('.mFixed').show();
-                if(!isPC){fixedBody();}
-            }
-        },
-        hideThisLadder: function(event){
-            var el = event.currentTarget;
-            $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
-            if(!isPC){looseBody();}
-        },
-        submitOrder: function(){
-
+        // 获取收货地址
+        getAddressList: function(userId,pageSize){
+            var _self = this;
+            OrderApi.GetAddressList({
+                userID:userId,
+                pageNum:1,
+                pageSize:pageSize
+            },function (r) {
+                if(r.code === 0 && r.data){
+                    if(r.data.results){
+                        _self.addressList = r.data.results;
+                        _self.address.id = r.data.results[0].addressID;
+                        _self.address.townId = r.data.results[0].townID;
+                        _self.address.cityId = r.data.results[0].cityID;
+                        _self.address.provinceId = r.data.results[0].provinceID;
+                        _self.address.name = r.data.results[0].shouHuoRen;
+                        _self.address.mobile = r.data.results[0].mobile;
+                        _self.address.desc = r.data.results[0].address;
+                        _self.address.town = r.data.results[0].town;
+                        _self.address.city = r.data.results[0].city;
+                        _self.address.province = r.data.results[0].province;
+                        _self.address.default = true;
+                        _self.address.selectedId = r.data.results[0].addressID;
+                        _self.getFreight(_self.address.townId);
+                    }else{
+                        _self.createAddress();
+                    }
+                    _self.getProvinceOptions();
+                }else {
+                    CAIMEI.Alert(r.msg, '确定', false);
+                    _self.createAddress();
+                }
+            })
         },
-        GetProvinceFn: function(){//获取全部省份
+        // 获取全部省份
+        getProvinceOptions: function(){
             var _self = this;
-            PublicApi.GetProvince({},function(response){
-                if(response.code == 0){
-                    _self.ProvinceList =response.data;
+            PublicApi.GetProvince({},function(r){
+                if(r.code === 0 && r.data){
+                    _self.provinceOptions =r.data;
                 }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
+                    CAIMEI.Alert(r.msg,'确定',false);
                 }
-            })
+            });
         },
-        ChangeProvince:function () {//选择省份
+        getCityOptions: function(provinceId,callback){
             var _self = this;
-            _self.addressFrom.province = event.target.value;
-            if(_self.addressFrom.province==''){//省为请选择时市区初始化
-                _self.cityArray=[];
-                _self.townArray=[];
-                _self.addAddressData.townID=''
-            }else {
-                _self.ChangeGetcity();
+            if(provinceId && provinceId>0){
+                _self.cityOptions = [];
+                _self.townOptions = [];
+                _self.addressForm.cityId = '';
+                _self.addressForm.townId = '';
+                PublicApi.GetCity({ provinceId: provinceId },function(r){
+                    if(r.code === 0 && r.data){
+                        _self.cityOptions = r.data;
+                        if(callback){callback();}
+                    }else{
+                        CAIMEI.Alert(r.msg,'确定',false);
+                    }
+                });
             }
         },
-        ChangeGetcity:function(event){//加载市
+        getTownOptions: function(cityId, callback){
             var _self = this;
-            PublicApi.GetCity({ provinceId: _self.addressFrom.province },function(response){
-                if(response.code == 0 ){
-                    _self.cityArray = response.data;
-                    _self.addressFrom.city = event.target.value;
-                    if(_self.addressFrom.city==''){
-                        _self.townArray=[];
-                    }else {
-                        _self.ChangeGetcTown();
+            if(cityId && cityId>0){
+                _self.townOptions = [];
+                _self.addressForm.townId = '';
+                PublicApi.GetTown({cityId: cityId},function(r){
+                    if(r.code === 0 && r.data){
+                        _self.townOptions = r.data;
+                        if(callback){callback();}
+                    }else{
+                        CAIMEI.Alert(r.msg,'确定',false);
                     }
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                }
-            })
+                })
+            }
         },
-        ChangeGetcTown:function(event){//选择地区
-            var _self = this;
-            PublicApi.GetTown({ cityId: _self.addressFrom.city },function(response){
-                if(response.code == 0 ){
-                    _self.townArray = response.data;
-                    _self.addAddressData.townID = event.target.value;
-                    console.log(_self.addAddressData.townID)
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                }
-            })
+        showAddressBox: function(){
+            this.isShowAddressList = true;
+            if(!isPC){fixedBody();}
+        },
+        closeAddressBox: function(){
+            this.isShowAddressList = false;
+            if(!isPC){looseBody();}
+        },
+        hideAddressForm: function(){
+            this.isShowAddressForm = false;
+            if(!isPC){looseBody();}
         },
-        settingDefaultFlag :function(){//添加&&编辑 保存 设置默认地址按钮
+        createAddress: function(){
+            this.isShowAddressForm = true;
+            if(!isPC){fixedBody();}
+        },
+        updateAddress: function(){
+            this.isShowAddressForm = true;
+            this.addressForm.id = this.address.id;
+            this.addressForm.name = this.address.name;
+            this.addressForm.mobile = this.address.mobile;
+            this.addressForm.default = this.address.default;
+            this.addressForm.desc = this.address.desc;
+            this.addressForm.provinceId = this.address.provinceId;
             var _self = this;
-            _self.isDefaultFlag=! _self.isDefaultFlag;
-            if(_self.isDefaultFlag){
-                _self.addAddressData.defaultFlag = '1';
-            }else{
-                _self.addAddressData.defaultFlag = '0';
-            }
+            this.getCityOptions(this.address.provinceId, function(){
+                _self.addressForm.cityId = _self.address.cityId;
+                _self.getTownOptions(_self.address.cityId,function(){
+                    _self.addressForm.townId = _self.address.townId;
+                });
+            });
+            if(!isPC){fixedBody();}
         },
-        addAddressFn :function(){//添加新的地址
+        saveAddressForm: function(){
             var _self = this;
-            _self.addAddressData={
-                addressID:'',
-                allAddress:'',
-                userID: '',		//用户id ,只在新增收货地址时传
-                shouHuoRen: '',	//收货人
-                mobile:'',		//收货人手机
-                townID:'',		//区ID
-                address: '',	//地址
-                defaultFlag:0,	//是否默认收货地址(0 不是默认,1 默认)
-            };
-            _self.isAddType = 'add';
-            _self.isShwoAddModel = true;
+            var pass = verifyForm();
+            if (_self.saveLoading) { return false; }
+            this.$nextTick(function() {
+                if (!pass) {return false;}
+                if(!_self.addressForm.townId){
+                    CAIMEI.dialog('请选择所在地区');
+                    return false;
+                };
+                _self.saveLoading = true;
+                var params = {
+                    userID:_self.userId, //用户id ,只在新增收货地址时传
+                    shouHuoRen:_self.addressForm.name, //收货人
+                    mobile:_self.addressForm.mobile,   //手机
+                    townID:_self.addressForm.townId,   //区ID
+                    address:_self.addressForm.desc, //地址
+                    defaultFlag:_self.addressForm.default?1:0 //是否默认收货地址(0 不是默认,1 默认)
+                };
+                if(_self.addressForm.id){
+                    // 编辑
+                    params.addressID = _self.addressForm.id;//编辑保存地址ID
+                }
+                _self.saveAddress(params);
+            });
         },
-        editAddress :function(item){//编辑地址
+        saveAddress: function(params){
             var _self = this;
-            if(_self.defaultFlag =='1'){
-                _self.isDefaultChecked = true;
-            }else{
-                _self.isDefaultChecked = false;
-            }
-            _self.isAddType = 'edit';
-            _self.isShwoAddModel = true;
-            _self.addAddressData = item;
-            _self.addAddressData.allAddress=item.province+''+item.city+''+item.town;
+            OrderApi.AddSaveAddress(params,function(r){
+                if(r.code === 0){
+                    CAIMEI.dialog('保存成功');
+                    _self.saveLoading = false;
+                    this.isShowAddressForm = false;
+                    // 重新获取地址列表
+                    _self.getAddressList(_self.userId,20);
+                }else{
+                    CAIMEI.Alert(r.msg,'确定',false);
+                }
+            });
         },
-        defaultAddressFn :function(addressID){//列表直接设为默认地址
+        // 列表直接设为默认地址
+        setDefaultAddress: function(addressId){
             var _self = this;
-            OrderApi.DefaultAddress({addressId:addressID,userId:_self.userId},function (response) {
-                if(response.code == 0 ){ //成功
-                    _self.addressList = [];
+            OrderApi.DefaultAddress({addressId:addressId,userId:_self.userId},function (r) {
+                if(r.code === 0 ){
+                    // 重新获取地址列表
                     _self.getAddressList(_self.userId,20);
                 }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
+                    CAIMEI.Alert(r.msg,'确定',false);
                 }
             });
         },
-        deleteAddress :function(addressID){//列表删除单个地址
+        // 列表删除单个地址
+        deleteAddress: function(addressId){
             var _self = this;
             CAIMEI.Modal('确定要删除该地址?','取消','确定',function () {
-                OrderApi.DeleteAddress({addressID:addressID,userID:_self.userId},function (response) {
-                    if(response.code == 0 ){ //删除成功
+                OrderApi.DeleteAddress({addressID:addressId,userID:_self.userId},function (r) {
+                    if(r.code === 0 ){
                         CAIMEI.dialog('删除成功');
-                        _self.addressList = [];
+                        // 重新获取地址列表
                         _self.getAddressList(_self.userId,20);
                     }else{
-                        CAIMEI.Alert(response.msg,'确定',false);
+                        CAIMEI.Alert(r.msg,'确定',false);
                     }
                 })
             });
         },
-        changeHandle :function(index) {//商品备注的值被改变后
-            this.goodsList[index].note = this.goodRemark[index];
-            // console.log(this.goodsList)
+        chooseAddress: function(selectedId){
+            this.address.selectedId = selectedId;
         },
-        ConfirmAddressFn :function(){//保存地址
+        confirmAddress: function(){
             var _self = this;
-            if(_self.addAddressData.townID == ""){
-                CAIMEI.dialog('请选择所在地区');
-                return;
-            };
-            if(_self.addAddressData.address == ""){
-                CAIMEI.dialog('请填写详细地址');
-                return;
-            };
-            if(_self.addAddressData.shouHuoRen == ""){
-                CAIMEI.dialog('请输入收货人姓名');
-                return;
-            };
-            if(_self.addAddressData.mobile == ""){
-                CAIMEI.dialog('请输入收货人手机号');
-                return;
-            };
-            if( _self.isAddType == 'add'){
-                var params = {
-                        userID:_self.userId  ,		//用户id ,只在新增收货地址时传
-                        shouHuoRen:_self.addAddressData.shouHuoRen ,//收货人
-                        townID:_self.addAddressData.townID,			//区ID
-                        address:_self.addAddressData.address,//地址
-                        mobile:_self.addAddressData.mobile,			//手机
-                        defaultFlag:_self.addAddressData.defaultFlag//是否默认收货地址(0 不是默认,1 默认)
-                };
-            }else{
-                var params = {
-                        addressID:_self.addAddressData.addressID,//编辑保存地址ID
-                        userID:_self.userId  ,		//用户id ,只在新增收货地址时传
-                        shouHuoRen:_self.addAddressData.shouHuoRen ,//收货人
-                        townID:_self.addAddressData.townID,			//区ID
-                        address:_self.addAddressData.address,//地址
-                        mobile:_self.addAddressData.mobile,			//手机
-                        defaultFlag:_self.addAddressData.defaultFlag//是否默认收货地址(0 不是默认,1 默认)
-                };
-            }
-            _self.isConDisabled = true;
-            OrderApi.AddSaveAddress(params,function(response){
-                if(response.code == 0){
-                    CAIMEI.dialog('保存成功');
-                    _self.getAddressList(_self.userId,20);
-                    _self.isShwoAddModel = false;
-                    _self.isConDisabled = false;
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
+            this.addressList.forEach(function(item){
+                if (_self.address.selectedId==item.addressID){
+                    _self.address.id = item.addressID;
+                    _self.address.townId = item.townID;
+                    _self.address.cityId = item.cityID;
+                    _self.address.provinceId = item.provinceID;
+                    _self.address.name = item.shouHuoRen;
+                    _self.address.mobile = item.mobile;
+                    _self.address.desc = item.address;
+                    _self.address.town = item.town;
+                    _self.address.city = item.city;
+                    _self.address.province = item.province;
+                    _self.address.default = (item.defaultFlag > 0);
+                    _self.getFreight(_self.address.townId);
                 }
             });
+            this.closeAddressBox();
+        },
+        toggleThisLadder: function(event){
+            var el = event.currentTarget;
+            if($(el).hasClass("on")){
+                $(el).removeClass("on").siblings('.mFixed').hide();
+                if(!isPC){looseBody();}
+            }else{
+                $(el).addClass("on").siblings('.mFixed').show();
+                if(!isPC){fixedBody();}
+            }
         },
-        ConfirmOrderFn :function(){//提交订单
+        hideThisLadder: function(event){
+            var el = event.currentTarget;
+            $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
+            if(!isPC){looseBody();}
+        },
+        useUserMoney: function(){
+            var _self = this;
+            if(this.balance.userMoney>0){
+                this.$nextTick(function() {
+                    var total = _self.totalPrice + _self.payInfo.freight;
+                    if(_self.balance.flag){
+                        _self.payInfo.balancePayFlag = 1;
+                        if(_self.balance.userMoney>=total){
+                            // 全部抵扣
+                            _self.payInfo.orderShouldPayFee = 0;
+                            _self.balance.deductMoney = total;
+                            _self.balance.surplusMoney = _self.balance.userMoney-total;
+                        }else{
+                            // 部分抵扣
+                            _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney;
+                            _self.balance.deductMoney = _self.balance.userMoney;
+                            _self.balance.surplusMoney = 0;
+                        }
+                    }else{
+                        // 取消抵扣
+                        _self.payInfo.balancePayFlag = 0;
+                        _self.payInfo.orderShouldPayFee = total;
+                        _self.balance.userMoney = _self.balance.originUserMoney;
+                        _self.balance.deductMoney = 0;
+                        _self.balance.surplusMoney = _self.balance.originUserMoney;
+                    }
+                });
+            }
+        },
+        submitOrder: function(){
             var _self = this;
-            if (_self.isSubDisabled) { return false; }
-            if(_self.addressID == ''){
+            if(this.submitLoading){return false;}
+            if(!this.address.id){
                 CAIMEI.dialog('请先添加收货地址~');
-                return;
+                return false;
             }
-            //选择开发票处理
-            if(_self.invoiceType == '1'){
-                CAIMEI.returnedTarget();
-                _self.invoiceData = Object.assign(_self.invoiceData,'',{type:0});
-            }else if(_self.invoiceType == '2'){
-                switch(_self.peopleInvoiceData.invoiceTitleType){
-                    case '0':
-                        if(_self.peopleInvoiceData.invoiceTitle == ""){
-                            CAIMEI.dialog('请输入个人抬头');
-                            return;
-                        }
-                        break;
-                    case '1':
-                        if(_self.peopleInvoiceData.invoiceTitle == ""){
-                            CAIMEI.dialog('请输入公司抬头');
-                            return
-                        }
-                        if(_self.peopleInvoiceData.corporationTaxNum == ""){
-                            CAIMEI.dialog('请输入纳税人识别号');
-                            return
-                        }
-                        break;
+            if(this.invoice.type === 1){
+                // 普通发票
+                if(!this.invoice.invoiceTitle){
+                    CAIMEI.dialog('请输入个人抬头');return false;
+                }
+                if(this.invoice.invoiceTitleType===1 && !this.invoice.corporationTaxNum){
+                    CAIMEI.dialog('请输入纳税人识别号');return false;
+                }
+            }else if(this.invoice.type === 2){
+                // 增值税发票
+                if(!this.invoice.invoiceTitle){
+                    CAIMEI.dialog('请输入个人抬头');return false;
                 }
-            }else if(_self.invoiceType == '3'){
-                if(_self.invoiceData.invoiceTitle == ""){
-                    CAIMEI.dialog('请输入单位名称');
-                    return;
+                if(!this.invoice.corporationTaxNum){
+                    CAIMEI.dialog('请输入纳税人识别号');return false;
                 }
-                if(_self.invoiceData.corporationTaxNum == ""){
-                    CAIMEI.dialog('请输入纳税人识别号');
-                    return;
+                if(!this.invoice.registeredAddress){
+                    CAIMEI.dialog('请输入单位地址');return false;
                 }
-                if(_self.invoiceData.registeredAddress == ""){
-                    CAIMEI.dialog('请输入单位地址');
-                    return;
+                if(!this.invoice.registeredPhone){
+                    CAIMEI.dialog('请输入注册电话');return false;
                 }
-                if(_self.invoiceData.registeredPhone == ""){
-                    CAIMEI.dialog('请输入注册电话');
-                    return;
+                if(!this.invoice.openBank){
+                    CAIMEI.dialog('请输入开户银行');return false;
                 }
-                if(_self.invoiceData.openBank == ""){
-                    CAIMEI.dialog('请输入开户银行');
-                    return;
+                if(!this.invoice.bankAccountNo){
+                    CAIMEI.dialog('请输入银行账号');return false;
                 }
-                if(_self.invoiceData.bankAccountNo == ""){
-                    CAIMEI.dialog('请输入银行账号');
-                    return;
+            }
+            var params = {
+                cartType: this.type,
+                orderSource: 1,            // 购买类型:(1购物车提交[对应表cm_cart],2直接购买提交, 3协销下单)
+                serviceProviderId: '',     // 协销ID(小程序忽略)
+                clubUserId: this.userId,   // 机构用户ID
+                addressId: this.address.id,// 地址ID
+                orderInfo: [],             // 商品信息
+                payInfo: this.payInfo,     // 订单信息
+                orderInvoice: {type: 0}    // 默认不开发票
+            };
+            // 发票信息
+            if(this.invoice.type === 1){
+                params.orderInvoice = {
+                   type: 1,  // 普通发票
+                   invoiceContent: '商品明细',
+                   invoiceTitleType: this.invoice.invoiceTitleType, //发票抬头类型 1企业 0个人
+                   invoiceTitle: this.invoice.invoiceTitle,         //发票抬头
+                   corporationTaxNum: this.invoice.corporationTaxNum//纳税人识别号
+                }
+            }else if(this.invoice.type === 2){
+                params.orderInvoice = {
+                   type: 2,  // 增值税发票
+                   invoiceTitle: this.invoice.invoiceTitle,          //单位名称
+                   corporationTaxNum: this.invoice.corporationTaxNum,//纳税人识别号
+                   registeredAddress: this.invoice.registeredAddress,//单位地址
+                   registeredPhone: this.invoice.registeredPhone,    //注册电话
+                   openBank: this.invoice.openBank,                  //开户银行
+                   bankAccountNo: this.invoice.bankAccountNo         //银行账号
                 }
-                CAIMEI.returnedTarget();
-                _self.invoiceData = Object.assign(_self.invoiceData,'',{type:2});
             }
             //商品信息
-            _self.orderInfo = _self.goodsList.map(function(el){
+            params.orderInfo = this.listData.map(function(supplier){
                 var productInfo = [];
-                el.cartList.forEach(function(item){
+                supplier.cartList.forEach(function(item){
                     productInfo.push({
                         productId:item.productId,
                         productNum:item.number,
@@ -443,182 +450,58 @@ var shoppingConfirm = new Vue({
                         productType:item.productType
                     })
                 });
-                return {shopId:el.id,note:el.note?el.note:'',productInfo:productInfo}
+                return {
+                    shopId: supplier.id,
+                    note: supplier.note ? supplier.note : '',
+                    productInfo: productInfo
+                }
             });
-            //订单信息
-            _self.payInfo = {
-                clauseId:0,//条款(暂时保留)
-                orderShouldPayFee:_self.payAllPrice.toFixed(2),//提交的总价
-                balancePayFlag:_self.balanceDeductionFlag,//余额抵扣的状态
-                freight:parseInt(_self.hanldFreight).toFixed(2),//邮费
-                freePostFlag:parseInt(_self.hanldFreePostFlag)//运费形式
-            };
-            var  params = {
-                    orderSource:1,
-                    clubUserId:_self.userId,
-                    cartType:_self.cartType,
-                    addressId:_self.addressID,
-                    orderInfo:_self.orderInfo,
-                    payInfo:_self.payInfo,	//订单信息
-                    orderInvoice:_self.invoiceData
-            };
-            // console.log('最后参数',params);
-            //提交
-            _self.isSubDisabled = true;
-            OrderApi.ConfirmOrder({'params':JSON.stringify(params)},function (response) {
-                // console.log(response);
-                if(response.code === 1){
+            params.payInfo.freight = toFloat(this.payInfo.freight);
+            params.payInfo.orderShouldPayFee = toFloat(this.payInfo.orderShouldPayFee);
+            console.log(params);
+            this.submitLoading = true;
+            OrderApi.ConfirmOrder({'params':JSON.stringify(params)},function (r) {
+                if(r.code === 1){
                     var data = { payableAmount: _self.deductMoney };
                     CAIMEI.Storage.removeItem('confirmOrderInfo');
                     CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:data}));
                     window.location.href = '/pay/success.html';
-                }else if(response.code === 2){
+                }else if(r.code === 2){
                     var data = {
-                        orderID:response.data.orderID,
-                        orderNo:response.data.orderNo,
-                        orderMark:response.data.orderMark,
-                        payableAmount:response.data.payableAmount
+                        orderID:r.data.orderID,
+                        orderNo:r.data.orderNo,
+                        orderMark:r.data.orderMark,
+                        payableAmount:r.data.payableAmount
                     };
                     CAIMEI.Storage.removeItem('confirmOrderInfo');
                     CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:data}));
-                    window.location.href = '/pay/caimei-paycash.html?type=confirm&orderID='+response.data.orderID;
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                    _self.isSubDisabled = false;
-                }
-            })
-        },
-        checkedAddressItemFn:function(index,item){//选择地址处理
-            var _self = this;
-            _self.checkedAddressItemIndex = index;
-            _self.hanldAddressData = item;
-        },
-        ConfirmCheckedAddressFn:function(){//确定使用选择的地址
-            var _self = this;
-            _self.addressData =  _self.hanldAddressData;
-            _self.isShowAddress = false;
-        },
-        HideCheckedAddressFn :function(){//隐藏选择地址列表
-            var _self = this;
-            _self.isShowAddress = false;
-        },
-        CancelAddressFn:function(){
-            var _self = this;
-            _self.isShwoAddModel = false;
-        },
-        ShowCheckedAddressFn :function(){//显示地址列表选择地址
-            var _self = this;
-            _self.isShowAddress = true;
-        },
-        ShowAddAddressFn :function(){//显示新增地址
-            var _self = this;
-            _self.isAddType = 'add';
-            _self.isShwoAddModel = true;
-            _self.addressData = this.addressData;
-            _self.GetProvinceFn();
-        },
-        radioChange :function(value){//发票信息选择
-            var _self=this;
-            _self.invoiceType = event.target.value;
-            for (var i = 0; i < _self.invoiceTypeList.length; i++) {
-                if (_self.invoiceTypeList[i].value === _self.invoiceType) {
-                    _self.current = i;
-                    break;
-                }
-            }
-            switch(_self.invoiceType){
-                case '1':
-                    CAIMEI.returnedTarget();
-                    _self.invoiceData = Object.assign(_self.invoiceData,'',{type:0});
-                    break;
-                case '2':
-                    _self.invoiceTitle = "0";
-                    _self.peopleInvoiceData.invoiceTitleType = "0";
-                    CAIMEI.returnedTarget();
-                    _self.invoiceData = Object.assign(_self.peopleInvoiceData,'',{type:1});
-                    break;
-                case '3':
-                    _self.getUseFindInvoice();
-                    break;
-            }
-        },
-        radioChangeTitle :function(event) {//发票抬头选择
-            this.peopleInvoiceData.invoiceTitleType = event.target.value;
-            for (var i = 0; i < this.invoiceTitleList.length; i++) {
-                if (this.invoiceTitleList[i].value === this.peopleInvoiceData.invoiceTitleType) {
-                    break;
-                }
-            }
-            switch(this.peopleInvoiceData.invoiceTitleType){
-                case '1':
-                    this.peopleInvoiceData.invoiceTitle = "";
-                    this.peopleInvoiceData.invoiceContent = "明细";
-                    break;
-            }
-        },
-        getUseFindInvoice :function(){//获取发票信息
-            var _self = this;
-            OrderApi.GetFindInvoice({userId:_self.userId},function(response){
-                if(response.code == 0){
-                    if(response.data == null){
-                        CAIMEI.returnedTarget();
-                        _self.invoiceData = Object.assign(_self.invoiceData,'',{type:0,userId:_self.userId})
-                    }else{
-                        _self.invoiceData = response.data
-                    }
+                    window.location.href = '/pay/caimei-paycash.html?type=confirm&orderID='+r.data.orderID;
                 }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
+                    CAIMEI.Alert(r.msg,'确定',false);
                 }
-            })
-        },
-        checkedBalabce :function(){//勾选使用余额
-            if(this.userMoney > 0){
-                this.isCheckedBalabce = !this.isCheckedBalabce;
-                if(this.isCheckedBalabce){
-                    this.balanceDeductionFlag =1;
-                    this.attributePallPrice()
-                }else{
-                    if(this.hanldFreePostFlag == 1 || this.hanldFreePostFlag == '1'){
-                        this.payAllPrice = this.allPrice+ parseInt(this.freightData.freight);
-                    }else{
-                        this.payAllPrice = this.allPrice;
-                    }
-                    this.deductMoney = 0.00;
-                    this.balanceDeductionFlag = 2;
-                }
-            }else{
-                return
-            }
-        },
-        gernerateId :function(index){
-            return "male_" +index
-        },
-        gernerateTitleId :function(index){
-            return "title_" +index
-        },
+                _self.submitLoading = false;
+            });
+        }
     },
     created: function () {
-        var _self = this;
-        _self.subType = getUrlParam("type") ? getUrlParam("type")*1 : "";
+        this.type = getUrlParam("type") ? getUrlParam("type")*1 : "";
         if(globalUserData){
-            _self.userId = globalUserData.userId;
-            _self.userIdentity = globalUserData.identity;
-            _self.userToken = globalUserData.token;
-            // subType:(1购物车提交[对应表cm_cart],2直接购买提交)
-            if(_self.subType === 1) {
-                _self.cartType= 1;
-                _self.productIds = window.localStorage.getItem("shoppingProductIds");
+            this.userId = globalUserData.userId;
+            this.userIdentity = globalUserData.identity;
+            this.userToken = globalUserData.token;
+            // type:(1购物车提交[对应表cm_cart],2直接购买提交, 3协销下单)
+            if(this.type === 1) {
+                this.productIds = window.localStorage.getItem("shoppingProductIds");
                 // 获取列表数据
-                _self.getConfirmInfo( _self.productIds, null);
-            }else if(_self.subType === 2){
-                _self.cartType= 2;
-                _self.productIds = getUrlParam("id");
-                _self.productKind = getUrlParam("count");
-                if(_self.productIds && _self.productKind) {
+                this.getConfirmList(null);
+            }else if(this.type === 2){
+                this.productId = getUrlParam("id");
+                var count = getUrlParam("count");
+                if(this.productId && count) {
                     // 获取列表数据
-                    _self.getConfirmInfo(_self.productIds,_self.productKind);
+                    this.getConfirmList(count);
                 }else{
-                    CAIMEI.Alert('参数错误,请重新提交订单!', '确定', false);
+                    alertInfo("参数错误,请重新提交订单!");
                 }
             }
         }

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

@@ -106,7 +106,7 @@
                                                 </span>
                                             </p>
                                         </template>
-                                        <p class="r"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                        <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                     </div>
                                 </div>
                             </div>
@@ -120,7 +120,7 @@
                                     <div>
                                         <p v-if="priceObj.ladderPriceFlag==1"><em @click="toLogin">登录</em>,享受阶梯价格优惠</p>
                                         <p v-if="priceObj.actStatus==1"><em @click="toLogin">登录</em>,参与促销活动</p>
-                                        <p class="r"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                        <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                     </div>
                                 </div>
                             </div>

+ 7 - 8
src/main/resources/templates/shopping/cart.html

@@ -4,7 +4,7 @@
 <head>
     <title>采美365网-我的购物车</title>
     <template th:replace="components/head-link"></template>
-    <link th:href="@{/css/shopping/cart.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/shopping/shopping.css(v=${version})}" rel="stylesheet" type="text/css">
 </head>
 <body>
 <!-- 引用头部 -->
@@ -28,9 +28,7 @@
         <div class="pageTitle">
             <div class="step">
                 <span class="on">我的购物车</span>
-                 <label class="line"></label>
                 <span>核对订单信息</span>
-                 <label class="line"></label>
                 <span>成功提交订单</span>
             </div>
             <h1>我的购物车</h1>
@@ -75,7 +73,7 @@
                                             </span>
                                         </p>
                                     </template>
-                                    <p class="r"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                    <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                 </div>
                             </div>
                         </div>
@@ -124,7 +122,7 @@
                                                 </span>
                                             </p>
                                         </template>
-                                        <p class="r"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                        <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                     </div>
                                 </div>
                             </div>
@@ -150,10 +148,11 @@
                             <input type="number" :value="cart.number" v-model="cart.number" @change="cartNumberChange(cart)">
                             <em class="add" @click="cartNumberAdd(cart)">+</em>
                         </span>
-                        <input type="hidden" :value="cart.step"></div>
-                        <div v-if="isPC" class="c6"><span v-text="'¥'+toFloat(cart.price*cart.number)"></span></div>
-                        <div v-if="isPC" class="c7"><span class="del" @click="deleteCart(cart.productId)">×<em class="tips">删除</em></span></div>
+                        <input type="hidden" :value="cart.step">
                     </div>
+                    <div v-if="isPC" class="c6"><span v-text="'¥'+toFloat(cart.price*cart.number)"></span></div>
+                    <div v-if="isPC" class="c7"><span class="del" @click="deleteCart(cart.productId)">×<em class="tips">删除</em></span></div>
+                </div>
                 <div class="supplierBtn">
                     <span>合计:<em v-text="'¥'+toFloat(supplier.totalPrice)"></em></span>
                 </div>

+ 260 - 208
src/main/resources/templates/shopping/confirm.html

@@ -4,275 +4,326 @@
 <head>
     <title>采美365网-核对订单信息</title>
     <template th:replace="components/head-link"></template>
-    <link th:href="@{/css/shopping/confirm.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/base/form.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/shopping/shopping.css(v=${version})}" rel="stylesheet" type="text/css">
 </head>
 <body>
 <!-- 引用头部 -->
 <template th:replace="components/header"></template>
 
-<!-- 确认订单 -->
-<div id="shoppingConfirm">
+<!-- 核对订单 -->
+<div id="shoppingConfirm" v-cloak>
     <!--列表-->
     <div class="wrap">
-        <div class="pageTitle">
+        <div  >
             <div class="step">
-                <span class="on">我的购物车</span>
-                <label class="line on"></label>
+                <span class="prev">我的购物车</span>
                 <span class="on">核对订单信息</span>
-                <label class="line"></label>
                 <span>成功提交订单</span>
             </div>
             <h1>确认订单<span>(填写并核对订单信息)</span></h1>
         </div>
-    </div>
-    <div class="container clear" :class="isRequest ? 'active' : ''" v-show="isRequest">
-        <div class="content" :style="{height:isShwoAddModel ? '318px' : 'auto'}">
-            <div class="title">收货人信息</div>
-            <div class="section address"  v-if="addressList.length == 0">
-                <div class="address-info">
-                    <p class="info-p">暂无收货地址信息,请新建地址</p>
-                </div>
-                <div class="address-sub add">
-                    <a class="btn btn-confirm"  href="javascript:void(0)" @click="ShowAddAddressFn">新建地址</a>
-                </div>
-            </div>
-            <div class="section address" v-else>
-                <div class="address-info">
-                    <div class="info-left">
-                        <p><span class="label">收货人:</span>{{addressData.shouHuoRen}}</p>
-                        <p><span class="label">联系方式:</span>{{addressData.mobile}}</p>
-                        <p><span class="label">收货地址:</span>{{addressData.province}}{{addressData.city}}{{addressData.town}}{{addressData.address}}</p>
-                    </div>
-                    <div class="info-right">
-                        <div class="info-top">
-                            <div class="defau" v-if="addressData.defaultFlag == 1">
-                                <i class="icon mIcon"></i>
-                                <span class="span-s">默认地址</span>
-                            </div>
-                            <a href="javascript:void(0)" @click="editAddress">修改</a>
+        <h2 v-if="isPC" class="title">收货人信息</h2>
+        <div class="addressWrap clear">
+            <div v-show="!isShowAddressForm">
+                <div class="info">
+                    <p><span class="label">收货人:</span>{{address.name}}</p>
+                    <p><span class="label">联系方式:</span>{{address.mobile}}</p>
+                    <p><span class="label">收货地址:</span>{{address.province}}{{address.city}}{{address.town}}{{address.desc}}</p>
+                    <div class="btnBox mfbt">
+                        <span class="default"><i class="icon mIcon" v-if="address.default"></i><span v-if="address.default">默认地址</span><a href="javascript:void(0)" @click="updateAddress()">修改</a></span>
+                        <div class="group">
+                            <a class="btn"  href="javascript:void(0)" @click="showAddressBox()">选择地址</a>
+                            <a class="btn con"  href="javascript:void(0)" @click="createAddress()">新建地址</a>
                         </div>
                     </div>
                 </div>
-                <div class="address-sub">
-                    <a class="btn btn-none"  href="javascript:void(0)" @click="ShowCheckedAddressFn">选择地址</a>
-                    <a class="btn btn-confirm"  href="javascript:void(0)" @click="ShowAddAddressFn">新建地址</a>
-                </div>
+                <div v-if="!isPC" class="gradient mf"><i class="mfi" v-for="i in 12"></i></div>
             </div>
-            <div class="section address-none" v-if="isShwoAddModel">
-                <div class="address-main clear">
+            <div class="formWrap" v-show="isShowAddressForm">
+                <div class="form">
                     <div class="formLine">
-                        <div class="label"><p><em>*</em>联系地址:</p></div>
-                        <div class="form-input">
-                            <select name="provinceID" id="cProvince" @change="ChangeProvince">
-                                <option value="" >请选择</option>
-                                <option v-for="(item ,index) in ProvinceList" :key="index" :value='item.provinceID' >{{item.name}}</option>
-                            </select>
-                            <select name="cityID" id="cCity" @change="ChangeGetcity($event)" >
-                                <option value="" >请选择</option>
-                                <option v-for="(item ,index) in cityArray" :key="index" :value="item.cityID" >{{item.name}}</option>
-                            </select>
-                            <select name="townID" id="cTown" @change="ChangeGetcTown($event)">
-                                <option value="" >请选择</option>
-                                <option v-for="(item ,index) in townArray" :key="index" :value="item.townID"  >{{item.name}}</option>
-                            </select>
-                        </div>
+                        <p class="label"><em>*</em>收货人:</p>
+                        <input type="text" v-model.trim="addressForm.name" placeholder="请输入收货人姓名" :rule="rule.name" maxlength="10" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
                     </div>
                     <div class="formLine">
-                        <div class="label tex"></div>
-                        <div class="form-input">
-                            <textarea placeholder="建议您如实填写详细地址,例如:街道名称,门牌号码,楼层和房间号等信息"  v-model="addAddressData.address"></textarea>
-                        </div>
+                        <p class="label"><em>*</em>联系方式:</p>
+                        <input type="text" v-model.trim="addressForm.mobile" placeholder="请输入您的常用手机号" :rule="rule.mobile" maxlength="11" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入有效电话号码"></span>
                     </div>
                     <div class="formLine">
-                        <div class="label"><p><em>*</em>收货人:</p></div>
-                        <div class="form-input">
-                            <input type="text" v-model.trim="addAddressData.shouHuoRen" placeholder="请输入收货人姓名" maxlength="10" >
-                        </div>
+                        <p class="label"><em>*</em>联系地址:</p>
+                        <select name="province" v-model="addressForm.provinceId" @change="getCityOptions(addressForm.provinceId)">
+                            <option value="" >请选择</option>
+                            <option v-for="(item ,index) in provinceOptions" :key="index" :value='item.provinceID'>{{item.name}}</option>
+                        </select>
+                        <select name="city" v-model="addressForm.cityId" @change="getTownOptions(addressForm.cityId)">
+                            <option value="" >请选择</option>
+                            <option v-for="(item ,index) in cityOptions" :key="index" :value="item.cityID">{{item.name}}</option>
+                        </select>
+                        <select name="town" v-model="addressForm.townId">
+                            <option value="" >请选择</option>
+                            <option v-for="(item ,index) in townOptions" :key="index" :value="item.townID">{{item.name}}</option>
+                        </select>
+                        <textarea v-model.trim="addressForm.desc" placeholder="建议您如实填写详细地址,例如:街道名称,门牌号码,楼层和房间号等信息"  @blur="blurHandle($event)" needverify></textarea>
+                        <span class="errTips icon mIcon" tips="请输入正确的联系地址"></span>
                     </div>
-                    <div class="formLine">
-                        <div class="label"><p><em>*</em>联系方式:</p></div>
-                        <div class="form-input">
-                            <input type="text" v-model.trim="addAddressData.mobile" placeholder="请输入联系方式" maxlength="11" >
+                    <div class="btnBox">
+                        <div class="group">
+                            <p>
+                                <label class="check"><input v-model="addressForm.default" name="default" type="checkbox">设为默认地址</label>
+                            </p>
+                            <p>
+                                <a class="btn save"  href="javascript:void(0)" @click="saveAddressForm()">保存并使用</a>
+                                <a class="btn con"  href="javascript:void(0)" @click="hideAddressForm()">取消</a>
+                            </p>
                         </div>
                     </div>
                 </div>
-                <div class="address-sub">
-                    <div class="checked" @click="settingDefaultFlag">
-                        <i class="icon mIcon" :class="isDefaultFlag?'icon-gouxuan':'icon-weigouxuan'"></i>
-                        <span>设为默认地址</span>
-                    </div>
-                    <div class="button">
-                        <a href="javascript:void(0);" class="btn btn-confirm" @click="ConfirmAddressFn">保存并使用</a>
-                        <a href="javascript:void(0);" class="btn btn-cancel" @click="CancelAddressFn">取消</a>
-                    </div>
-                </div>
             </div>
         </div>
-        <div class="content">
-            <div class="title">进货清单</div>
-            <div class="section product">
-                <div class="title">
-                    <div class="tr tr-info">商品</div>
-                    <div class="tr tr-amount">数量</div>
-                    <div class="tr tr-price">单价(元)</div>
-                    <div class="tr tr-sum">小计(元)</div>
-                </div>
-                <div class="good_content">
-                    <div class="good_main clearfix" v-for="(item, index) in goodsList" :key="index">
-                        <div class="main_title">{{item.name}}</div>
-                        <div class="main_content ">
-                            <div class="main_content_ul" v-for="(pros, prosIndex) in item.cartList" :key="prosIndex">
-                                <div class="th th-info">
-                                    <div class="th-inner">
-                                        <div class="th-image"><img :src="pros.image" alt=""></div>
-                                        <div class="th-name">{{pros.name}}</div>
-                                    </div>
+
+        <h2 class="title">进货清单</h2>
+        <div class="listWrap">
+            <div v-if="isPC" class="cartTit clear">
+                <div class="c1">&nbsp;</div>
+                <div class="c2">商品信息</div>
+                <div class="c4">单价(元)</div>
+                <div class="c5">数量</div>
+                <div class="c6">小计(元)</div>
+            </div>
+            <div class="supplierItem" v-for="supplier,index in listData">
+                <div class="supplierTit">
+                    <a href="javascript:void(0);">
+                        <img class="img" :src="supplier.logo">
+                        <span class="name" v-text="supplier.name"></span>
+                    </a>
+                    <!--店铺促销-->
+                    <div class="price">
+                        <div v-if="supplier.promotions" class="priceTag">
+                            <i @click="toggleThisLadder($event)" class="tag icon mIcon" v-text="supplier.promotions.name"></i>
+                            <div class="promotion mFixed">
+                                <div>
+                                    <p class="t">
+                                        <em v-if="supplier.promotions.mode==2">{{supplier.promotions.name+',满 ¥'+toFloat(supplier.promotions.touchPrice)+' 减 ¥'+toFloat(supplier.promotions.reducedPrice)}}</em>
+                                        <em v-if="supplier.promotions.mode==3">{{supplier.promotions.name+',满 ¥'+toFloat(supplier.promotions.touchPrice)+' 赠送商品'}}</em>
+                                    </p>
+                                    <p>促销时间:<em v-if="supplier.promotions.status==1">不限时</em><em v-else>{{supplier.promotions.beginTime.substr(0,10)+' ~ '+supplier.promotions.endTime.substr(0,10)}}</em></p>
+                                    <template v-if="supplier.promotions.mode==3">
+                                        <p>赠品:</p>
+                                        <p>
+                                            <span v-for="g in supplier.promotions.giftList" class="p">
+                                                <img :src="g.image">
+                                                <span v-text="g.name"></span>
+                                                <span v-text="'× '+g.number"></span>
+                                            </span>
+                                        </p>
+                                    </template>
+                                    <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                 </div>
-                                <div class="th th-amount"><div class="th-inner"><p>{{pros.number}}</p></div></div>
-                                <div class="th th-price"><div class="th-inner"><p>¥{{pros.price | NumFormat}}</p></div></div>
-                                <div class="th th-sum"><div class="th-inner"><p>¥{{(pros.price*pros.number) | NumFormat}}</p></div></div>
                             </div>
-                            <div class="main_content_bt">合计: <span>¥{{item.totalPrice | NumFormat}}</span></div>
-                        </div>
-                        <div class="main_footer">
-                            <span>留言:</span>
-                            <input type="text" class="main_input" placeholder="告诉卖家您的特殊要求" v-model="goodRemark[index]" @change="changeHandle(index)">
                         </div>
                     </div>
                 </div>
-            </div>
-        </div>
-        <div class="content">
-            <div class="title">发票信息</div>
-            <div class="section invoice">
-                <div class="invoice-tabs">
-                    <span>发票类型:</span>
-                    <div class="tab-radio">
-                        <label class="diyBox" v-for="(item, index) in invoiceTypeList" :key="index" @click="radioChange">
-                            <input type="radio" name="invoiceType" v-model="invoiceType" :value="item.value" checked><i class="icon mIcon">{{item.name}}</i>
-                        </label>
-                    </div>
-                </div>
-                <div class="invoice-content clearfix" v-if="invoiceType == '2'">
-                    <div class="main_content">
-                        <span>发票内容:</span>
-                        <div class="main_item">商品明细</div>
-                    </div>
-                    <div class="main_content">
-                        <span>发票类型:</span>
-                        <div class="tab-radio">
-                            <label class="diyBox" v-for="(item, index) in invoiceTitleList" :key="index" @click="radioChangeTitle">
-                                <input type="radio" name="invoiceTitle" v-model="invoiceTitle" :value="item.value" checked><i class="icon mIcon">{{item.name}}</i>
-                            </label>
-                        </div>
+                <div class="cartItem clear"  v-for="cart in supplier.cartList" >
+                    <div class="c1"><a :href="'/product-'+cart.productId+'.html'" target="_blank">
+                        <img class="image" :src="cart.image">
+                    </a></div>
+                    <div class="c2">
+                        <a class="name" :href="'/product-'+cart.productId+'.html'" target="_blank">
+                            <span v-text="cart.name"></span>
+                        </a>
                     </div>
-                    <div class="main_content">
-                        <div class="main_item_conten">
-                            <div class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '0'">
-                                <input class="label-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写个人抬头" maxlength="20">
-                            </div>
-                            <div class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-                                <input class="label-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写公司抬头" maxlength="20">
+                    <div class="c4">
+                        <div class="price">
+                            <template v-if="cart.actStatus==1 && cart.promotions && cart.promotions.type==1 && cart.promotions.mode==1">
+                                <del v-text="'¥'+toFloat(cart.originalPrice)"></del>
+                            </template>
+                            <template v-else>
+                                <em v-text="'¥'+toFloat(cart.price)"></em>
+                            </template>
+                            <!-- 促销活动 -->
+                            <div v-if="cart.actStatus==1 && cart.promotions" class="priceTag">
+                                <i v-if="cart.promotions.type==1 && cart.promotions.mode==1" @click="toggleThisLadder($event)" class="tag icon mIcon" v-text="cart.promotions.name+':¥'+toFloat(cart.promotions.touchPrice)"></i>
+                                <i v-else class="tag icon mIcon" @click="toggleThisLadder($event)" v-text="cart.promotions?cart.promotions.name:''"></i>
+                                <div class="promotion mFixed">
+                                    <div>
+                                        <p class="t">
+                                            <em v-if="cart.promotions.type==1 && cart.promotions.mode==1">{{cart.promotions.name+':¥'+toFloat(cart.promotions.touchPrice)}}</em>
+                                            <em v-if="cart.promotions.mode==2">{{cart.promotions.name+',满 ¥'+toFloat(cart.promotions.touchPrice)+' 减 ¥'+toFloat(cart.promotions.reducedPrice)}}</em>
+                                            <em v-if="cart.promotions.mode==3">{{cart.promotions.name+',满 ¥'+toFloat(cart.promotions.touchPrice)+' 赠送商品'}}</em>
+                                        </p>
+                                        <p>促销时间:<em v-if="cart.promotions.status==1">不限时</em><em v-else>{{cart.promotions.beginTime.substr(0,10)+' ~ '+cart.promotions.endTime.substr(0,10)}}</em></p>
+                                        <p v-if="cart.promotions.type==2" class="r"><a class="more" :href="'/product/promotions.html?id='+cart.promotions.id">更多凑单商品>>></a></p>
+                                        <template v-if="cart.promotions.mode==3">
+                                            <p>赠品:</p>
+                                            <p>
+                                                <span v-for="g in cart.promotions.giftList" class="p">
+                                                    <img :src="g.image">
+                                                    <span v-text="g.name"></span>
+                                                    <span v-text="'× '+g.number"></span>
+                                                </span>
+                                            </p>
+                                        </template>
+                                        <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                    </div>
+                                </div>
                             </div>
-                            <div class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-                                <input class="label-input" type="text" v-model="peopleInvoiceData.corporationTaxNum"   placeholder="请填写纳税人识别号" maxlength="20">
+                            <!-- 阶梯价 -->
+                            <div v-else-if="cart.ladderFlag" class="priceTag">
+                                <i class="tag icon mIcon" @click="toggleThisLadder($event)">阶梯价格</i>
+                                <div class="ladder mFixed">
+                                    <span>
+                                        <em class="t"><i>价格</i><i>起订量</i></em>
+                                        <em v-for="l in cart.ladderPrices">
+                                            <i class="p">¥{{toFloat(l.buyPrice)}}</i>
+                                            <i>{{l.numRange}}</i>
+                                        </em>
+                                        <em @click="hideThisLadder($event)" class="close">了解</em>
+                                    </span>
+                                </div>
                             </div>
                         </div>
                     </div>
+                    <div class="c5">{{cart.number}}</div>
+                    <div v-if="isPC" class="c6"><span v-text="'¥'+toFloat(cart.price*cart.number)"></span></div>
                 </div>
-                <div class="invoice-main clearfix" v-if="invoiceType == '3'">
-                    <div class="invoice-from">
-                        <span class="label">单位名称:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.invoiceTitle" placeholder="请填写单位信息(必填)" maxlength="20">
-                    </div>
-                    <div class="invoice-from">
-                        <span class="label">纳税人识别号:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.corporationTaxNum" placeholder="请填写纳税人识别号(必填)" maxlength="20">
-                    </div>
-                    <div class="invoice-from">
-                        <span class="label">注册地址:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.registeredAddress" placeholder="请填写单位注册地址(必填)" maxlength="40">
-                    </div>
-                    <div class="invoice-from">
-                        <span class="label">注册电话:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.registeredPhone" placeholder="请填写注册电话(必填)" maxlength="15">
-                    </div>
-                    <div class="invoice-from">
-                        <span class="label">开户银行:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.openBank"   placeholder="请填写开户银行(必填)" maxlength="10">
-                    </div>
-                    <div class="invoice-from">
-                        <span class="label">银行账号:</span>
-                        <input class="label-input" type="text" v-model="invoiceData.bankAccountNo" placeholder="请填写银行账号(必填)" maxlength="19">
-                    </div>
+                <div class="supplierBtn">
+                    <span>合计:<em v-text="'¥'+toFloat(supplier.totalPrice)"></em></span>
+                    <div class="note">留言:<input type="text" v-model="supplier.note" placeholder="告诉卖家您的特殊要求"></div>
                 </div>
             </div>
         </div>
-        <div class="content">
-            <div class="title">使用余额</div>
-            <div class="section userMoney">
-                <i class="icon mIcon" @click="checkedBalabce" :class="isCheckedBalabce ? 'icon-gouxuan' : 'icon-weigouxuan'" v-if="userMoney > 0"></i>
-                <span class="text">当前余额:<span class="red">¥{{userMoney | NumFormat}}</span></span>
-                <span class="text">已使用:<span class="red">¥{{deductMoney | NumFormat}}</span></span>
-                <span class="text">剩余:<span class="red">¥{{surplusMoney | NumFormat}}</span></span>
+
+        <h2 class="title">发票信息</h2>
+        <div class="invoiceWrap">
+            <div class="formLine">
+                <label class="diyBox"><input type="radio" name="invoice" v-model="invoice.type" value="0" checked><i class="icon mIcon">不开发票</i></label>
+                <label class="diyBox"><input type="radio" name="invoice" v-model="invoice.type" value="1"><i class="icon mIcon">普通发票</i></label>
+                <label class="diyBox"><input type="radio" name="invoice" v-model="invoice.type" value="2"><i class="icon mIcon">增值税发票</i></label>
             </div>
-        </div>
-        <!-- 结算信息 -->
-        <div class="content">
-            <div class="section footer">
-                <div class="footer_content">
-                    <div class="footer_left fl">
-                        <p>商品种类:</p>
-                        <p>数量总计:</p>
-                        <p v-show="addressList.length>0">运费<span v-if="freightData.freePostFlag == 1">(运费可选择到付哟~)</span>:</p>
-                        <p>抵扣账户余额:</p>
-                        <p>总价:</p>
-                    </div>
-                    <div class="footer_right fr">
-                        <p>{{productKind}}种</p>
-                        <p>{{allCount}}件</p>
-                        <div v-show="addressList.length>0">
-                            <div class="select" v-if="freightData.freePostFlag == 1 ">
-                                <select v-model="selectedFreight"  @change='getValueFreight'>
-                                            <option v-for="x in optionList" :value="x">{{x}}</option>
-                                        </select>
-                            </div>
-                            <p v-else><span>{{freightText}}</span></p>
-                        </div>
-                        <p class="red">¥{{deductMoney | NumFormat}}</p>
-                        <p class="red">¥{{payAllPrice | NumFormat}}</p>
-                    </div>
+            <div class="invoiceForm" v-show="invoice.type==1"><!--普通发票-->
+                <div class="formLine">
+                    <p class="label"><em>*</em>发票内容:</p>
+                    <input type="text" disabled value="商品明细">
+                    <span class="errTips icon mIcon"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>发票类型:</p>
+                    <label class="diyBox"><input type="radio" name="invoiceTit" v-model="invoice.invoiceTitleType" value="0"><i class="icon mIcon">个人</i></label>
+                    <label class="diyBox"><input type="radio" name="invoiceTit" v-model="invoice.invoiceTitleType" value="1"><i class="icon mIcon">公司</i></label>
+                    <span class="errTips icon mIcon"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>发票抬头:</p>
+                    <input type="text" v-model.trim="invoice.invoiceTitle" :placeholder="'请输入'+(invoice.invoiceTitleType==1?'公司':'个人')+'抬头'" maxlength="20" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的发票抬头"></span>
+                </div>
+                <div class="formLine" v-show="invoice.invoiceTitleType==1">
+                    <p class="label"><em>*</em>纳税人识别号:</p>
+                    <input type="text" v-model.trim="invoice.corporationTaxNum" placeholder="请输入纳税人识别号" maxlength="20" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的纳税人识别号"></span>
+                </div>
+            </div>
+            <div class="invoiceForm" v-show="invoice.type==2"><!--增值税发票-->
+                <div class="formLine">
+                    <p class="label"><em>*</em>单位名称:</p>
+                    <input type="text" v-model.trim="invoice.invoiceTitle" placeholder="请输入单位名称" maxlength="20" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的单位名称"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>纳税人识别号:</p>
+                    <input type="text" v-model.trim="invoice.corporationTaxNum" placeholder="请输入纳税人识别号" maxlength="20" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的纳税人识别号"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>注册地址:</p>
+                    <input type="text" v-model.trim="invoice.registeredAddress" placeholder="请输入注册地址" maxlength="40" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的注册地址"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>注册电话:</p>
+                    <input type="text" v-model.trim="invoice.registeredPhone" placeholder="请输入注册电话" maxlength="15" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的注册电话"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>开户银行:</p>
+                    <input type="text" v-model.trim="invoice.openBank" placeholder="请输入开户银行" maxlength="10" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的开户银行"></span>
+                </div>
+                <div class="formLine">
+                    <p class="label"><em>*</em>银行账号:</p>
+                    <input type="text" v-model.trim="invoice.bankAccountNo" placeholder="请输入银行账号" maxlength="19" @blur="blurHandle($event)" needverify>
+                    <i class="checked icon mIcon"></i>
+                    <span class="errTips icon mIcon" tips="请输入正确的银行账号"></span>
                 </div>
             </div>
         </div>
-        <div class="footer_button" :class="isFiexdClass">
-            <div class="footer_inner">
-                <div class="button_back fl"><a href="/cart.html" class="back"><i class="icon mIcon"></i>返回购物车</a></div>
-                <div class="button_confim fr">
-                    <P>总价:<span>¥{{payAllPrice | NumFormat}}</span></P>
-                    <a href="javascript:void(0);" class="confimBtn"  @click="ConfirmOrderFn" :class="isSubDisabled ?'active':''">提交订单</a>
+        <h2 class="title">使用余额</h2>
+        <div class="balanceWrap">
+            <label class="check">
+                <input v-if="balance.userMoney>0" v-model="balance.flag" name="useBalance" type="checkbox" @change="useUserMoney()">
+                <input v-else v-model="balance.flag" name="useBalance" type="checkbox" disabled>
+                <span class="text">当前余额:<span class="red">¥{{balance.userMoney | NumFormat}}</span></span>
+                <span class="text">已使用:<span class="red">¥{{balance.deductMoney | NumFormat}}</span></span>
+                <span class="text">剩余:<span class="red">¥{{balance.surplusMoney | NumFormat}}</span></span>
+            </label>
+        </div>
+        <div class="totalPriceWrap">
+            <p>商品种类: <span>{{kindCount}}种</span></p>
+            <p>数量总计: <span>{{totalCount}}件</span></p>
+            <p>运费:
+                <span v-if="payInfo.freePostFlag==-1">到付</span>
+                <span v-if="payInfo.freePostFlag==0">包邮</span>
+                <span v-if="payInfo.freePostFlag==1"><em>¥{{payInfo.freight | NumFormat}}</em></span>
+            </p>
+            <p v-if="balance.deductMoney>0">抵扣账户余额: <span><em>¥{{balance.deductMoney | NumFormat}}</em></span></p>
+            <p>总价: <span><em>¥{{totalPrice | NumFormat}}</em></span></p>
+        </div>
+    </div>
+
+    <div class="summaryWrap">
+        <div class="summary">
+            <div v-if="isPC" class="left">
+                <div class="item">
+                    <a href="/shopping/cart.html" class="back"><i class="icon mIcon"></i>返回购物车</a>
                 </div>
             </div>
+            <div class="right mfbt">
+                <div class="item">总价:<em v-text="'¥'+toFloat(totalPrice)"></em></div>
+                <a class="submit" href="javascript:void(0);" @click="submitOrder()">提交订单</a>
+            </div>
         </div>
     </div>
+
     <!--选择地址弹窗-->
-    <div class="model-address-content" v-if="isShowAddress" v-cloak>
+    <div class="model-address-content" v-show="isShowAddressList">
         <div class="model-content">
-            <div class="title"><p>选择地址</p><i class="icon mIcon" @click="HideCheckedAddressFn"></i></div>
+            <div v-if="isPC" class="title"><p>选择地址</p><i class="icon mIcon" @click="closeAddressBox()"></i></div>
             <div class="content">
-                <div class="list" v-for="(item, index) in addressList" :class="checkedAddressItemIndex == index ? 'checked' : ''" @click.stop="checkedAddressItemFn(index,item)">
+                <div class="list" v-for="(item, index) in addressList" @click="chooseAddress(item.addressID)" :class="address.selectedId==item.addressID ? 'checked' : ''">
                     <div class="list-left">
                         <p><span class="label">收货人:</span>{{item.shouHuoRen}}</p>
                         <p><span class="label">联系方式:</span>{{item.mobile}}</p>
                         <p><span class="label">收货地址:</span>{{item.province}}{{item.city}}{{item.town}}{{item.address}}</p>
                     </div>
-                    <div class="list-right">
+                    <div class="list-right mfbt">
                         <div class="list-defalut" v-if="item.defaultFlag == 1">
                             <i class="icon mIcon"></i>
                             <span class="span-s">默认地址</span>
                         </div>
                         <div class="list-defalut" v-else>
-                            <span class="span-s" @click.stop="defaultAddressFn(item.addressID)">设为默认地址</span>
+                            <a href="javascript:void(0)" @click.stop="setDefaultAddress(item.addressID)">设为默认地址</a>
                         </div>
                         <a class="list-btn" href="javascript:void(0)" @click.stop="deleteAddress(item.addressID)">删除</a>
                     </div>
@@ -280,11 +331,12 @@
                 </div>
             </div>
             <div class="button">
-                <a class="btn btn-confirm" href="javascript:void(0)"@click="ConfirmCheckedAddressFn">确定</a>
-                <a class="btn btn-cancel" href="javascript:void(0)" @click="HideCheckedAddressFn">取消</a>
+                <a class="btn btn-confirm" href="javascript:void(0)"@click="confirmAddress()">确定</a>
+                <a class="btn btn-cancel" href="javascript:void(0)" @click="closeAddressBox()">取消</a>
             </div>
         </div>
     </div>
+
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

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

@@ -52,7 +52,7 @@
                                                     </span>
                                                 </p>
                                             </template>
-                                            <p class="r"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
+                                            <p class="c"><a class="close" @click="hideThisLadder($event)" href="JavaScript:void(0);">了解</a></p>
                                         </div>
                                     </div>
                               </span>