zhengjinyi %!s(int64=4) %!d(string=hai) anos
pai
achega
0695914ccd
Modificáronse 32 ficheiros con 993 adicións e 455 borrados
  1. 0 67
      api/cart.js
  2. 0 28
      api/order.js
  3. 2 2
      common/config/config.js
  4. 106 24
      components/cm-module/cm-seller/home.vue
  5. 39 24
      components/cm-module/creatOrder/goodsList.vue
  6. 1 1
      components/cm-module/listTemplate/productList.vue
  7. 235 0
      components/cm-module/orderDetails/activipopu.vue
  8. 155 33
      components/cm-module/orderDetails/goodsList.vue
  9. 1 1
      components/cm-module/orderDetails/orderButton.vue
  10. 54 63
      components/cm-module/orderDetails/orderInformation.vue
  11. 1 1
      components/cm-module/orderDetails/orderListButton.vue
  12. 1 1
      components/cm-module/orderDetails/sellerDetaileButton.vue
  13. 1 1
      components/cm-module/orderDetails/sellerOrderButton.vue
  14. 2 2
      components/cm-module/productDetails/cm-activipopu.vue
  15. 28 33
      pages/goods/cart.vue
  16. 1 1
      pages/goods/product.vue
  17. 110 41
      pages/search/search-order.vue
  18. 24 26
      pages/tabBar/cart/cart.vue
  19. 2 3
      pages/user/address/address.vue
  20. 1 2
      pages/user/address/addressManage.vue
  21. 27 27
      pages/user/order/create-order.vue
  22. 13 2
      pages/user/order/order-details.vue
  23. 128 56
      pages/user/order/order-list.vue
  24. 12 1
      pages/user/order/order-sharedetails.vue
  25. 2 3
      seller/pages/address/address.vue
  26. 1 2
      seller/pages/address/addressManage.vue
  27. 2 4
      seller/pages/order/create-order.vue
  28. 2 2
      services/ajax.env.js
  29. 0 1
      services/ajax.service.js
  30. 15 1
      services/order.service.js
  31. 2 2
      services/product.service.js
  32. 25 0
      services/user.service.js

+ 0 - 67
api/cart.js

@@ -1,67 +0,0 @@
-/**
- *@des 购物车模块接口
- *@des 地址管理接口
- *@author zhengjinyi
- *@date 2020/03/19 14:56:57
- *@param registerByPass
- */
-import request from '@/common/config/caimeiApi.js'
-import $reg from '@/common/config/common.js'
-
-/**
- *获取购物车列表
- */
-export function queryShoppingCartList(params) {
-	return new Promise(function(resolve,reject) {
-		request.get('/shoppingCart/shoppingInfo',params, res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
-/**
- *查询地址列表
- */
-export function queryAddressList(params) {
-	return new Promise(function(resolve,reject) {
-		request.lodingGet('/personalCenter/findAddress',params, res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
-/**
- *修改保存
- */
-export function addNewAddress(params) {
-	return new Promise(function(resolve,reject) {
-		request.post('/personalCenter/saveAddress',params,true, res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
-/**
- *删除地址
- */
-export function deleteNewAddress(params) {
-	return new Promise(function(resolve,reject) {
-		request.lodingGet('/personalCenter/deleteAddress',params, res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
-

+ 0 - 28
api/order.js

@@ -7,34 +7,6 @@
 import request from '@/common/config/caimeiApi.js'
 import $reg from '@/common/config/common.js'
 
-/**
- *@提交订单
- */
-export function createOrderSubmit(params) {
-	return new Promise(function(resolve,reject) {
-		request.post('/order/submit',params, true,res => {
-			resolve(res)
-		})
-	})
-}
-/**
- *@获取运费
- *@param productIds 商品ID【”,”分割】
- *@param totalPrice	商品总额
- *@param userId		用户ID
- *@param townID		地址区ID
- */
-export function getOrderPostage(params) {
-	return new Promise(function(resolve,reject) {
-		request.get('/order/postage',params,res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
 /**
  *@发票信息回显
  *@param userId	机构的userID

+ 2 - 2
common/config/config.js

@@ -2,8 +2,8 @@ let URL_CONFIG = ""
 if(process.env.NODE_ENV === 'development'){
     // 开发环境
 	// URL_CONFIG = 'http://192.168.2.68:8008'	 //本地IP联调地址
-	URL_CONFIG = 'http://192.168.2.67:8008'	 //裴裴联调地址
-	// URL_CONFIG = 'http://192.168.2.75:8008'	 //超超联调地址
+	// URL_CONFIG = 'http://192.168.2.67:8008'	 //裴裴联调地址
+	URL_CONFIG = 'http://192.168.2.75:8008'	 //超超联调地址
     // URL_CONFIG = 'https://spi-b.caimei365.com'	 //采美测试地址
 	// URL_CONFIG = 'https://spi.caimei365.com'
 }else{

+ 106 - 24
components/cm-module/cm-seller/home.vue

@@ -65,16 +65,41 @@
 								<view class="title tui-skeleton-rect">
 									<text class="mclap">{{item.name}}</text>
 								</view>
+								<view class="floor-item-act" v-if="item.actStatus==1">
+									<view class="floor-tags" v-if="item.promotions.type == 1 && item.promotions.mode==1">{{item.promotions.name}}<text v-if="hasLogin">:¥{{item.price | NumFormat}}</text></view>	
+									<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
+								</view>
+								<view class="floor-item-act" v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">
+									<view class="floor-tags">阶梯价格</view>	
+								</view>
 								<view class="" v-if="hasLogin">
-									<view class="price tui-skeleton-rect">
-										<text class="p sm">¥</text>
-										<text class="p big">{{item.retailPrice!=null ? item.retailPrice.toFixed(2):''}}</text>
+									<view v-if="userIdentity == 4">
+										<view class="title-none" v-show="item.price1TextFlag == '1'">
+											<text class="p big">¥未公开价格</text>
+										</view>
+										<view class="title-none" v-show="item.price1TextFlag == '2'">
+											<text class="p big">¥价格仅会员可见</text>
+											<text class="p btn" @click.stop="this.$api.navigateTo(`/pages/login/apply?clubStatus=${clubStatus}`)">去升级</text>
+										</view>
+										<view class="price tui-skeleton-rect" v-show="item.price1TextFlag == '0'">
+											<text class="p sm">¥</text>
+											<text class="p big">{{ item.price | NumFormat}}</text>
+										</view>
+									</view>
+									<view v-else>
+										<view class="title-none" v-if="item.price1TextFlag == '1'">
+											<text class="p big">未公开价格</text>
+										</view>
+										<view class="price tui-skeleton-rect" v-else :class="item.promotions.type == 1 && item.promotions.mode==1 ? 'none' : ''">
+											<text class="p sm">¥</text>
+											<text class="p big">{{item.price | NumFormat}}</text>
+										</view>
 									</view>
 								</view>
 								<view v-else class="no-price">
-									<text class="p-no">价格:</text>
 									<view class="p-stars">
-										<uni-stars :stars="parseInt(item.price1Grade)"></uni-stars>
+										<text class="p-no">¥</text>
+										<uni-stars :stars="parseInt(item.price1Grade)" :fontSize="36" :widthInfo="180"></uni-stars>
 									</view>
 								</view>	
 							</view>
@@ -134,7 +159,6 @@
 	import activityAlert from '@/components/cm-module/activity/activity_on_1.vue'
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
 	import { userInfoLogin, queryHomeInfo } from "@/api/use.js"
-	import { queryPreferred } from "@/api/product.js"
 	import { mapState,mapMutations} from 'vuex';
 	export default {
 		components:{
@@ -146,11 +170,6 @@
 		},
 		data() {
 			return {
-				webviewStyles: {
-					progress: {
-						color: '#FF3333'
-					}
-				},
 				nvabarData: {//顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
@@ -160,7 +179,7 @@
 					textColor:'#FFFFFF'
 				},
 				CustomBar:this.CustomBar,// 顶部导航栏高度
-				userID:'',
+				userID:0,
 				clubStatus:'',
 				current:0,
 				mode:'round',
@@ -195,7 +214,15 @@
 			}
 		},
 		created() {
-			this.getSellerHomeInfo()
+			this.$api.getStorage().then((resolve) =>{
+				this.userID = resolve.userID
+				this.getSellerHomeInfo()
+			})
+		},
+		filters: {
+			NumFormat:function(text) {//处理金额
+				return Number(text).toFixed(2);
+			},
 		},
 		computed: {
 			...mapState(['hasLogin','userInfo','isActivity'])
@@ -223,12 +250,38 @@
 				})
 			},
 			getOrganizeProducts(){//获取模块三商品
-				queryPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:6}).then(res =>{
+				this.ProductService.queryProductPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:6}).then(res =>{
 					this.organizeProducts = res.data.results
+					this.getProductPrice()
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
+			getProductPrice(){//获取商品或者活动价格
+				let productIdArr = [];
+				let productIds ='';
+				this.organizeProducts.map(item=>{// 0公开价格 1不公开价格 2仅对会员机构公开
+					productIdArr.push(item.productID)
+				})
+				productIds = productIdArr.join(",");
+				this.ProductService.querySearchProductPrice({userId: this.userID,productIds:productIds}).then(response =>{
+					this.organizeProducts = this.ReturnNewProducts(this.organizeProducts,response.data);
+					this.skeletonShow = false;
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			ReturnNewProducts(Array,list){
+				let NewArray = []
+				Array.map(item=>{
+					for (let i = 0; i < list.length; i++) {
+						if( item.productID == list[i].productId ){
+							NewArray.push(Object.assign(item,list[i])) 
+						}
+					}
+				});
+				return NewArray
+			},
 			//轮播图切换修改背景色
 			swiperChange(e) {
 				const index = e.detail.current;
@@ -355,10 +408,9 @@
 		width: 100%;
 		height: 360rpx;
 		padding-top:100rpx;
-		background:#FFFFFF url(https://admin-b.caimei365.com/userfiles/1/images/photo/2020/05/%E8%83%8C%E6%99%AF2%402x.png)no-repeat;
+		background:#FFFFFF url(https://img.caimei365.com/group1/M00/03/B0/Cmis217Z9LCALu9wAAAv45Bdpsk814.png)no-repeat;
 		position: relative;
 		background-size: cover;
-		margin-top: 10rpx;
 	}	
 	.tui-banner-swiper {
 		width: 700rpx;
@@ -533,6 +585,7 @@
 			border-radius: 20rpx;
 			.floor-item{
 				width: 341rpx;
+				height: auto;
 				margin-right: 20rpx;
 				font-size: $font-size-24;
 				color: $text-color;
@@ -541,6 +594,8 @@
 				border-radius: 20rpx;
 				margin-bottom: 20rpx;
 				float: left;
+				box-sizing: border-box;
+				padding-bottom: 16rpx;
 				&:nth-child(2n){
 					margin-right: 0;
 				}
@@ -555,6 +610,26 @@
 					width: 311rpx;
 					padding: 0 15rpx;
 				}
+				.floor-item-act{
+					width: 100%;
+					height: 68rpx;
+					text-align: center;
+					box-sizing: border-box;
+					padding: 16rpx 0;
+					margin-top: 8rpx;
+					.floor-tags{
+						float: left;
+						height: 36rpx;
+						border-radius: 4rpx;
+						background-color: rgba(225, 86, 22, 0.1);
+						line-height: 36rpx;
+						color: $color-system;
+						text-align: center;
+						display: inline-block;
+						padding:0 16rpx;
+						font-size: $font-size-20;
+					}
+				}
 				.title-none{
 					font-size: $font-size-26;
 					color: #FF2A2A;
@@ -591,21 +666,28 @@
 					}
 				}
 				.no-price{
-					height: 76rpx;
-					line-height: 76rpx;
+					height: 54rpx;
+					line-height: 54rpx;
 					display: flex;
+					box-sizing: border-box;
 					.p-no{
-						font-size: $font-size-24;
-						color: $color-system;
-						margin-right: 5rpx;
+						font-size: $font-size-30;
+						color: $text-color;
+						display: block;
+						float: left;
 					}
 					.p-stars{
-						margin-top: 3rpx;
+						width: 230rpx;
+						float: left;
 					}
 				}
 				.price{
-					color:#FF2A2A;
-					line-height: 80rpx;
+					color: #FF2A2A;
+					line-height: 44rpx;
+					&.none{
+						text-decoration: line-through;
+						color: #999999;
+					}
 					.sm{
 						font-size: $font-size-24;
 					}

+ 39 - 24
components/cm-module/creatOrder/goodsList.vue

@@ -4,12 +4,17 @@
 		<view class="goods-list">
 			<view v-for="(item, index) in goodsData" :key="index" class="goods-item">
 				<view class="shoptitle">
-					<view class="title-logo"><image :src="item.logo" mode=""></image></view>
+					<view v-if="item.promotions" class="floor-item-act">
+						<view class="floor-tags" @click.stop="clickPopupShow(item,2)">{{item.promotions.name}}</view>	
+					</view>
 					<view class="title-text">{{item.name}}</view> 
 				</view>
 				<view class="productlist" v-for="(pros,idx) in item.cartList" :key="idx">
 					<view class="goods-pros-t">
-						<view class="pros-img"><image :src="pros.image" alt="" /><text class="tips">赠品</text></view>
+						<view class="pros-img">
+							<image :src="pros.image" alt="" />
+							<text class="tips" v-if="pros.productType ==2 || pros.productType ==1">赠品</text>
+						</view>
 						<view class="pros-product">
 							<view class="producttitle">{{pros.name}}</view>
 							<view class="productspec"  v-if="pros.productCategory!=2">规格:{{pros.unit}}</view>
@@ -20,17 +25,14 @@
 								<view class="price"><text>¥{{pros.price | NumFormat}}</text></view>
 								<view class="count"><text class="small">x</text>{{pros.number}}</view>
 							</view>
-							<view v-show="pros.actStatus==1" class="floor-item-act">
-								<view v-if="PromotionsFormat(pros.promotions)"  class="floor-tags" @click.stop="clickPopupShow(pros,1)">
+							<view class="floor-item-act" v-if="pros.promotions!=null">
+								<view v-if="PromotionsFormat(pros.promotions)" class="floor-tags">
 									{{pros.promotions.name}}
 									<text v-if ="pros.promotions!=null">
 										:¥{{ pros.promotions == null ? '0.00' : pros.promotions.touchPrice | NumFormat}}
 									</text>
 								</view>
-								<view v-else class="floor-tags" @click.stop="clickPopupShow(pros,2)">{{pros.promotions.name}}</view>	
-							</view>
-							<view  v-if="pros.actStatus == null  &&  pros.ladderFlag == 1" class="floor-item-act">
-								<view class="floor-tags" @click.stop="clickPopupShow(pros,2)">阶梯价格</view>	
+								<view v-else class="floor-tags">{{pros.promotions.name}}</view>	
 							</view>
 						</view>	
 					</view>
@@ -50,9 +52,7 @@
 					<view class="sum-none" v-if="(item.originalPrice - item.totalPrice)>0">
 						<text class="money-sign">¥</text>
 						<text class="money">{{ item.originalPrice | NumFormat }}</text>
-						<text class="money-reduced">
-							<text class="iconfont icon-biaoqian"></text>减<text>¥{{ (item.originalPrice - item.totalPrice) | NumFormat}}</text>
-						</text>
+						<text class="money-reduced">减<text>¥{{ (item.originalPrice - item.totalPrice) | NumFormat}}</text></text>
 					</view>
 					<view class="sum">合计:<text class="money">¥{{ item.totalPrice | NumFormat }}</text></view>
 				</view>
@@ -137,24 +137,38 @@
 				align-items: center;
 				height: 80rpx;
 				line-height: 80rpx;
-				.title-logo{
-					width: 48rpx;
-					height: 48rpx;
-					float: left;
-					image{
-						width: 48rpx;
-						height: 48rpx;
-					}
-				}
 				.title-text{
+					width: 100%;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
 					float: left;
-					margin-left: 16rpx;
 					font-size: $font-size-28;
 					color: $text-color;
 					text-align: left;
 					line-height: 56rpx;
 					font-weight: bold;
 				}
+				.floor-item-act{
+					height: 56rpx;
+					text-align: center;
+					box-sizing: border-box;
+					float: left;
+					padding: 12rpx 0;
+					margin-right: 12rpx;
+					.floor-tags{
+						float: left;
+						height: 36rpx;
+						border-radius: 4rpx;
+						background-color: rgba(225, 86, 22, 0.1);
+						line-height: 36rpx;
+						color: $color-system;
+						text-align: center;
+						display: inline-block;
+						padding:0 16rpx;
+						font-size: $font-size-20;
+					}
+				}
 			}
 			.productlist{
 				width: 100%;
@@ -302,6 +316,7 @@
 			.goods-pros-b{
 				width:100%;
 				height: auto;
+				padding: 10rpx 0;
 				.sum-none{
 					width: 100%;
 					height: 48rpx;
@@ -322,7 +337,7 @@
 					.money-reduced{
 						margin-left: 10rpx;
 						font-size: $font-size-26;
-						color: #ff2a2a;
+						color: $color-system;
 						.iconfont{
 							font-size: $font-size-34;
 						}
@@ -330,9 +345,9 @@
 				}
 				.sum{
 					width: 100%;
-					height: 60rpx;
+					height: 48rpx;
 					font-size: $font-size-28;
-					line-height: 60rpx;
+					line-height: 48rpx;
 					color: $text-color;
 					display: flex;
 					justify-content: flex-end;

+ 1 - 1
components/cm-module/listTemplate/productList.vue

@@ -26,7 +26,7 @@
 						<view class="list-details-price" v-if="item.actStatus==1">
 							<view class="floor-item-act">
 								<view class="floor-tags" v-if="PromotionsFormat(item.promotions)">
-									{{item.promotions.name}}<text v-if="hasLogin">:¥{{ item.price | NumFormat }}</text>
+									{{item.promotions.name}}<text>:¥{{ item.retailPrice | NumFormat }}</text>
 								</view>
 								<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
 							</view>

+ 235 - 0
components/cm-module/orderDetails/activipopu.vue

@@ -0,0 +1,235 @@
+<template name="cm-price">
+	<!--促销活动弹窗提示-->
+	<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+		<view class="tui-popup-box clearfix">
+			<view class="tui-scrollview-box">
+				<view class="box-text">
+					<text>促销时间:</text>
+					<text class="txt" v-if="Promotion.status == 1">不限时</text>
+					<text class="txt" v-else>{{ Promotion.beginTime }} ~ {{ Promotion.endTime }}</text>
+				</view>
+				<view class="box-title" v-show="Promotion.mode ==2">
+					<text>此商品参与{{Promotion.name}},满</text>
+					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.touchPrice | NumFormat}}</text>减
+					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.reducedPrice | NumFormat}}</text>
+				</view>
+				<view class="box-title" v-show="Promotion.mode==3">
+					<text>此商品参与{{Promotion.name}},满</text>
+					<text class="txt">¥{{Promotion.touchPrice}}</text>赠送商品(赠品见订单详情)
+				</view>
+			</view>
+			<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
+				<view class="tui-flex-1">
+					<view class="tui-button" @click="hidePopup()">了解</view>
+				</view>
+			</view>
+		</view>	
+	</tui-bottom-popup>
+</template>
+
+<script>
+	import { mapState,mapMutations } from 'vuex'
+	export default{
+		name:'cm-price',
+		props:{
+			Promotion:{
+				type:Object,
+			},
+			popupShow:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data() {
+			return{
+				isIphoneX:this.$store.state.isIphoneX,
+			}
+		},
+		filters: {
+			NumFormat:function(text) {//处理金额
+				return Number(text).toFixed(2);
+			},
+		},
+		created() {
+			
+		},
+		computed: {
+			...mapState(['hasLogin','isWxAuthorize'])
+		},
+		methods:{
+			hidePopup(){
+				this.$parent.popupShow = false
+			},
+			goGoodActiveFn(id){
+				this.$parent.popupShow = false
+				this.$api.navigateTo('/pages/goods/goods-active?id='+id)
+			}
+		},
+		
+	}
+</script>
+
+<style lang="scss">	
+	.tui-flex-1 {
+		flex: 1;
+	}
+	.tui-popup-box {
+		position: relative;
+		box-sizing: border-box;
+		min-height: 220rpx;
+		padding:24rpx 24rpx 0 24rpx;
+	}
+	.tui-scrollview-box{
+		width: 100%;
+		height: auto;
+		float: left;
+		box-sizing: border-box;
+		.ladder-main{
+			width: 100%;
+			height: 320rpx;
+			border: 1px solid rgba(225,86,22,0.3);
+			border-radius: 10rpx;
+			.ladder-item{
+				width: 100%;
+				height: 80rpx;
+				float: left;
+				border-bottom: 1px solid rgba(225,86,22,0.3);
+				&:nth-child(1){
+					.ladder-item-td{
+						color: #333333;
+					}
+				}
+				&:last-child{
+					border-bottom: none;
+				}
+				.ladder-item-td{
+					width:50%;
+					text-align: center;
+					line-height: 80rpx;
+					font-size: $font-size-24;
+					color: $color-system;
+					box-sizing: border-box;
+					float: left;
+					&:nth-child(1){
+						border-right: 1px solid rgba(225,86,22,0.3);
+					}
+				}
+			}
+		}
+		.box-title{
+			font-size: $font-size-26;
+			color: $text-color;
+			text-align: left;
+			line-height: 56rpx;
+			.txt{
+				color: $color-system;
+				margin: 0 8rpx;
+			}
+		}
+		.box-text{
+			font-size: $font-size-26;
+			color: $text-color;
+			text-align: left;
+			line-height: 56rpx;
+			.txt{
+				color: $color-system;
+			}
+		}
+		.box-product{
+			width: 100%;
+			height: auto;
+			margin-top: 20rpx;
+			.title{
+				font-size: $font-size-24;
+				color: $text-color;
+				text-align: left;
+				line-height: 54rpx;
+			}
+			.box-product-main{
+				width: 100%;
+				height: 136rpx;
+				.image{
+					width: 134rpx;
+					height: 134rpx;
+					border: 1px solid #EBEBEB;
+					float: left;
+					image{
+						width: 100%;
+						height: 100%;
+						display: block;
+					}
+				}
+				.info{
+					width: 540rpx;
+					height: 134rpx;
+					float: left;
+					margin-left: 16rpx;
+					position: relative;
+					.name{
+						width: 100%;
+						float: left;
+						line-height: 40rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						-o-text-overflow: ellipsis;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						overflow: hidden;
+					}
+					.num{
+						width: 100%;
+						height: 44rpx;
+						font-size: $font-size-24;
+						color: $text-color;
+						text-align: left;
+						line-height: 44rpx;
+						position: absolute;
+						bottom: 0;
+						left: 0;
+					}
+				}
+			}
+		}
+	}
+	
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button{
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #FFFFFF;
+			font-size: $font-size-28;
+			border-radius: 14rpx;
+		}
+	}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 155 - 33
components/cm-module/orderDetails/goodsList.vue

@@ -4,20 +4,25 @@
 		<view class="goods-list">
 			<view v-for="(item, index) in shopOrderData" :key="index" class="goods-item clearfix">
 				<view class="shoptitle">
-					<view class="title-logo"><image :src="item.shopLogo" mode=""></image></view>
+					<view v-if="item.shopPromotion" class="floor-item-act">
+						<view class="floor-tags" @click.stop="clickPopupShow(item.shopPromotion)">{{item.shopPromotion.name}}</view>	
+					</view>
 					<view class="title-text">{{item.shopName}}</view> 
 				</view>
 				<view class="productlist" v-for="(pros,idx) in item.orderProductList" :key="idx">
 					<view class="goods-pros-t">
 						<view class="pros-left">
-							<view class="pros-img"><image :src="pros.productImage" alt="" /></view>
+							<view class="pros-img">
+								<image :src="pros.productImage" alt="" />
+								<text class="tips" v-if="pros.productType ==2 || pros.productType ==1">赠品</text>
+							</view>
 						</view>
 						<view class="pros-product">
 							<view class="producttitle">{{pros.name}}</view>
 							<view class="productspec" v-if="pros.productCategory != 2">规格:{{pros.productUnit ? pros.productUnit : ''}}</view>
 							<view class="product-view">
-								<view class="view-num">单价:¥{{pros.price.toFixed(2)}}</view>
-								<view class="view-num">数量(赠品):{{pros.num}}({{pros.presentNum}})</view>
+								<view class="view-num">单价:¥{{pros.price | NumFormat}}</view>
+								<view class="view-num">数量:{{pros.num}}</view>
 							</view>
 							<view class="product-view" v-if="pros.returnedNum>0 || pros.actualCancelNum>0">
 								<view class="view-num">已退货/已取消:{{pros.returnedNum}}/{{pros.actualCancelNum}}</view>
@@ -27,10 +32,19 @@
 								<view class="view-num">折扣:{{pros.discount == null ? '0' : pros.discount}}%</view>
 							</view>
 							<view class="product-view">
-								<view class="view-num">折后单价:¥{{pros.discountPrice.toFixed(2)}}</view>
+								<view class="view-num">折后单价:¥{{pros.discountPrice | NumFormat}}</view>
+							</view>
+							<view class="floor-item-act" v-if="pros.productPromotion!=null" >
+								<view v-if="PromotionsFormat(pros.productPromotion)" class="floor-tags" @click.stop="clickPopupShow(pros.productPromotion)">
+									{{pros.productPromotion.name}}
+									<text v-if ="pros.productPromotion!=null">
+										:¥{{ pros.productPromotion == null ? '0.00' : pros.productPromotion.touchPrice | NumFormat}}
+									</text>
+								</view>
+								<view v-else class="floor-tags" @click.stop="clickPopupShow(pros.productPromotion)">{{pros.productPromotion.name}}</view>	
 							</view>
 							<view class="product-view">
-								<view class="view-num">合计:¥{{pros.totalFee.toFixed(2)}}</view>
+								<view class="view-num">合计:¥{{pros.totalFee | NumFormat}}</view>
 							</view>
 						</view>	
 					</view>
@@ -43,7 +57,16 @@
 				</view>
 				<view class="goods-pros-b">
 					<view class="count">共{{item.itemCount}}件商品</view>
-					<view class="sum">商品总额:<text class="money">¥{{item.totalAmount.toFixed(2)}}</text></view>
+					<view class="sum">
+						<view class="sum-none" v-if="item.promotionFullReduction>0">
+							<text class="money-sign">¥</text>
+							<text class="money">{{ item.totalAmount | NumFormat }}</text>
+							<text class="money-reduced">减<text>¥{{ (item.promotionFullReduction) | NumFormat}}</text></text>
+						</view>
+						<view class="sum-money" :class="item.promotionFullReduction == 0 ? 'none' : ''">
+							商品总额:<text class="money">¥{{item.totalAmount | NumFormat}}</text>
+						</view>
+					</view>
 				</view>
 			</view>
 		</view>	
@@ -60,17 +83,35 @@
 		},
 		data() {
 			return{
-				initData:[]
+				initData:[],
 			}
 		},
 		created(){
 			this.initData = this.shopOrderData
 		},
+		filters:{
+			NumFormat(value) {//处理金额
+				return Number(value).toFixed(2);
+			},
+		},	
 		computed: {
-
+		
 		},
 		methods:{
-
+			clickPopupShow(pros){
+				console.log(pros)
+				this.$emit('popupClick',pros)
+			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
 		}
 	}
 </script>
@@ -102,28 +143,38 @@
 				height: 56rpx;
 				line-height: 56rpx;
 				margin-bottom: 12rpx;
-				.title-logo{
-					width: 48rpx;
-					height: 48rpx;
-					float: left;
-					image{
-						width: 48rpx;
-						height: 48rpx;
-					}
-				}
 				.title-text{
-					width: 630rpx;
+					width: 400rpx;
 					overflow: hidden;
 					text-overflow:ellipsis;
 					white-space: nowrap;
 					float: left;
-					margin-left: 16rpx;
 					font-size: $font-size-28;
 					color: $text-color;
 					text-align: left;
 					line-height: 56rpx;
 					font-weight: bold;
 				}
+				.floor-item-act{
+					height: 56rpx;
+					text-align: center;
+					box-sizing: border-box;
+					float: left;
+					padding: 10rpx 0;
+					margin-right: 12rpx;
+					.floor-tags{
+						float: left;
+						height: 36rpx;
+						border-radius: 4rpx;
+						background-color: rgba(225, 86, 22, 0.1);
+						line-height: 36rpx;
+						color: $color-system;
+						text-align: center;
+						display: inline-block;
+						padding:0 16rpx;
+						font-size: $font-size-20;
+					}
+				}
 			}
 			.productlist{
 				width: 100%;
@@ -145,9 +196,24 @@
 					height: 210rpx;
 					border-radius: 10rpx;
 					border:1px solid #f3f3f3;
+					position: relative;
+					.tips{
+						display: inline-block;
+						width: 80rpx;
+						height: 40rpx;
+						background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+						line-height: 40rpx;
+						text-align: center;
+						font-size: $font-size-24;
+						color: #FFFFFF;
+						border-radius:10rpx 0 10rpx 0 ;
+						position: absolute;
+						top:0;
+						left: 0;
+					}
 					image{
-						width: 100%;
-						height: 100%;
+						width: 210rpx;
+						height: 210rpx;
 						border-radius: 10rpx;
 					}
 				}
@@ -208,6 +274,26 @@
 						}
 					}
 				}
+				.floor-item-act{
+					width: 100%;
+					height: 56rpx;
+					text-align: center;
+					box-sizing: border-box;
+					float: left;
+					padding:10rpx 0 0 0;
+					.floor-tags{
+						float: left;
+						height: 36rpx;
+						border-radius: 4rpx;
+						background-color: rgba(225, 86, 22, 0.1);
+						line-height: 36rpx;
+						color: $color-system;
+						text-align: center;
+						display: inline-block;
+						padding:0 16rpx;
+						font-size: $font-size-20;
+					}
+				}
 			}
 			.goods-pros-m{
 				width: 100%;
@@ -245,27 +331,63 @@
 			}
 			.goods-pros-b{
 				width:100%;
-				height: 40rpx;
+				height: 80rpx;
 				margin-top: 12rpx;
 				float: left;
 				.count{
 					float: left;
 					font-size: $font-size-28;
-					line-height: 40rpx;
+					line-height: 80rpx;
 					color: $text-color;
 					display: flex;
 					justify-content: flex-end;
 				}
 				.sum{
-					font-size: $font-size-28;
-					line-height: 40rpx;
-					color: $text-color;
-					display: flex;
-					justify-content: flex-end;
-					.money{
-						color: #FF2A2A;
-						font-size: $font-size-28;
+					width: 530rpx;
+					float: right;
+					.sum-none{
+						width: 100%;
+						height: 40rpx;
+						line-height: 40rpx;
+						color: $text-color;
+						float: left;
+						text-align: right;
+						.money{
+							font-size: $font-size-26;
+							color: #999999;
+							text-decoration: line-through;
+						}
+						.money-sign{
+							font-size: $font-size-26;
+							color: #999999;
+							text-decoration: line-through;
+						}
+						.money-reduced{
+							margin-left: 10rpx;
+							font-size: $font-size-26;
+							color: $color-system;
+							.iconfont{
+								font-size: $font-size-34;
+							}
+						}
 					}
+					.sum-money{
+						width: 100%;
+						height: 40rpx;
+						font-size: $font-size-28;
+						line-height: 40rpx;
+						color: $text-color;
+						display: flex;
+						justify-content: flex-end;
+						&.none{
+							height: 80rpx;
+							line-height: 80rpx;
+						}
+						.money{
+							color: #FF2A2A;
+							font-size: $font-size-28;
+						}
+					}		
 				}
 			}
 		}

+ 1 - 1
components/cm-module/orderDetails/orderButton.vue

@@ -141,7 +141,7 @@
 				font-size:$font-size-26;
 				color: #FFFFFF;
 				text-align: center;
-				border-radius: 10rpx;
+				border-radius: 6rpx;
 				float: right;
 			}
 			.btn-color{

+ 54 - 63
components/cm-module/orderDetails/orderInformation.vue

@@ -11,32 +11,40 @@
 				</view>
 			</view>
 			<view class="information-view">
-				<view class="view-num time">下单时间:{{orderData.orderTime =='undefined' ? '' : orderData.orderTime}}</view>
-				<view class="view-type">{{typeText}}</view>
+				<view class="view-num time">下单时间:{{ orderData.orderTime =='undefined' ? '' : orderData.orderTime }}</view>
+				<view class="view-type">{{ orderData.status | TextFormat }}</view>
 			</view>
 			<view class="information-view">
 				<view class="view-num bold">
-					订单标识:{{orderData.orderMark =='undefined' ? '' : orderData.orderMark}}
+					订单标识:{{ orderData.orderMark =='undefined' ? '' : orderData.orderMark }}
 					<text class="clipboard" @click="clipboard(orderData.orderMark)">复制</text>
 				</view>
 			</view>
 			<view class="information-view">
-				<view class="view-num">订单总额:¥{{payTotalFee =='undefined' ? '' : payTotalFee}}</view>
-				<view class="view-man">余额抵扣:¥{{balancePayFee =='undefined' ? '' : balancePayFee}}</view>
+				<view class="view-num">订单总额:¥{{ orderData.payTotalFee =='undefined' ? '' : orderData.payTotalFee | NumFormat }}</view>
+				<view class="view-man">应付总额:¥{{ orderData.payableAmount =='undefined' ? '0.00' : orderData.payableAmount | NumFormat }}</view>
 			</view>
 			<view class="information-view">
-				<view class="view-num" v-if="freePostFlag == '0'">运费:包邮</view>
-				<view class="view-num" v-if="freePostFlag == '-1'">运费:到付</view>
-				<view class="view-num" v-if="freePostFlag == '1'">运费:¥{{freight}}</view>
-				<view class="view-man">经理折扣:¥{{discountFee =='undefined' ? '' : discountFee}}</view>
+				<view class="view-num">待付金额:<text class="red">¥{{ orderData.pendingPayments =='undefined' ? '0.00' : orderData.pendingPayments | NumFormat }}</text></view>
+				<view class="view-man"></view>
 			</view>
 			<view class="information-view">
-				<view class="view-num">税费:¥{{expensesOfTaxation == null ? '0.00' : expensesOfTaxation}}</view>
-				<view class="view-man bold">应付总额:<text class="red">¥{{payableAmount =='undefined' ? '0.00' : payableAmount}}</text></view>
+				<view class="view-num">经理折扣:¥{{ orderData.discountFee =='undefined' ? '' : orderData.discountFee | NumFormat}}</view>
+				<view class="view-man" v-show="orderData.promotionFullReduction>0">促销满减:¥{{ orderData.promotionFullReduction | NumFormat}}</view>
 			</view>
 			<view class="information-view">
-				<view class="view-num">已支付:¥{{receiptAmount == null ? '0.00' : receiptAmount}}</view>
-				<view class="view-man bold">待付金额:<text class="red">¥{{pendingPayments =='undefined' ? '0.00' : pendingPayments}}</text></view>
+				<view class="view-num">余额抵扣:¥{{ orderData.balancePayFee =='undefined' ? '' : orderData.balancePayFee | NumFormat}}</view>
+				<view class="view-man">赠品总数:{{ orderData.presentCount + orderData.promotionalGiftsCount}}</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num" v-if="orderData.freePostFlag == '0'">运费:包邮</view>
+				<view class="view-num" v-if="orderData.freePostFlag == '-1'">运费:到付</view>
+				<view class="view-num" v-if="orderData.freePostFlag == '1'">运费:¥{{ orderData.freight | NumFormat}}</view>
+				<view class="view-man">税费:¥{{ orderData.expensesOfTaxation == null ? '0.00' : orderData.expensesOfTaxation | NumFormat }}</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num">已支付:¥{{ orderData.receiptAmount == null ? '0.00' : orderData.receiptAmount | NumFormat }}</view>
+				<view class="view-man"></text></view>
 			</view>
 		 </view>
 	</view>
@@ -54,39 +62,45 @@
 		data() {
 			return{
 				orderData:'',
-				payTotalFee:'',
-				balancePayFee:'',
-				freight:'',
-				discountFee:'',
 				freePostFlag:'',
-				payableAmount:'',
-				pendingPayments:'',
-				receiptAmount:'',
-				typeText:'',
-				expensesOfTaxation:'',
-				typeTextObject:{
-					0:'待确认',
-					4:'交易完成',
-					5:'订单完成',
-					6:'已关闭',
-					7:'交易全退',
-					77:'交易全退',
-					11:'待付款待发货',
-					12:'待付款部分发货',
-					13:'待付款已发货',
-					21:'部分付款待发货',
-					22:'部分付款部分发货',
-					23:'部分付款已发货',
-					31:'已付款待发货',
-					32:'已付款部分发货',
-					33:'已付款已发货',
-					111:'待付款待发货',
-				}
 			}
 		},
 		created(){
 			this.initData(this.information)
 		},
+		filters:{
+			NumFormat(value) {//处理金额
+				return Number(value).toFixed(2);
+			},
+			TextFormat(status) {//处理金额
+				let HtmlText,
+					typeTextObject={
+						0:'待确认',
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货',
+					};
+				
+				Object.keys(typeTextObject).forEach(key => {
+					if(key == status){
+						HtmlText = typeTextObject[key]
+					}
+				})
+				return HtmlText
+			},
+		},	
 		computed: {
 
 		},
@@ -101,20 +115,6 @@
 		methods:{
 			initData(res) {
 				this.orderData = res;
-				this.payTotalFee =this.toFiexdFn(res.payTotalFee);		//订单总额
-				this.payableAmount =this.toFiexdFn(res.payableAmount);	//应付总额
-				this.balancePayFee = this.toFiexdFn(res.balancePayFee);
-				this.discountFee = this.toFiexdFn(res.discountFee);
-				this.pendingPayments = this.toFiexdFn(res.pendingPayments);
-				this.receiptAmount = this.toFiexdFn(res.receiptAmount);
-				this.freePostFlag = res.freePostFlag;
-				this.freight = this.toFiexdFn(res.freight);
-				this.expensesOfTaxation = this.toFiexdFn(res.expensesOfTaxation);
-				Object.keys(this.typeTextObject).forEach(key => {
-					if(key == res.status){
-						this.typeText = this.typeTextObject[key]
-					}
-				})
 			},
 			clipboard(data) {
 				thorui.getClipboardData(data, (res) => {
@@ -124,15 +124,6 @@
 						this.$util.msg("复制失败",2000,true,'none');
 					}
 				})
-			},
-			toFiexdFn(n){
-				let num 
-				if(n==null){
-					num='0.00'
-				}else{
-					num = n.toFixed(2)
-				}
-				return num
 			}
 		}
 	}

+ 1 - 1
components/cm-module/orderDetails/orderListButton.vue

@@ -135,7 +135,7 @@
 				font-size:$font-size-26;
 				color: #FFFFFF;
 				text-align: center;
-				border-radius: 10rpx;
+				border-radius:6rpx;
 				float: right;
 			}
 			.btn-color{

+ 1 - 1
components/cm-module/orderDetails/sellerDetaileButton.vue

@@ -145,7 +145,7 @@
 				font-size:$font-size-26;
 				color: #FFFFFF;
 				text-align: center;
-				border-radius: 10rpx;
+				border-radius: 6rpx;
 				float: right;
 			}
 			.btn-color{

+ 1 - 1
components/cm-module/orderDetails/sellerOrderButton.vue

@@ -130,7 +130,7 @@
 				font-size:$font-size-26;
 				color: #FFFFFF;
 				text-align: center;
-				border-radius: 10rpx;
+				border-radius: 6rpx;
 				float: right;
 			}
 			.btn-color{

+ 2 - 2
components/cm-module/productDetails/cm-activipopu.vue

@@ -33,7 +33,7 @@
 						<text class="txt">¥{{product.promotions.touchPrice}}</text>赠送商品
 					</view>
 					<view class="box-product" v-show="product.promotions.mode==3">
-						<view class="box-product-main"  v-for="(item, index) in pproduct.romotions.giftList" :key="index">
+						<view class="box-product-main"  v-for="(item, index) in pproduct.promotions.giftList" :key="index">
 							<view class="image"><image :src="item.image" mode="widthFix"></image></view>
 							<view class="info">
 								<view class="name">{{ item.name }}</view>
@@ -77,7 +77,7 @@
 			},
 		},
 		created() {
-			
+			console.log(this.product)
 		},
 		computed: {
 			...mapState(['hasLogin','isWxAuthorize'])

+ 28 - 33
pages/goods/cart.vue

@@ -112,14 +112,12 @@
 						</view>
 			
 						<view class="sum">
-							<view class="sum-none">
-								<template v-if="reducedPrice>0">
-									<text class="money-sign">¥</text>
-									<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
-									<text class="money-reduced"><text class="iconfont icon-biaoqian"></text>减<text>¥{{ reducedPrice | NumFormat}}</text></text>
-								</template>
+							<view class="sum-none" v-if="reducedPrice>0">
+								<text class="money-sign">¥</text>
+								<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
+								<text class="money-reduced"><text class="iconfont icon-biaoqian"></text>减<text>¥{{ reducedPrice | NumFormat}}</text></text>
 							</view>
-							<view class="sum-price">
+							<view class="sum-price" :class="reducedPrice == 0 ? 'none' : ''">
 								总价:<text class="money-sign">¥</text><text class="money">{{allPrice | NumFormat}}</text>
 							</view>
 						</view>
@@ -259,7 +257,7 @@
 				}, 500)
 			},
 			initGetCartGoodsList(){//初始化购物车 index:1
-				this.ProductService.queryShoppingCartList({userId:this.userID}).then(response =>{
+				this.ProductService.QueryShoppingCartList({userId:this.userID}).then(response =>{
 					this.skeletonShow = false
 					let data = response.data
 					this.kindCount = data.kindCount
@@ -1001,28 +999,25 @@
 			}
 			.sum-none{
 				width: 100%;
-				height: 48rpx;
-				line-height: 48rpx;
+				height: 40rpx;
+				line-height: 40rpx;
 				color: $text-color;
 				float: left;
 				text-align: right;
 				.money{
-					font-size: $font-size-26;
+					font-size: $font-size-24;
 					color: #999999;
 					text-decoration: line-through;
 				}
 				.money-sign{
-					font-size: $font-size-26;
+					font-size: $font-size-24;
 					color: #999999;
 					text-decoration: line-through;
 				}
 				.money-reduced{
 					margin-left: 10rpx;
-					font-size: $font-size-26;
+					font-size: $font-size-24;
 					color: $color-system;
-					.iconfont{
-						font-size: $font-size-34;
-					}
 				}
 			}
 			.sum{
@@ -1370,13 +1365,10 @@
 		bottom: 0rpx;
 		z-index: 100;
 		.footer-le{
-			width: 490rpx;
+			width: 520rpx;
 			height: 100%;
-			padding:0 30rpx;
+			padding:0 24rpx;
 			float: left;
-			.text{
-				font-weight: bold;
-			}
 			.foot-check{
 				width: 100rpx;
 				float: left;
@@ -1395,41 +1387,44 @@
 				width: 380rpx;
 				height: 110rpx;
 				float: right;
+				box-sizing: border-box;
+				padding: 10rpx;
 				.sum-none{
 					width: 100%;
-					height: 55rpx;
-					line-height: 55rpx;
+					height: 45rpx;
+					line-height: 45rpx;
 					color: $text-color;
 					float: left;
 					text-align: right;
 					.money{
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: #999999;
 						text-decoration: line-through;
 					}
 					.money-sign{
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: #999999;
 						text-decoration: line-through;
 					}
 					.money-reduced{
 						margin-left: 10rpx;
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: $color-system;
-						.iconfont{
-							font-size: $font-size-34;
-						}
 					}
 				}
 				.sum-price{
 					text-align: right;
 					width: 100%;
-					height: 55rpx;
-					line-height: 55rpx;
+					height: 45rpx;
+					line-height: 45rpx;
 					font-size: $font-size-30;
 					color: $text-color;
 					float: left;
-					font-weight: bold;
+					font-weight: normal;
+					&.none{
+						height: 90rpx;
+						line-height: 90rpx;
+					}
 					.money{
 						color: #FF2A2A;
 					}
@@ -1441,7 +1436,7 @@
 			}
 		}
 		.footer-ri{
-			width: 200rpx;
+			width: 180rpx;
 			height: 100%;
 			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
 			float: right;

+ 1 - 1
pages/goods/product.vue

@@ -440,7 +440,7 @@
 				this.processActivityPrice()
 			},
 			processActivityPrice(){//单独处理活动价格和阶梯价格
-				if(this.ladderPriceFlag == '0' && this.product.actStatus == 0){
+				if(this.ladderPriceFlag == '0' && this.product.actStatus == 0 || this.product.actStatus == 1){
 					this.buyRetailPrice = this.product.retailPrice
 				}else{
 					this.ladderPriceList.forEach((item,index)=>{

+ 110 - 41
pages/search/search-order.vue

@@ -39,37 +39,51 @@
 								</view>
 								<view class="order-title-b">
 									<view class="order-title-btxt tui-skeleton-fillet">下单时间:{{order.orderTime}}</view>
-									<view class="order-title-tip tui-skeleton-fillet">{{orderStateExp(order.status)}}</view>
+									<view class="order-title-tip tui-skeleton-fillet">{{ StateExpFormat(order.status) }}</view>
 								</view>
 							</view>
 							<block v-for="(shop,index) in order.shopOrderList" :key="index">
 								<view class="goods-title">
-									<view class="title-logo tui-skeleton-fillet"><image :src="shop.shopLogo" mode=""></image></view>
-									<view class="title-text tui-skeleton-fillet">{{shop.shopName}}</view>
+										<view v-if="shop.shopPromotion" class="floor-item-act">
+											<view class="floor-tags">{{shop.shopPromotion.name}}</view>	
+										</view>
+										<view class="title-text tui-skeleton-fillet">{{shop.shopName}}</view>	
 								</view>
 								<view class="goods-item" v-for="(pros,prosIndex) in shop.orderProductList" :key="prosIndex">
 									<view class="goods-pros-t">
-										<view class="pros-img tui-skeleton-fillet"><image :src="pros.productImage" alt="" /></view>
+										<view class="pros-img tui-skeleton-fillet">
+											<image :src="pros.productImage" alt="" />
+											<text class="tips" v-if="pros.productType ==2 || pros.productType ==1">赠品</text>
+										</view>
 										<view class="pros-product">
 											<view class="producttitle tui-skeleton-fillet">{{pros.name}}</view>
 											<view class="productspec tui-skeleton-fillet" v-if="pros.productCategory!=2">规格:{{pros.productUnit}}</view>
 											<view class="productprice">
 												<view class="price tui-skeleton-fillet">
-													<text>¥{{pros.price.toFixed(2)}}</text>
+													<text>¥{{pros.price | NumFormat}}</text>
 												</view>
 												<view class="count tui-skeleton-fillet">
 													<text class="small">x</text>{{pros.num}}
 												</view>
 											</view>
+											<view class="floor-item-act" v-if="pros.productPromotion!=null">
+												<view v-if="PromotionsFormat(pros.productPromotion)"  class="floor-tags">
+													{{pros.productPromotion.name}}
+													<text v-if ="pros.productPromotion!=null">
+														:¥{{ pros.productPromotion == null ? '0.00' : pros.productPromotion.touchPrice | NumFormat}}
+													</text>
+												</view>
+												<view v-else class="floor-tags">{{pros.productPromotion.name}}</view>	
+											</view>
 										</view>	
 									</view>
 								</view>	
 							</block>
 							<view class="order-footer">
-								<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{orderPriceToFixed(order.discountFee)}}</view>
+								<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{ order.discountFee | NumFormat }}</view>
 								<view class="order-footer-bot">
 									<view class="count tui-skeleton-fillet">共{{order.productCount}}件商品</view>
-									<view class="money tui-skeleton-fillet">待付总额:¥{{orderPriceToFixed(order.pendingPayments)}}</view>
+									<view class="money tui-skeleton-fillet">待付总额:¥{{ order.pendingPayments | NumFormat}}</view>
 								</view>
 							</view>
 							<!-- 底部button -->
@@ -162,6 +176,11 @@
 		onLoad() {
 		  this.initGetSerachRecord()
 		},
+		filters:{
+			NumFormat(value) {//处理金额
+				return Number(value).toFixed(2);
+			}
+		},
 		methods:{
 			subMitSearch() {
 				if (this.searchInputVal == '') {
@@ -240,7 +259,7 @@
 					if(_responseData && _responseData.length > 0){
 						let filrerData = _responseData.filter(item=>{
 							//添加不同状态下订单的表现形式
-							item = Object.assign(item, this.orderStateExp(item.state));
+							item = Object.assign(item, this.StateExpFormat(item.state));
 							return item;
 						});
 						this.orderList =[];
@@ -380,9 +399,23 @@
 					imageUrl:'https://img.caimei365.com/group1/M00/03/8C/Cmis215XHXSAWWkhAAXDP4-6m_c397.png'
 				}
 			},
-			//订单状态文字和颜色
-			orderStateExp (state){
-				let stateText = '',
+			setScrollHeight() {
+				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
+				this.windowHeight = windowHeight - 1;
+				this.scrollHeight = windowHeight - 1;
+			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
+			StateExpFormat(state){ //订单状态文字和颜色
+				var HtmlStateText = '',
 					stateTextObject={
 						0:'待确认',
 						4:'交易完成',
@@ -399,24 +432,14 @@
 						31:'已付款待发货',
 						32:'已付款部分发货',
 						33:'已付款已发货',
-						111:'待付款待发货',
-					}
-				Object.keys(stateTextObject).forEach(key => {
+						111:'待付款待发货'
+					};
+				Object.keys(stateTextObject).forEach(function(key){
 					if(key == state){
-						stateText = stateTextObject[key]
+						HtmlStateText = stateTextObject[key]
 					}
-				})
-				return stateText;
-			},
-			orderPriceToFixed (n){
-				let price ='';
-				price = n.toFixed(2);
-				return price
-			},
-			setScrollHeight() {
-				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
-				this.windowHeight = windowHeight - 1;
-				this.scrollHeight = windowHeight - 1;
+				});
+				return HtmlStateText;
 			}
 		},
 		onPageScroll(e) {
@@ -715,29 +738,39 @@
 	}
 	.goods-title{
 		width: 100%;
-		height: 48rpx;
+		height: 56rpx;
 		float: left;
-		margin-top: 24rpx;
-		.title-logo{
-			width: 48rpx;
-			height: 48rpx;
+		margin-top:10rpx;
+		.floor-item-act{
+			height: 56rpx;
+			text-align: center;
+			box-sizing: border-box;
 			float: left;
-			image{
-				width: 48rpx;
-				height: 48rpx;
+			padding: 10rpx 0;
+			margin-right: 12rpx;
+			.floor-tags{
+				float: left;
+				height: 36rpx;
+				border-radius: 4rpx;
+				background-color: rgba(225, 86, 22, 0.1);
+				line-height: 36rpx;
+				color: $color-system;
+				text-align: center;
+				display: inline-block;
+				padding:0 16rpx;
+				font-size: $font-size-20;
 			}
 		}
 		.title-text{
-			width: 630rpx;
+			width: 400rpx;
 			overflow: hidden;
 			text-overflow:ellipsis;
 			white-space: nowrap;
 			float: left;
-			margin-left: 16rpx;
 			font-size: $font-size-28;
 			color: $text-color;
 			text-align: left;
-			line-height: 48rpx;
+			line-height: 56rpx;
 			font-weight: bold;
 		}
 	}
@@ -752,15 +785,31 @@
 		height: 217rpx;
 		padding:24rpx 0;
 		.pros-img{
+			float: left;
 			width: 210rpx;
 			height: 100%;
 			border-radius: 10rpx;
 			margin:0 26rpx 0 0;
-			border:1px solid #f3f3f3;
+			position: relative;
+			.tips{
+				display: inline-block;
+				width: 80rpx;
+				height: 40rpx;
+				background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+				line-height: 40rpx;
+				text-align: center;
+				font-size: $font-size-24;
+				color: #FFFFFF;
+				border-radius:10rpx 0 10rpx 0 ;
+				position: absolute;
+				top:0;
+				left: 0;
+			}
 			image{
-				width: 100%;
-				height: 100%;
+				width: 210rpx;
+				height: 210rpx;
 				border-radius: 10rpx;
+				border:1px solid #f3f3f3;
 			}
 		}
 	}
@@ -808,6 +857,26 @@
 				}
 			}
 		}
+		.floor-item-act{
+			width: 100%;
+			height: 56rpx;
+			text-align: center;
+			box-sizing: border-box;
+			float: left;
+			padding:0 0 10rpx 0;
+			.floor-tags{
+				float: left;
+				height: 36rpx;
+				border-radius: 4rpx;
+				background-color: rgba(225, 86, 22, 0.1);
+				line-height: 36rpx;
+				color: $color-system;
+				text-align: center;
+				display: inline-block;
+				padding:0 16rpx;
+				font-size: $font-size-20;
+			}
+		}
 	}
 	.order-footer{
 		width: 100%;

+ 24 - 26
pages/tabBar/cart/cart.vue

@@ -67,7 +67,7 @@
 								<view class="sum-none" v-if="item.reducedPrice>0">
 									<text class="money-sign">¥</text>
 									<text class="money">{{ item.totalOriginalPrice | NumFormat }}</text>
-									<text class="money-reduced"><text class="iconfont icon-biaoqian"></text>减<text>¥{{ item.reducedPrice | NumFormat}}</text></text>
+									<text class="money-reduced">减<text>¥{{ item.reducedPrice | NumFormat}}</text></text>
 								</view>
 								<view class="sum">合计:<text class="money"><text class="money-sign">¥</text>{{item.totalPrice | NumFormat}}</text></view>
 							</view>
@@ -111,14 +111,12 @@
 						</view>
 	
 						<view class="sum">
-							<view class="sum-none">
-								<template v-if="reducedPrice>0">
-									<text class="money-sign">¥</text>
-									<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
-									<text class="money-reduced"><text class="iconfont icon-biaoqian"></text>减<text>¥{{ reducedPrice | NumFormat}}</text></text>
-								</template>
+							<view class="sum-none"  v-if="reducedPrice>0">
+								<text class="money-sign">¥</text>
+								<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
+								<text class="money-reduced">减<text>¥{{ reducedPrice | NumFormat}}</text></text>
 							</view>
-							<view class="sum-price">
+							<view class="sum-price" :class="reducedPrice == 0 ? 'none' : ''">
 								总价:<text class="money-sign">¥</text><text class="money">{{allPrice | NumFormat}}</text>
 							</view>
 						</view>
@@ -251,7 +249,7 @@
 				}, 500)
 			},
 			initGetCartGoodsList(){//初始化购物车 index:1
-				this.ProductService.queryShoppingCartList({userId:this.userID}).then(response =>{
+				this.ProductService.QueryShoppingCartList({userId:this.userID}).then(response =>{
 					this.skeletonShow = false
 					let data = response.data
 					this.kindCount = data.kindCount
@@ -1361,13 +1359,10 @@
 		bottom: 0rpx;
 		z-index: 100;
 		.footer-le{
-			width: 490rpx;
+			width: 520rpx;
 			height: 100%;
-			padding:0 30rpx;
+			padding:0 24rpx;
 			float: left;
-			.text{
-				font-weight: bold;
-			}
 			.foot-check{
 				width: 100rpx;
 				float: left;
@@ -1386,41 +1381,44 @@
 				width: 380rpx;
 				height: 110rpx;
 				float: right;
+				box-sizing: border-box;
+				padding: 10rpx;
 				.sum-none{
 					width: 100%;
-					height: 55rpx;
-					line-height: 55rpx;
+					height: 45rpx;
+					line-height: 45rpx;
 					color: $text-color;
 					float: left;
 					text-align: right;
 					.money{
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: #999999;
 						text-decoration: line-through;
 					}
 					.money-sign{
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: #999999;
 						text-decoration: line-through;
 					}
 					.money-reduced{
 						margin-left: 10rpx;
-						font-size: $font-size-26;
+						font-size: $font-size-24;
 						color: $color-system;
-						.iconfont{
-							font-size: $font-size-34;
-						}
 					}
 				}
 				.sum-price{
 					text-align: right;
 					width: 100%;
-					height: 55rpx;
-					line-height: 55rpx;
+					height: 45rpx;
+					line-height: 45rpx;
 					font-size: $font-size-30;
 					color: $text-color;
 					float: left;
-					font-weight: bold;
+					font-weight: normal;
+					&.none{
+						height: 90rpx;
+						line-height: 90rpx;
+					}
 					.money{
 						color: #FF2A2A;
 					}
@@ -1432,7 +1430,7 @@
 			}
 		}
 		.footer-ri{
-			width: 200rpx;
+			width: 180rpx;
 			height: 100%;
 			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
 			float: right;

+ 2 - 3
pages/user/address/address.vue

@@ -50,7 +50,6 @@
 <script>
 	import authorize from '@/common/config/authorize.js'	
 	import modelAlert from '@/components/cm-module/modelAlert/modelAlert.vue'
-	import { queryAddressList , deleteNewAddress } from '@/api/cart.js'
 	export default {
 		components:{
 			modelAlert
@@ -98,7 +97,7 @@
 			},
 			initAddressList(){	
 				let params = {pageNum:this.pageNum,pageSize:this.pageSize,userID:this.userID}
-				queryAddressList(params).then(response =>{
+				this.UserService.QueryAddressList(params).then(response =>{
 					if(response.data.results == ''){
 						this.isEmpty = true
 					}else{
@@ -133,7 +132,7 @@
 			},
 			deleteAddress(id){//删除收货地址
 				this.$util.modal('','确定要删除该地址?','确定','取消',true,() =>{
-					deleteNewAddress({addressID:id,userID:this.userID}).then(response =>{
+					this.UserService.DeleteNewAddress({addressID:id,userID:this.userID}).then(response =>{
 						this.$util.msg('删除成功',2000,true,'success')
 						setTimeout(() =>{
 							this.pageNum = 1;

+ 1 - 2
pages/user/address/addressManage.vue

@@ -45,7 +45,6 @@
 <script>	
 	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
 	import authorize from '@/common/config/authorize.js'	
-	import { addNewAddress,updateAddress } from '@/api/cart.js'
 	export default {
 		components:{
 			mpvueCityPicker
@@ -145,7 +144,7 @@
 			},
 			postAddressData(params){
 				this.btnText(true)
-				addNewAddress(params).then( response=>{
+				this.UserService.AddNewAddress(params).then( response=>{
 					this.$util.msg('保存成功',1500,true,'success')
 					this.btnText(false)
 					setTimeout(()=>{

+ 27 - 27
pages/user/order/create-order.vue

@@ -26,7 +26,7 @@
 				<view class="balabce-t-ri">
 					<view class="money">
 						<text>可用余额:</text>
-						<text>¥{{userMoney.toFixed(2)}}</text>
+						<text>¥{{userMoney | NumFormat}}</text>
 					</view>
 					<view class="checkbox-box">
 						<button class="checkbox iconfont"
@@ -41,7 +41,7 @@
 			</view>
 			<view class="balabce-b" :class="{'balabce-b--hide':!ischecked}">
 				<view class="balabce-b-text animation" :style="{'transform':ischecked?'translateY(0)':'translateY(-50%)','-webkit-transform':ischecked?'translateY(0)':'translateY(-50%)'}">
-					<text>当前使用:¥{{deductMoney.toFixed(2)}},剩余:¥{{surplusMoney.toFixed(2)}}</text>
+					<text>当前使用:¥{{deductMoney | NumFormat}},剩余:¥{{surplusMoney | NumFormat}}</text>
 				</view>
 			</view>
 		</view>
@@ -55,9 +55,9 @@
 					<view class="sum-none" v-if="reducedPrice>0">
 						<text class="money-sign">¥</text>
 						<text class="money">{{ totalOriginalPrice | NumFormat }}</text>
-						<text class="money-reduced"><text class="iconfont icon-biaoqian"></text>减<text>¥{{ reducedPrice | NumFormat}}</text></text>
+						<text class="money-reduced">减<text>¥{{ reducedPrice | NumFormat}}</text></text>
 					</view>
-					<view class="sum">总价:<text class="price">¥{{payAllPrice | NumFormat}}</text></view>
+					<view class="sum" :class="reducedPrice == 0 ? 'none' : ''">总价:<text class="price">¥{{payAllPrice | NumFormat}}</text></view>
 				</view>
 			</view>
 			<view class="footer-submit" @click.stop="orderSubmitMit">提交订单</view>
@@ -72,8 +72,6 @@
 	import freight from '@/components/cm-module/creatOrder/freight'
 	import freightAlert from '@/components/cm-module/modelAlert/freightAlert'
 	import modalLayer from "@/components/modal-layer"
-	import { queryAddressList } from "@/api/cart.js"
-	import { createOrderSubmit,getOrderPostage } from "@/api/order.js"
 
 	export default {
 		components:{
@@ -166,7 +164,7 @@
 						totalPrice:this.allPrice,
 						townId:this.addressData.townID
 					}
-				getOrderPostage(params).then(response =>{
+				this.OrderService.GetOrderPostage(params).then(response =>{
 					this.isFreight = true
 					this.freightData = response.data
 					this.hanldFreePostFlag = response.data.freePostFlag
@@ -182,7 +180,7 @@
 			},
 			getAddressData(){//获取地址信息
 				this.$api.getStorage().then((resolve) => {
-					queryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
+					this.UserService.QueryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
 						this.isAddress = true
 						this.addressData = {}
 						if(response.data.results != ''){
@@ -314,21 +312,22 @@
 					}
 					// console.log(param)
 				this.modalLayer = true;
-				createOrderSubmit({'params':JSON.stringify(param)}).then(response =>{
-					if(response.code === 1){
+				this.OrderService.CreatedOrderSubmit({'params':JSON.stringify(param)}).then(response =>{
+					const data = response.data;
+					if(data.code === '1'){
 						this.submitState ='success'
 						let data = {orderID:response.data.orderID}
 						this.$api.navigateTo(`/pages/user/order/success?data=${JSON.stringify({data:data})}`)
-					}else if(response.code === 2){
+					}else{
 						this.submitState ='confirm'
 						this.$util.msg('订单提交成功',3000,true,'success')
 						setTimeout(()=>{
 							this.$api.redirectTo(`/pages/user/order/order-payment?type=${this.submitState}&orderID=${response.data.orderID}`)
 						},3000)
-					}else{
-						this.$util.msg(response.msg,3000);
 					}
-				}).catch(error =>{})
+				}).catch(error =>{
+					this.$util.msg(error.msg,3000);
+				})
 			},
 			handFreightAlertShow(){//显示邮费弹窗
 				this.isfreightTip = true;
@@ -477,27 +476,27 @@
 		z-index: 998;
 		color: $text-color;
 		.footer-le{
-			width:550rpx;
+			width:570rpx;
 			height:100%;
 			float: left;
 		}
 		.footer-count{
 			float: left;
 			padding-left: 24rpx;
-			width: 200rpx;
+			width:180rpx;
 			box-sizing: border-box;
 		}
 		.footer-price{
-			width: 350rpx;
+			width:370rpx;
 			float: right;
 			text-align: right;
 			color: $text-color;
-			padding-right: 24rpx;
+			padding: 10rpx 20rpx 10rpx 0;
 			box-sizing: border-box;
 			.sum-none{
 				width: 100%;
-				height: 55rpx;
-				line-height: 55rpx;
+				height: 45rpx;
+				line-height: 45rpx;
 				color: $text-color;
 				float: left;
 				text-align: right;
@@ -514,17 +513,18 @@
 				.money-reduced{
 					margin-left: 10rpx;
 					font-size: $font-size-26;
-					color: #ff2a2a;
-					.iconfont{
-						font-size: $font-size-34;
-					}
+					color:$color-system;
 				}
 			}
 			.sum{
 				width: 100%;
-				height: 55rpx;
-				line-height: 55rpx;
+				height: 45rpx;
+				line-height: 45rpx;
 				float: left;
+				&.none{
+					height: 90rpx;
+					line-height: 90rpx;
+				}
 				.price{
 					font-size: $font-size-32;
 					color: #FF2A2A;
@@ -536,7 +536,7 @@
 			display:flex;
 			align-items:center;
 			justify-content: center;
-			width: 200rpx;
+			width: 180rpx;
 			height: 100%;
 			color: #FFFFFF;
 			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);

+ 13 - 2
pages/user/order/order-details.vue

@@ -8,7 +8,7 @@
 			<!-- 订单信息 -->
 			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
 			<!-- 商品 -->
-			<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData"></goods-list>
+			<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData" @popupClick="hanldePopupFn"></goods-list>
 			<!-- 发票信息 -->
 			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
 			<!-- 转账信息 -->
@@ -37,6 +37,8 @@
 					  v-if="isShareModal"  
 					  @shareConfirm ='onShareAppMessage'>
 		</share-alert>		
+		<!-- 促销活动弹窗 -->
+		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
 	</view>
 </template>
 
@@ -52,6 +54,8 @@
 	import orderButton from '@/components/cm-module/orderDetails/orderButton'			 //底部按钮
 	import shareAlert from '@/components/cm-module/modelAlert/shareAlert.vue'			 //分享弹窗
 	import orderModel from '@/components/cm-module/modelAlert/order-alert'			 //付款弹窗
+	import activiPopup from "@/components/cm-module/orderDetails/activipopu"		//促销活动弹窗
+	
 	import { queryOrderDetails,cancelOrder,deleteOrder,confirmReceipt,affirmOrder } from "@/api/order.js" 
 	export default {
 		components:{
@@ -65,7 +69,8 @@
 			refundRecord,
 			orderButton,
 			shareAlert,
-			orderModel
+			orderModel,
+			activiPopup
 		},
 		data() {
 			return {
@@ -99,6 +104,8 @@
 				systeminfo: this.setSysteminfo(),		 //获取设备信息
 				isIphoneX:this.$store.state.isIphoneX,
 				CustomBar:this.CustomBar,// 顶部导航栏高度
+				popupShow:false,
+				handlerPros:{},
 				nvabarData: {							 //顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标   1表示显示    0表示不显示
 					title: '订单详情', // 导航栏 中间的标题
@@ -279,6 +286,10 @@
 					imageUrl:'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
 				}
 			},
+			hanldePopupFn(data){//监听活动内容
+				this.popupShow = true
+				this.handlerPros = data
+			},
 			getHeaderTopHeight(){
 				let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
 				let headerPosi = this.headerBtnPosi

+ 128 - 56
pages/user/order/order-list.vue

@@ -29,37 +29,51 @@
 									</view>
 									<view class="order-title-b">
 										<view class="order-title-btxt tui-skeleton-fillet">下单时间:{{order.orderTime}}</view>
-										<view class="order-title-tip tui-skeleton-fillet">{{orderStateExp(order.status)}}</view>
+										<view class="order-title-tip tui-skeleton-fillet">{{ StateExpFormat(order.status) }}</view>
 									</view>
 								</view>
 								<block v-for="(shop,index) in order.shopOrderList" :key="index">
 									<view class="goods-title">
-										<view class="title-logo tui-skeleton-fillet"><image :src="shop.shopLogo" mode=""></image></view>
+										<view v-if="shop.shopPromotion" class="floor-item-act">
+											<view class="floor-tags">{{shop.shopPromotion.name}}</view>	
+										</view>
 										<view class="title-text tui-skeleton-fillet">{{shop.shopName}}</view>
 									</view>
 									<view class="goods-item" v-for="(pros,prosIndex) in shop.orderProductList" :key="prosIndex">
 										<view class="goods-pros-t">
-											<view class="pros-img tui-skeleton-fillet"><image :src="pros.productImage" alt="" /></view>
-											<view class="pros-product">
+											<view class="pros-img tui-skeleton-fillet">
+												<image :src="pros.productImage" alt="" />
+												<text class="tips" v-if="pros.productType ==2 || pros.productType ==1">赠品</text>
+											</view>
+											<view class="pros-product clearfix">
 												<view class="producttitle tui-skeleton-fillet">{{pros.name}}</view>
 												<view class="productspec tui-skeleton-fillet" v-if="pros.productCategory!=2">规格:{{pros.productUnit}}</view>
 												<view class="productprice">
 													<view class="price tui-skeleton-fillet">
-														<text>¥{{pros.price.toFixed(2)}}</text>
+														<text>¥{{pros.price | NumFormat}}</text>
 													</view>
 													<view class="count tui-skeleton-fillet">
 														<text class="small">x</text>{{pros.num}}
 													</view>
 												</view>
+												<view class="floor-item-act" v-if="pros.productPromotion!=null">
+													<view v-if="PromotionsFormat(pros.productPromotion)"  class="floor-tags">
+														{{pros.productPromotion.name}}
+														<text v-if ="pros.productPromotion!=null">
+															:¥{{ pros.productPromotion == null ? '0.00' : pros.productPromotion.touchPrice | NumFormat}}
+														</text>
+													</view>
+													<view v-else class="floor-tags">{{pros.productPromotion.name}}</view>	
+												</view>
 											</view>	
 										</view>
 									</view>	
 								</block>
 								<view class="order-footer">
-									<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{orderPriceToFixed(order.discountFee)}}</view>
+									<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{order.discountFee | NumFormat}}</view>
 									<view class="order-footer-bot">
 										<view class="count tui-skeleton-fillet">共{{order.productCount}}件商品</view>
-										<view class="money tui-skeleton-fillet">待付总额:¥{{orderPriceToFixed(order.pendingPayments)}}</view>
+										<view class="money tui-skeleton-fillet">待付总额:¥{{ order.pendingPayments | NumFormat }}</view>
 									</view>
 								</view>
 								<!-- 底部button -->
@@ -175,6 +189,11 @@
 				}
 			});
 		},
+		filters:{
+			NumFormat(value) {//处理金额
+				return Number(value).toFixed(2);
+			},
+		},	
 		methods: {
 			// 滚动切换标签样式
 			onChange: function(e) {
@@ -239,7 +258,7 @@
 						queryOrderList(params).then(response =>{
 							let orderList = response.data.results.filter(item=>{
 								//添加不同状态下订单的表现形式
-								item = Object.assign(item, this.orderStateExp(item.state));
+								item = Object.assign(item, this.StateExpFormat(item.state));
 								return item;
 							});
 							orderItem.orderList =[];
@@ -439,34 +458,6 @@
 					imageUrl:'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
 				}
 			},
-			//订单状态文字和颜色
-			orderStateExp (state){
-				let stateText = '',
-					stateTextObject={
-						0:'待确认',
-						4:'交易完成',
-						5:'订单完成',
-						6:'已关闭',
-						7:'交易全退',
-						77:'交易全退',
-						11:'待付款待发货',
-						12:'待付款部分发货',
-						13:'待付款已发货',
-						21:'部分付款待发货',
-						22:'部分付款部分发货',
-						23:'部分付款已发货',
-						31:'已付款待发货',
-						32:'已付款部分发货',
-						33:'已付款已发货',
-						111:'待付款待发货',
-					}
-				Object.keys(stateTextObject).forEach(key => {
-					if(key == state){
-						stateText = stateTextObject[key]
-					}
-				})
-				return stateText;
-			},
 			orderPriceToFixed (n){
 				let price ='';
 				price = n.toFixed(2);
@@ -500,6 +491,43 @@
 					},
 				})
 				return systeminfo
+			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
+			StateExpFormat(state){ //订单状态文字和颜色
+				var HtmlStateText = '',
+					stateTextObject={
+						0:'待确认',
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货'
+					};
+				Object.keys(stateTextObject).forEach(function(key){
+					if(key == state){
+						HtmlStateText = stateTextObject[key]
+					}
+				});
+				return HtmlStateText;
 			}
 		},
 		onPageScroll(e) {
@@ -671,29 +699,39 @@
 	}
 	.goods-title{
 		width: 100%;
-		height: 48rpx;
+		height: 56rpx;
 		float: left;
-		margin-top: 24rpx;
-		.title-logo{
-			width: 48rpx;
-			height: 48rpx;
+		margin-top:10rpx;
+		.floor-item-act{
+			height: 56rpx;
+			text-align: center;
+			box-sizing: border-box;
 			float: left;
-			image{
-				width: 48rpx;
-				height: 48rpx;
+			padding: 10rpx 0;
+			margin-right: 12rpx;
+			.floor-tags{
+				float: left;
+				height: 36rpx;
+				border-radius: 4rpx;
+				background-color: rgba(225, 86, 22, 0.1);
+				line-height: 36rpx;
+				color: $color-system;
+				text-align: center;
+				display: inline-block;
+				padding:0 16rpx;
+				font-size: $font-size-20;
 			}
 		}
 		.title-text{
-			width: 630rpx;
+			width: 400rpx;
 			overflow: hidden;
 			text-overflow:ellipsis;
 			white-space: nowrap;
 			float: left;
-			margin-left: 16rpx;
 			font-size: $font-size-28;
 			color: $text-color;
 			text-align: left;
-			line-height: 48rpx;
+			line-height: 56rpx;
 			font-weight: bold;
 		}
 	}
@@ -702,30 +740,45 @@
 		height: auto;
 	}	
 	.goods-pros-t{
-		display: flex;
-		align-items: center;
 		width: 100%;
-		height: 217rpx;
+		height: auto;
 		padding:24rpx 0;
 		.pros-img{
+			float: left;
 			width: 210rpx;
 			height: 100%;
 			border-radius: 10rpx;
 			margin:0 26rpx 0 0;
-			border:1px solid #f3f3f3;
+			position: relative;
+			.tips{
+				display: inline-block;
+				width: 80rpx;
+				height: 40rpx;
+				background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+				line-height: 40rpx;
+				text-align: center;
+				font-size: $font-size-24;
+				color: #FFFFFF;
+				border-radius:10rpx 0 10rpx 0 ;
+				position: absolute;
+				top:0;
+				left: 0;
+			}
 			image{
-				width: 100%;
-				height: 100%;
+				width: 210rpx;
+				height: 210rpx;
 				border-radius: 10rpx;
+				border:1px solid #f3f3f3;
 			}
 		}
 	}
 	.pros-product{
-		width: 468rpx;
+		width: 460rpx;
 		height: 100%;
 		line-height: 36rpx;
 		font-size: $font-size-26;	
 		position: relative;
+		float: left;
 		.producttitle{
 			width: 100%;
 			display: inline-block;
@@ -744,9 +797,8 @@
 		}
 		.productprice{
 			height: 48rpx;
-			position: absolute;
 			width: 100%;
-			bottom: 0;
+			float: left;
 			.price{
 				line-height: 48rpx;
 				font-size: $font-size-28;
@@ -764,6 +816,26 @@
 				}
 			}
 		}
+		.floor-item-act{
+			width: 100%;
+			height: 56rpx;
+			text-align: center;
+			box-sizing: border-box;
+			float: left;
+			padding:0 0 10rpx 0;
+			.floor-tags{
+				float: left;
+				height: 36rpx;
+				border-radius: 4rpx;
+				background-color: rgba(225, 86, 22, 0.1);
+				line-height: 36rpx;
+				color: $color-system;
+				text-align: center;
+				display: inline-block;
+				padding:0 16rpx;
+				font-size: $font-size-20;
+			}
+		}
 	}
 	.order-footer{
 		width: 100%;

+ 12 - 1
pages/user/order/order-sharedetails.vue

@@ -5,7 +5,7 @@
 		<!-- 订单信息 -->
 		<order-information ref="information" v-if="isRequest" :information="information"></order-information>
 		<!-- 商品 -->
-		<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData"></goods-list>
+		<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData" @popupClick="hanldePopupFn"></goods-list>
 		<!-- 发票信息 -->
 		<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
 		<!-- 转账记录 -->
@@ -18,6 +18,8 @@
 		<view class="button-content" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
 			<view class="btn btn-query" v-if="btnState.isQuery" @click.stop="queryLogistics">查看物流</view>
 		</view>
+		<!-- 促销活动弹窗 -->
+		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
 	</view>
 </template>
 
@@ -29,6 +31,8 @@
 	import transfeRecord from '@/components/cm-module/orderDetails/transfeRecord'		 //转账信息
 	import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord'		 //支付记录
 	import refundRecord from '@/components/cm-module/orderDetails/refundRecord'		 //退款记录
+	import activiPopup from "@/components/cm-module/orderDetails/activipopu"		//促销活动弹窗
+	
 	import { queryOrderDetails } from "@/api/order.js"
 	
 	export default {
@@ -40,6 +44,7 @@
 			transfeRecord,
 			paymentRecord,
 			refundRecord,
+			activiPopup
 		},
 		data() {
 			return {
@@ -58,6 +63,8 @@
 				receiptAmount:0,			//支付金额
 				returnedPurchaseFee:0,		//退款金额
 				isIphoneX:this.$store.state.isIphoneX,
+				popupShow:false,
+				handlerPros:{},
 				btnState:{
 					isQuery:false
 				},
@@ -97,6 +104,10 @@
 					this.$util.msg(error.msg,2000);
 				})
 			},
+			hanldePopupFn(data){//监听活动内容
+				this.popupShow = true
+				this.handlerPros = data
+			},
 			queryLogistics(){//跳转查询物流页面
 				this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+this.orderID)
 			},

+ 2 - 3
seller/pages/address/address.vue

@@ -50,7 +50,6 @@
 <script>
 	import authorize from '@/common/config/authorize.js'	
 	import modelAlert from '@/components/cm-module/modelAlert/modelAlert.vue'
-	import { queryAddressList , deleteNewAddress } from '@/api/cart.js'
 	export default {
 		components:{
 			modelAlert
@@ -99,7 +98,7 @@
 				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
 					this.userID = resolve.userID
 					let params = {pageNum:this.pageNum,pageSize:this.pageSize,userID:this.userID}
-					queryAddressList(params).then(response =>{
+					this.UserService.QueryAddressList(params).then(response =>{
 						if(response.data.results == ''){
 							this.isEmpty = true
 						}else{
@@ -138,7 +137,7 @@
 			//删除收货地址
 			deleteAddress(id){
 				this.$util.modal('','确定要删除该地址?','确定','取消',true,() =>{
-					deleteNewAddress({addressID:id,userID:this.userID}).then(response =>{
+					this.UserService.DeleteNewAddress({addressID:id,userID:this.userID}).then(response =>{
 						this.$util.msg('删除成功',2000,true,'success')
 						setTimeout(() =>{
 							this.pageNum = 1;

+ 1 - 2
seller/pages/address/addressManage.vue

@@ -45,7 +45,6 @@
 <script>	
 	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
 	import authorize from '@/common/config/authorize.js'	
-	import { addNewAddress,updateAddress } from '@/api/cart.js'
 	export default {
 		components:{
 			mpvueCityPicker
@@ -143,7 +142,7 @@
 			},
 			postAddressData(res){
 				this.btnText(true)
-				addNewAddress(res).then( response=>{
+				this.UserService.AddNewAddress(res).then( response=>{
 					this.$util.msg('保存成功',2000,true,'success')
 					this.btnText(false)
 					setTimeout(()=>{

+ 2 - 4
seller/pages/order/create-order.vue

@@ -68,8 +68,6 @@
 	import sellerFreight from '@/components/cm-module/creatOrder/sellerFreight'
 	import freightAlert from '@/components/cm-module/modelAlert/freightAlert.vue'
 	import modalLayer from "@/components/modal-layer"
-	import { queryAddressList } from "@/api/cart.js" 
-	import { getOrderPostage } from "@/api/order.js" 
 	import { sellerSettlement,sellerCreateOrderSubmit } from "@/api/seller.js" 
 	export default {
 		components:{
@@ -171,7 +169,7 @@
 							totalPrice:this.allPrice,
 							townId:this.addressData.townID
 						}
-					getOrderPostage(params).then(response =>{
+					this.OrderService.GetOrderPostage(params).then(response =>{
 						this.isFreight = true
 						this.freightData = response.data
 						if(response.data.freePostFlag== 1){
@@ -184,7 +182,7 @@
 			},
 			getAddressData(){//获取地址信息
 				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-					queryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
+					this.UserService.QueryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
 						this.isAddress = true
 						this.addressData = {}
 						if(response.data.results != ''){

+ 2 - 2
services/ajax.env.js

@@ -2,8 +2,8 @@ let URL_CONFIG = ""
 if(process.env.NODE_ENV === 'development'){
     // 开发环境
 	// URL_CONFIG = 'http://192.168.2.68:8008'	 //本地IP联调地址
-	URL_CONFIG = 'http://192.168.2.67:8008'	 //裴裴联调地址
-	// URL_CONFIG = 'http://192.168.2.75:8008'	 //超超联调地址
+	// URL_CONFIG = 'http://192.168.2.67:8008'	 //裴裴联调地址
+	URL_CONFIG = 'http://192.168.2.75:8008'	 //超超联调地址
     // URL_CONFIG = 'https://spi-b.caimei365.com'	 //采美测试地址
 	// URL_CONFIG = 'https://spi.caimei365.com'
 }else{

+ 0 - 1
services/ajax.service.js

@@ -48,7 +48,6 @@ class AjaxService {
 				},
 				fail: error => {
 					reject(error)
-					// msg(error)
 					wx.hideLoading()
 				}
 			})

+ 15 - 1
services/order.service.js

@@ -13,7 +13,21 @@ export default class OrderService {
 	 *@param productIds 商品IDs
 	 */
 	CreateOrderInfo (data = {}) {
-		return this.AjaxService.get({ url:'/order/confirm', data, isLoading: false })
+		return this.AjaxService.get({ url:'/order/confirm', data, isLoading: true })
+	}
+	/**
+	 *@确认订单-获取邮费信息
+	 *@param productIds 商品ID【”,”分割】
+	 *@param totalPrice	商品总额
+	 *@param userId		用户ID
+	 *@param townID		地址区ID
+	 */
+	GetOrderPostage (data = {}) {
+		return this.AjaxService.get({ url:'/order/postage', data, isLoading: false })
+	}
+	/* 提交订单 orderId 订单ID */
+	CreatedOrderSubmit (data = {}) {
+		return this.AjaxService.post({ url:'/order/submit', data, isLoading: true })
 	}
 	/* 订单支付,效验付款规则 orderId 订单ID */
 	OrderPaymentValidation (data = {}) {

+ 2 - 2
services/product.service.js

@@ -14,7 +14,7 @@ export default class ProductService {
 	 * @param:pageSize 每页条数
 	 */
 	queryProductPreferred (data = {}) {
-		return this.AjaxService.get({ url:'/product/preferred', data, isLoading: true })
+		return this.AjaxService.get({ url:'/product/preferred', data, isLoading: false })
 	}
 	
 	/**
@@ -66,7 +66,7 @@ export default class ProductService {
 	 * @购物车列表
 	 * @param:userId 用户ID(必填)
 	 */
-	queryShoppingCartList (data = {}) {
+	QueryShoppingCartList (data = {}) {
 		return this.AjaxService.get({ url:'/shoppingCart/list', data, isLoading: false })
 	}
 	

+ 25 - 0
services/user.service.js

@@ -14,4 +14,29 @@ export default class UserService {
 	LoginUsers (data = {}) {
 		return this.AjaxService.post({ url:'', data, isLoading: true })
 	}
+	/**
+	 * @机构-地址列表
+	 * @param:userId 用户ID(必传),
+	 * @param:pageNum 页码
+	 * @param:pageSize 每页条数
+	 */
+	QueryAddressList (data = {}) {
+		return this.AjaxService.get({ url:'/personalCenter/findAddress', data, isLoading: true })
+	}
+	/**
+	 * @机构-添加&&修改地址
+	 * @param:userId 用户ID(必传),
+	 * @param:地址信息,
+	 */
+	AddNewAddress (data = {}) {
+		return this.AjaxService.post({ url:'/personalCenter/saveAddress', data, isLoading: true })
+	}
+	/**
+	 * @机构-删除地址
+	 * @param:userId 用户ID(必传),
+	 * @param:地址信息,
+	 */
+	DeleteNewAddress (data = {}) {
+		return this.AjaxService.get({ url:'/personalCenter/deleteAddress', data, isLoading: true })
+	}
 }