Quellcode durchsuchen

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

# Conflicts:
#	common/config/caimeiApi.js
#	pages/user/member/member-pay.vue
zhengjinyi vor 3 Jahren
Ursprung
Commit
f07c802ae0
92 geänderte Dateien mit 5068 neuen und 1657 gelöschten Zeilen
  1. 12 3
      common/config/caimeiApi.js
  2. 23 3
      common/css/iconfont.scss
  3. 33 46
      components/cm-module/cart-components/index.vue
  4. 6 0
      components/cm-module/cm-seller/home.vue
  5. 2 2
      components/cm-module/cm-seller/user.vue
  6. 2 2
      components/cm-module/creatOrder/goodsList.vue
  7. 1 1
      components/cm-module/creatOrder/sellerGoodsList.vue
  8. 3 1
      components/cm-module/homeIndex/navbars.vue
  9. 118 0
      components/cm-module/homeIndex/notice.vue
  10. 9 1
      components/cm-module/homeIndex/pageSpecial.vue
  11. 27 4
      components/cm-module/listTemplate/buyagainList.vue
  12. 27 4
      components/cm-module/listTemplate/immediatelyList.vue
  13. 25 2
      components/cm-module/listTemplate/productList.vue
  14. 4 4
      components/cm-module/listTemplate/richTextTemplate.vue
  15. 90 94
      components/cm-module/orderDetails/goodsList.vue
  16. 17 17
      components/cm-module/orderDetails/orderInformation.vue
  17. 5 4
      components/cm-module/orderDetails/paymentRecord.vue
  18. 5 17
      components/cm-module/orderDetails/sellerDetaileButton.vue
  19. 18 5
      components/cm-module/orderDetails/sellerOrderButton.vue
  20. 4 1
      components/cm-module/pageFloorTemplate/templateA.vue
  21. 4 1
      components/cm-module/pageFloorTemplate/templateB.vue
  22. 4 1
      components/cm-module/pageFloorTemplate/templateC.vue
  23. 4 1
      components/cm-module/pageFloorTemplate/templateD.vue
  24. 4 1
      components/cm-module/pageFloorTemplate/templateE.vue
  25. 4 1
      components/cm-module/pageFloorTemplate/templateF.vue
  26. 4 1
      components/cm-module/pageFloorTemplate/templateG.vue
  27. 4 1
      components/cm-module/pageFloorTemplate/templateI.vue
  28. 4 1
      components/cm-module/pageFloorTemplate/templateJ.vue
  29. 4 1
      components/cm-module/pageFloorTemplate/templateK.vue
  30. 4 1
      components/cm-module/pageTemplate/templateA.vue
  31. 4 2
      components/cm-module/pageTemplate/templateB.vue
  32. 4 1
      components/cm-module/pageTemplate/templateC.vue
  33. 4 1
      components/cm-module/pageTemplate/templateD.vue
  34. 5 1
      components/cm-module/pageTemplate/templateE.vue
  35. 4 1
      components/cm-module/pageTemplate/templateF.vue
  36. 4 1
      components/cm-module/pageTemplate/templateG.vue
  37. 4 1
      components/cm-module/pageTemplate/templateH.vue
  38. 4 1
      components/cm-module/pageTemplate/templateI.vue
  39. 4 1
      components/cm-module/pageTemplate/templateJ.vue
  40. 4 1
      components/cm-module/pageTemplate/templateK.vue
  41. 70 0
      components/cm-module/pageTemplate/templateType.vue
  42. 4 0
      components/cm-module/productDetails/secondParameters.vue
  43. 16 10
      components/cm-module/supplier/home.vue
  44. 2 2
      main.js
  45. 3 0
      manifest.json
  46. 46 0
      pages.json
  47. 25 4
      pages/goods/goods-active.vue
  48. 26 3
      pages/goods/goods-classify.vue
  49. 20 2
      pages/goods/goods-supporting.vue
  50. 163 74
      pages/goods/product.vue
  51. 31 41
      pages/login/apply.vue
  52. 14 14
      pages/login/bindOperator.vue
  53. 32 48
      pages/login/information.vue
  54. 6 3
      pages/search/search-supplier.vue
  55. 28 5
      pages/search/search.vue
  56. 545 336
      pages/second/form/form-seller.vue
  57. 550 341
      pages/second/form/form.vue
  58. 4 4
      pages/second/form/introduce.vue
  59. 18 0
      pages/seller/cart/cart.vue
  60. 6 36
      pages/seller/cart/coupon-share.vue
  61. 3 3
      pages/seller/club/addoperator.vue
  62. 2 2
      pages/seller/order/create-order.vue
  63. 10 7
      pages/seller/order/order-details.vue
  64. 4 4
      pages/seller/order/order-historylist.vue
  65. 1 0
      pages/seller/order/order-list.vue
  66. 53 0
      pages/service/news-detailes.vue
  67. 207 0
      pages/service/news-list.vue
  68. 18 1
      pages/supplier/user/my-shop.vue
  69. 6 0
      pages/tabBar/home/index.vue
  70. 21 1
      pages/user/collection/collection.vue
  71. 6 36
      pages/user/coupon/coupon-activity.vue
  72. 6 36
      pages/user/coupon/coupon-collection.vue
  73. 16 0
      pages/user/coupon/coupon-product.vue
  74. 12 8
      pages/user/member/member-pay.vue
  75. 15 15
      pages/user/operator/list.vue
  76. 7 3
      pages/user/order/create-order.vue
  77. 49 40
      pages/user/order/order-details.vue
  78. 34 47
      pages/user/order/order-list.vue
  79. 273 0
      pages/user/order/order-pay-list.vue
  80. 202 17
      pages/user/order/order-pay.vue
  81. 752 0
      pages/user/order/order-payhlb.vue
  82. 52 51
      pages/user/order/order-payment.vue
  83. 507 0
      pages/user/order/order-payunder.vue
  84. 3 9
      pages/user/order/order-sharelogin.vue
  85. 149 0
      pages/user/order/order-success-tips.vue
  86. 188 0
      pages/user/order/order-success.vue
  87. 1 1
      plugins/uma/index.js
  88. 165 147
      services/common.service.js
  89. 61 1
      services/pay.service.js
  90. 2 2
      services/public.service.js
  91. 44 40
      services/second.service.js
  92. 78 31
      utils/mixins/wechatPay.js

+ 12 - 3
common/config/caimeiApi.js

@@ -256,7 +256,8 @@ const caimeiApi = {
                     23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,
                     24:'/pages/user/coupon/coupon',
                     25:'/pages/goods/goods-doc-list',//美业资料
-                    28:`/pages/h5/article/path?link=${pros.link}` // 采美认证通
+                    28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
+                    29:'/pages/user/coupon/coupon-collection',//领券中心
                 }
                 const url = typeMap[pros.linkType]
                 uni.navigateTo({
@@ -285,10 +286,12 @@ const caimeiApi = {
                 18:`/pages/h5/article/path?link=${linkHref}`,
                 19:`/pages/search/search-supplier?keyWord=${keyword}`,
                 21:'/pages/h5/activity/meobohui',
-                // '-1':`/pages/h5/article/path?link=${pros.link}`
+                // '-1':`/pages/h5/article/path?link=${linkHref}`
                 24:'/pages/user/coupon/coupon',
                 25:'/pages/goods/goods-doc-list',  //美业资料
-                28:`/pages/h5/article/path?link=${linkHref}` // 采美认证通
+                28:`/pages/h5/article/path?link=${linkHref}`, // 采美认证通
+				29:'/pages/user/coupon/coupon-collection',//领券中心
+
             }
             const url = typeMap[linkType]
             uni.navigateTo({
@@ -320,6 +323,11 @@ const caimeiApi = {
             url:url
         })
     },
+	navigateBack:function(page){
+	    uni.navigateBack({
+		    delta: page
+	    })
+	},
     isNumber:function(value){//验证是否为数字
 	    var patrn = /^(-)?\d+(\.\d+)?$/
 	    if (patrn.exec(value) == null || value == '') {
@@ -418,6 +426,7 @@ module.exports = {
     reLaunch: caimeiApi.reLaunch,
     redirectTo: caimeiApi.redirectTo,
     switchTabTo: caimeiApi.switchTabTo,
+    navigateBack: caimeiApi.navigateBack,
     formatDate: caimeiApi.formatDate,
     loginStatus: caimeiApi.loginStatus,
     setStorage: caimeiApi.setStorage,

+ 23 - 3
common/css/iconfont.scss

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 1519039 */
-  src: url('//at.alicdn.com/t/font_1519039_9e2bfkcum7.woff2?t=1642663000447') format('woff2'),
-       url('//at.alicdn.com/t/font_1519039_9e2bfkcum7.woff?t=1642663000447') format('woff'),
-       url('//at.alicdn.com/t/font_1519039_9e2bfkcum7.ttf?t=1642663000447') format('truetype');
+  src: url('//at.alicdn.com/t/font_1519039_w6mj588b15f.woff2?t=1647943328937') format('woff2'),
+       url('//at.alicdn.com/t/font_1519039_w6mj588b15f.woff?t=1647943328937') format('woff'),
+       url('//at.alicdn.com/t/font_1519039_w6mj588b15f.ttf?t=1647943328937') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,26 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-fuzhi_o:before {
+  content: "\eb4e";
+}
+
+.icon-shibai:before {
+  content: "\e735";
+}
+
+.icon-wancheng:before {
+  content: "\e734";
+}
+
+.icon-daewangyinzhuanzhang:before {
+  content: "\e732";
+}
+
+.icon-xiaochengxu:before {
+  content: "\e731";
+}
+
 .icon-riqi:before {
   content: "\e66a";
 }

+ 33 - 46
components/cm-module/cart-components/index.vue

@@ -64,7 +64,8 @@
 										</view>
 										<view class="pros-img" @click.stop="navToListPage(pros.productId)"
 											><image :src="pros.image ? pros.image : ''" alt=""
-										/></view>
+										/><view class="pros-type" v-if="pros.productType == 2">医疗器械</view>
+										</view>
 										<view class="pros-product">
 											<view class="producttitle" @click.stop="navToListPage(pros.productId)">{{
 												pros.name
@@ -205,6 +206,7 @@
 									<text class="img-tip">失效</text>
 									<view class="pros-img">
 										<image :src="failure.image ? failure.image : ''" alt="" />
+										<view class="pros-type" v-if="failure.productType == 2">医疗器械</view>
 									</view>
 									<view class="pros-product">
 										<view class="producttitle">{{ failure.name }}</view>
@@ -478,9 +480,11 @@ import tuiNomore from '@/components/tui-components/nomore/nomore'
 import activiPopup from '@/components/cm-module/productDetails/cm-activipopu'
 import couponTabs from '@/components/cm-module/coupon/tui-tabs.vue'
 import modalLayer from '@/components/modal-layer'
+import wechatPay from '@/utils/mixins/wechatPay.js'
 import { mapState, mapMutations } from 'vuex'
 export default {
 	name: 'cartComponents',
+	mixins: [wechatPay],
 	props: {
 		pathType: {
 			type: Number
@@ -1372,6 +1376,9 @@ export default {
 			})
 		},
 		goSuppile(shop) {//跳转店铺
+			if(shop.shopType === 2){
+				return
+			}
 			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
 		},
 		goNavto(url) {
@@ -1516,51 +1523,15 @@ export default {
 		},
 		async MiniWxPayFor(coupon,couponRecordId){
 			const wechatcode = await authorize.getCode('weixin')
-			this.PayService.WeChatCouponMiniWxPay(
-				{
-					userId: this.userId,
-					couponId: coupon.couponId,
-					couponRecordId:couponRecordId,
-					payWay: 'WEIXIN',
-					code: wechatcode,
-					source: 1 //支付来源 1 小程序 2 WWW
-				}
-			)
-			.then(response => {
-				// 友盟埋点收集微信支付
-				if (process.env.NODE_ENV != 'development') {
-					this.$uma.trackEvent('Um_Event_cartCouponPay', {
-						Um_Key_PageName: '机构购物车',
-						Um_Key_SourcePage: '线上支付优惠券',
-						Um_Key_CouponId: `${coupon.couponId}`,
-						Um_Key_userId: `${this.userId}`
-					})
-				}
-				let PayInfo = JSON.parse(response.data.data.payInfo)
-				this.WxRequestPayment(PayInfo)
-			})
-			.catch(error => {
-				this.$util.msg(error.msg, 2000)
-			})
-		},
-		WxRequestPayment(data){
-			let self = this
-			wx.requestPayment({
-				'timeStamp': data.timeStamp,
-				'nonceStr': data.nonceStr,
-				'package': data.package,
-				'signType': data.signType,
-				'paySign': data.paySign,
-				'success':function(res){
-					wx.reLaunch({url: '/pages/tabBar/user/user'})
-				},
-				'fail':function(res){
-					self.$util.msg('用户取消支付~')
-				},
-				'complete':function(res){
-		
-				}
-			})
+			const params = {
+				userId: this.userId,
+				couponId: coupon.couponId,
+				couponRecordId:couponRecordId,
+				payType:'XCX',
+				code: wechatcode,
+				source: 1 //支付来源 1 小程序 2 WWW
+			}
+			this.weChatMiniCouponWxPay(params,'Um_Event_cartCouponPay','机构购物车','线上支付优惠券',coupon.couponId,this.userId)
 		},
 		hideMobel(){
 			this.modal = false
@@ -1796,11 +1767,27 @@ page {
 			border-radius: 10rpx;
 			margin: 0 20rpx;
 			border: 1px solid #f3f3f3;
+			position: relative;
 			image {
 				width: 100%;
 				height: 100%;
 				border-radius: 10rpx;
 			}
+			.pros-type{
+				width: 64rpx;
+				height: 64rpx;
+				text-align: justify;
+				box-sizing: border-box;
+				padding: 10rpx;
+				border-radius: 0 0 8rpx 8rpx;
+				background-color: #33CCBF;
+				font-size: $font-size-22;
+				color: #FFFFFF;
+				line-height: 25rpx;
+				position: absolute;
+				top: 0;
+				right: 10rpx;
+			}
 		}
 	}
 	.goods-pros-b {

+ 6 - 0
components/cm-module/cm-seller/home.vue

@@ -8,6 +8,8 @@
 			<banner :list="bannerImageList" v-if="isNavRequest"></banner>
 			<!-- 金刚区菜单 -->
 			<navbars :list="navBarsList" v-if="isNavRequest"></navbars>
+			<!-- 轮播公告 -->
+			<notice :list="newsList" v-if="isNavRequest && newsList.length>0 "></notice>
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest"></page-special>
 		</view>	
@@ -29,6 +31,7 @@
 	import customer from '@/components/cm-module/homeIndex/customer.vue'
 	import banner from '@/components/cm-module/homeIndex/banner.vue'
 	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
+	import notice from '@/components/cm-module/homeIndex/notice.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
@@ -39,6 +42,7 @@
 			customer,
 			banner,
 			navbars,
+			notice,
 			pageFloor,
 			pageSpecial,
 			supplierList
@@ -65,6 +69,7 @@
 				flootData:[],//楼层
 				bannerImageList:[],//轮播
 				navBarsList:[],//导航分类
+				newsList:[],				// 公告
 				templateData:{},
 				pageList:[],//楼层
 				supplierObj:{},//供应商列表
@@ -116,6 +121,7 @@
 					this.mallPageModules = data.mallPageModules
 					this.skeletonShow = false
 					this.navBarsList = data.topMenuList
+					this.newsList = data.annlist
 					this.isNavRequest = true
 					this.GetHomeTopDataInfo()
 					this.GetHomeFloorInfo()

+ 2 - 2
components/cm-module/cm-seller/user.vue

@@ -82,12 +82,12 @@
 			</view>
 			<!-- 底部跳转 -->
 			<view class="foot-list">
-				<view class="list-cell-image" @click="navigator('/pages/user/coupon/coupon-activity')">
+<!-- 				<view class="list-cell-image" @click="navigator('/pages/user/coupon/coupon-activity')">
 					<view class="text">
 						<view class="h1">美博会</view>
 						<view class="p">大额好券等你来领~</view>
 					</view>
-				</view>
+				</view> -->
 				<view class="list-cell-item">
 					<view class="list-cell"  v-for="(item, index) in firstList" :key="index" @click="navigator(item.path)" hover-class="cell-hover" :hover-stay-time="50">
 						<view class="cell-icon">

+ 2 - 2
components/cm-module/creatOrder/goodsList.vue

@@ -13,7 +13,7 @@
 					<view class="goods-pros-t">
 						<view class="pros-img">
 							<image :src="pros.image" alt="" />
-							<text class="tips" v-if="pros.productType ==2 || pros.productType ==1">赠品</text>
+							<text class="tips" v-if="pros.giftType ==2 || pros.giftType ==1">赠品</text>
 						</view>
 						<view class="pros-product">
 							<view class="producttitle">{{pros.name}}</view>
@@ -235,7 +235,7 @@
 					display: -webkit-box;
 					word-break: break-all;
 					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
+					-webkit-line-clamp: 1;
 					overflow: hidden;
 				}
 				.productprice{

+ 1 - 1
components/cm-module/creatOrder/sellerGoodsList.vue

@@ -13,7 +13,7 @@
 					<view class="goods-pros-t">
 						<view class="pros-img">
 							<image :src="pros.image" alt="" />
-							<text class="tips" v-if="pros.productType == 2 || pros.productType == 1">赠品</text>
+							<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1">赠品</text>
 						</view>
 						<view class="pros-product">
 							<view class="producttitle">{{ pros.name }}</view>

+ 3 - 1
components/cm-module/homeIndex/navbars.vue

@@ -58,7 +58,9 @@
 						22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
 						23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,  //活动专题页面
                         25:'/pages/goods/goods-doc-list' ,//美业资料
-                        28:`/pages/h5/article/path?link=${pros.link}` // 采美认证通
+                        28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
+						29:'/pages/user/coupon/coupon-collection',//领券中心
+						
 					 }
 					const url = typeMap[pros.linkType]
 					this.$api.navigateTo(url)

+ 118 - 0
components/cm-module/homeIndex/notice.vue

@@ -0,0 +1,118 @@
+<template>
+	<view>
+		<view class="tui-rolling-view">
+			<view class="tui-rolling-news">
+				<text class="tui-roll-label">公告:</text>
+				<swiper vertical autoplay circular interval="3500" class="tui-swiper">
+					<swiper-item v-for="(item,index) in list" :key="index" class="tui-swiper-item">
+						<view class="tui-news-item" @tap='detail(item)'>
+							<text class="iconfont icon-xiaochengxu"></text>
+							{{item.title}}
+						</view>
+					</swiper-item>
+				</swiper>
+				<view class="tui-roll-more" @tap='newsList(item)'>
+					更多<text class="iconfont icon-xiayibu"></text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:'address',
+		props:{
+			list:{
+				type:Array
+			}
+		},
+		data() {
+			return{
+				
+			}
+		},
+		created(){
+			
+		},
+		computed: {
+	
+		},
+		methods:{
+			detail(item){// 跳转公告详情
+				this.$api.navigateTo(`/pages/service/news-detailes?id=${item.id}`)
+			},
+			newsList(){// 公告列表
+				this.$api.navigateTo('/pages/service/news-list')
+			},
+			swiperChange(e) {//轮播图切换
+				const index = e.detail.current
+				this.current = index
+			},
+			NavToDetailPage(floor) {//跳转
+				this.$api.FlooryNavigateTo(floor)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.tui-rolling-view{
+		width: 100%;
+		height: 88rpx;
+		background-color: #F7F7F7;
+		box-sizing: border-box;
+		padding: 24rpx 24rpx 0 24rpx;
+	}
+	.tui-rolling-news {
+		width: 100%;
+		padding: 0 20rpx;
+		border-radius: 8rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-wrap: nowrap;
+		line-height: 56rpx;
+		background: url('https://static.caimei365.com/app/img/bg/icon-newsbg@2x.png') no-repeat;
+		background-size: cover;
+		.tui-roll-label{
+			font-weight: bold;
+			font-size: $font-size-26;
+			color: #E15616;
+		}
+		.tui-roll-more{
+			font-size: $font-size-24;
+			color: #666666;
+			.icon-xiayibu{
+				font-size: $font-size-22;
+			}
+		}
+	}
+	
+	.tui-swiper {
+		font-size: 28rpx;
+		height: 50rpx;
+		flex: 1;
+	}
+	
+	.tui-swiper-item {
+		display: flex;
+		align-items: center
+	}
+	
+	.tui-news-item {
+		width: 480rpx;
+		line-height: 28rpx;
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		font-size: $font-size-24;
+		color: #666666;
+		.icon-xiaochengxu{
+			font-size: $font-size-24;
+			margin-right: 10rpx;
+		}
+	}
+	
+</style>

+ 9 - 1
components/cm-module/homeIndex/pageSpecial.vue

@@ -155,7 +155,15 @@
 					 	15:`/pages/h5/article/path?link=${pros.link}`,
 					 	17:'/pages/login/register-select',
 					 	18:`/pages/h5/article/path?link=${pros.link}`,
-					 	19:`/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`
+					 	19:`/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`,
+						20:`/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
+						21:'/pages/h5/activity/meobohui',
+						22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
+						23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,  //活动专题页面
+						25:'/pages/goods/goods-doc-list' ,//美业资料
+						28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
+						29:'/pages/user/coupon/coupon-collection',//领券中心
+						
 					}
 					const url = typeMap[pros.linkType]
 					uni.navigateTo({

+ 27 - 4
components/cm-module/listTemplate/buyagainList.vue

@@ -18,7 +18,10 @@
 					class="all-type-list-content commodity-list"
 					@click.stop="navToDetailPage(item.productId)"
 				>
-					<image mode="widthFix" :src="item.image" class="list-img" alt="list-img"></image>
+					<view class="list-details-image">
+						<image mode="widthFix" :src="item.image" class="list-img" alt="list-img"></image>
+						<view class="list-details-type">医疗器械</view>
+					</view>
 					<view class="list-details-info">
 						<text class="list-details-title">{{ item.name }}</text>
 						<text class="list-details-specs">规格:{{ item.unit != null ? item.unit : '' }}</text>
@@ -314,12 +317,32 @@ export default {
 	display: flex;
 	flex-direction: row;
 	box-sizing: content-box;
-	.list-img {
-		width: 240rpx;
-		height: 240rpx !important;
+	.list-details-image{
+		width: 218rpx;
+		height: 218rpx !important;
 		margin-right: 26rpx;
 		border-radius: 10rpx;
 		border: 2rpx solid #f3f3f3;
+		position: relative;
+		.list-img {
+			width: 218rpx;
+			height: 218rpx !important;
+		}
+		.list-details-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 10rpx;
+		}
 	}
 }
 .list-details-info {

+ 27 - 4
components/cm-module/listTemplate/immediatelyList.vue

@@ -51,7 +51,10 @@
 						class="all-type-list-content commodity-list"
 						@click.stop="navToDetailPage(pros.productId)"
 					>
-						<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+						<view class="list-details-image">
+							<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+							<view class="list-details-type" v-if="pros.productType == 2">医疗器械</view>
+						</view>
 						<view class="list-details-info">
 							<text class="list-details-title">{{ isInterceptHtmlFn(pros.name) }}</text>
 							<text class="list-details-specs">规格:{{ pros.unit ? pros.unit : '' }}</text>
@@ -858,12 +861,32 @@ export default {
 	display: flex;
 	flex-direction: row;
 	box-sizing: content-box;
-	.list-img {
-		width: 312rpx;
-		height: 207rpx !important;
+	.list-details-image{
+		width: 218rpx;
+		height: 218rpx !important;
 		margin-right: 26rpx;
 		border-radius: 10rpx;
 		border: 2rpx solid #f3f3f3;
+		position: relative;
+		.list-img {
+			width: 218rpx;
+			height: 218rpx !important;
+		}
+		.list-details-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 10rpx;
+		}
 	}
 }
 .zuhe-list-content {

+ 25 - 2
components/cm-module/listTemplate/productList.vue

@@ -18,7 +18,10 @@
 					class="all-type-list-content commodity-list"
 					@click.stop="navToDetailPage(item.productId)"
 				>
-					<image mode="widthFix" :src="item.image" class="list-img" alt="list-img"></image>
+					<view class="list-details-image">
+						<image mode="widthFix" :src="item.image" class="list-img" alt="list-img"></image>
+						<view class="list-details-type" v-if="item.productType == 2">医疗器械</view>
+					</view>
 					<view class="list-details-info">
 						<text class="list-details-title">{{ item.name }}</text>
 						<text class="list-details-specs">规格:{{ item.unit != null ? item.unit : '' }}</text>
@@ -392,12 +395,32 @@ export default {
 	display: flex;
 	flex-direction: row;
 	box-sizing: content-box;
-	.list-img {
+	.list-details-image{
 		width: 240rpx;
 		height: 240rpx !important;
 		margin-right: 26rpx;
 		border-radius: 10rpx;
 		border: 2rpx solid #f3f3f3;
+		position: relative;
+		.list-img {
+			width: 240rpx;
+			height: 240rpx !important;
+		}
+		.list-details-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 10rpx;
+		}
 	}
 }
 .list-details-info {

+ 4 - 4
components/cm-module/listTemplate/richTextTemplate.vue

@@ -5,8 +5,8 @@
 </template>
 
 <script>
-	import parser from "@/components/jyf-Parser/index"
-	var self;
+	import parser from '@/components/jyf-Parser/index'
+	var self
 	export default{
 		components: {
 		   parser,
@@ -20,7 +20,7 @@
 			}
 		},
 		created(){
-			self = this;		
+			self = this		
 		},
 		methods:{
 
@@ -30,7 +30,7 @@
 
 <style lang="scss">
 	page{
-		background: $sub-bg-color;
+		background: #FFFFFF;
 		border-top: 1px solid #EBEBEB;
 	}
 	.content {

+ 90 - 94
components/cm-module/orderDetails/goodsList.vue

@@ -2,7 +2,7 @@
 	<view class="goods-template">
 		<!-- 商品列表 -->
 		<view class="goods-list">
-			<view v-for="(item, index) in shopOrderData" :key="index" class="goods-item clearfix">
+			<view v-for="(item, index) in list" :key="index" class="goods-item clearfix">
 				<view class="shoptitle">
 					<view v-if="item.shopPromotion" class="floor-item-act">
 						<view class="floor-tags" @click.stop="clickPopupShow(item.shopPromotion)">{{
@@ -13,7 +13,7 @@
 						>{{ item.shopName }}
 						<label class="paymenttext" v-if="information.affirmPaymentFlag == 1">已确认打款供应商</label>
 					</view>
-					<view class="title-text" v-else @click="goShophome(item.shopId)">
+					<view class="title-text" v-else @click="goShophome(item)">
 						{{ item.shopName }} <label class="iconfont icon-jinrudianpu"></label>
 					</view>
 				</view>
@@ -22,7 +22,7 @@
 						<view class="pros-left">
 							<view class="pros-img">
 								<image :src="pros.image" alt="" />
-								<text class="tips" v-if="pros.productType == 2 || pros.productType == 1">赠品</text>
+								<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1">赠品</text>
 							</view>
 						</view>
 						<view class="pros-product">
@@ -38,6 +38,7 @@
 									"
 									>¥{{ pros.price | NumFormat }}</view
 								>
+								<view class="view-num right">x {{ pros.num }}</view>
 							</view>
 							<view class="floor-item-act">
 								<template v-if="pros.productPromotion">
@@ -69,30 +70,23 @@
 									</view>
 								</template>
 							</view>
-							<view class="product-view">
-								<view class="view-num right">x {{ pros.num }}</view>
-							</view>
 						</view>
 					</view>
-					<view class=" product-info">
+					<view class=" product-info clearfix"> 
 						<view class="product-view" v-if="pros.returnedNum > 0 || pros.actualCancelNum > 0">
-							<view class="view-num">已退货/已取消</view>
-							<view class="view-right">{{ pros.returnedNum }}/{{ pros.actualCancelNum }}</view>
+							<view class="view-num">已退货/已取消:<text class="text">{{ pros.returnedNum }}/{{ pros.actualCancelNum }}</text></view>
 						</view>
 						<view class="product-view" v-if="pros.svipPriceType != 1">
-							<view class="view-num">折扣</view>
-							<view class="view-right">{{ pros.discount == null ? '0' : pros.discount }}%</view>
+							<view class="view-num">折扣:<text class="text">{{ pros.discount == null ? '0' : pros.discount }}%</text></view>
 						</view>
 						<view class="product-view">
-							<view class="view-num">税率</view> <view class="view-right">{{ pros.taxRate }}%</view>
+							<view class="view-num">税率:<text class="text">{{ pros.taxRate }}%</text></view>
 						</view>
 						<view class="product-view">
-							<view class="view-num">折后单价</view>
-							<view class="view-right">¥{{ pros.discountPrice | NumFormat }}</view>
+							<view class="view-num">折后单价:<text class="text">¥{{ pros.discountPrice | NumFormat }}</text></view>
 						</view>
 						<view class="product-view allPrice">
-							<view class="view-num">合计</view>
-							<view class="view-right">¥{{ pros.totalFee | NumFormat }}</view>
+							<view class="view-num">合计:<text class="text">¥{{ pros.totalFee | NumFormat }}</text></view>
 						</view>
 					</view>
 				</view>
@@ -102,20 +96,31 @@
 						<view class="text">{{ item.note ? item.note : '' }}</view>
 					</view>
 				</view>
-				<view class="goods-pros-b">
-					<view class="count">共{{ item.itemCount }}件商品</view>
-					<view class="sum">
-						<view class="sum-none" v-if="item.promotionFullReduction > 0">
-							<text class="money-sign">¥</text>
-							<text class="money">{{
-								(item.totalAmount + item.promotionFullReduction) | 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 class="goods-pros-b clearfix" v-if="information.onlinePayFlag == 0">
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">商品总额:</view>
+						<view class="price-view-ri">¥{{ item.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">优惠:</view>
+						<view class="price-view-ri">¥{{ item.eachDiscount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">应付金额:</view>
+						<view class="price-view-ri">¥{{ item.realPay | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">已付金额:</view>
+						<view class="price-view-ri">¥{{ item.receiptAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">待付金额:</view>
+						<view class="price-view-ri red">¥{{ item.obligation | NumFormat }}</view>
+					</view>
+					<view class="pros-price-btn">
+						<view class="btn" @click="handelShowDetails(item)">
+							{{ item.isHandelShow ? '收起' : '查看更多' }}
+							<text class="iconfont" :class="item.isHandelShow ? 'icon-xiangshangjiantou' : 'icon-xiangxiajiantou'"></text>
 						</view>
 					</view>
 				</view>
@@ -137,13 +142,12 @@ export default {
 	},
 	data() {
 		return {
-			initData: [],
-			vipFlag: 0
+			list: [],
+			vipFlag: 0,
 		}
 	},
 	created() {
-		this.initData = this.shopOrderData
-		this.initGetStotage()
+		this.initGetStotage(this.shopOrderData)
 	},
 	filters: {
 		NumFormat(value) {
@@ -162,12 +166,22 @@ export default {
 	},
 	computed: {},
 	methods: {
-		async initGetStotage() {
+		async initGetStotage(data) {
 			const userInfo = await this.$api.getStorage()
 			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.list = data.map((el,index)=>{
+				el.isHandelShow = false
+				return el
+			})
 		},
-		goShophome(id) {
-			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${id}`)
+		handelShowDetails(item){
+			item.isHandelShow = !item.isHandelShow
+		},
+		goShophome(shop) {
+			if(shop.shopType === 2){
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
 		},
 		details(pros) {
 			if (pros.validFlag == 9) {
@@ -269,9 +283,9 @@ export default {
 		.productlist {
 			width: 100%;
 			height: auto;
-			border-bottom: 2rpx solid #e1e1e1;
-			padding: 10rpx;
+			padding: 0;
 			box-sizing: border-box;
+			border-bottom: 1px solid #E1E1E1;
 		}
 		.goods-pros-t {
 			display: flex;
@@ -318,12 +332,13 @@ export default {
 				overflow: hidden;
 				height: 44rpx;
 				line-height: 44rpx;
+				float: left;
+				width: 50%;
 				.view-num {
 					float: left;
-				}
-				.view-right {
-					color: #666666;
-					float: right;
+					.text{
+						color: #333333;
+					}
 				}
 			}
 		}
@@ -462,62 +477,43 @@ export default {
 		}
 		.goods-pros-b {
 			width: 100%;
-			height: 80rpx;
-			margin-top: 12rpx;
+			padding-top: 12rpx;
 			float: left;
-			.count {
-				float: left;
-				font-size: $font-size-26;
-				line-height: 80rpx;
-				color: $text-color;
-				display: flex;
-				justify-content: flex-end;
-				font-weight: bold;
-			}
-			.sum {
-				width: 520rpx;
-				float: right;
-				.sum-none {
-					width: 100%;
-					height: 40rpx;
-					line-height: 40rpx;
-					color: $text-color;
+			.pros-price-view{
+				width: 100%;
+				height: 44rpx;
+				font-size: 24rpx;
+				line-height: 44rpx;
+				.price-view-le{
 					float: left;
+					color: #999999;
+					text-align: left;
+				}
+				.price-view-ri{
+					float: right;
+					color: #333333;
 					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;
-						}
+					&.red{
+						color: #F94B4B;
 					}
 				}
-				.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;
+			}
+			.pros-price-btn{
+				width: 100%;
+				height: 48rpx;
+				.btn{
+					width: 168rpx;
+					height: 48rpx;
+					line-height: 46rpx;
+					box-sizing: border-box;
+					border: 2rpx solid #e1e1e1;
+					border-radius: 8rpx;
+					text-align: center;
+					color: #b2b2b2;
+					margin: 0 auto;
+					font-size: $font-size-24;
+					.iconfont {
+						
 					}
 				}
 			}

+ 17 - 17
components/cm-module/orderDetails/orderInformation.vue

@@ -65,31 +65,31 @@
 					</view>
 				</view>
 				<view
-					class="information-view same"
+					class="information-view"
 					v-if="orderData.promotionFullReduction && orderData.promotionFullReduction > 0"
 				>
 					<view class="view-man">
 						促销满减:<label class="label">¥{{ orderData.promotionFullReduction | NumFormat }}</label>
 					</view>
 				</view>
-				<view class="information-view" v-if="orderData.couponAmount && orderData.couponAmount > 0">
+				<view class="information-view same">
 					<view class="view-man">
 						优惠券:<label class="label">¥{{ orderData.couponAmount | NumFormat }}</label>
 					</view>
 				</view>
-				<view class="information-view same" v-if="orderData.presentCount + orderData.promotionalGiftsCount > 0">
+				<view class="information-view">
 					<view class="view-man">
 						赠品总数:<label class="label">{{
 							orderData.presentCount + orderData.promotionalGiftsCount
 						}}</label>
 					</view>
 				</view>
-				<view class="information-view">
+				<view class="information-view same">
 					<view class="view-man">
 						应付总额:<label class="red">¥{{ orderData.payableAmount | NumFormat }}</label>
 					</view>
 				</view>
-				<view class="information-view same">
+				<view class="information-view">
 					<view class="view-num">
 						已支付:<label class="red">¥{{ orderData.receiptAmount | NumFormat }}</label>
 					</view>
@@ -99,7 +99,8 @@
 		</view>
 		<view class="openinfo" v-if="infoflag">
 			<view class="btnInfo" @click="openShow">
-				查看更多<label class="iconfont icon-xiangxiajiantou"></label>
+				查看更多
+				<text class="iconfont icon-xiangxiajiantou"></text>
 			</view>
 		</view>
 	</view>
@@ -310,21 +311,20 @@ export default {
 	}
 }
 .openinfo {
-	.btnInfo {
-		width: 140rpx;
-		height: 40rpx;
+	width: 100%;
+	height: 48rpx;
+	margin-bottom: 30rpx;
+	.btnInfo{
+		width: 168rpx;
+		height: 48rpx;
+		line-height: 46rpx;
+		box-sizing: border-box;
 		border: 2rpx solid #e1e1e1;
-		border-radius: 6rpx;
-		padding: 5rpx;
+		border-radius: 8rpx;
 		text-align: center;
 		color: #b2b2b2;
-		margin: 20rpx auto;
+		margin: 0 auto;
 		font-size: $font-size-24;
-		.iconfont {
-			position: relative;
-			top: 5rpx;
-			right: -3rpx;
-		}
 	}
 }
 </style>

+ 5 - 4
components/cm-module/orderDetails/paymentRecord.vue

@@ -13,8 +13,8 @@
 			</view>
 			<view class="record-list" v-else>
 				<view class="record-item" v-for="(item,index) in discernReceiptList" :key="index">
-					<view class="item-time tt">{{item.receiptDate}}</view>
-					<view class="item-time pp">{{payTypeText(item.payType)}}</view>
+					<view class="item-time tt">{{ item.receiptDate }}</view>
+					<view class="item-time pp">{{ item.payTypeStr }}</view>
 					<view class="item-time mm">¥{{item.associateAmount.toFixed(2)}}</view>
 				</view>
 			</view>
@@ -64,6 +64,7 @@
 						14:'支付宝',
 						15:'微信支付',
 						16:'余额抵扣',
+						18:'大额银联转账',
 					}
 				Object.keys(stateTextObject).forEach(key => {
 					if(key == state){
@@ -135,11 +136,11 @@
 							text-align: right;
 						}
 						&.pp{
-							flex: 2;
+							flex: 3;
 							color: $text-color;
 						}
 						&.tt{
-							flex: 5;
+							flex: 4;
 							color: #999999;
 						}
 					}

+ 5 - 17
components/cm-module/orderDetails/sellerDetaileButton.vue

@@ -112,26 +112,14 @@
 				this.shareCode = code
 			},
 			onShareCode(type){
-				if(this.order.onlinePayFlag!= 1){
-					this.PayService.PayOrderCheckoutCounter({orderId:this.order.orderId}).then(response =>{
-						let data = response.data.order
-						this.invoiceStatus =  data.invoiceStatus
-						//判断线上线下显示
-						if(this.invoiceStatus){
-							this.$util.modal('提示','由于商品发票属性的限制,本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
-								this.$parent.isShareModal = true
-							})		
-						}else{
-							this.$parent.isShareModal = true
-							this.$parent.isShareType = type
-						}
-					}).catch(error =>{
-						this.$util.msg(error.msg,2000)
-					})
+				if(this.order.onlinePayFlag == 1){
+					this.$util.modal('提示','本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
+						this.$parent.isShareModal = true
+					})	
 				}else{
 					this.$parent.isShareModal = true
+					this.$parent.isShareType = type
 				}
-				// this.$emit('shareConfirm')
 			},
 			btnConfirm(type,order){
 				let data = {

+ 18 - 5
components/cm-module/orderDetails/sellerOrderButton.vue

@@ -22,6 +22,9 @@
 			status: {
 				type:Number
 			},
+			order: {
+				type:Object
+			},
 			orderId: {
 				type:Number
 			},
@@ -99,11 +102,21 @@
 				this.shareCode = code
 			},
 			onShareCode(oID,uID,type){
-				this.$parent.isShareModal = true
-				this.$parent.btnoRderID = oID,
-				this.$parent.btnClubUserID = uID
-				this.$parent.isShareType = type
-				this.$emit('shareConfirm')
+				if(this.order.onlinePayFlag == 1){
+					this.$util.modal('提示','本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
+						this.$parent.isShareModal = true
+						this.$parent.btnoRderID = oID,
+						this.$parent.btnClubUserID = uID
+						this.$parent.isShareType = type
+						this.$emit('shareConfirm')
+					})	
+				}else{
+					this.$parent.isShareModal = true
+					this.$parent.btnoRderID = oID,
+					this.$parent.btnClubUserID = uID
+					this.$parent.isShareType = type
+					this.$emit('shareConfirm')
+				}
 			},
 			btnConfirm(type,orderId){
 				let data = {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateA.vue

@@ -23,6 +23,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -73,13 +74,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateA',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateB.vue

@@ -39,6 +39,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -89,13 +90,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateB',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateC.vue

@@ -39,6 +39,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -89,13 +90,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateC',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateD.vue

@@ -55,6 +55,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -105,13 +106,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateE.vue

@@ -23,6 +23,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -73,13 +74,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateE',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateF.vue

@@ -7,6 +7,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -57,13 +58,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateG',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateG.vue

@@ -7,6 +7,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -57,13 +58,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateG',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateI.vue

@@ -55,6 +55,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -105,13 +106,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateJ.vue

@@ -56,6 +56,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -105,13 +106,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageFloorTemplate/templateK.vue

@@ -87,6 +87,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -137,13 +138,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateA.vue

@@ -24,6 +24,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -74,12 +75,14 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 export default {
 	name: 'templateA',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 2
components/cm-module/pageTemplate/templateB.vue

@@ -40,6 +40,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -90,13 +91,14 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
-
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 export default {
 	name: 'templateB',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateC.vue

@@ -40,6 +40,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -90,13 +91,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateC',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateD.vue

@@ -56,6 +56,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -106,13 +107,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 5 - 1
components/cm-module/pageTemplate/templateE.vue

@@ -24,6 +24,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -74,13 +75,16 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
+
 
 export default {
 	name: 'templateE',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateF.vue

@@ -8,6 +8,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -74,13 +75,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateF',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateG.vue

@@ -8,6 +8,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -58,13 +59,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateG',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateH.vue

@@ -18,6 +18,7 @@
 						@click.stop="navToDetailPage(item)"
 					>
 						<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+						<template-Type :product="item.product"></template-Type>
 						<view class="floor-item_tag" v-if="item.listType == 2">
 							<text>{{ item.label }}</text>
 						</view>
@@ -84,13 +85,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateH',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateI.vue

@@ -56,6 +56,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -106,13 +107,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateJ.vue

@@ -57,6 +57,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -107,13 +108,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 4 - 1
components/cm-module/pageTemplate/templateK.vue

@@ -88,6 +88,7 @@
 			@click.stop="navToDetailPage(item)"
 		>
 			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<template-Type :product="item.product"></template-Type>
 			<view class="floor-item_tag" v-if="item.listType == 2">
 				<text>{{ item.label }}</text>
 			</view>
@@ -138,13 +139,15 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
 import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
 
 export default {
 	name: 'templateD',
 	components: {
 		uniGrader,
 		templateTags,
-		templatePrice
+		templatePrice,
+		templateType
 	},
 	props: {
 		pageData: {

+ 70 - 0
components/cm-module/pageTemplate/templateType.vue

@@ -0,0 +1,70 @@
+<template name="cm-acttags">
+	<!-- 楼层价格显示公共组件 -->
+	<view>
+		<view class="floor-item-type" v-if="goods.productType == 2">医疗器械</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+export default {
+	name: 'templateType',
+	components: {
+	},
+	props: {
+		product: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			goods:{}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.product)
+	},
+	computed: {
+		...mapState(['hasLogin', 'isWxAuthorize','clubType'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.product = el
+				this.initData(this.product)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		async initData(data) {
+			this.goods = data
+		},
+	}
+}
+</script>
+
+<style lang="scss">
+.floor-item-type{
+	width: 64rpx;
+	height: 64rpx;
+	text-align: justify;
+	box-sizing: border-box;
+	padding: 10rpx;
+	border-radius: 0 0 8rpx 8rpx;
+	background-color: #33CCBF;
+	font-size: $font-size-22;
+	color: #FFFFFF;
+	line-height: 25rpx;
+	position: absolute;
+	top: 0;
+	right: 16rpx;
+}
+</style>

+ 4 - 0
components/cm-module/productDetails/secondParameters.vue

@@ -50,6 +50,10 @@
 			<view class="content-td">所在地</view>
 			<view class="content-th">{{product.provinceCityDistrict}}</view>
 		</view>
+		<view class="content-tr">
+			<view class="content-td">提供方</view>
+			<view class="content-th">{{product.publishIdentity == 1 ? '采美二手代售' : product.companyName}}</view>
+		</view>
 	</view>
 </template>
 

+ 16 - 10
components/cm-module/supplier/home.vue

@@ -8,6 +8,8 @@
 			<banner :list="bannerImageList" v-if="isNavRequest"></banner>
 			<!-- 金刚区菜单 -->
 			<navbars :list="navBarsList" v-if="isNavRequest"></navbars>
+			<!-- 轮播公告 -->
+			<notice :list="newsList" v-if="isNavRequest && newsList.length>0"></notice>
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest"></page-special>
 		</view>	
@@ -24,21 +26,23 @@
 </template>
 
 <script>
-	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
+	import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
 	import authorize from '@/common/config/authorize.js'
 	import customer from '@/components/cm-module/homeIndex/customer.vue'
 	import banner from '@/components/cm-module/homeIndex/banner.vue'
 	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
+	import notice from '@/components/cm-module/homeIndex/notice.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
-	import { mapState,mapMutations} from 'vuex';
+	import { mapState,mapMutations} from 'vuex'
 	export default {
 		components:{
 			tuiSkeleton,
 			customer,
 			banner,
 			navbars,
+			notice,
 			pageFloor,
 			pageSpecial,
 			supplierList
@@ -65,6 +69,7 @@
 				flootData:[],//楼层
 				bannerImageList:[],//轮播
 				navBarsList:[],//导航分类
+				newsList:[],				// 公告
 				templateData:{},
 				pageList:[],//楼层
 				supplierObj:{},//供应商列表
@@ -83,7 +88,7 @@
 		},
 		filters: {
 			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
+				return Number(text).toFixed(2)
 			},
 		},
 		computed: {
@@ -101,21 +106,22 @@
 			},
 			GetHomeFloorInfo(){//初始化首页楼层数据
 				this.CommonService.GetHomeDataInfo({userId:this.userID,soure:2}).then(response =>{
-					let data = response.data;
-					this.pageList = data.homePageFloor;
-					this.supplierObj = data.supplierImage;
-					this.isRequest = true;
+					let data = response.data
+					this.pageList = data.homePageFloor
+					this.supplierObj = data.supplierImage
+					this.isRequest = true
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
 			getHomeInformation(){//初始化首页数据	
 				this.CommonService.GetHomeModulesDataInfo({ source:2 }).then(res =>{
-					let data = res.data;
+					let data = res.data
 					this.bannerImageList = data.bannerList
 					this.mallPageModules = data.mallPageModules
-					this.skeletonShow = false;
+					this.skeletonShow = false
 					this.navBarsList = data.topMenuList
+					this.newsList = data.annlist
 					this.isNavRequest = true
 					this.GetHomeTopDataInfo()
 					this.GetHomeFloorInfo()
@@ -130,7 +136,7 @@
                 })
             },
 			handleClick(data){
-				this.$api.navigateTo(`/pages/h5/activity/meobohui`)
+				this.$api.navigateTo('/pages/h5/activity/meobohui')
 				this.$store.commit('setActivity',data)
 			},
 			handleCancelClick(data){

+ 2 - 2
main.js

@@ -5,7 +5,7 @@ import './services/index.js'
 import * as Api from '@/common/config/caimeiApi.js'
 import * as Regs from '@/common/config/common.js'
 // 友盟
-import Uma from './plugins/uma'
+// import Uma from './plugins/uma'
 
 // 公共组件 全局组件
 import { msg, modal, prePage, boundingClientRect } from './utils/util'
@@ -42,7 +42,7 @@ Vue.prototype.$Static = 'https://static.caimei365.com/app/img/'
 App.mpType = 'app'
 
 // 使用插件
-Vue.use(Uma)
+// Vue.use(Uma)
 
 const app = new Vue({
     ...App

+ 3 - 0
manifest.json

@@ -64,6 +64,9 @@
             "postcss" : false
         },
         "usingComponents" : true,
+        // "optimization" : {
+        // 	"subPackages" : true
+        // },
         "permission" : {},
         "navigateToMiniProgramAppIdList" : [ "wx5a5cda32926f55ac" ],
         "uniStatistics" : {

+ 46 - 0
pages.json

@@ -61,6 +61,19 @@
                     "style": {
                         "navigationBarTitleText": "条款内容"
                     }
+                },
+                {
+                    "path": "news-list",
+                    "style": {
+                        "navigationBarTitleText": "公告",
+						"enablePullDownRefresh": true
+                    }
+                },
+                {
+                    "path": "news-detailes",
+                    "style": {
+                        "navigationBarTitleText": "公告内容"
+                    }
                 }
             ]
         },
@@ -294,6 +307,20 @@
                         "navigationStyle": "custom"
                     }
                 },
+                {
+                    "path": "order/order-success",
+                    "style": {
+                        "navigationBarTitleText": "支付结果",
+                        "navigationStyle": "custom"
+                    }
+                },
+                {
+                    "path": "order/order-success-tips",
+                    "style": {
+                        "navigationBarTitleText": "支付结果",
+                        "navigationStyle": "custom"
+                    }
+                },
                 {
                     "path": "order/order-payment",
                     "style": {
@@ -301,6 +328,18 @@
                         "navigationStyle": "custom"
                     }
                 },
+                {
+                    "path": "order/order-payunder",
+                    "style": {
+                        "navigationBarTitleText": "线下转账"
+                    }
+                },
+                {
+                    "path": "order/order-pay-list",
+                    "style": {
+                        "navigationBarTitleText": "支付订单"
+                    }
+                },
                 {
                     "path": "order/order-pay",
                     "style": {
@@ -308,6 +347,13 @@
                         "navigationStyle": "custom"
                     }
                 },
+                {
+                    "path": "order/order-payhlb",
+                    "style": {
+                        "navigationBarTitleText": "收银台",
+                        "navigationStyle": "custom"
+                    }
+                },
                 {
                     "path": "order/orderShareLogin",
                     "style": {

+ 25 - 4
pages/goods/goods-active.vue

@@ -20,7 +20,10 @@
 						:key="index"
 						@click.stop="detail(item.productId)"
 					>
-						<image class="tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+						<view class="floor-item-image">
+							<image mode="widthFix" :src="item.image" class="list-img tui-skeleton-fillet"  alt="list-img"></image>
+							<view class="list-details-type" v-if="item.productType == 2">医疗器械</view>
+						</view>
 						<view class="floor-item-content">
 							<view class="title"
 								><text class="mclap">{{ item.name }}</text></view
@@ -319,12 +322,30 @@ page {
 			&:nth-child(2n) {
 				margin-right: 0;
 			}
-			image {
+			.floor-item-image{
 				width: 341rpx;
 				height: 341rpx;
-				border-radius: 20rpx 20rpx 0 0;
-				display: block;
 				margin-bottom: 20rpx;
+				position: relative;
+				.list-img {
+					width: 341rpx;
+					height: 341rpx;
+				}
+				.list-details-type{
+					width: 64rpx;
+					height: 64rpx;
+					text-align: justify;
+					box-sizing: border-box;
+					padding: 10rpx;
+					border-radius: 0 0 8rpx 8rpx;
+					background-color: #33CCBF;
+					font-size: $font-size-22;
+					color: #FFFFFF;
+					line-height: 25rpx;
+					position: absolute;
+					top: 0;
+					right: 10rpx;
+				}
 			}
 			.floor-item-content {
 				width: 100%;

+ 26 - 3
pages/goods/goods-classify.vue

@@ -86,7 +86,10 @@
 						class="all-type-list-content commodity-list"
 						@click.stop="navToDetailPage(pros.productId)"
 					>
-						<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+						<view class="list-details-image">
+							<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+							<view class="list-details-type" v-if="pros.productType == 2">医疗器械</view>
+						</view>
 						<view class="list-details-info">
 							<text class="list-details-title">
 								<text class="mclap-tag" v-if="pros.beautyActFlag == 1">美博会</text>
@@ -849,12 +852,32 @@ page {
 	display: flex;
 	flex-direction: row;
 	box-sizing: content-box;
-	.list-img {
-		width: 210rpx;
+	.list-details-image{
+		width: 218rpx;
 		height: 218rpx !important;
 		margin-right: 26rpx;
 		border-radius: 10rpx;
 		border: 2rpx solid #f3f3f3;
+		position: relative;
+		.list-img {
+			width: 218rpx;
+			height: 218rpx !important;
+		}
+		.list-details-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 10rpx;
+		}
 	}
 }
 .list-details-info {

+ 20 - 2
pages/goods/goods-supporting.vue

@@ -23,8 +23,9 @@
 								>
 								</view>
 							</view>
-							<view class="tui-goods-image" @click.stop="navToDetailPage(pros.productId)"
-								><image :src="pros.image" class="tui-goods-img" />
+							<view class="tui-goods-image" @click.stop="navToDetailPage(pros.productId)">
+								<image :src="pros.image" class="tui-goods-img" />
+								<view class="tui-goods-type" v-if="pros.productType == 2">医疗器械</view>
 							</view>
 							<view class="tui-goods-info">
 								<text class="list-details-title" @click.stop="navToDetailPage(pros.productId)">{{
@@ -746,6 +747,8 @@ page {
 	width: 180rpx;
 	height: 180rpx !important;
 	border-radius: 12rpx;
+	position: relative;
+	border: 2rpx solid #f3f3f3;
 	.tui-goods-img {
 		width: 180rpx;
 		height: 180rpx !important;
@@ -753,6 +756,21 @@ page {
 		flex-shrink: 0;
 		display: block;
 	}
+	.tui-goods-type{
+		width: 64rpx;
+		height: 64rpx;
+		text-align: justify;
+		box-sizing: border-box;
+		padding: 10rpx;
+		border-radius: 0 0 8rpx 8rpx;
+		background-color: #33CCBF;
+		font-size: $font-size-22;
+		color: #FFFFFF;
+		line-height: 25rpx;
+		position: absolute;
+		top: 0;
+		right: 10rpx;
+	}
 }
 .tui-goods-info {
 	width: 460rpx;

+ 163 - 74
pages/goods/product.vue

@@ -80,6 +80,13 @@
 				<view class="container-product-main">
 					<view class="product-top">
 						<view class="banner-section">
+							<view class="cm-product-tags">
+								<!-- <view class="cm-product-cover" v-if="product.appletsActType === 1"
+									>云上美博会</view
+								> -->
+								<view class="cm-product-type" v-if="product.productType == 2">医疗器械</view>
+								<view class="cm-product-cover" v-if="product.appletsActType === 1"></view>
+							</view>
 							<uni-swiper-dot :info="productImage" :current="current" field="content" :mode="mode">
 								<swiper
 									class="banner tui-banner tui-skeleton-rect"
@@ -90,10 +97,6 @@
 								>
 									<swiper-item v-for="(item, index) in productImage" :key="index" class="banner-item">
 										<image :src="item" @click="previewImg(index)" class="product-img" />
-										<!-- <view class="cm-product-cover" v-if="product.appletsActType === 1"
-											>云上美博会</view
-										> -->
-                                        <view class="cm-product-cover" v-if="product.appletsActType === 1"></view>
 									</swiper-item>
 								</swiper>
 								<view class="swiper__dots-box">
@@ -243,7 +246,7 @@
 								</view>
 							</view>
 						</view>
-						<view class="right"><text class="iconfont icon-xiayibu"></text></view>
+						<view class="right" v-if="!isShowCaimeiShop"><text class="iconfont icon-xiayibu"></text></view>
 					</view>
 				</view>
 				<!-- 商品详情 -->
@@ -593,6 +596,19 @@
 			:maskClosable="false"
 		>
 		</tui-modal>
+		<!-- 限制医疗器械商品查看限制 -->
+		<tui-modal
+			:show="modal1"
+			@click="handleClick1"
+			@cancel="hideMobel1"
+			:content="contentModalText1"
+			:button="modalButton1"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		>
+		</tui-modal>
 	</view>
 </template>
 
@@ -611,8 +627,10 @@ import couponTabs from '@/components/cm-module/coupon/tui-tabs.vue'
 import authorize from '@/common/config/authorize.js'
 import wxLogin from '@/common/config/wxLogin.js'
 import { debounce } from '@/common/config/common.js'
+import wechatPay from '@/utils/mixins/wechatPay.js'
 var isPreviewImg
 export default {
+	mixins: [wechatPay],
 	components: {
 		customP,
 		parser,
@@ -714,7 +732,9 @@ export default {
 			supportingList: [],
 			supportingNum: 0 ,// 组合商品总数
 			contentModalText: '', //操作文字提示语句
+			contentModalText1: '', //操作文字提示语句
 			modal: false,
+			modal1: false,
 			modalButton: [
 				{
 					text: '取消',
@@ -730,6 +750,22 @@ export default {
 					plain: false
 				}
 			],
+			modalButton1: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '去升级',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+					},
+					plain: false
+				}
+			],
+			isShowCaimeiShop:false
 		}
 	},
 	computed: {
@@ -776,9 +812,6 @@ export default {
 		if (option.page == 2) {
 			this.backPage = option.page
 		}
-		if (this.isShareType == 'share') {
-			wxLogin.wxLoginAuthorize()
-		}
 		this.getWinHeight()
 	},
 	onReady() {
@@ -796,8 +829,7 @@ export default {
 		console.log('是iPhoneX', this.isIphoneX)
 	},
 	methods: {
-		async initGetStotage() {
-			// 初始化
+		async initGetStotage() {// 初始化
 			const userInfo = await this.$api.getStorage()
 			this.userId = this.couponParam.userId = userInfo.userId ? userInfo.userId : 0
 			this.userIdentity = userInfo.userIdentity ? userInfo.userIdentity : 0
@@ -828,6 +860,9 @@ export default {
 					this.shop = response.data.shop
 					this.shopId = response.data.shopId
 					this.product = response.data
+					if(this.product.shopType === 2){
+						this.isShowCaimeiShop = true
+					}
 					if (this.product.userLike && this.product.userLike == 1) {
 						this.collectionType = true
 					} else {
@@ -906,6 +941,9 @@ export default {
 					// setTimeout(() => {
 					//     this.getSectionProps()
 					// }, 2000)
+					if(this.product.productType === 2 && (this.userIdentity != 1 || this.userIdentity != 3)){
+						this.handleShowProductType()
+					}
 					if ((this.hasLogin && this.userIdentity == 2) || this.userIdentity == 4) {
 						this.ProductCartNumber()
 					}
@@ -920,6 +958,73 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		handleShowProductType(){// 根据用户弹窗提示
+			if(!this.hasLogin){//游客
+				this.modal1 = true
+				this.contentModalText1 = '该商品仅限医美类机构查看,请注册医美机构后继续查看。有采美账号的,请直接登录。'
+				this.modalButton1 = [
+					{ text: '关闭', type: 'gray',plain: true },
+					{ text: '去注册/登录',
+					  customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'},
+					  plain: false
+					}
+				]
+				return
+			}else{
+				if(this.userIdentity === 4 ){// 普通机构
+					this.modal1 = true
+					this.contentModalText1 = '该商品仅限医美类机构查看,请升级为医美机构后继续查看。'
+					this.modalButton1 = [
+						{ text: '关闭', type: 'gray',plain: true },
+						{ text: '去升级',
+						  customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'},
+						  plain: false
+						}
+					]
+					return
+				}else if( this.userIdentity === 2 ){//会员机构
+					if(this.firstClubType != 1){
+						this.modal1 = true
+						this.contentModalText1 = '该商品仅限医美类机构查看,您暂无权限。您可去机构资料页面查看机构类型。'
+						this.modalButton1 = [
+							{ text: '关闭', type: 'gray',plain: true },
+							{ text: '去查看资料',
+							  customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'},
+							  plain: false
+							}
+						]
+						return
+					}
+				}
+			}
+		},
+		hideMobel1(){
+			this.modal1 = false
+			this.$api.navigateBack(1)
+		},
+		handleClick1(e){// 医美器械弹窗跳转
+			if (e.index == 1) {
+				if(!this.hasLogin){//游客跳转登录页
+					this.$api.navigateTo('/pages/login/login')
+				}else{
+					if(this.userIdentity === 4 ){// 个人机构跳转升级页面
+						this.$api.navigateTo('/pages/login/apply')
+					}else if( this.userIdentity === 2 ){//会员机构
+						if(this.firstClubType != 1){// 会员非医美机构跳转资料页
+							this.$api.navigateTo('/pages/login/information')
+						}
+					}
+				}
+				this.modal1 = false
+			}else{
+				this.modal1 = false
+				if (this.isShareType == 'share') {
+					this.$api.switchTabTo('/pages/tabBar/home/index')
+				}else{
+					this.$api.navigateBack(1)
+				}
+			}
+		},
 		adaptRichTextImg(product) {
 			// 商品详情
 			let defaulHtml = '<div style="text-align: center;color:#333333;">暂无内容</div>'
@@ -1063,51 +1168,15 @@ export default {
 		},
 		async MiniWxPayFor(coupon,couponRecordId){
 			const wechatcode = await authorize.getCode('weixin')
-			this.PayService.WeChatCouponMiniWxPay(
-				{
-					userId: this.userId,
-					couponId: coupon.couponId,
-					couponRecordId:couponRecordId,
-					payWay: 'WEIXIN',
-					code: wechatcode,
-					source: 1 //支付来源 1 小程序 2 WWW
-				}
-			)
-			.then(response => {
-				// 友盟埋点收集微信支付
-				if (process.env.NODE_ENV != 'development') {
-					this.$uma.trackEvent('Um_Event_productCouponPay', {
-						Um_Key_PageName: '商品详情',
-						Um_Key_SourcePage: '线上支付优惠券',
-						Um_Key_CouponId: `${coupon.couponId}`,
-						Um_Key_userId: `${this.userId}`
-					})
-				}
-				let PayInfo = JSON.parse(response.data.data.payInfo)
-				this.WxRequestPayment(PayInfo)
-			})
-			.catch(error => {
-				this.$util.msg(error.msg, 2000)
-			})
-		},
-		WxRequestPayment(data){
-			let self = this
-			wx.requestPayment({
-				'timeStamp': data.timeStamp,
-				'nonceStr': data.nonceStr,
-				'package': data.package,
-				'signType': data.signType,
-				'paySign': data.paySign,
-				'success':function(res){
-					wx.reLaunch({url: '/pages/tabBar/user/user'})
-				},
-				'fail':function(res){
-					self.$util.msg('用户取消支付~')
-				},
-				'complete':function(res){
-		
-				}
-			})
+			const params = {
+				userId: this.userId,
+				couponId: coupon.couponId,
+				couponRecordId:couponRecordId,
+				payType:'XCX',
+				code: wechatcode,
+				source: 1 //支付来源 1 小程序 2 WWW
+			}
+			this.weChatMiniCouponWxPay(params,'Um_Event_productCouponPay','商品详情','线上支付优惠券',coupon.couponId,this.userId)
 		},
 		hideMobel(){
 			this.modal = false
@@ -1346,7 +1415,9 @@ export default {
 		},
 		goSupplier() {
 			//跳供应商资料页
-			this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=' + this.shopId)
+			if(!this.isShowCaimeiShop){
+				this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=' + this.shopId)
+			}
 		},
 		discard() {
 			//丢弃
@@ -1541,13 +1612,13 @@ export default {
 		}
 	},
 	onShow() {
+		wxLogin.wxLoginAuthorize()
 		// 是否开启图片预览 true 不刷新调用接口 false刷新调用接口
 		if (!this.isPreviewImage) {
 			this.initGetStotage()
 		}
 		this.isPreviewImage = false
-	},
-	created() {}
+	}
 }
 </script>
 
@@ -1559,6 +1630,40 @@ page {
 	width: 100%;
 	height: 750rpx;
 	position: relative;
+	.cm-product-tags{
+		position: absolute;
+		right: 30rpx;
+		top: 0;
+		z-index: 999;
+	}
+	.cm-product-type{
+		width: 64rpx;
+		height: 64rpx;
+		text-align: justify;
+		box-sizing: border-box;
+		padding: 10rpx;
+		border-radius: 0 0 8rpx 8rpx;
+		background-color: #33CCBF;
+		font-size: $font-size-22;
+		color: #FFFFFF;
+		line-height: 25rpx;
+		float: left;
+	}
+	.cm-product-cover {
+	    width: 120rpx;
+	    height: 77rpx;
+		// right: 30rpx;
+		// top: 30rpx;
+		// width: 147rpx;
+		line-height: 57rpx;
+		font-size: 24rpx;
+		color: #fff;
+		text-align: center;
+		background: url(https://static.caimei365.com/app/img/icon2/cm_cover_bg_app.png) no-repeat center;
+		background-size: 120rpx;
+		float: left;
+		margin-left: 10rpx;
+	}
 }
 .banner {
 	width: 100%;
@@ -1572,22 +1677,6 @@ page {
 	}
 	.banner-item {
 		position: relative;
-		.cm-product-cover {
-			position: absolute;
-            right: 30rpx;
-            top: 0;
-            width: 120rpx;
-            height: 77rpx;
-			// right: 30rpx;
-			// top: 30rpx;
-			// width: 147rpx;
-			line-height: 57rpx;
-			font-size: 24rpx;
-			color: #fff;
-			text-align: center;
-			background: url(https://static.caimei365.com/app/img/icon2/cm_cover_bg_app.png) no-repeat center;
-			background-size: 120rpx;
-		}
 	}
 }
 .swiper__dots-box {

+ 31 - 41
pages/login/apply.vue

@@ -132,25 +132,13 @@
 					</view>
 				</view>
 			</view>
-			<view class="register-row none clearfix">
-				<view class="register-from noneborder">
+			<view class="register-row clearfix">
+				<view class="register-from" @click="bindPickerChange">
 					<view class="label">机构类型</view>
-				</view>
-			</view>
-			<view class="register-row none clearfix">
-				<view class="register-from picker noneborder">
-					<view class="row-input picker">
-						<radio-group @change="bindPickerChange">
-							<label class="label-radio" v-for="(item, index) in typename" :key="item.value">
-								<radio
-									class="row-radio"
-									:value="item.value"
-									:checked="index === firstClubTypeCurrent"
-									color="#E15616"
-								/>{{ item.name }}
-							</label>
-						</radio-group>
-					</view>
+					<text class="row-input">
+						{{ organizationTypeText }}
+					</text>
+					<text class="iconfont icon-xiayibu"></text>
 				</view>
 			</view>
 			<view class="register-row none clearfix" v-if="isOrganizationType == 1">
@@ -668,30 +656,32 @@ export default {
 				this.medicalPracticeLicense = ''
 			})
 		},
-		bindPickerChange(e) {
-			this.isOrganizationType = e.target.value
-			for (let i = 0; i < this.typename.length; i++) {
-				if (this.typename[i].value === e.target.value) {
-					this.firstClubTypeCurrent = i
-					break
+		bindPickerChange() {
+			let self = this
+			uni.showActionSheet({
+				title:'标题',
+				itemList: ['医美', '生美','项目公司','个人','其他'],
+				success: (e) => {
+					self.isOrganizationType = e.tapIndex+1
+					switch(e.tapIndex){
+						case 0:
+							this.organizationTypeText = '医美'
+							break
+						case 1:
+							this.organizationTypeText = '生美'
+							break
+						case 2:
+							this.organizationTypeText = '项目公司'
+							break
+						case 3:
+							this.organizationTypeText = '个人'
+							break
+						case 4:
+							this.organizationTypeText = '其他'
+							break
+					}
 				}
-			}
-			// let self = this
-			// uni.showActionSheet({
-			// 	title:'标题',
-			// 	itemList: ['医美', '生美'],
-			// 	success: (e) => {
-			// 		self.isOrganizationType = e.tapIndex+1
-			// 		switch(e.tapIndex){
-			// 			case 0:
-			// 				this.organizationTypeText = '医美'
-			// 				break;
-			// 			case 1:
-			// 				this.organizationTypeText = '生美'
-			// 				break;
-			// 		}
-			// 	}
-			// })
+			})
 		},
 		bindPickerChange2(e) {
 			this.typtIndex = e.target.value

+ 14 - 14
pages/login/bindOperator.vue

@@ -79,7 +79,7 @@
 <script>
 	import { mapState,mapMutations } from 'vuex'
 	import authorize from '@/common/config/authorize.js' 
-	import wxLogin from "@/common/config/wxLogin.js"
+	import wxLogin from '@/common/config/wxLogin.js'
 	export default{
 		data() {
 			return{
@@ -102,22 +102,22 @@
 		},
 		onLoad(option) {
 			console.log(option)
-			uni.setStorageSync('bind_id', option.userID);
+			uni.setStorageSync('bind_id', option.userId)
 			this.getVerificationCode()
 			this.getWxAuthorize()
 		},
 		methods:{
 			...mapMutations(['login','logout','wxLogin']),
 			async getWxAuthorize(){
-				const wechatCode = await authorize.getCode('weixin');// 根据微信的code获取用户登录状态:1已登录过 -1未登录过
-				const getUserInfo = await authorize.getUserInfo('weixin');
+				const wechatCode = await authorize.getCode('weixin')// 根据微信的code获取用户登录状态:1已登录过 -1未登录过
+				const getUserInfo = await authorize.getUserInfo('weixin')
 				this.UserService.UserLoginAuthApplets({ 
 					code:wechatCode,
 					encryptedData:getUserInfo.encryptedData,
 					iv:getUserInfo.iv ,
 				})
 				.then(response =>{
-					this.login(response.data);
+					this.login(response.data)
 					this.$store.commit('updateStatus',response.data)
 					uni.setStorageSync('token',response.data.token)
 					uni.setStorageSync('unionId',response.data.unionId)
@@ -171,15 +171,15 @@
 			},
 			getMobileCodeFn(){//获取手机验证码
 				if( this.bindMobile == ''){
-					this.$util.msg('请输入手机号',2000);
+					this.$util.msg('请输入手机号',2000)
 					return
 				}
 				if(!this.$reg.isMobile(this.bindMobile)){
-					this.$util.msg('请输入正确的手机号',2000);
+					this.$util.msg('请输入正确的手机号',2000)
 					return
 				}
 				if( this.imageCode == ''){
-					this.$util.msg('请输入图形验证码',2000);
+					this.$util.msg('请输入图形验证码',2000)
 					return
 				}		
 				let params = {
@@ -190,20 +190,20 @@
 						imgCode:this.imageCode,
 						token:this.imageCodetoken,
 				}
-				this.isMobileDisabled = true;
+				this.isMobileDisabled = true
 				this.PublicService.GetBindMobileCode(params)
 					.then(res =>{
-						const TIME_COUNT = 60;
+						const TIME_COUNT = 60
 						this.$util.msg('验证短信已发送',2000)
 				     	if (!this.codeTime) {
-				       		this.count = TIME_COUNT;
-							this.isMobileDisabled = true;
+				       		this.count = TIME_COUNT
+							this.isMobileDisabled = true
 				       		this.codeTime = setInterval(() => {
 				       			if (this.count > 1 && this.count <= TIME_COUNT) {
 				         			this.count--
 				         			this.mobileCodeText = this.count +'s重新发送'
 				        		} else {
-					         		this.isMobileDisabled = false;
+					         		this.isMobileDisabled = false
 					         		clearInterval(this.codeTime)
 					         		this.codeTime = null
 									this.mobileCodeText = '获取验证码'
@@ -213,7 +213,7 @@
 					})
 					.catch( error =>{
 						this.$util.msg(error.msg,2000)
-						this.isMobileDisabled = false;
+						this.isMobileDisabled = false
 					})
 			},
 			GetUserProfile(){//获取用户微信个人信息

+ 32 - 48
pages/login/information.vue

@@ -145,25 +145,13 @@
 					</view>
 				</view>
 			</view>
-			<view class="register-row none clearfix">
-				<view class="register-from bordernone">
-					<view class="label">机构类型</view>
-				</view>
-			</view>
 			<view class="register-row clearfix">
-				<view class="register-from picker bordernone">
-					<view class="row-input">
-						<radio-group @change="bindPickerChange">
-							<label class="label-radio" v-for="(item, index) in typename" :key="item.value">
-								<radio
-									class="row-radio"
-									:value="item.value"
-									:checked="index === firstClubTypeCurrent"
-									color="#E15616"
-								/>{{ item.name }}
-							</label>
-						</radio-group>
-					</view>
+				<view class="register-from" @click="bindPickerChange">
+					<view class="label">机构类型</view>
+					<text class="row-input">
+						{{ organizationTypeText }}
+					</text>
+					<text class="iconfont icon-xiayibu"></text>
 				</view>
 			</view>
 			<view class="register-row clearfix" v-if="firstClubType == 1">
@@ -408,7 +396,6 @@ export default {
 			medicaCampList: [],
 			typtIndex: 0,
 			organizationType: 0,
-			firstClubTypeCurrent: 0,
 			current: 0,
 			isShowAustomItem: false, // 是否显示其他添加
 			customItemValue: '', // 自定义项目
@@ -494,27 +481,21 @@ export default {
 						switch(this.firstClubType){
 							case 1:
 								this.organizationTypeText = '医美'
-								this.firstClubTypeCurrent = 0
 								break
 							case 2:
 								this.organizationTypeText = '生美'
-								this.firstClubTypeCurrent = 1
 								break
 							case 3:
 								this.organizationTypeText = '项目公司'
-								this.firstClubTypeCurrent = 2
 								break
 							case 4:
 								this.organizationTypeText = '个人'
-								this.firstClubTypeCurrent = 3
 								break
 							case 5:
 								this.organizationTypeText = '其他'
-								this.firstClubTypeCurrent = 4
 								break
 							case null:
 								this.organizationTypeText = '请选择机构类型'
-								this.firstClubTypeCurrent = 5
 								break
 						}	
 						if (organizationClub.mainProduct == '' || organizationClub.mainProduct == null) {
@@ -725,30 +706,32 @@ export default {
 				this.medicalPracticeLicense = ''
 			})
 		},
-		bindPickerChange(e) {
-			this.firstClubType = e.target.value
-			for (let i = 0; i < this.typename.length; i++) {
-				if (this.typename[i].value === e.target.value) {
-					this.firstClubTypeCurrent = i
-					break
+		bindPickerChange() {
+			let self = this
+			uni.showActionSheet({
+				title:'标题',
+				itemList: ['医美', '生美','项目公司','个人','其他'],
+				success: (e) => {
+					self.firstClubType = e.tapIndex+1
+					switch(e.tapIndex){
+						case 0:
+							this.organizationTypeText = '医美'
+							break
+						case 1:
+							this.organizationTypeText = '生美'
+							break
+						case 2:
+							this.organizationTypeText = '项目公司'
+							break
+						case 3:
+							this.organizationTypeText = '个人'
+							break
+						case 4:
+							this.organizationTypeText = '其他'
+							break
+					}
 				}
-			}
-			// let self = this
-			// uni.showActionSheet({
-			// 	title:'标题',
-			// 	itemList: ['医美', '生美'],
-			// 	success: (e) => {
-			// 		self.firstClubType = e.tapIndex+1
-			// 		switch(e.tapIndex){
-			// 			case 0:
-			// 				this.organizationTypeText = '医美'
-			// 				break;
-			// 			case 1:
-			// 				this.organizationTypeText = '生美'
-			// 				break;
-			// 		}
-			// 	}
-			// })
+			})
 		},
 		bindPickerChange2(e) {
 			this.typtIndex = e.target.value
@@ -959,6 +942,7 @@ export default {
 				}
 				&.second {
 					padding-left: 0;
+					border: none;
 				}
 				.label {
 					text-align: left;

+ 6 - 3
pages/search/search-supplier.vue

@@ -26,7 +26,7 @@
 			<view v-else class="supplier-list">
 					<view class="list clearfix" v-for="(item, index) in supplierList" :key="index">
 						<view class="list-top">
-							<view class="list-top-supplier" @click="goSupplier(item.shopId)">
+							<view class="list-top-supplier" @click="goSupplier(item)">
 								<view class="logo"><img :src="item.logo" alt=""></view>
 								<view class="main">
 									<view class="name">{{ item.name }}</view>
@@ -209,8 +209,11 @@
 				})
 				return Array
 			},
-			goSupplier(value){//跳供应商资料页
-				this.$api.navigateTo('/pages/supplier/user/my-shop?shopId='+value)
+			goSupplier(shop){//跳供应商资料页
+				if(shop.shopType === 2){
+					return
+				}
+				this.$api.navigateTo('/pages/supplier/user/my-shop?shopId='+shop.shopId)
 			},
 		},
 		onReachBottom() {

+ 28 - 5
pages/search/search.vue

@@ -100,7 +100,7 @@
 				@close="topBubble"
 				width="140rpx"
 				left="10rpx"
-				top="-150rpx"
+				top="-80rpx"
 				translateY="100%"
 				triangleRight="60rpx"
 				triangleTop="-22rpx"
@@ -108,7 +108,7 @@
 			>
 				<view class="tui-menu-item" @tap="selectTabs(1)">产品</view>
 				<view class="tui-menu-item" @tap="selectTabs(2)">供应商</view>
-				<view class="tui-menu-item" @tap="selectTabs(3)">项目仪器</view>
+				<!-- <view class="tui-menu-item" @tap="selectTabs(3)">项目仪器</view> -->
 			</tui-bubble-popup>
 		</view>
 		<!-- 搜索历史记录 -->
@@ -174,7 +174,10 @@
 					class="all-type-list-content commodity-list"
 					@click.stop="navToDetailPage(pros.productId)"
 				>
-					<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+					<view class="list-details-image">
+						<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+						<view class="list-details-type" v-if="pros.productType == 2">医疗器械</view>
+					</view>
 					<view class="list-details-info">
 						<view class="list-details-title">
 							<text class="mclap-tag" v-if="pros.beautyActFlag == 1">美博会</text>
@@ -1421,12 +1424,32 @@ page {
 	display: flex;
 	flex-direction: row;
 	box-sizing: content-box;
-	.list-img {
-		width: 210rpx;
+	.list-details-image{
+		width: 218rpx;
 		height: 218rpx !important;
 		margin-right: 26rpx;
 		border-radius: 10rpx;
 		border: 2rpx solid #f3f3f3;
+		position: relative;
+		.list-img {
+			width: 218rpx;
+			height: 218rpx !important;
+		}
+		.list-details-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 10rpx;
+		}
 	}
 }
 .list-details-info {

Datei-Diff unterdrückt, da er zu groß ist
+ 545 - 336
pages/second/form/form-seller.vue


Datei-Diff unterdrückt, da er zu groß ist
+ 550 - 341
pages/second/form/form.vue


+ 4 - 4
pages/second/form/introduce.vue

@@ -52,7 +52,7 @@
 	                  </view>
 	                  <view class="content_list">
 	                    <view class="content_list">2.自主发布</view>
-	                    <text class="content-text"> 卖家每上传一款商品,占据一个展示位,<text class="bluefont">平台收取每款商品100元的展示费用 ,有效期为<text style="font-size: 48px">6</text>个月</text>
+	                    <text class="content-text"> 卖家每上传一款商品,占据一个展示位,<text class="bluefont">有效期为<text style="font-size: 48px">3</text>个月</text>
 	                           平台提供与该商品匹配的详情信息以及文章信息,降低买家决策成本,以促进销售。特殊政策除外(如特定免费时段)。</text>
 	                  </view>
 	                   <view class="content_list">
@@ -103,13 +103,13 @@
 		},
 		methods:{
 			gotoform:function(){
-				this.$api.navigateTo('/pages/second/form/form');
+				this.$api.navigateTo('/pages/second/form/form')
 			},
 			gotolist:function(){
-				this.$api.navigateTo('/pages/second/product/product-list');
+				this.$api.navigateTo('/pages/second/product/product-list')
 			},
 			gotorepair:function(){
-				this.$api.navigateTo('/pages/h5/article/page?linkType=7');
+				this.$api.navigateTo('/pages/h5/article/page?linkType=7')
 			},
 		},
 		

+ 18 - 0
pages/seller/cart/cart.vue

@@ -46,6 +46,7 @@
 										</view>
 										<view class="pros-img" @click.stop="navToListPage(pros.productId)">
 											<image :src="pros.image ? pros.image : ''" alt="" />
+											<view class="pros-type" v-if="pros.productType == 2">医疗器械</view>
 										</view>
 										<view class="pros-product">
 											<view class="producttitle" @click.stop="navToListPage(pros.productId)">
@@ -188,6 +189,7 @@
 									<text class="img-tip">失效</text>
 									<view class="pros-img">
 										<image :src="failure.mainImage ? failure.mainImage : ''" alt="" />
+										<view class="pros-type" v-if="failure.productType == 2">医疗器械</view>
 									</view>
 									<view class="pros-product">
 										<view class="producttitle">{{ failure.name }}</view>
@@ -1263,11 +1265,27 @@ page {
 			border-radius: 10rpx;
 			margin: 0 20rpx;
 			border: 1px solid #f3f3f3;
+			position: relative;
 			image {
 				width: 210rpx;
 				height: 210rpx;
 				border-radius: 10rpx;
 			}
+			.pros-type{
+				width: 64rpx;
+				height: 64rpx;
+				text-align: justify;
+				box-sizing: border-box;
+				padding: 10rpx;
+				border-radius: 0 0 8rpx 8rpx;
+				background-color: #33CCBF;
+				font-size: $font-size-22;
+				color: #FFFFFF;
+				line-height: 25rpx;
+				position: absolute;
+				top: 0;
+				right: 10rpx;
+			}
 		}
 	}
 	.goods-pros-b {

+ 6 - 36
pages/seller/cart/coupon-share.vue

@@ -59,7 +59,9 @@
 import { mapState, mapMutations } from 'vuex'
 import wxLogin from '@/common/config/wxLogin.js'
 import authorize from '@/common/config/authorize.js'
+import wechatPay from '@/utils/mixins/wechatPay.js'
 export default {
+	mixins: [wechatPay],
 	data() {
 		return {
 			StaticUrl: this.$Static,
@@ -154,47 +156,15 @@ export default {
 		},
 		async MiniWxPayFor(couponRecordId) {
 			const wechatcode = await authorize.getCode('weixin')
-			this.PayService.WeChatCouponMiniWxPay({
+			const params = {
 				userId: this.userId,
 				couponId: this.couponId,
 				couponRecordId:couponRecordId,
-				payWay: 'WEIXIN',
+				payType:'XCX',
 				code: wechatcode,
 				source: 1 //支付来源 1 小程序 2 WWW
-			})
-				.then(response => {
-					// 友盟埋点收集微信支付
-					if (process.env.NODE_ENV != 'development') {
-						this.$uma.trackEvent('Um_Event_shareCouponPay', {
-							Um_Key_PageName: '分享优惠券',
-							Um_Key_SourcePage: '线上支付优惠券',
-							Um_Key_CouponId: `${this.couponId}`,
-							Um_Key_userId: `${this.userId}`
-						})
-					}
-					let PayInfo = JSON.parse(response.data.data.payInfo)
-					this.WxRequestPayment(PayInfo)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		WxRequestPayment(data) {
-			let self = this
-			wx.requestPayment({
-				timeStamp: data.timeStamp,
-				nonceStr: data.nonceStr,
-				package: data.package,
-				signType: data.signType,
-				paySign: data.paySign,
-				success: function(res) {
-					wx.reLaunch({ url: '/pages/tabBar/home/index' })
-				},
-				fail: function(res) {
-					self.$util.msg('用户取消支付~')
-				},
-				complete: function(res) {}
-			})
+			}
+			this.weChatMiniCouponWxPay(params,'Um_Event_shareCouponPay','分享优惠券','线上支付优惠券',this.couponId,this.userId)
 		},
 		hideMobel(){
 			this.modal = false

+ 3 - 3
pages/seller/club/addoperator.vue

@@ -76,7 +76,7 @@
 	export default{
 		data() {
 			return{
-				userID:'',
+				userId:'',
 				imageCodeUrl:'',
 				mobileCodeText:'获取验证码'
 			}
@@ -96,13 +96,13 @@
 		    }
 			return {
 			  title: '快来成为机构运营人员吧~',
-			  path: `pages/login/bindOperator?userID=${this.userID}`,
+			  path: `pages/login/bindOperator?userId=${this.userId}`,
 			  imageUrl:'https://static.caimei365.com/app/img/icon/icon-addShare@3x.png'
 			}
 		},
 		onShow() {
 			this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-				this.userID = resolve.userId
+				this.userId = resolve.userId
 			})
 		}
 	}

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

@@ -504,10 +504,10 @@
 							productId:item.productId,
 							productNum:item.number,
 							presentNum:0,
-							productType:item.productType
+							productType:item.giftType
 						})
 					})
-					return {shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
+					return {splitCode:el.splitCode,shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
 				})
 				this.confirmParam.payInfo.postage = parseInt(this.handleFreightData.postage).toFixed(2)
 				this.confirmParam.payInfo.postageFlag = parseInt(this.handleFreightData.postageFlag)

+ 10 - 7
pages/seller/order/order-details.vue

@@ -386,13 +386,16 @@ export default {
 			//监听根据付款状态做操作
 			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
 				.then(response => {
-					let dataCode = response.data.code
-					this.payModelData = response.data
-					if (dataCode == -1) {
-						this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
-					} else {
-						this.isPayModel = true
-						this.modelType = 3
+					let data = this.payModelData = response.data
+					if(data.balanceFlag == 0){// 0可以走余额抵扣,1不能走余额抵扣
+						if (data.code == -1) {
+							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
+						} else {
+							this.isPayModel = true
+							this.modelType = 3
+						}
+					}else{
+						this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
 					}
 				})
 				.catch(error => {

+ 4 - 4
pages/seller/order/order-historylist.vue

@@ -233,7 +233,7 @@
 			</swiper-item>
 		</swiper>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
+		<share-alert v-if="isShareModal" :shareType="isShareType" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModalLayer"></modal-layer>
 		<!-- 再来一单弹窗 -->
@@ -310,6 +310,7 @@ export default {
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
+			isShareType:2,
 			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
@@ -526,7 +527,6 @@ export default {
 			}
 		},
 		handOrderAgain(orderId) {
-			// 再来一单
 			this.aganOrderId = orderId
 			this.SellerService.SellerCreateOrderAgain({
 				confirmFlag: 0,
@@ -536,9 +536,9 @@ export default {
 				.then(res => {
 					if (res.code == 0) {
 						this.$api.setStorage('orderUserInfo', {
-							clubID: res.data.clubId,
+							clubId: res.data.clubId,
 							againBuyProductIds: res.data.productIds,
-							userID: res.data.userId
+							userId: res.data.userId
 						})
 						this.$api.navigateTo('/pages/seller/cart/cart')
 					}

+ 1 - 0
pages/seller/order/order-list.vue

@@ -222,6 +222,7 @@
 								<order-button
 									ref="orderButton"
 									:status="order.status"
+									:order="order"
 									:orderId="order.orderId"
 									:rechargeGoods="order.rechargeGoods"
 									:userId="order.userId"

+ 53 - 0
pages/service/news-detailes.vue

@@ -0,0 +1,53 @@
+<template>
+	<view class="container clearfix rich-text-temp">
+		<view class="content-title">{{ title }}</view>
+		<rich-text-template ref="childTemplate"></rich-text-template>
+	</view>
+</template>
+
+<script>
+	import richTextTemplate from '@/components/cm-module/listTemplate/richTextTemplate'
+	
+	var self
+	export default{
+		components: {
+		   richTextTemplate
+		},
+		data() {
+			return{
+				title:'',
+				type: 'introduction'
+			}
+		},
+		onLoad(option){
+			this.GetNewsCapacity(option.id)
+		},
+		methods:{
+			GetNewsCapacity(id){
+				this.CommonService.GetNewsCapacity({id:id}).then(response =>{
+					let data =response.data
+					let html = this.$api.adaptRichTextImg(data.capacity)
+					this.title = data.title
+					this.$refs.childTemplate.html = html
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color: #FFFFFF;
+	}
+	.content-title{
+		width: 100%;
+		height: 80rpx;
+		line-height: 80rpx;
+		text-align: center;
+		color: #333333;
+		font-size: $font-size-32;
+		font-weight: bold;
+	}
+</style>

+ 207 - 0
pages/service/news-list.vue

@@ -0,0 +1,207 @@
+<template>
+	<view class="container club clearfix">
+		<view class="club-main">
+			<view v-if="isEmpty" class="empty-container">
+				<image class="club-empty-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png" mode="aspectFit"></image>
+				<view class="txt">暂无公告~</view>
+			</view>
+			<view v-else class="club-list">
+				<scroll-view scroll-y="true">
+					<view class="list" v-for="(list, index) in newsList" :key="index" @tap='detail(list.id)'>
+						<view class="list-left">
+							<text class="iconfont icon-xiaochengxu"></text>
+							<text class="txt">{{ list.title }}</text>
+						</view>
+						<view class="list-right">{{ list.creationtime }}</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'	
+	import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
+	import tuiNomore from '@/components/tui-components/nomore/nomore'
+	export default {
+		components:{
+			tuiLoadmore,
+			tuiNomore,
+		},
+		data() {
+			return {
+				serviceProviderId:'',
+				isShowClose:false,
+				searchInputVal:'',
+				isEmpty:false,
+				listQuery:{
+					pageNum:1,
+					pageSize:20,
+				},
+				nomoreText: '上拉显示更多',
+				hasNextPage:false,
+				loadding: false,
+				pullUpOn: true,
+				pullFlag: true,
+				allowDataStatus:true,
+				wrapperHeight:'100%',
+				scrollHeight:'',
+				deleteAddressId:'',
+				currPage:'',//当前页面
+				prevPage:'',//上一个页面
+				tabCurrentIndex:0,
+				listStatus:1,
+				newsList:[],
+				isIphoneX:this.$store.state.isIphoneX,
+				show_index:0,//控制显示那个组件
+			}
+		},
+		onLoad(){				
+			this.setScrollHeight()
+			this.GetNewsList()
+		},
+		methods: {
+			setScrollHeight() {
+				// 窗口高度 - 底部距离
+				setTimeout(()=> {
+					const query = wx.createSelectorQuery().in(this)
+					query.selectAll('.add-btn').boundingClientRect()
+					query.exec(res => {
+						if(res[0][0]){
+							let winHeight = this.$api.getWindowHeight(),
+								eleTop = res[0][0].top - 1
+								this.scrollHeight =  eleTop
+						}
+					})
+				}, 500)
+			},
+			GetNewsList(){	
+				this.CommonService.GetNewsList(this.listQuery).then(response =>{
+					let data = response.data
+					if(data.results && data.results.length > 0){
+						this.isEmpty = false
+						this.hasNextPage = data.hasNextPage
+						this.newsList =data.results
+						this.pullFlag = false
+						setTimeout(()=>{this.pullFlag = true},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = true
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}else{
+						this.isEmpty = true
+					}
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},	
+			getOnReachBottomData(){
+				this.listQuery.pageNum+=1
+				this.CommonService.GetNewsList(this.listQuery).then(response =>{
+					let data = response.data
+					if(data.results && data.results.length > 0){
+						this.hasNextPage = data.hasNextPage
+						this.newsList = this.newsList.concat(data.results) 
+						this.pullFlag = false// 防上拉暴滑
+						setTimeout(()=>{this.pullFlag = true},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			detail(id){// 跳转公告详情
+				this.$api.navigateTo(`/pages/service/news-detailes?id=${id}`)
+			},
+		},
+		onReachBottom() {
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData()
+			}	
+		},
+		onPullDownRefresh() {
+			setTimeout(() => {
+				this.listQuery.pageNum = 1
+				this.GetNewsList()
+				uni.stopPullDownRefresh()
+			}, 200)
+		},
+		onShow() {
+			
+		}
+	}
+</script>
+
+<style lang='scss'>
+	page {
+		height: auto;
+	}
+	page,.container{
+		/* padding-bottom: 120upx; */
+		background: #FFFFFF;
+	}
+	.container{
+		position: relative;
+	}
+	.club-main{
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		.list{
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: 100rpx;
+			line-height: 100rpx;
+			background: #FFFFFF;
+			position: relative;
+			border-bottom: 1px solid #EBEBEB;
+			.list-left{
+				display: flex;
+				flex: 8;
+				.icon-xiaochengxu{
+					font-size: $font-size-22;
+					color: #999999;
+					margin-right: 10rpx;
+				}
+				.txt{
+					display: flex;
+					flex: 1;
+					font-size: $font-size-26;
+					color: $text-color;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					display: -webkit-box;
+					-webkit-line-clamp: 1;
+					line-clamp: 1;
+					-webkit-box-orient: vertical;
+				}
+			}
+			.list-right{
+				font-size: $font-size-24;
+				color: #999999;
+				text-align: right;
+			}
+		}
+	}
+</style>
+

+ 18 - 1
pages/supplier/user/my-shop.vue

@@ -72,6 +72,7 @@
 						@click.stop="navToDetailPage(prop.productId)"
 					>
 						<image class="item-img tui-skeleton-fillet" :src="prop.image" mode="aspectFill"></image>
+						<view class="floor-item-type" v-if="prop.productType == 2">医疗器械</view>
 						<view class="floor-item-content">
 							<view class="title tui-skeleton-rect">
 								<text class="mclap-tag" v-if="prop.beautyActFlag == 1">美博会</text>
@@ -245,6 +246,7 @@
 						@click.stop="navToDetailPage(prop.productId)"
 					>
 						<image class="item-img tui-skeleton-fillet" :src="prop.image" mode="aspectFill"></image>
+						<view class="floor-item-type" v-if="prop.productType == 2">医疗器械</view>
 						<view class="floor-item-content">
 							<view class="title tui-skeleton-rect">
 								<text class="mclap-tag" v-if="prop.beautyActFlag == 1">美博会</text>
@@ -589,7 +591,6 @@ export default {
 			})
 				.then(response => {
 					this.productList = this.ReturnNewProducts(data, response.data)
-					console.log('合并价格后', this.productList)
 				})
 				.catch(error => {
 					this.$util.msg(error.msg, 2000)
@@ -902,9 +903,25 @@ page {
 			float: left;
 			box-sizing: border-box;
 			padding-bottom: 10rpx;
+			position: relative;
 			&:nth-child(2n) {
 				margin-right: 0;
 			}
+			.floor-item-type{
+				width: 64rpx;
+				height: 64rpx;
+				text-align: justify;
+				box-sizing: border-box;
+				padding: 10rpx;
+				border-radius: 0 0 8rpx 8rpx;
+				background-color: #33CCBF;
+				font-size: $font-size-22;
+				color: #FFFFFF;
+				line-height: 25rpx;
+				position: absolute;
+				top: 0;
+				right: 16rpx;
+			}
 			.item-img {
 				width: 341rpx;
 				height: 341rpx;

+ 6 - 0
pages/tabBar/home/index.vue

@@ -8,6 +8,8 @@
 			<banner :list="bannerImageList" v-if="isNavRequest"></banner>
 			<!-- 金刚区菜单 -->
 			<navbars :list="navBarsList" v-if="isNavRequest"></navbars>
+			<!-- 轮播公告 -->
+			<notice :list="newsList" v-if="isNavRequest && newsList.length>0"></notice>
 			<!-- 优惠券入口 -->
 			<coupon v-if="isNavRequest && couponEntry == 1"></coupon>
 			<!-- 直播 -->
@@ -33,6 +35,7 @@
 	import customer from '@/components/cm-module/homeIndex/customer.vue'
 	import banner from '@/components/cm-module/homeIndex/banner.vue'
 	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
+	import notice from '@/components/cm-module/homeIndex/notice.vue'
 	import coupon from '@/components/cm-module/homeIndex/coupon.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
@@ -46,6 +49,7 @@
 			customer,
 			banner,
 			navbars,
+			notice,
 			coupon,
 			pageFloor,
 			pageSpecial,
@@ -75,6 +79,7 @@
 				flootData:[],				// 楼层
 				bannerImageList:[],			// 轮播
 				navBarsList:[],				// 导航分类
+				newsList:[],				// 公告
 				templateData:{},
 				pageList:[],				// 楼层
 				supplierObj:{},				// 供应商列表
@@ -167,6 +172,7 @@
 					this.skeletonShow = false
                     this.navBarsList = data.topMenuList
                     this.couponEntry = data.couponEntry
+                    this.newsList = data.annlist
                     if(!this.hasLogin && this.couponEntry == 1){
                     	if(uni.getStorageSync('isActivitySwitch')){
                     		this.$store.commit('setActivity',false)

+ 21 - 1
pages/user/collection/collection.vue

@@ -33,7 +33,9 @@
 								</view>
 							</view>
 							<view class="tui-goods-image" @click.stop="navToDetailPage(pros.productId)"
-								><image :src="pros.image" class="tui-goods-img" />
+								>
+								<image :src="pros.image" class="tui-goods-img" />
+								<view class="tui-goods-type" v-if="pros.productType == 2">医疗器械</view>
 							</view>
 							<view
 								class="tui-goods-info"
@@ -798,7 +800,10 @@ page {
 .tui-goods-image {
 	width: 180rpx;
 	height: 180rpx !important;
+	border: 2rpx solid #f3f3f3;
 	border-radius: 12rpx;
+	position: relative;
+	border: 2rpx solid #f3f3f3;
 	.tui-goods-img {
 		width: 180rpx;
 		height: 180rpx !important;
@@ -806,6 +811,21 @@ page {
 		flex-shrink: 0;
 		display: block;
 	}
+	.tui-goods-type{
+		width: 64rpx;
+		height: 64rpx;
+		text-align: justify;
+		box-sizing: border-box;
+		padding: 10rpx;
+		border-radius: 0 0 8rpx 8rpx;
+		background-color: #33CCBF;
+		font-size: $font-size-22;
+		color: #FFFFFF;
+		line-height: 25rpx;
+		position: absolute;
+		top: 0;
+		right: 10rpx;
+	}
 }
 .tui-goods-info {
 	padding-left: 20rpx;

+ 6 - 36
pages/user/coupon/coupon-activity.vue

@@ -108,7 +108,9 @@ import { mapState, mapMutations } from 'vuex'
 import authorize from '@/common/config/authorize.js'
 import wxLogin from '@/common/config/wxLogin.js'
 import couponTabs from '@/components/cm-module/coupon/tui-tabs.vue'
+import wechatPay from '@/utils/mixins/wechatPay.js'
 export default {
+	mixins: [wechatPay],
 	components: {
 		couponTabs
 	},
@@ -362,47 +364,15 @@ export default {
 		},
 		async MiniWxPayFor(coupon,couponRecordId) {
 			const wechatcode = await authorize.getCode('weixin')
-			this.PayService.WeChatCouponMiniWxPay({
+			const params = {
 				userId: this.listQuery.userId,
 				couponId: coupon.couponId,
 				couponRecordId:couponRecordId,
-				payWay: 'WEIXIN',
+				payType:'XCX',
 				code: wechatcode,
 				source: 1 //支付来源 1 小程序 2 WWW
-			})
-				.then(response => {
-					// 友盟埋点收集微信支付
-					if (process.env.NODE_ENV != 'development') {
-						this.$uma.trackEvent('Um_Event_meibohuiCouponPay', {
-							Um_Key_PageName: '美博会优惠券活动页',
-							Um_Key_SourcePage: '线上支付优惠券',
-							Um_Key_CouponId: `${coupon.couponId}`,
-							Um_Key_userId: `${this.userId}`
-						})
-					}
-					let PayInfo = JSON.parse(response.data.data.payInfo)
-					this.WxRequestPayment(PayInfo)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		WxRequestPayment(data) {
-			let self = this
-			wx.requestPayment({
-				timeStamp: data.timeStamp,
-				nonceStr: data.nonceStr,
-				package: data.package,
-				signType: data.signType,
-				paySign: data.paySign,
-				success: function(res) {
-					wx.reLaunch({ url: '/pages/tabBar/user/user' })
-				},
-				fail: function(res) {
-					self.$util.msg('用户取消支付~')
-				},
-				complete: function(res) {}
-			})
+			}
+			this.weChatMiniCouponWxPay(params,'Um_Event_meibohuiCouponPay','美博会优惠券活动页','线上支付优惠券',coupon.couponId,this.userId)
 		},
 		hideMobel(){
 			this.modal = false

+ 6 - 36
pages/user/coupon/coupon-collection.vue

@@ -96,7 +96,9 @@
 import { mapState, mapMutations } from 'vuex'
 import authorize from '@/common/config/authorize.js'
 import couponTabs from '@/components/cm-module/coupon/tui-tabs.vue'
+import wechatPay from '@/utils/mixins/wechatPay.js'
 export default {
+	mixins: [wechatPay],
 	components: {
 		couponTabs
 	},
@@ -340,47 +342,15 @@ export default {
 		},
 		async MiniWxPayFor(coupon,couponRecordId) {
 			const wechatcode = await authorize.getCode('weixin')
-			this.PayService.WeChatCouponMiniWxPay({
+			const params = {
 				userId: this.listQuery.userId,
 				couponId: coupon.couponId,
 				couponRecordId:couponRecordId,
-				payWay: 'WEIXIN',
+				payType:'XCX',
 				code: wechatcode,
 				source: 1 //支付来源 1 小程序 2 WWW
-			})
-			.then(response => {
-				// 友盟埋点收集微信支付
-				if (process.env.NODE_ENV != 'development') {
-					this.$uma.trackEvent('Um_Event_userCouponCollectionPay', {
-						Um_Key_PageName: '领券中心',
-						Um_Key_SourcePage: '线上支付优惠券',
-						Um_Key_CouponId: `${coupon.couponId}`,
-						Um_Key_userId: `${this.userId}`
-					})
-				}
-				let PayInfo = JSON.parse(response.data.data.payInfo)
-				this.WxRequestPayment(PayInfo)
-			})
-			.catch(error => {
-				this.$util.msg(error.msg, 2000)
-			})
-		},
-		WxRequestPayment(data) {
-			let self = this
-			wx.requestPayment({
-				timeStamp: data.timeStamp,
-				nonceStr: data.nonceStr,
-				package: data.package,
-				signType: data.signType,
-				paySign: data.paySign,
-				success: function(res) {
-					wx.reLaunch({ url: '/pages/tabBar/user/user' })
-				},
-				fail: function(res) {
-					self.$util.msg('用户取消支付~')
-				},
-				complete: function(res) {}
-			})
+			}
+			this.weChatMiniCouponWxPay(params,'Um_Event_userCouponCollectionPay','领券中心','线上支付优惠券',coupon.couponId,this.userId)
 		},
 		hideMobel(){
 			this.modal = false

+ 16 - 0
pages/user/coupon/coupon-product.vue

@@ -20,6 +20,7 @@
 					@click.stop="navToDetailPage(pros.productId)"
 				>
 					<image class="item-img tui-skeleton-fillet" :src="pros.image" mode="aspectFill"></image>
+					<view class="floor-item-type" v-if="pros.productType == 2">医疗器械</view>
 					<view class="floor-item-content">
 						<view class="title tui-skeleton-rect">
 							<text class="mclap-tag" v-if="pros.beautyActFlag == '1'">美博会</text>
@@ -294,6 +295,21 @@ page {
 			display: block;
 			margin-bottom: 8rpx;
 		}
+		.floor-item-type{
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33CCBF;
+			font-size: $font-size-22;
+			color: #FFFFFF;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 16rpx;
+		}
 		.floor-item-content {
 			width: 100%;
 			padding: 0 20rpx;

+ 12 - 8
pages/user/member/member-pay.vue

@@ -69,7 +69,9 @@
 <script>
 import authorize from '@/common/config/authorize.js'
 const thorui = require('@/components/clipboard/clipboard.thorui.js')
+import wechatPay from '@/utils/mixins/wechatPay.js'
 export default {
+	mixins: [wechatPay],
 	data() {
 		return {
 			isIphoneX: this.$store.state.isIphoneX,
@@ -167,18 +169,20 @@ export default {
 		async MiniWxPayFor() {
 			// 使用微信支付
 			this.payParams.code = await authorize.getCode('weixin')
-			this.PayService.PayOrderVipWechat(this.payParams)
-				.then(response => {
-					let PayInfo = JSON.parse(response.data.data.payInfo)
-					this.WxRequestPayment(PayInfo)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+			this.weChatMiniVipWxPay(this.payParams)
+			// this.PayService.PayOrderVipWechat(this.payParams)
+			// 	.then(response => {
+			// 		let PayInfo = JSON.parse(response.data.rt10_payInfo)
+			// 		this.WxRequestPayment(PayInfo)
+			// 	})
+			// 	.catch(error => {
+			// 		this.$util.msg(error.msg, 2000)
+			// 	})
 		},
 		WxRequestPayment(data) {
 			// 微信支付Api
 			let self = this
+			console.log('data',data)
 			wx.requestPayment({
 				timeStamp: data.timeStamp,
 				nonceStr: data.nonceStr,

+ 15 - 15
pages/user/operator/list.vue

@@ -2,7 +2,7 @@
 	<view class="container operator clearfix">
 		<view class="operator-top clearfix">
 			<view class="operator-title">
-				<view class="head"><image :src="clubImage == null ? 'https://static.caimei365.com/app/img/icon/icon-club@3x.png' : clubImage" mode=""></image></view>
+				<view class="head"><image :src="clubImage" mode=""></image></view>
 				<view class="title">{{clubName}}</view>
 			</view>
 			<view class="operator-search">
@@ -83,8 +83,8 @@
 
 <script>
 	import authorize from '@/common/config/authorize.js'	
-	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
-	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
+	import tuiNomore from '@/components/tui-components/nomore/nomore'
 	export default {
 		components:{
 			tuiLoadmore,
@@ -125,19 +125,19 @@
 			}
 		},
 		onLoad(){				
-			this.setScrollHeight();
+			this.setScrollHeight()
 		},
 		methods: {
 			setScrollHeight() {
 				// 窗口高度 - 底部距离
 				setTimeout(()=> {
-					const query = wx.createSelectorQuery().in(this);
-					query.selectAll('.add-btn').boundingClientRect();
+					const query = wx.createSelectorQuery().in(this)
+					query.selectAll('.add-btn').boundingClientRect()
 					query.exec(res => {
 						if(res[0][0]){
 							let winHeight = this.$api.getWindowHeight(),
-								eleTop = res[0][0].top - 1;
-								this.scrollHeight =  eleTop;
+								eleTop = res[0][0].top - 1
+								this.scrollHeight =  eleTop
 						}
 					})
 				}, 500)
@@ -153,8 +153,8 @@
 						this.isEmpty = false
 						this.hasNextPage = response.data.hasNextPage
 						this.operatorList =responseData.results
-						this.pullFlag = false;
-						setTimeout(()=>{this.pullFlag = true;},500)
+						this.pullFlag = false
+						setTimeout(()=>{this.pullFlag = true},500)
 						if(this.hasNextPage){
 							this.pullUpOn = false
 							this.nomoreText = '上拉显示更多'
@@ -177,8 +177,8 @@
 					if(responseData.results&&responseData.results.length > 0){
 						this.hasNextPage = response.data.hasNextPage
 						this.operatorList = this.operatorList.concat(responseData.results) 
-						this.pullFlag = false;// 防上拉暴滑
-						setTimeout(()=>{this.pullFlag = true;},500)
+						this.pullFlag = false// 防上拉暴滑
+						setTimeout(()=>{this.pullFlag = true},500)
 						if(this.hasNextPage){
 							this.pullUpOn = false
 							this.nomoreText = '上拉显示更多'
@@ -292,10 +292,10 @@
 		onShow() {
 			this.$api.getComStorage('clubInfo').then((resolve) =>{
 				this.clubName = resolve.name
-				this.clubImage = resolve.image ? resolve.image : ''
+				this.clubImage = resolve.image ? resolve.image : 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
 				this.listQuery.userId = resolve.userId
-				this.listQuery.pageNum = 1;
-				this.InitOperatorList();
+				this.listQuery.pageNum = 1
+				this.InitOperatorList()
 			})
 		}
 	}

+ 7 - 3
pages/user/order/create-order.vue

@@ -572,10 +572,10 @@
 							productId:item.productId,
 							productNum:item.number,
 							presentNum:0,
-							productType:item.productType
+							productType:item.giftType
 						})
 					})
-					return {shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
+					return {splitCode:el.splitCode,shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
 				})
 				this.confirmParam.payInfo.postage = parseInt(this.hanldFreight).toFixed(2)
 				this.confirmParam.payInfo.postageFlag = parseInt(this.hanldFreePostFlag)
@@ -607,7 +607,11 @@
 						this.$util.msg('订单提交成功',3000,true,'success')
 						setTimeout(()=>{
 							this.isSubLoading = false
-							this.$api.redirectTo(`/pages/user/order/order-payment?type=${this.submitState}&orderId=${data.orderId}`)
+							if(data.onlinePayFlag === 1){
+								this.$api.redirectTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
+							}else{
+								this.$api.redirectTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
+							}
 						},3000)
 					}
 				}).catch(error =>{

+ 49 - 40
pages/user/order/order-details.vue

@@ -96,6 +96,18 @@
 			:beanNumber="beanNumber"
 			@cancel="handleBeanlClick"
 		></activityBean>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		>
+		</tui-modal>
 	</view>
 </template>
 
@@ -172,7 +184,19 @@ export default {
 			orderSubmitType: false, //自主订单
 			beansType: 1,
 			beanNumber: 0,
-			isActivityBean: false
+			isActivityBean: false,
+			modal:false,
+			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+			modalButton: [
+				{
+					text: '确定',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+					},
+					plain: false
+				}
+			],
 		}
 	},
 	onLoad(option) {
@@ -259,11 +283,13 @@ export default {
 					}
 				})
 				.catch(error => {
-					this.$util.modal('提示', '订单查询失败,请稍后重试~', '确定', '', false, () => {
-						this.$api.switchTabTo('/pages/tabBar/home/index')
-					})
+					this.modal = true
 				})
 		},
+		handleClick(){
+			this.modal = false
+			this.$api.switchTabTo('/pages/tabBar/home/index')
+		},
 		handButtonConfirm(data) {
 			//监听点击时间的按钮类型并执行...
 			this.handShowAlert(data)
@@ -296,11 +322,13 @@ export default {
 		},
 		getOrderPaymentValidation(data) {
 			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
-				.then(response => {
-					let dataCode = response.data.code
-					this.payModelData = response.data
-					switch (dataCode) {
+			this.OrderService.OrderPaymentValidation({ orderId: data.orderId }).then(response => {
+				let data = response.data
+				this.payModelData = data
+				if(data.balanceFlag == 1){// 0可以走余额抵扣,1不能走余额抵扣
+					this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
+				}else{
+					switch (data.code) {
 						case 1:
 							this.isPayModel = true
 							this.modelType = 1
@@ -313,22 +341,17 @@ export default {
 							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
 							break
 						default:
-							if (response.data.onlinePayFlag == 1) {
-								this.$api.navigateTo(
-									`/pages/user/order/order-payment?type=onlinePay&Amount=${
-										response.data.pendingPayments
-									}&orderId=${data.orderId}`
-								)
+							if (data.onlinePayFlag == 1) {// 只能线下
+								this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
 							} else {
-								this.$api.navigateTo(
-									`/pages/user/order/order-payment?type=payfirm&orderId=${data.orderId}`
-								)
+								this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
 							}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+				}
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
 		},
 		hanldPaymentConfirm(data) {
 			//余额抵扣跳转
@@ -340,17 +363,7 @@ export default {
 							`/pages/user/order/success?type=deduction&data=${JSON.stringify({ data: _data })}`
 						)
 					} else {
-						if (data.order.onlinePayFlag === 1) {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=onlinePay&Amount=${
-									data.order.pendingPayments
-								}&orderId=${data.order.orderId}`
-							)
-						} else {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=payfirm&orderId=${data.order.orderId}`
-							)
-						}
+						this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.order.orderId}`)
 					}
 				})
 				.catch(error => {
@@ -359,14 +372,10 @@ export default {
 		},
 		hanldCancelConfirm(data) {
 			//不使用余额抵扣直接跳转收银台
-			if (data.onlinePayFlag == '1') {
-				this.$api.navigateTo(
-					`/pages/user/order/order-payment?type=onlinePay&Amount=${this.orderInfo.pendingPayments}&orderId=${
-						data.orderId
-					}`
-				)
+			if (data.onlinePayFlag == 1) {// 只能线下
+				this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
 			} else {
-				this.$api.navigateTo(`/pages/user/order/order-payment?type=payfirm&orderId=${data.orderId}`)
+				this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
 			}
 		},
 		hanldConfirmFn(orderId) {

+ 34 - 47
pages/user/order/order-list.vue

@@ -99,7 +99,7 @@
 										<view
 											class="title-text tui-skeleton-fillet"
 											v-else
-											@click="goShophome(shop.shopId)"
+											@click="goShophome(shop)"
 											>{{ shop.shopName }}<label class="iconfont icon-jinrudianpu"></label
 										></view>
 									</view>
@@ -343,8 +343,11 @@ export default {
 		}
 	},
 	methods: {
-		goShophome(id) {
-			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${id}`)
+		goShophome(shop) {
+			if(shop.shopType === 2){
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
 		},
 		// 滚动切换标签样式
 		onChange: function(e) {
@@ -520,32 +523,30 @@ export default {
 			//监听根据付款状态做操作
 			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
 				.then(response => {
-					let dataCode = response.data.code
-					this.payModelData = response.data
-					switch (dataCode) {
-						case 1:
-							this.isPayModel = true
-							this.modelType = 1
-							break
-						case 2:
-							this.isPayModel = true
-							this.modelType = 2
-							break
-						case -1:
-							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
-							break
-						default:
-							if (response.data.onlinePayFlag == 1) {
-								this.$api.navigateTo(
-									`/pages/user/order/order-payment?type=onlinePay&Amount=${
-										response.data.pendingPayments
-									}&orderId=${data.orderId}`
-								)
-							} else {
-								this.$api.navigateTo(
-									`/pages/user/order/order-payment?type=payfirm&orderId=${data.orderId}`
-								)
-							}
+					let data = response.data
+					this.payModelData = data
+					if(data.balanceFlag == 1){// 0可以走余额抵扣,1不能走余额抵扣
+						this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
+					}else{
+						switch (data.code) {
+							case 1:
+								this.isPayModel = true
+								this.modelType = 1
+								break
+							case 2:
+								this.isPayModel = true
+								this.modelType = 2
+								break
+							case -1:
+								this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
+								break
+							default:
+								if (data.onlinePayFlag == 1) {// 只能线下
+									this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
+								} else {
+									this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
+								}
+						}
 					}
 				})
 				.catch(error => {
@@ -562,17 +563,7 @@ export default {
 							`/pages/user/order/success?type=deduction&data=${JSON.stringify({ data: _data })}`
 						)
 					} else {
-						if (data.order.onlinePayFlag === 1) {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=onlinePay&Amount=${
-									data.order.pendingPayments
-								}&orderId=${data.order.orderId}`
-							)
-						} else {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=payfirm&orderId=${data.order.orderId}`
-							)
-						}
+						this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.order.orderId}`)
 					}
 				})
 				.catch(error => {
@@ -581,14 +572,10 @@ export default {
 		},
 		hanldCancelConfirm(data) {
 			//不使用余额抵扣直接跳转收银台
-			if (data.onlinePayFlag == '1') {
-				this.$api.navigateTo(
-					`/pages/user/order/order-payment?type=onlinePay&Amount=${
-						this.hanldOrderData.pendingPayments
-					}&orderId=${data.orderId}`
-				)
+			if (data.onlinePayFlag === 1) {// 只能线下
+				this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
 			} else {
-				this.$api.navigateTo(`/pages/user/order/order-payment?type=payfirm&orderId=${data.orderId}`)
+				this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
 			}
 		},
 		hanldConfirmFn(orderId) {

+ 273 - 0
pages/user/order/order-pay-list.vue

@@ -0,0 +1,273 @@
+<template>
+	<view class="container cashier">
+		<view class="pay-title" @click="handlePayunder">
+			<view class="content">
+				因线上支付政策调整,请对每家店铺分别进行线上付款;若需要直接转账支付订单,请点击右侧箭头查看线下转账信息。
+				<view class="content-icon"> <text class="iconfont icon-xiayibu"></text> </view>
+			</view>
+		</view>
+		<view class="pay-content">
+			<view class="pay-list" v-for="(list, index) in list" :key="index">
+				<view class="pay-list-title">{{ list.shopName }}</view>
+				<view class="pay-list-goods" v-for="(pros, prosIndex) in list.orderProductList" :key="prosIndex">
+					<view class="pay-list-image"> <image :src="pros.image" class="image" mode=""></image> </view>
+					<view class="pay-list-info">
+						<view class="info-title">{{ pros.name }}</view>
+						<view class="info-view" v-if="pros.productUnit != ''"> 规格:{{ pros.productUnit ? pros.productUnit : '' }} </view>
+						<view class="info-view" v-if="pros.productCode != '' && pros.productCode != null">
+							商品编码:{{ pros.productCode ? pros.productCode : '' }}
+						</view>
+						<view class="info-price">
+							<view class="price">¥{{ pros.price | NumFormat }}</view>
+							<view class="count"><text class="sm">X</text> {{ pros.num }}</view>
+						</view>
+					</view>
+				</view>
+				<view class="pay-list-msg">
+					<view class="list-msg" v-if="list.receiptAmount > 0"
+						>已付:<text class="text">¥{{ list.receiptAmount | NumFormat }}</text></view
+					>
+					<view class="list-msg" v-if="list.eachDiscount > 0"
+						>优惠:<text class="text">¥{{ list.eachDiscount | NumFormat }}</text></view
+					>
+				</view>
+				<view class="pay-list-btn">
+					<view class="btn" v-if="list.receiptStatus != 3" @click="handlePayOrder(list.shopOrderId)">付款</view>
+					<view class="list-msg" v-if="list.obligation > 0"
+						>待付:<text class="text red">¥{{ list.obligation | NumFormat }}</text></view
+					>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			orderId: 0,
+			list: []
+		}
+	},
+	onLoad(option) {
+		this.initData(option)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			if (value) {
+				return Number(value).toFixed(2)
+			} else {
+				return '0.00'
+			}
+		}
+	},
+	methods: {
+		initData(e) {
+			console.log(e)
+			this.orderId = e.orderId
+			this.payOrderId = '#' + e.orderId + '#'
+			this.PayOrderShoporders(this.orderId)
+		},
+		PayOrderShoporders(orderId) {
+			this.PayService.PayOrderShoporders({ orderId: orderId })
+				.then(response => {
+					this.list = response.data
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		handlePayOrder(shopOrderId){
+			this.$api.navigateTo(`/pages/user/order/order-payment?shopOrderId=${shopOrderId}`)
+		},
+		handlePayunder(){
+			this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${this.orderId}`)
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto !important;
+	background-color: #f7f7f7;
+}
+.cashier {
+	width: 100%;
+}
+.pay-title {
+	width: 100%;
+	height: 182rpx;
+	box-sizing: border-box;
+	padding: 24rpx 24rpx 0 24rpx;
+	background-color: #ffffff;
+	.content {
+		width: 100%;
+		height: 100%;
+		position: relative;
+		box-sizing: border-box;
+		padding: 20rpx 100rpx 20rpx 24rpx;
+		background: url(https://static.caimei365.com/app/img/bg/pay-bgtitle@2x.png) no-repeat;
+		background-size: cover;
+		line-height: 40rpx;
+		font-size: $font-size-26;
+		text-align: justify;
+		color: $color-system;
+		.content-icon {
+			width: 40rpx;
+			height: 100%;
+			position: absolute;
+			top: 0;
+			right: 24rpx;
+			line-height: 158rpx;
+			.iconfont {
+				font-size: $font-size-34;
+				color: $color-system;
+				text-align: right;
+			}
+		}
+	}
+}
+.pay-content {
+	width: 100%;
+	height: auto;
+	.pay-list {
+		width: 100%;
+		height: auto;
+		padding: 30rpx 24rpx 30rpx 24rpx;
+		box-sizing: border-box;
+		background-color: #ffffff;
+		margin-bottom: 20rpx;
+		.pay-list-title {
+			width: 100%;
+			height: 42rpx;
+			line-height: 42rpx;
+			font-size: $font-size-30;
+			color: #333333;
+			margin-bottom: 20rpx;
+		}
+		.pay-list-goods {
+			width: 100%;
+			height: 180rpx;
+			margin-bottom: 30rpx;
+			.pay-list-image {
+				width: 180rpx;
+				height: 180rpx;
+				box-sizing: border-box;
+				border: 1px solid #e1e1e1;
+				border-radius: 8rpx;
+				float: left;
+				margin-right: 13rpx;
+				.image {
+					width: 100%;
+					height: 100%;
+					display: block;
+					border-radius: 8rpx;
+				}
+			}
+			.pay-list-info {
+				width: 508rpx;
+				height: 100%;
+				float: right;
+				.info-title {
+					width: 100%;
+					display: inline-block;
+					height: auto;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+					line-height: 38rpx;
+					font-size: $font-size-28;
+					color: #333333;
+				}
+				.info-view {
+					height: 40rpx;
+					line-height: 40rpx;
+					color: #999999;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+					font-size: $font-size-22;
+					color: #999999;
+				}
+				.info-price {
+					height: 40rpx;
+					width: 100%;
+					float: left;
+					line-height: 40rpx;
+					font-size: $font-size-26;
+					.price {
+						color: #333333;
+						float: left;
+					}
+					.count {
+						float: right;
+						color: #666666;
+						.sm{
+							font-size: $font-size-22;
+						}
+					}
+				}
+			}
+		}
+		.pay-list-msg {
+			width: 100%;
+			height: 40rpx;
+			line-height: 40rpx;
+			font-size: $font-size-26;
+			margin-bottom: 30rpx;
+			.list-msg {
+				float: right;
+				margin-left: 30rpx;
+				font-size: $font-size-26;
+				color: #333333;
+				font-weight: bold;
+				.text {
+					font-weight: normal;
+					&.red {
+						color: #f94b4b;
+					}
+				}
+			}
+		}
+		.pay-list-btn {
+			width: 100%;
+			height: 64rpx;
+			.btn {
+				width: 160rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				background: $btn-confirm;
+				font-size: $font-size-26;
+				text-align: center;
+				float: right;
+				color: #ffffff;
+				border-radius: 32rpx;
+			}
+			.list-msg {
+				float: right;
+				line-height: 64rpx;
+				margin-right: 40rpx;
+				font-size: $font-size-26;
+				color: #333333;
+				font-weight: bold;
+				.text {
+					font-weight: normal;
+					&.red {
+						color: #f94b4b;
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 202 - 17
pages/user/order/order-pay.vue

@@ -76,6 +76,41 @@
 				</view>
 			</view>
 		</view>
+		<!--大额转账弹窗  -->
+		<tui-modal :show="modal" :padding="'30rpx 30rpx'" @cancel="hideMobel(0)" :custom="true" fadeIn >
+			<view class="tui-modal-custom">
+				<view class="tui-prompt-title">大额银联转账信息</view>
+				<view class="tui-prompt-text">
+					<view class="tui-prompt-tips">请使用银行手机app或者网银输入以下信息进行转账。每次发起支付请求,收款账号都会变化,请使用最新的收款账号进行转账。</view>
+					<view class="tui-prompt-item">
+						<text class="text">户名:</text>
+						{{ bigPayInfo.receiveName }}
+						<view class="copy" @click.stop="copyClipboard(bigPayInfo.receiveName)"><text class="iconfont icon-fuzhi_o"></text></view>
+					</view>
+					<view class="tui-prompt-item">
+						<text class="text">收款账号:</text>
+						{{ bigPayInfo.receiveAccountNo }}
+						<view class="copy" @click.stop="copyClipboard(bigPayInfo.receiveAccountNo)"><text class="iconfont icon-fuzhi_o"></text></view>
+					</view>
+					<view class="tui-prompt-item">
+						<text class="text">银行:</text>
+						{{ bigPayInfo.accountName }}
+					</view>
+					<view class="tui-prompt-item">
+						<text class="text">收款方开户地:</text>
+						{{ bigPayInfo.areaInfo }}
+					</view>
+					<view class="tui-prompt-item">
+						<text class="text">收款网点:</text>
+						{{ bigPayInfo.accountName }}
+					</view>
+				</view>
+				<view class="tui-prompt-flex">
+					<view class="btn btn-confirm" @click="handleClick">已完成转账,请点击</view>
+					<view class="btn btn-cancel" @click="hideMobel">关闭</view>
+				</view>	
+			</view>
+		</tui-modal>	
 	</view>
 </template>
 
@@ -113,7 +148,10 @@
 				btnColor:'#09BB07',
 				discernReceipt:[],
 				showDigitKeyboard:false,
-				payHttpUrl:''
+				payHttpUrl:'',
+				bigPayInfo:{},// 大额网银转账
+				mbOrderId:0, // 支付记录订单Id
+				modal:false,
 			}
 		},
 		onLoad(option) {
@@ -162,6 +200,11 @@
 						this.btnColor='#034582'
 						this.buttonText = '生成个人网银支付链接'
 						break
+					case '3':
+						this.payWay = 'UNIONPAY'
+						this.btnColor='#034582'
+						this.buttonText = '去转账'
+						break
 				}
 				this.GetPayOrderInfo()
 			},
@@ -181,18 +224,91 @@
 			},
 			buttonSubMit(){
 				switch(this.payType){
-					case '0':
+					case '0':// 微信支付
+						// 友盟埋点收集微信支付
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmWechatPay', {
+								Um_Key_PageName: '微信支付',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.orderId}`
+							})
+						}
 						this.MiniWxPayFor()
 						break
-					case '1':
+					case '1':// 企业网银
+						// 友盟埋点收集企业网银
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmEbankPay', {
+								Um_Key_PageName: '企业网银',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.orderId}`
+							})
+						}
 						this.BuildCatenate()
 						break
-					case '2':
+					case '2':// 个人网银
+						// 友盟埋点收集个人网银
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmAbankPay', {
+								Um_Key_PageName: '个人网银',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.orderId}`
+							})
+						}
 						this.BuildCatenate()
 						break
+					case '3':// 大额支付
+						// 友盟埋点收集大额支付
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmBigbankPay', {
+								Um_Key_PageName: '大额支付',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.orderId}`
+							})
+						}
+						this.LargePayment()
+						break
 				}
 			},
-			BuildCatenate(){
+			LargePayment(){// 大额银联
+				if(this.payAmount == 0){
+					this.$util.msg('请输入本次支付的金额',2000)
+					return
+				}
+				if(this.payAmount <=12){
+					this.$util.msg('网银支付的金额必须大于¥12.00',2000)
+					return
+				}
+				this.PayService.PayOrderTransferUnion({payAmount:this.accMul(this.payAmount,100),orderId:this.orderId}).then(response =>{
+					this.bigPayInfo = JSON.parse(response.data.data.payInfo)
+					this.mbOrderId = response.data.data.mbOrderId
+					this.modal = true
+					console.log('PayInfo',this.bigPayInfo)
+				})
+			},
+			handleClick(){// 查询是否支付成功
+				this.PayService.PayOrderFindOrderStatus({mbOrderId:this.mbOrderId}).then(response =>{
+					const data = response.data.data
+					const linkData =  {
+							  payAmount:this.payAmount,
+							  orderId:this.orderId,
+							  type:data.status === '1' ? 'success' : 'error'
+						}
+					if(data.status === '1'){
+						this.$api.navigateTo(`/pages/user/order/order-success?data=${JSON.stringify({ data: linkData })}`)
+					}else{
+						this.$api.navigateTo(`/pages/user/order/order-success-tips?data=${JSON.stringify({ data: linkData })}`)
+					}	
+				})
+			},
+			hideMobel(){
+				this.modal = false
+			},
+			BuildCatenate(){// 企业网银  个人网银
 				if(this.payAmount == 0){
 					this.$util.msg('请输入本次支付的金额',2000)
 					return
@@ -206,7 +322,7 @@
 					this.isShowTip = true
 				})
 			},
-			MiniWxPayFor(){
+			MiniWxPayFor(){// 微信支付
 				authorize.getCode('weixin').then(wechatcode =>{
 					if(this.payAmount > 5000){
 						this.$util.modal('','本次支付金额已超出微信支付限额,请输入小于5千的金额进行支付','知道了','',false,() =>{})
@@ -228,15 +344,6 @@
 							orderId:this.orderId
 						}
 					this.PayService.WeChatMiniWxPay(params).then(response =>{
-						// 友盟埋点收集微信支付
-						if(process.env.NODE_ENV != 'development'){
-							this.$uma.trackEvent('Um_Event_ConfirmWechatPay', {
-								Um_Key_PageName: '微信支付',
-								Um_Key_SourcePage: '线上支付',
-								Um_Key_PayName:`${this.buttonText}`,
-								Um_Key_PayOrderID:`${this.orderId}`
-							})
-						}
 						let PayInfo = JSON.parse(response.data.data.payInfo)
 						this.WxRequestPayment(PayInfo)
 					}).catch(error =>{
@@ -246,6 +353,7 @@
 			},
 			WxRequestPayment(data){
 				let self = this
+				console.log('data',data)
 				wx.requestPayment({
 					'timeStamp': data.timeStamp,
 					'nonceStr': data.nonceStr,
@@ -332,11 +440,22 @@
 			toFixedFn(text){//处理小数点后两位数
 				return Number(text).toFixed(2)
 			},
+			copyClipboard(data){
+				//复制账号
+				thorui.getClipboardData(data, (res) => {
+					if (res) {
+						this.$util.msg('已复制',2000)
+					} else {
+						this.$util.msg('复制失败',2000)
+					}
+				})
+			},
 			clipboard(data) {//复制链接
+				console.log('data',data)
 				thorui.getClipboardData(data, (res) => {
 					if (res) {
 						this.isShowTip = false
-						this.$util.msg('复制成功',2000,true,'success')
+						this.$util.msg('复制',2000)
 						// 友盟埋点收集复制网银链接
 						if(process.env.NODE_ENV != 'development'){
 							this.$uma.trackEvent('Um_Event_CopyUnionPay', {
@@ -347,7 +466,7 @@
 							})
 						}
 					} else {
-						this.$util.msg('复制失败',2000,true,'none')
+						this.$util.msg('复制失败',2000)
 					}
 				})
 			},
@@ -651,4 +770,70 @@
 			}
 		}
 	}
+	.tui-prompt-title{
+		width: 100%;
+		height: 44rpx;
+		line-height: 44rpx;
+		padding: 20rpx 0;
+		text-align: center;
+		color: #333333;
+		border-bottom: 1px solid #E2E7EF;
+	}
+	.tui-prompt-text{
+		padding-top: 20rpx;
+		.tui-prompt-tips{
+			width: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-22;
+			color: #E15616;
+			text-align: justify;
+			margin-bottom: 24rpx;
+		}
+		.tui-prompt-item{
+			width: 100%;
+			line-height: 60rpx;
+			color: #333333;
+			font-size: $font-size-26;
+			.text{
+				font-weight: bold;
+			}
+			.copy{
+				height: 38rpx;
+				box-sizing: border-box;
+				padding: 0 24rpx;
+				text-align: center;
+				line-height: 36rpx;
+				display: inline-block;
+				.iconfont{
+					font-size: $font-size-40;
+					color: #666666;
+				}
+			}
+		}	
+	}
+	.tui-prompt-flex{
+		width: 100%;
+		height: auto;
+		margin-top: 20rpx;
+		box-sizing: border-box;
+		padding: 0 35rpx;
+		.btn{
+			width: 100%;
+			line-height: 84rpx;
+			font-size: $font-size-26;
+			text-align: center;
+			color: #FFFFFF;
+			border-radius: 44rpx;
+			margin: 20rpx 0;
+			&.btn-cancel{
+				background: #FFFFFF;
+				color: #333333;
+				border: 1px solid #979797;
+			}
+			&.btn-confirm{
+				background: $btn-confirm;
+			}
+		}
+		
+	}
 </style>

+ 752 - 0
pages/user/order/order-payhlb.vue

@@ -0,0 +1,752 @@
+<template>
+	<view class="container cashier"  v-show="isRepuest">
+		<cu-custom :navbar-data='nvabarData' @navigateBack="hanldNavigateBack"></cu-custom>
+		<view class="container-cash clearfix" :style="{marginTop:CustomBar+'px'}">
+			<view class="container-wrapper">
+				<view class="pay-content">
+					<view class="pay-top">
+						<view class="pay-paid">
+							<text class="txt-m">待付金额</text>
+							<text class="txt-b"><text class="small">¥</text>{{obligation | NumFormat}}</text>
+						</view>
+						<view class="pay-payd">
+							<view class="pay-paids">
+								<text class="txt-m">应付总额</text>
+								<text class="txt-b">¥{{payableAmount | NumFormat}}</text>
+							</view>
+							<view class="pay-paids">
+								<text class="txt-m">已支付金额</text>
+								<text class="txt-b">¥{{receiptAmount | NumFormat}}</text>
+							</view>
+						</view>
+					</view>
+					<view class="pay-bot">
+						<view class="bot-title"><text>本次支付金额</text></view>
+						<view class="bot-input">
+							<text>¥</text>
+ 					<!-- 	<view class="input" @click.stop="focusInput">
+								<text class="text" v-if="payAmount>=0">{{payAmount}}</text>
+								<text class="none" v-else>输入金额不能大于待付金额</text>
+							</view> -->
+							<input  class="input"
+									type="digit"
+									v-model="payAmount"
+									@focus="focusInput"
+									@blur="blurInput"
+									placeholder="输入金额不能大于待付金额"
+									placeholder-class="placeholder"/>
+						</view>
+						<view class="bot-resid">
+							<text>应付剩余¥{{balanceAmount|NumFormat}}</text>
+						</view>
+					</view>
+				</view>
+				<view class="pay-record" :style="{paddingBottom:isIphoneX ? '156rpx' : '112rpx'}">
+					<view class="record-title"><text>支付记录</text></view>
+					<view class="record-list">
+						<view class="list-main" v-if="discernReceipt.length>0">
+							<view class="list-item" v-for="(item,index) in discernReceipt" :key="index">
+								<text class="text row-1">¥{{item.receiptAmount | NumFormat}}</text>
+								<text class="text row-2">{{payTypeText(item.payType)}}</text>
+								<text class="text row-3">{{item.receiptDate}}</text>
+							</view>
+						</view>
+						<view class="list-none" v-else>暂无支付记录</view>
+					</view>
+				</view>
+			</view>
+			<view class="pay-button" :style="{paddingBottom:isIphoneX ? '68rpx' : '24rpx'}">
+				<view class="btn" @click.stop="buttonSubMit" :style="{'background':btnColor}">{{buttonText}}</view>
+			</view>
+		</view>
+		<view class="alert spec" :class="specClass" v-if="isShowTip">
+			<!-- 选择支付弹窗说明 -->
+			<view class="freight-alert"  @tap="hideTips">
+				<view class="content">
+					<view class="title">
+						<text>支付链接</text>
+						<text class="iconfont icon-iconfontguanbi" @click.stop="hideTips"></text>
+					</view>
+					<view class="text-content">
+						<view class="text">请复制以下链接,并发送至电脑端,在浏览器访问该链接并选择银行尽快完成支付</view>
+						<view class="text-p">{{payHttpUrl}}</view>
+						<view class="text-b">链接有效期为72小时</view>
+					</view>
+					<view class="text-button" @click.stop="clipboard(payHttpUrl)">复制链接</view>
+				</view>
+			</view>
+		</view>
+		<!-- 弹窗提示 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		>
+		</tui-modal>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'
+	import thorui from '@/components/clipboard/clipboard.thorui.js'
+	import wechatPay from '@/utils/mixins/wechatPay.js'
+	export default{
+		mixins: [wechatPay],
+		data(){
+			return{
+				orderId:0,
+				shopOrderId:0,
+				shopOrderInfo:0,
+				payType:'',
+				payWay:'',
+				isRepuest:false,
+				realPay:0,//应付金额
+				payableAmount:0,// 应付总额
+				receiptAmount:0,// 已付金额
+				obligation:0,//待付金额
+				balanceAmount:0,
+				payAmount:0,
+				nvabarData: {		//顶部自定义导航
+					showCapsule:1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '收银台',  // 导航栏 中间的标题
+					haveBack:true,
+					textLeft:this.$store.state.isIphone
+				},
+				idCardList:[],
+				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				tabCurrentIndex:0,
+				isShowTip:false,
+				buttonText:'去支付',
+				btnColor:'#09BB07',
+				discernReceipt:[],
+				showDigitKeyboard:false,
+				payHttpUrl:'',
+				mbOrderId:0, // 支付记录订单Id
+				modal:false,
+				contentModalText: '本次支付金额已超出微信支付限额,请输入小于5千的金额。', //操作文字提示语句
+				modalButton: [
+					{
+						text: '知道了',
+						customStyle: {
+							color: '#fff',
+							bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+						},
+						plain: false
+					}
+				],
+			}
+		},
+		onLoad(option) {
+			this.initData(option)
+		},
+		filters: {
+			NumFormat(value) {
+				if(!value) return '0.00'
+				/*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1,感谢Nils指正*/
+				/*后来改成了 Number(value)|0,但是输入超过十一位就为负数了,具体见评论 */
+				var intPart = Number(value) - Number(value)%1 //获取整数部分(这里是windy93的方法)
+				var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断
+				var floatPart = '.00' //预定义小数部分
+				var value2Array = value.toString().split('.')
+				//=2表示数据有小数位
+				if(value2Array.length == 2) {
+					floatPart = value2Array[1].toString() //拿到小数部分
+					if(floatPart.length == 1) { //补0,实际上用不着
+						return intPartFormat + '.' + floatPart + '0'
+					} else {
+						return intPartFormat + '.' + floatPart
+					}
+				} else {
+					return intPartFormat + floatPart
+				}
+			}
+		},
+		methods:{
+			initData(e){
+				this.payType = e.type
+				console.log(this.payType)
+				this.shopOrderId = e.shopOrderId
+				switch(this.payType){
+					case '0':
+						this.payWay = 'WEIXIN'
+						this.btnColor='#09BB07'
+						this.buttonText = '去支付'
+						break
+					case '1':
+						this.payWay = 'UNIONPAY'
+						this.btnColor='#034582'
+						this.buttonText = '生成企业网银支付链接'
+						break
+					case '2':
+						this.payWay = 'UNIONPAY'
+						this.btnColor='#034582'
+						this.buttonText = '生成个人网银支付链接'
+						break
+				}
+				this.GetPayOrderInfo()
+			},
+			GetPayOrderInfo(){//初始化支付信息
+				this.PayService.PayOrderCheckoutShoporders({shopOrderId:this.shopOrderId}).then(response =>{
+					let data = response.data
+					this.discernReceipt = data.discernReceipt 	// 支付记录
+					this.shopOrderInfo = data.shopOrder  	// 子订单
+					this.obligation = data.shopOrder.obligation  	// 待付金额
+					this.orderId = data.shopOrder.orderId  	// 主订单Id
+					this.receiptAmount = data.shopOrder.receiptAmount  	// 已付金额
+					this.payableAmount = data.shopOrder.realPay // 应付金额
+					this.payAmount = this.toFixedFn(this.obligation)		// 自定义金额
+					this.balanceAmount = this.obligation - this.payAmount	// 计算剩余支付金额
+					this.isRepuest = true
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			buttonSubMit(){
+				switch(this.payType){
+					case '0':// 微信支付
+						// 友盟埋点收集微信支付
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmWechatPay', {
+								Um_Key_PageName: '微信支付',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.shopOrderId}`
+							})
+						}
+						this.MiniWxPayFor()
+						break
+					case '1':// 企业网银
+						// 友盟埋点收集企业网银
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmEbankPay', {
+								Um_Key_PageName: '企业网银',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.shopOrderId}`
+							})
+						}
+						this.BuildCatenate()
+						break
+					case '2':// 个人网银
+						// 友盟埋点收集个人网银
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_ConfirmAbankPay', {
+								Um_Key_PageName: '个人网银',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.shopOrderId}`
+							})
+						}
+						this.BuildCatenate()
+						break
+				}
+			},
+			BuildCatenate(){// 企业网银  个人网银
+				if(this.payAmount == 0){
+					this.$util.msg('请输入本次支付的金额',2000)
+					return
+				}
+				if(this.payAmount <=10){
+					this.$util.msg('网银支付的金额必须大于¥10.00',2000)
+					return
+				}
+				if( this.payType == '1'){
+					if(this.payAmount != this.payableAmount){
+						this.contentModalText = '企业网银支付每次收取的手续费较高,建议一次性全额付款。'
+						this.modal = true
+						return
+					}
+				}
+				this.PayService.PayOrderPayLink({unpaidAmount:this.payAmount,shopOrderId:this.shopOrderId,payType:this.payType}).then(response =>{
+					this.payHttpUrl = response.data
+					this.isShowTip = true
+				})
+			},
+			async MiniWxPayFor(){// 微信支付
+				if(this.payAmount > 5000){
+					this.modal = true
+					return
+				}
+				if(this.payAmount == 0){
+					this.$util.msg('请输入本次支付的金额',2000)
+					return
+				}
+				if(this.payAmount*100 < 2){
+					this.$util.msg('本次支付的金额必须大于¥0.02',2000)
+					return
+				}
+				// 获取微信code
+				const wechatCode = await authorize.getCode('weixin')
+				const params = {
+						payAmount:this.payAmount,
+						payType:'XCX',
+						code:wechatCode,
+						shopOrderId:this.shopOrderId
+				}
+				this.weChatMiniOrderWxPay(params)
+			},
+			handleClick(){
+				this.modal = false
+			},
+			confirmEvent(value){//点击自定义键盘完成的回调函数
+				this.chechValue(value)
+				this.showDigitKeyboard = false
+			},
+			blurInput(e){
+				this.chechValue(e.detail.value)
+			},
+			focusInput(){
+				// this.showDigitKeyboard = true
+			},
+			hideKeyboard(){
+				this.showDigitKeyboard = false
+			},
+			chechValue(value){
+				let patern = /\d+\.\d+/g
+				if(value && value.split('.').length > 2) {
+					value= patern.exec(value)
+				}
+				if(value == '' || value <0 ){
+					this.payAmount = ''
+					this.balanceAmount = this.obligation
+				}else if( value > this.obligation){
+					this.payAmount = this.toFixedFn(this.obligation)
+					this.balanceAmount = this.toFixedFn(this.obligation - this.payAmount)
+				}else{
+					this.payAmount = this.toFixedFn(value)
+					this.balanceAmount = this.toFixedFn(this.obligation - this.payAmount)
+				}
+			},
+			hanldNavigateBack(){//页面返回
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			payTypeText (state){//处理支付记录文字
+				let stateText = '',
+					stateTextObject={
+						12:'企业网银',
+						13:'微信支付',
+						14:'支付宝',
+						15:'微信支付',
+						16:'余额抵扣',
+					}
+				Object.keys(stateTextObject).forEach(key => {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				})
+				return stateText
+			},
+			
+			hideTips(){//隐藏弹窗
+				this.isShowTip = false
+			},
+			toFixedFn(text){//处理小数点后两位数
+				return Number(text).toFixed(2)
+			},
+			copyClipboard(data){
+				//复制账号
+				thorui.getClipboardData(data, (res) => {
+					if (res) {
+						this.$util.msg('已复制',2000)
+					} else {
+						this.$util.msg('复制失败',2000)
+					}
+				})
+			},
+			clipboard(data) {//复制链接
+				console.log('data',data)
+				thorui.getClipboardData(data, (res) => {
+					if (res) {
+						this.isShowTip = false
+						this.$util.msg('已复制',2000)
+						// 友盟埋点收集复制网银链接
+						if(process.env.NODE_ENV != 'development'){
+							this.$uma.trackEvent('Um_Event_CopyUnionPay', {
+								Um_Key_PageName: '网银支付',
+								Um_Key_SourcePage: '线上支付',
+								Um_Key_PayName:`${this.buttonText}`,
+								Um_Key_PayOrderID:`${this.shopOrderId}`
+							})
+						}
+					} else {
+						this.$util.msg('复制失败',2000)
+					}
+				})
+			},
+			discard(){
+				//丢弃
+			}
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{height: auto !important;background-color: #FFFFFF;}
+	.container-cash{
+		width: 100%;
+		.container-wrapper{
+			width:100%;
+			margin: 0 auto;
+			.pay-content{
+				width: 662rpx;
+				height: 420rpx;
+				padding: 64rpx 44rpx 0 44rpx;
+				border-radius: 0 0 60rpx 60rpx;
+				background: url(https://img.caimei365.com/group1/M00/03/BD/Cmis218elN6AY6VeAAqw4n3n4nw186.png) no-repeat;
+				background-size: cover;
+				float: left;
+				position: relative;
+				.pay-top{
+					width: 100%;
+					height: auto;
+					float: left;
+					margin-bottom: 44rpx;
+					.pay-paid{
+						width: 100%;
+						height: auto;
+						margin-bottom: 38rpx;
+						text{
+							line-height: 48rpx;
+							text-align: left;
+							color: #FFFFFF;
+							width: 100%;
+						}
+						.txt-m{
+							font-size: $font-size-26;
+							opacity: 0.7;
+							display: inline-block;
+						}
+						.txt-b{
+							font-size: $font-size-48;
+							display: inline-block;
+							.small{
+								font-size: $font-size-32;
+							}
+						}
+					}
+					.pay-payd{
+						width: 100%;
+						height: auto;
+						.pay-paids{
+							height: auto;
+							float: left;
+							margin-right: 48rpx;
+							text{
+								line-height: 48rpx;
+								text-align: left;
+								color: #FFFFFF;
+							}
+							.txt-m{
+								width: 100%;
+								display: inline-block;
+								font-size: $font-size-26;
+								opacity: 0.7;
+							}
+							.txt-b{
+								width: 100%;
+								display: inline-block;
+								font-size: $font-size-32;
+							}
+						}
+					}
+				}
+				.pay-bot{
+					width: 614rpx;
+					height: 184rpx;
+					padding: 24rpx;
+					background: #FFFFFF;
+					border-radius: 28rpx;
+					box-shadow:0 2px 6px rgba(255, 77, 0, .17);
+					position: absolute;
+					bottom: -92rpx;
+					left:44rpx;
+					.bot-title{
+						line-height: 36rpx;
+						font-size: $font-size-26;
+						color: #666666;
+					}
+					.bot-input{
+						width: 100%;
+						height: 66rpx;
+						margin: 15rpx 0;
+						border-bottom: 1px solid #EBEBEB;
+						line-height: 66rpx;
+						font-size: $font-size-32;
+						color: $text-color;
+						text{
+							display: block;
+							float: left;
+						}
+						.input{
+							font-size: $font-size-40;
+							width: 500rpx;
+							height: 66rpx;
+							padding: 0 10rpx;
+							line-height: 66rpx;
+							float: left;
+							.none{
+								color:$text-color;
+								opacity: 0.3;
+							}
+							.text{
+								color:$text-color;
+							}
+						}
+						.placeholder{
+							font-size: $font-size-26;
+						}
+					}
+					.bot-resid{
+						line-height: 36rpx;
+						font-size: $font-size-26;
+						color: #666666;
+						margin-top: 24rpx;
+						color: $color-system;
+					}
+				}
+			}
+			.pay-record{
+				float: left;
+				background: #FFFFFF;
+				width: 702rpx;
+				height: auto;
+				padding: 0 24rpx;
+				margin-top: 112rpx;
+				.record-title{
+					width: 100%;
+					float: left;
+					font-size: $font-size-28;
+					color: $text-color;
+					line-height: 80rpx;
+					height: 80rpx;
+					border-bottom: 1px solid #F8F8F8;
+				}
+				.record-list{
+					width: 100%;
+					height: auto;
+					float: left;
+					.list-none{
+						line-height: 80rpx;
+						font-size: $font-size-26;
+						color: #999999;
+						text-align: left;
+					}
+					.list-main{
+						height: auto;
+						display: flex;
+						flex-direction:column;
+						.list-item{
+							width: 100%;
+							height:80rpx;
+							display: flex;
+							flex: 1;
+							line-height: 80rpx;
+							font-size: $font-size-26;
+							color: $text-color;
+							.text{
+								&.row-1{
+									flex: 3;
+								}
+								&.row-2{
+									flex: 3;
+								}
+								&.row-3{
+									flex: 4;
+									text-align: right;
+									color: #999999;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		.pay-button{
+			width: 100%;
+			background-color: #FFFFFF;
+			position: fixed;
+			height: 88rpx;
+			padding-top: 24rpx;
+			bottom: 0;
+			.btn{
+				width: 702rpx;
+				height: 88rpx;
+				border-radius: 44rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #FFFFFF;
+				margin: 0 auto;
+				text-align: center;
+				background: $btn-confirm;
+			}
+		}
+	}
+	.freight-alert{
+		width: 100%;
+		height: 100%;
+		background: rgba(0,0,0,.5);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 8888;
+		transition: all 0.4s;
+		&.none{
+			display: none;
+		}
+		&.show{
+			display: block;
+		}
+		.content{
+			width: 422rpx;
+			height:434rpx;
+			position: absolute;
+			background: $bg-color;
+			left: 0;
+			right: 0;
+			bottom: 0;
+			top: 0;
+			margin: auto;
+			padding: 20rpx 32rpx;
+			border-radius: 12rpx;
+			.title{
+				width: 100%;
+				height: 68rpx;
+				line-height: 68rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: center;
+				position: relative;
+				.icon-iconfontguanbi{
+					width: 68rpx;
+					height: 68rpx;
+					text-align: center;
+					line-height: 68rpx;
+					position: absolute;
+					right: 0;
+					top: 0;
+					font-size: $font-size-36;
+					color: #999999;
+				}
+			}
+			.text-content{
+				width: 100%;
+				height: auto;
+				.text{
+					padding: 20rpx 0 0 0;
+					line-height: 44rpx;
+					font-size: $font-size-26;
+					color:#666666;
+					text-align: justify;
+				}
+				.text-p{
+					width: 100%;
+					line-height: 44rpx;
+					font-size: $font-size-26;
+					color:$color-system;
+					text-align: left;
+					text-overflow:ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 1;
+					overflow: hidden;
+				} 
+				.text-b{
+					line-height: 44rpx;
+					font-size: $font-size-24;
+					color:#999999;
+					text-align: left;
+				}
+			}
+			.text-button{
+				width: 100%;
+				height: 88rpx;
+				line-height: 88rpx;
+				background: $btn-confirm;
+				font-size: $font-size-28;
+				border-radius: 44rpx;
+				color:#FFFFFF;
+				text-align: center;
+				margin-top: 20rpx;
+			}
+		}
+	}
+	.tui-prompt-title{
+		width: 100%;
+		height: 44rpx;
+		line-height: 44rpx;
+		padding: 20rpx 0;
+		text-align: center;
+		color: #333333;
+		border-bottom: 1px solid #E2E7EF;
+	}
+	.tui-prompt-text{
+		padding-top: 20rpx;
+		.tui-prompt-tips{
+			width: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-22;
+			color: #E15616;
+			text-align: justify;
+			margin-bottom: 24rpx;
+		}
+		.tui-prompt-item{
+			width: 100%;
+			line-height: 60rpx;
+			color: #333333;
+			font-size: $font-size-26;
+			.text{
+				font-weight: bold;
+			}
+			.copy{
+				height: 38rpx;
+				box-sizing: border-box;
+				padding: 0 24rpx;
+				text-align: center;
+				line-height: 36rpx;
+				display: inline-block;
+				.iconfont{
+					font-size: $font-size-40;
+					color: #666666;
+				}
+			}
+		}	
+	}
+	.tui-prompt-flex{
+		width: 100%;
+		height: auto;
+		margin-top: 20rpx;
+		box-sizing: border-box;
+		padding: 0 35rpx;
+		.btn{
+			width: 100%;
+			line-height: 84rpx;
+			font-size: $font-size-26;
+			text-align: center;
+			color: #FFFFFF;
+			border-radius: 44rpx;
+			margin: 20rpx 0;
+			&.btn-cancel{
+				background: #FFFFFF;
+				color: #333333;
+				border: 1px solid #979797;
+			}
+			&.btn-confirm{
+				background: $btn-confirm;
+			}
+		}
+		
+	}
+</style>

+ 52 - 51
pages/user/order/order-payment.vue

@@ -95,6 +95,19 @@
 									<text class="iconfont icon-duigou"></text>
 								</view>
 							</view>
+<!-- 							<view  class="pay-item" :class="{ 'current' : tabCurrentIndex === 3}"   @click="tabClick(3)" >
+								<view class="item-l">
+									<view class="item-icon"><text class="iconfont icon-daewangyinzhuanzhang"></text></view>
+									<view class="item-text">
+										<view class="txt-p">大额银联转账</view>
+										<view class="txt-t">需要使用银行App或网银进行转账</view>
+									</view>
+								</view>
+								<view class="item-r">
+									<text class="iconfont icon-duigou"></text>
+								</view>
+							</view>
+ -->							
 						</view>
 					</view>
 				</view>
@@ -107,27 +120,10 @@
 							<text class="iconfont icon-gantanhao-yuankuang"></text>
 						</view>
 						<view class="pay-text">
-							<text>{{payStatusText}}</text>
+							<view>{{payStatusText}}</view>
 						</view>
 					</view>
 				</view>
-				<view class="pay-bring clearfix" :style="{paddingBottom:isIphoneX ? '68rpx' : '24rpx'}" @click.stop="showTips" v-if="isReceiptStatus">
-					<view class="pay-bring-line"><text class="line"></text></view>
-					<view class="pay-bring-content" v-if="!isShowTip">
-						<view class="text bg-color">查看转账信息</view>
-						<view class="text">除了以上线上支付方式</view>
-						<view class="text">您还可以通过线下转账的方式付款</view>
-					</view>
-					<view class="pay-bring-content" v-else>
-						<view class="text-v title">转账信息</view>
-						<view class="text-v">开户行:中信银行(深圳泰然支行)</view>
-						<view class="text-v">银行卡号:{{bankNumber}}</view>
-						<view class="text-v">户名:周仁声</view>
-						<view class="text-v">订单标识:{{payOrderId}} <text class="clipboard" @click.stop="clipboard(payOrderId)">复制</text></view>
-						<view class="text-v title">特别注意</view>
-						<view class="text-v bg-color">请在转账备注中填写上述订单标识,方便财务快速审核,提高发货速度</view>
-					</view>
-				</view>
 			</view>
 		</template>
 	</view>
@@ -138,7 +134,8 @@
 	export default{
 		data(){
 			return{
-				orderId:'',
+				orderId:0,
+				shopOrderId:0,
 				payableAmount:0,
 				emptyWrapperH: '',
 				bankNumber:'6217 6803 0362 0897',
@@ -154,17 +151,13 @@
 				isIphoneX:this.$store.state.isIphoneX,
 				CustomBar:this.CustomBar,// 顶部导航栏高度
 				tabCurrentIndex:0,
-				isShowTip:false,
-				isReceiptStatus:false,
 				buttonText:'使用微信支付',
 				btnColor:'#09BB07',
-				receiptStatus:'',
 				onlinePay:1,
 				isPaySwitch:false,
 				optionType:'',
-				onlinePayFlag:'',
 				payBringTitle:'本次交易暂不支持线上支付,请使用线下转账方式付款',
-				payStatusText:'使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
+				payStatusText:'使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。',
 				pageType:''
 			}
 		},
@@ -197,23 +190,27 @@
 		methods:{
 			initData(e){
 				console.log(e)
-				this.orderId = e.orderId
-				this.payOrderId ='#'+e.orderId+'#'
-				this.optionType = e.type
+				this.shopOrderId = e.shopOrderId
+				this.payOrderId ='#'+e.shopOrderId+'#'
+				this.nvabarData.haveBack = true
+				this.nvabarData.haveHome = false
+				this.nvabarData.title = '选择支付方式'
+				this.PayOrderOnLineSwitch()
+				this.PayOrderCheckoutCounter(this.shopOrderId)
 				switch(e.type){
 					case 'confirm':
 						this.nvabarData.haveBack = false
 						this.nvabarData.haveHome = true
 						this.nvabarData.title = '支付'
 						this.PayOrderOnLineSwitch()
-						this.PayOrderCheckoutCounter(this.orderId)
+						this.PayOrderCheckoutCounter(this.shopOrderId)
 						break
 					case 'payfirm':
 						this.nvabarData.haveBack = true
 						this.nvabarData.haveHome = false
 						this.nvabarData.title = '选择支付方式'
 						this.PayOrderOnLineSwitch()
-						this.PayOrderCheckoutCounter(this.orderId)
+						this.PayOrderCheckoutCounter(this.shopOrderId)
 						break
 					case 'onlinePay':
 						this.onlinePay = 2
@@ -237,24 +234,20 @@
 					this.$util.msg(error.msg,2000)
 				})
 			},
-			PayOrderCheckoutCounter(orderId){
-				this.PayService.PayOrderCheckoutCounter({orderId:orderId}).then(response =>{
-					let data = response.data.order
-					this.payableAmount = data.payableAmount - data.receiptAmount  //待付金额
-					this.receiptStatus =  data.receiptStatus
-					this.onlinePayFlag = data.onlinePayFlag					
+			PayOrderCheckoutCounter(shopOrderId){
+				this.PayService.PayOrderCheckoutShoporders({shopOrderId:shopOrderId}).then(response =>{
+					let data = response.data.shopOrder
+					this.payableAmount = data.obligation  //待付金额
 					//判断线上线下显示
 					if(this.optionType == 'onlinePay'){
 						this.onlinePay = 2
 					}else{
-						this.onlinePay = response.data.onlinePay
+						this.onlinePay = data.onlinePay
 					}
-					if(data.receiptAmount>0){
-						this.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。'
-						this.isReceiptStatus = false
+					if(data.obligation>0){
+						this.payStatusText = '使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。'
 					}else{
-						this.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。'
-						this.isReceiptStatus = true
+						this.payStatusText = '使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。'
 					}
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
@@ -264,7 +257,6 @@
 				if(this.onlinePay == 2){
 					this.$util.modal('','本次交易暂不支持线上支付开票,请使用线下转账的方式付款','知道了','',false,() =>{})
 					this.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。'
-					this.isReceiptStatus = true
 				}else{
 					// 友盟埋点收集选择支付方式
 					if(process.env.NODE_ENV != 'development'){
@@ -272,18 +264,21 @@
 							Um_Key_PageName: '线上支付',
 							Um_Key_SourcePage: '选择支付',
 							Um_Key_PayName:`${this.buttonText}`,
-							Um_Key_PayOrderID:`${this.orderId}`
+							Um_Key_PayOrderID:`${this.shopOrderId}`
 						})
 					}
 					switch(this.tabCurrentIndex){
 						case 0:
-							this.$api.navigateTo(`/pages/user/order/order-pay?type=0&orderId=${this.orderId}`)
+							this.$api.navigateTo(`/pages/user/order/order-payhlb?type=0&shopOrderId=${this.shopOrderId}`)
 							break
 						case 1:
-							this.$api.navigateTo(`/pages/user/order/order-pay?type=1&orderId=${this.orderId}`)
+							this.$api.navigateTo(`/pages/user/order/order-payhlb?type=1&shopOrderId=${this.shopOrderId}`)
 							break
 						case 2:
-							this.$api.navigateTo(`/pages/user/order/order-pay?type=2&orderId=${this.orderId}`)
+							this.$api.navigateTo(`/pages/user/order/order-payhlb?type=2&shopOrderId=${this.shopOrderId}`)
+							break
+						case 3:
+							this.$api.navigateTo(`/pages/user/order/order-payhlb?type=3&shopOrderId=${this.shopOrderId}`)
 							break
 					}
 				}
@@ -303,6 +298,10 @@
 						this.btnColor='#034582'
 						this.buttonText='使用个人网银支付'
 						break
+					case 3:
+						this.btnColor='#034582'
+						this.buttonText='使用大额银联转账'
+						break
 				}
 			},
 			hanldNavigateBack(){//页面返回
@@ -310,9 +309,6 @@
 					delta: 1
 				})
 			},
-			showTips(){
-				this.isShowTip=!this.isShowTip
-			},
 			clipboard(data) {
 				thorui.getClipboardData(data, (res) => {
 					if (res) {
@@ -451,6 +447,10 @@
 								.icon-gerenwangyinzhifu{
 									color: #034582;
 								}
+								.icon-daewangyinzhuanzhang{
+									font-size: 68rpx;
+									color: #034582;
+								}
 								.icon-qiyewangyinzhifu{
 									color: #004889;
 								}
@@ -467,6 +467,7 @@
 									color: $text-color;
 								}
 								.txt-t{
+									font-size: $font-size-24;
 									color: #999999;
 								}
 							}
@@ -502,7 +503,7 @@
 		}
 		.pay-statustext{
 			width: 100%;
-			height: 120rpx;
+			height: auto;
 			float: left;
 			margin-top:40rpx;
 			.pay-statustext-inner{
@@ -525,7 +526,7 @@
 					height: 100%;
 					float: left;
 					line-height: 40rpx;
-					font-size: $font-size-26;
+					font-size: $font-size-24;
 					color: #FF2A2A;
 					text-align: justify;
 				}

+ 507 - 0
pages/user/order/order-payunder.vue

@@ -0,0 +1,507 @@
+<template>
+	<view class="container cashier">
+		<view class="container-cash clearfix">
+			<view class="pay-bring-title" v-if="onlinePay == 2">{{payBringTitle}}</view>
+			<view class="container-wrapper">
+				<view class="pay-content">
+					<view class="pay-p"><text>待付金额</text></view>
+					<view class="pay-money">
+						<text class="pay-sm">¥</text>
+						<text class="pay-bg">{{payableAmount | NumFormat}}</text>
+					</view>
+				</view>
+			</view>
+			<view class="pay-bring-wrapper clearfix">
+				<view class="pay-bring-content">
+					<view class="text-v title">转账信息</view>
+					<view class="text-v">开户行:中信银行(深圳泰然支行)</view>
+					<view class="text-v">银行卡号:{{bankNumber}}</view>
+					<view class="text-v">户名:周仁声</view>
+					<view class="text-v">订单标识:{{payOrderId}} <text class="clipboard" @click.stop="clipboard(payOrderId)">复制</text></view>
+					<view class="text-v title">特别注意</view>
+					<view class="text-v bg-color">请在转账备注中填写上述订单标识,方便财务快速审核,提高发货速度</view>
+				</view>
+			</view>
+		</view>		
+	</view>
+</template>
+
+<script>
+	const thorui = require('@/components/clipboard/clipboard.thorui.js')
+	export default{
+		data(){
+			return{
+				orderId:'',
+				payableAmount:0,
+				emptyWrapperH: '',
+				bankNumber:'6217 6803 0362 0897',
+				payOrderId:'',
+				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				tabCurrentIndex:0,
+				isReceiptStatus:false,
+				buttonText:'使用微信支付',
+				btnColor:'#09BB07',
+				receiptStatus:'',
+				onlinePay:1,
+				optionType:'',
+				onlinePayFlag:'',
+				payBringTitle:'本次交易暂不支持线上支付,请使用线下转账方式付款',
+				payStatusText:'使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。',
+				pageType:''
+			}
+		},
+		onLoad(option) {
+			this.initData(option)
+		},
+		filters: {
+			NumFormat(value) {
+				if(!value) return '0.00'
+				/*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1,感谢Nils指正*/
+				/*后来改成了 Number(value)|0,但是输入超过十一位就为负数了,具体见评论 */
+				var intPart = Number(value) - Number(value)%1 //获取整数部分(这里是windy93的方法)
+				var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断
+				var floatPart = '.00' //预定义小数部分
+				var value2Array = value.toString().split('.')
+				//=2表示数据有小数位
+				if(value2Array.length == 2) {
+					floatPart = value2Array[1].toString() //拿到小数部分
+
+					if(floatPart.length == 1) { //补0,实际上用不着
+						return intPartFormat + '.' + floatPart + '0'
+					} else {
+						return intPartFormat + '.' + floatPart
+					}
+				} else {
+					return intPartFormat + floatPart
+				}
+			}
+		},
+		methods:{
+			initData(e){
+				console.log(e)
+				this.orderId = e.orderId
+				this.payOrderId ='#'+e.orderId+'#'
+				this.PayOrderCheckoutCounter(this.orderId)
+			},
+			PayOrderCheckoutCounter(orderId){
+				this.PayService.PayOrderCheckoutCounter({orderId:orderId}).then(response =>{
+					let data = response.data.order
+					this.payableAmount = data.payableAmount - data.receiptAmount  //待付金额
+					this.receiptStatus =  data.receiptStatus
+					this.onlinePayFlag = data.onlinePayFlag					
+					//判断线上线下显示
+					if(this.optionType == 'onlinePay'){
+						this.onlinePay = 2
+					}else{
+						this.onlinePay = response.data.onlinePay
+					}
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			clipboard(data) {
+				thorui.getClipboardData(data, (res) => {
+					if (res) {
+						this.$util.msg('复制成功',2000,true,'success')
+					} else {
+						this.$util.msg('复制失败',2000,true,'none')
+					}
+				})
+			},
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: auto !important;
+		background-color: #FFFFFF;
+	}
+	.container-cash{
+		width: 100%;
+		padding-bottom: 250rpx;
+		.pay-bring-title{
+			box-sizing: border-box;
+			width: 100%;
+			min-height: 96rpx;
+			padding: 20rpx 24rpx;
+			line-height: 48rpx;
+			text-align: left;
+			font-size: $font-size-24;
+			background:rgba(255,234,221,1);
+			color: $color-system;
+		}
+		.container-wrapper{
+			width:662rpx;
+			margin: 0 auto;
+			.pay-title{
+				font-size: $font-size-32;
+				line-height: 44rpx;
+				text-align: center;
+				color: #2A86FF;
+				margin: 40rpx 0 0 0;
+				width: 100%;
+				float: left;
+			}
+			.pay-content{
+				width: 574rpx;
+				height: 136rpx;
+				padding: 52rpx 44rpx;
+				background: url(https://img.caimei365.com/group1/M00/03/BD/Cmis218ekFyAHoAzAALhR3oBpDI049.png) no-repeat;
+				background-size: cover;
+				float: left;
+				margin-top: 40rpx;
+				.pay-p{
+					font-size: $font-size-26;
+					color: #FFFFFF;
+					line-height: 36rpx;
+				}
+				.pay-money{
+					color: #FFFFFF;
+					line-height: 84rpx;
+					font-weight: bold;
+					.pay-sm{
+						font-size: $font-size-26;
+					}
+					.pay-bg{
+						font-size: 50rpx;
+					}
+				}
+			}
+			.pay-check{
+				width: 100%;
+				height: auto;
+				float: left;
+				.check-title{
+					width: 622rpx;
+					height: 40rpx;
+					line-height: 40rpx;
+					padding: 0 20rpx;
+					margin-top: 24rpx;
+					.text{
+						font-size: $font-size-28;
+						color: $text-color;
+						text-align: left;
+						float: left;
+					}
+					.icon{
+						width: 40rpx;
+						height: 40rpx;
+						border-radius: 50%;
+						line-height: 40rpx;
+						text-align: center;
+						color: #FFFFFF;
+						font-size: $font-size-24;
+						background: radial-gradient(circle,rgba(225,86,22,1) 0%,rgba(255,170,0,1) 67%,rgba(249,185,156,1) 100%);
+						float: right;
+					}
+				}
+				.pay-checked{
+					width: 100%;
+					height: auto;
+					.pay-item{
+						width: 618rpx;
+						height: 96rpx;
+						border: 2px solid #F5F5F5;
+						border-radius: 30rpx;
+						padding: 20rpx;
+						margin: 24rpx 0;
+						display: flex;
+						background-color: #FFFFFF;
+						&.current{
+							border-color:$color-system;
+							.item-r{
+								.icon-duigou{
+									color: $color-system;
+								}
+							}
+						}
+						.item-l{
+							flex: 8;
+							.item-icon{
+								width: 96rpx;
+								height: 96rpx;
+								float: left;
+								text-align: center;
+								line-height: 96rpx;
+								margin-right: 20rpx;
+								.iconfont{
+									font-size:88rpx;
+								}
+								.icon-weixinzhifu{
+									color: #09BB07;
+								}
+								.icon-gerenwangyinzhifu{
+									color: #034582;
+								}
+								.icon-daewangyinzhuanzhang{
+									font-size: 68rpx;
+									color: #034582;
+								}
+								.icon-qiyewangyinzhifu{
+									color: #004889;
+								}
+							}
+							.item-texts{
+								line-height: 96rpx;
+								font-size:$font-size-26;
+								color: $text-color;
+							}
+							.item-text{
+								line-height: 48rpx;
+								font-size:$font-size-26;
+								.txt-p{
+									color: $text-color;
+								}
+								.txt-t{
+									font-size: $font-size-24;
+									color: #999999;
+								}
+							}
+						}
+						.item-r{
+							flex: 2;
+							text-align: center;
+							line-height: 96rpx;
+							.icon-duigou{
+								font-size: 60rpx;
+								color: #FFFFFF;
+							}
+						}
+					}
+				}
+			}
+		}
+		.pay-button{
+			width: 100%;
+			float: left;
+			margin-top:30rpx;
+			.btn{
+				width: 662rpx;
+				height: 88rpx;
+				border-radius: 44rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #FFFFFF;
+				margin: 0 auto;
+				text-align: center;
+				background:$btn-confirm;
+			}
+		}
+		.pay-statustext{
+			width: 100%;
+			height: auto;
+			float: left;
+			margin-top:40rpx;
+			.pay-statustext-inner{
+				width: 662rpx;
+				height: 100%;
+				margin: 0 auto;
+				.pay-icon{
+					width: 62rpx;
+					height: 100%;
+					float: left;
+					text-align: center;
+					.iconfont{
+						color: #FF2A2A;
+						font-size:$font-size-36;
+						line-height: 20rpx;
+					}
+				}
+				.pay-text{
+					width: 560rpx;
+					height: 100%;
+					float: left;
+					line-height: 40rpx;
+					font-size: $font-size-24;
+					color: #FF2A2A;
+					text-align: justify;
+				}
+			}
+		}
+		.pay-bring{
+			width: 100%;
+			min-height: 190rpx;
+			padding: 24rpx 0;
+			background-color: #FFFFFF;
+			box-shadow:0px 3px 6px rgba(0,0,0,0.16);
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			border-radius: 30rpx 30rpx 0 0;
+			display: flex;
+			align-items: center;
+			flex-direction: column;
+			.pay-bring-line{
+				display: flex;
+				align-items: center;
+				.line{
+					display: inline-block;
+					width: 48rpx;
+					height: 2px;
+					background-color: #707070;
+				}
+			}
+			.pay-bring-content{
+				width: 654rpx;
+				height: auto;
+				padding: 0 24rpx;
+				.text{
+					font-size: $font-size-24;
+					color: #666;
+					line-height: 44rpx;
+					text-align: center;
+					&.bg-color{
+						color: $color-system;
+						line-height: 88rpx;
+					}
+				}
+				.text-v{
+					font-size: $font-size-28;
+					color: #999;
+					line-height: 70rpx;
+					text-align: left;
+					&.title{
+						font-size: $font-size-26;
+						color: #666666;
+					}
+					&.bg-color{
+						line-height: 44rpx;
+						color: $color-system;
+					}
+					.clipboard{
+						width: 84rpx;
+						height: 36rpx;
+						background:linear-gradient(34deg,rgba(255,41,41,1) 0%,rgba(255,109,27,1) 100%);
+						text-align: center;
+						font-size: $font-size-24;
+						color: #FFFFFF;
+						border-radius: 4rpx;
+						line-height: 36rpx;
+						display: inline-block;
+						margin-left: 10rpx;
+					}
+				}
+			}
+		}
+		.pay-bring-wrapper{
+			width: 100%;
+			padding: 24rpx 0;
+			background-color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			flex-direction: column;
+			.pay-bring-content{
+				width: 654rpx;
+				height: auto;
+				padding: 0 24rpx;
+				.text{
+					font-size: $font-size-24;
+					color: #666;
+					line-height: 44rpx;
+					text-align: center;
+					&.bg-color{
+						color: $color-system;
+						line-height: 88rpx;
+					}
+				}
+				.text-v{
+					font-size: $font-size-28;
+					color: #999;
+					line-height: 70rpx;
+					text-align: left;
+					&.title{
+						font-size: $font-size-28;
+						color: #666666;
+					}
+					&.bg-color{
+						line-height: 44rpx;
+						color: $color-system;
+					}
+					.clipboard{
+						width: 84rpx;
+						height: 36rpx;
+						background:linear-gradient(34deg,rgba(255,41,41,1) 0%,rgba(255,109,27,1) 100%);
+						text-align: center;
+						font-size: $font-size-24;
+						color: #FFFFFF;
+						border-radius: 4rpx;
+						line-height: 36rpx;
+						display: inline-block;
+						margin-left: 10rpx;
+					}
+				}
+			}
+		}
+	}
+	.freight-alert{
+		width: 100%;
+		height: 100%;
+		background: rgba(0,0,0,.5);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 8888;
+		transition: all 0.4s;
+		&.none{
+			display: none;
+		}
+		&.show{
+			display: block;
+		}
+		.content{
+			width: 422rpx;
+			height:434rpx;
+			position: absolute;
+			background: $bg-color;
+			left: 0;
+			right: 0;
+			bottom: 0;
+			top: 0;
+			margin: auto;
+			padding: 20rpx 32rpx;
+			border-radius: 12rpx;
+			.title{
+				width: 100%;
+				height: 68rpx;
+				line-height: 68rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: center;
+				position: relative;
+				.icon-iconfontguanbi{
+					width: 68rpx;
+					height: 68rpx;
+					text-align: center;
+					line-height: 68rpx;
+					position: absolute;
+					right: 0;
+					top: 0;
+					font-size: $font-size-36;
+					color: #999999;
+				}
+			}
+			.text-content{
+				width: 100%;
+				height: auto;
+				.text{
+					padding: 20rpx 0;
+					line-height: 44rpx;
+					font-size: $font-size-26;
+					color:#666666;
+					text-align: justify;
+				}
+				.text-p{
+					line-height: 44rpx;
+					font-size: $font-size-26;
+					color:$color-system;
+					text-align: left;
+				}
+			}
+		}
+	}
+</style>

+ 3 - 9
pages/user/order/order-sharelogin.vue

@@ -142,16 +142,10 @@ export default {
 					if(response.data.code == -1){
 						this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
 					}else{
-						if (response.data.onlinePayFlag === 1) {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=onlinePay&Amount=${
-									response.data.pendingPayments
-								}&orderId=${orderId}`
-							)
+						if (response.data.onlinePayFlag === 1) {// 只能线下
+							this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${orderId}`)
 						} else {
-							this.$api.navigateTo(
-								`/pages/user/order/order-payment?type=payfirm&orderId=${orderId}`
-							)
+							this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${orderId}`)
 						}
 					}
 				})

+ 149 - 0
pages/user/order/order-success-tips.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="container cashier">
+		<cu-custom :navbar-data='nvabarData'></cu-custom>
+		<view class="container-cash clearfix" :style="{marginTop:CustomBar+'px'}">
+			<view class="container-wrapper">
+				<view class="cash-icon">
+					<image class="icon-image" :src="StaticUrl + '/icon/icon-paywring@2x.png'" mode=""></image>
+				</view>
+				<view class="cash-text">
+					大额银联转账耗时较久,大致需要 <text class="tx">5-15分钟</text> 才能
+					到账成功。后续您可在订单详情页面查看订单的
+					已支付金额和订单状态。
+				</view>
+			</view>
+			<view class="container-button">
+				<view class="btn btn-home" @click="this.$api.switchTabTo('/pages/tabBar/home/index')">回到首页</view>
+				<view class="btn btn-open" @click="details">查看订单</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				orderId:0,
+				nvabarData: {		//顶部自定义导航
+					haveBack:false,
+					haveHome:true,
+					showCapsule:1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '支付结果',  // 导航栏 中间的标题
+					textLeft:this.$store.state.isIphone
+				},
+				payType:'',
+				payStatus:false,
+				amuntMoney:0,
+				successText:'本次支付失败',
+				StaticUrl: this.$Static,
+				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				
+			}
+		},
+		filters:{
+			NumFormat(value) {
+			    //处理金额
+			    if (value) {
+			        return Number(value).toFixed(2)
+			    } else {
+			        return '0.00'
+			    }
+			}
+		},
+		onLoad(option) {
+			this.initData(option)
+		},
+		methods:{
+			initData(option){
+				const data = JSON.parse(option.data)
+				this.orderId = data.data.orderId
+				this.payType = data.data.type
+				this.amuntMoney = data.data.payAmount
+				if(this.payType == 'success'){
+					this.payStatus = true
+					this.successText = '本次支付成功'
+				}else{
+					this.payStatus = false
+					this.successText = '本次支付失败'
+				}
+				console.log(this.orderId)
+			},
+			toAgainPay(){
+				this.$api.navigateBack(2)
+			},
+			details(){
+				this.$api.redirectTo('/pages/user/order/order-details?type=share&orderId='+this.orderId)
+			}
+		},
+		onShow() {
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: auto !important;
+	}
+	.container-cash{
+		width: 100%;
+		.container-wrapper{
+			width:100%;
+			height: auto;
+			padding: 120rpx 24rpx 0 24rpx;
+			box-sizing: border-box;
+			.cash-icon{
+				width: 100%;
+				height: 260rpx;
+				text-align: center;
+				.icon-image{
+					width: 260rpx;
+					height: 260rpx;
+					margin: 0 auto;
+					display: block;
+				}
+			}
+			.cash-text{
+				width: 100%;
+				height: 90rpx;
+				box-sizing: border-box;
+				padding: 0 50rpx;
+				text-align: center;
+				font-size: $font-size-26;
+				color: $text-color;
+				line-height: 44rpx;
+				padding-bottom: 40rpx;
+				.tx{
+					color: $color-system;
+				}
+			}
+		}
+		.container-button{
+			width: 100%;
+			box-sizing: border-box;
+			padding: 80rpx 75rpx;
+			.btn{
+				width: 100%;
+				height: 90rpx;
+				border-radius: 50rpx;
+				line-height: 90rpx;
+				box-sizing: border-box;
+				text-align: center;
+				font-size: $font-size-26;
+				color: #FFFFFF;
+				margin: 24rpx 0;
+				&.btn-open{
+					background:#FFFFFF;
+					border: 1px solid $color-system;
+					color: $color-system;
+				}
+				&.btn-home{
+					background:$btn-confirm;
+				}
+			}
+		}
+	}
+</style>

+ 188 - 0
pages/user/order/order-success.vue

@@ -0,0 +1,188 @@
+<template>
+	<view class="container cashier">
+		<cu-custom :navbar-data='nvabarData'></cu-custom>
+		<view class="container-cash clearfix" :style="{marginTop:CustomBar+'px'}">
+			<view class="container-wrapper">
+				<view class="cash-icon">
+					<text class="iconfont" :class="payStatus ? 'icon-wancheng' : 'icon-shibai'"></text>
+				</view>
+				<view class="cash-text">
+					<text>{{ successText }}</text>
+				</view>
+			</view>
+			<view class="container-amount">
+				<view class="amount-label">支付金额</view>
+				<view class="amount-money">¥{{ amuntMoney | NumFormat }}</view>
+			</view>
+			<view class="container-button">
+				<view class="btn btn-home" v-if="payBtnStatus" @click="toAgainPay">继续下一笔支付</view>
+				<view class="btn btn-home" v-else @click="this.$api.switchTabTo('/pages/tabBar/home/index')">回到首页</view>
+				<view class="btn btn-open" @click="details">查看订单</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				orderId:0,
+				nvabarData: {		//顶部自定义导航
+					haveBack:false,
+					haveHome:true,
+					showCapsule:1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '支付结果',  // 导航栏 中间的标题
+					textLeft:this.$store.state.isIphone
+				},
+				payType:'',
+				payStatus:true,
+				payBtnStatus:false,
+				amuntMoney:0,
+				successText:'订单支付失败',
+				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				mapStateArr:[11,12,13,21,22,23,111]
+				
+			}
+		},
+		filters:{
+			NumFormat(value) {
+			    //处理金额
+			    if (value) {
+			        return Number(value).toFixed(2)
+			    } else {
+			        return '0.00'
+			    }
+			}
+		},
+		onLoad(option) {
+			this.initData(option)
+		},
+		methods:{
+			initOrderInfo() {
+			    this.orderInfo = uni.getStorageSync('orderInfo')
+			    uni.removeStorageSync('orderInfo')
+			},
+			initData(option){
+				const data = JSON.parse(option.data)
+				this.orderId = data.data.orderId
+				this.payType = data.data.type
+				this.amuntMoney = data.data.payAmount
+				if(this.payType == 'success'){
+					this.payStatus = true
+					this.successText = '订单支付成功'
+				}else{
+					this.payStatus = false
+					this.successText = '订单支付失败'
+				}
+				this.PayOrderCheckoutCounter(this.orderId)
+			},
+			PayOrderCheckoutCounter(orderId){//初始化支付信息
+				this.PayService.PayOrderCheckoutCounter({ orderId : orderId }).then(response =>{
+					this.isRepuest = true
+					const status = response.data.order.status //主订单状态
+					this.mapStateArr.forEach(value => {
+						if(status === value){
+							this.payBtnStatus = true
+						}
+					})
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			toAgainPay(){
+				this.$api.reLaunch(`/pages/user/order/order-pay-list?orderId=${this.orderId}`)
+			},
+			details(){
+				this.$api.reLaunch('/pages/user/order/order-details?type=share&orderId='+this.orderId)
+			}
+		},
+		onShow() {
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: auto !important;
+	}
+	.container-cash{
+		width: 100%;
+		.container-wrapper{
+			width:100%;
+			height: auto;
+			padding: 120rpx 24rpx 0 24rpx;
+			box-sizing: border-box;
+			.cash-icon{
+				width: 100%;
+				height: 90rpx;
+				text-align: center;
+				.iconfont{
+					font-size: 80rpx;
+					&.icon-wancheng{
+						color:#00BE6F ;
+					}
+					&.icon-shibai{
+						color:#F94B4B ;
+					}
+				}
+			}
+			.cash-text{
+				width: 100%;
+				height: 90rpx;
+				text-align: center;
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 90rpx;
+				padding-bottom: 40rpx;
+			}
+		}
+		.container-amount{
+			width: 100%;
+			height: 130rpx;
+			box-sizing: border-box;
+			padding: 0 24rpx;
+			margin-bottom: 24rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			line-height: 90rpx;
+			border-top: 20rpx solid #F7F7F7;
+			border-bottom: 20rpx solid #F7F7F7;
+			.amount-label{
+				float: left;
+				font-weight: bold;
+			}
+			.amount-money{
+				float: right;
+				text-align: right;
+			}
+		}
+		.container-button{
+			width: 100%;
+			box-sizing: border-box;
+			padding: 80rpx 75rpx;
+			.btn{
+				width: 100%;
+				height: 90rpx;
+				border-radius: 50rpx;
+				line-height: 90rpx;
+				box-sizing: border-box;
+				text-align: center;
+				font-size: $font-size-26;
+				color: #FFFFFF;
+				margin: 24rpx 0;
+				&.btn-open{
+					background:#FFFFFF;
+					border: 1px solid $color-system;
+					color: $color-system;
+				}
+				&.btn-home{
+					background:$btn-confirm;
+				}
+			}
+		}
+	}
+</style>

+ 1 - 1
plugins/uma/index.js

@@ -1,5 +1,5 @@
 // 友盟依赖包
-import uma from 'umtrack-wx'
+// import uma from 'umtrack-wx'
 import { umtrackWxKey as appKey } from './config.js'
 
 // 默认事件广播(防止报错)

+ 165 - 147
services/common.service.js

@@ -2,159 +2,177 @@
  * 这是所有模块公用业务逻辑的服务
  */
 export default class CommonService {
-	constructor(AjaxService) {
-		Object.assign(this, { AjaxService })
-		this.name = 'CommonService'
-	}
-	/* 首页导航模块商品列表 */
-	GetHomeClassify(data = {}) {
-		return this.AjaxService.get({
-			url: '/home/classify',
-			data,
-			isLoading: true,
-		})
-	}
-	/* 首页初始化 */
-	GetHomeModulesDataInfo(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/init',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 首页楼层数据 */
-	GetHomeDataInfo(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/floor',
-			data,
-			isLoading: false,
+    constructor(AjaxService) {
+        Object.assign(this, { AjaxService })
+        this.name = 'CommonService'
+    }
+    /* 首页导航模块商品列表 */
+    GetHomeClassify(data = {}) {
+        return this.AjaxService.get({
+            url: '/home/classify',
+            data,
+            isLoading: true,
+        })
+    }
+    /* 首页初始化 */
+    GetHomeModulesDataInfo(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/init',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 首页楼层数据 */
+    GetHomeDataInfo(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/floor',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 首页楼层查看更多数据 */
-	GetHomeFloorContentDetails(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/page/floor/details',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 首页楼层查看更多数据 */
+    GetHomeFloorContentDetails(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/page/floor/details',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 二级页楼层查看更多数据 */
-	GePageFloorContentDetails(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/page/floor/centre',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 二级页楼层查看更多数据 */
+    GePageFloorContentDetails(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/page/floor/centre',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 首页顶部三个模块数据 */
-	GetHomeTopDataInfo(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/sidebar',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 获取其他服务信息 */
-	QueryAfterSale(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/sale/tips',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 首页金刚区分类 */
-	// GetHomeInit (data = {}) {
-	// 	return this.AjaxService.get({ 
-	// 		url:'/home/init', 
-	// 		data, 
-	// 		isLoading: false ,
-	// 	})
-	// }
-	GetHomeInit(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/init',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 首页顶部三个模块数据 */
+    GetHomeTopDataInfo(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/sidebar',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 获取其他服务信息 */
+    QueryAfterSale(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/sale/tips',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 首页金刚区分类 */
+    // GetHomeInit (data = {}) {
+    // 	return this.AjaxService.get({ 
+    // 		url:'/home/init', 
+    // 		data, 
+    // 		isLoading: false ,
+    // 	})
+    // }
+    GetHomeInit(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/init',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 首页金刚区二级分类 */
-	GetHomeSubMenu(data = {}) {
-		return this.AjaxService.get({
-			url: '/home/subMenu',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 首页楼层 */
-	GetHomeFloorInfo(data = {}) {
-		return this.AjaxService.get({
-			url: '/home/floor',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 直播专题页图片 */
-	GetHomeLiveAdvertising(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/home/sidebar',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 搜索热门关键词 */
-	GetHomeHotSearchTerms(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/search/query/hot/keyword',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 二级列表楼层 */
-	GetInstrumentPageData(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/classify/product',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 首页金刚区二级分类 */
+    GetHomeSubMenu(data = {}) {
+        return this.AjaxService.get({
+            url: '/home/subMenu',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 首页楼层 */
+    GetHomeFloorInfo(data = {}) {
+        return this.AjaxService.get({
+            url: '/home/floor',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 直播专题页图片 */
+    GetHomeLiveAdvertising(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/sidebar',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 搜索热门关键词 */
+    GetHomeHotSearchTerms(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/search/query/hot/keyword',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 二级列表楼层 */
+    GetInstrumentPageData(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/classify/product',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 一级分类 */
-	GetFirstClassly(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/classify',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 一级分类 */
+    GetFirstClassly(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/classify',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/* 根据一级分类获取二、三级分类 */
-	GetProductChildrenClassly(data = {}) {
-		return this.AjaxService.get({
-			url: '/product/bigType/classify',
-			data,
-			isLoading: false,
-		})
-	}
-	/* 根据一、二、三级分类ID查询单条分类 */
-	GetProductOneClassly(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/type/id',
-			data,
-			isLoading: false,
+        })
+    }
+    /* 根据一级分类获取二、三级分类 */
+    GetProductChildrenClassly(data = {}) {
+        return this.AjaxService.get({
+            url: '/product/bigType/classify',
+            data,
+            isLoading: false,
+        })
+    }
+    /* 根据一、二、三级分类ID查询单条分类 */
+    GetProductOneClassly(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/type/id',
+            data,
+            isLoading: false,
 			  
-		})
-	}
-	/*活动页面获取楼层*/
-	GetActivityFloorData(data = {}) {
-		return this.AjaxService.get({
-			url: '/commodity/page/beauty',
-			data,
-			isLoading: false,
+        })
+    }
+    /*活动页面获取楼层*/
+    GetActivityFloorData(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/page/beauty',
+            data,
+            isLoading: false,
 			  
-		})
-	}
+        })
+    }
+    /*采美公告列表*/
+    GetNewsList(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/title',
+            data,
+            isLoading: true,
+			  
+        })
+    }
+    /*采美公告详情 Id */
+    GetNewsCapacity(data = {}) {
+        return this.AjaxService.get({
+            url: '/commodity/home/capacity',
+            data,
+            isLoading: true,
+			  
+        })
+    }
 }

+ 61 - 1
services/pay.service.js

@@ -15,6 +15,15 @@ export default class PayService {
               
         })
     }
+    /* 根据主订单查询子订单信息 */
+    PayOrderShoporders (data = {}) {
+	    return this.AjaxService.get({ 
+	        url:'/order/pay/shoporders', 
+	        data, 
+	        isLoading: true ,
+	          
+	    })
+    }
     /* 小程序支付-初始化收银台 */
     PayOrderCheckoutCounter (data = {}) {
         return this.AjaxService.get({ 
@@ -24,8 +33,17 @@ export default class PayService {
               
         })
     }
+    /* 小程序支付-初始化子订单收银台 shopOrderId*/
+    PayOrderCheckoutShoporders (data = {}) {
+        return this.AjaxService.get({ 
+            url:'/order/pay/checkout/shoporders', 
+            data, 
+            isLoading: true ,
+              
+        })
+    }
     /**
-	 *小程序支付-微信支付
+	 *小程序支付-米花微信支付
 	 *@param  amount支付金额,单位分,必须大于2
 	 *@param  payWay银联:UNIONPAY,微信:WEIXIN,支付宝:ALIPAY
 	 *@param  payType 微信小程序支付: MINIAPP_WEIXIN ,微信公众号支付: JSAPI_WEIXIN
@@ -40,6 +58,23 @@ export default class PayService {
             loadText:'请求支付中...'    
         })
     }
+    /**
+	 *小程序支付-合利宝微信支付
+	 *@param  amount支付金额,单位分,必须大于2
+	 *@param  payWay银联:UNIONPAY,微信:WEIXIN,支付宝:ALIPAY
+	 *@param  payType 微信小程序支付: MINIAPP_WEIXIN ,微信公众号支付: JSAPI_WEIXIN
+	 *@param  code  微信小程序code,微信小程序支付使用
+	 *@param  orderId  主订单ID
+	 */
+    WeChatScanMiniWxPay (data = {}) {
+        console.log('合利宝微信支付')
+        return this.AjaxService.post({ 
+            url:'/order/pay/online', 
+            data, 
+            isLoading: true ,
+            loadText:'请求支付中...'    
+        })
+    }
     /**
 	 *小程序支付-微信支付
 	 *@param  payWay银联:UNIONPAY,微信:WEIXIN,支付宝:ALIPAY
@@ -129,4 +164,29 @@ export default class PayService {
               
         })
     } 
+    /**
+	 *@param 订单支付大额网银转账
+	 *@param  payAmount  转账金额
+	 *@param  orderId 订单ID
+	 */
+    PayOrderTransferUnion (data = {}) {
+        return this.AjaxService.post({
+            url:'/order/pay/transfer/union', 
+            data, 
+            isLoading: true ,
+              
+        })
+    } 
+    /**
+	 *@param 校验是否网银转账成功
+	 *@param  mbOrderId  交易订单号
+	 */
+    PayOrderFindOrderStatus (data = {}) {
+        return this.AjaxService.get({
+            url:'/order/pay/result/json', 
+            data, 
+            isLoading: true ,
+              
+        })
+    } 
 }

+ 2 - 2
services/public.service.js

@@ -53,9 +53,9 @@ export default class PublicService {
 	}
 	/**
 	 * 获取手机短信验证码
-	 * isCheckCaptcha 	是否需要图形验证码:1:检查 , 0:检查
+	 * isCheckCaptcha 	是否需要图形验证码:1:检查 , 0:检查
 	 * mobile			手机号
-	 * activateCodeType 短信类型 :1:找回密码, 2:手机号注册机构, 3:供应商注册
+	 * activateCodeType 短信类型 :1:找回密码, 2:手机号注册机构, 3:供应商注册 6:二手发布
 	 * imgCode          图片验证码
 	 * token            图片验证码token
 	 * platformType: 	来源:0:www,1:crm/h5,2:小程序

+ 44 - 40
services/second.service.js

@@ -1,54 +1,58 @@
 // 二手商品
 export default class SecondService {
-	constructor(AjaxService) {
-		Object.assign(this, { AjaxService })
-		this.name = 'SecondService'
-	}
-	/**
+    constructor(AjaxService) {
+        Object.assign(this, { AjaxService })
+        this.name = 'SecondService'
+    }
+    /**
 	 *二手商品列表
 	 *@param 二手商品分类 secondHandType	1二手仪器,2临期产品,3其他  【必传】
 	 *@param 二手仪器分类的类型 instrumentType	1轻光电、2重光电、3耗材配件【不传默认全部】
 	 *@param 搜索关键词 searchKeyword	【选传】 
 	 */
-	SeconHandProductList (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/second/list', 
-			data, 
-			isLoading: true ,
+    SeconHandProductList (data = {}) {
+        return this.AjaxService.get({ 
+            url:'/commodity/second/list', 
+            data, 
+            isLoading: true ,
 			  
-		})
-	}
-	/*二手发布/品牌列表 */
-	brandList (data = {}) {
-		return this.AjaxService.get({ url:'/commodity/second/brands', data, isLoading: true })
-	}
-	/*二手发布/提交发布 */
-	SecondHandProduct (data = {}) {
-		return this.AjaxService.post({ 
-			url:'/commodity/second/release', 
-			data, 
-			isLoading: true ,
+        })
+    }
+    /*二手发布/品牌列表 */
+    brandList (data = {}) {
+        return this.AjaxService.get({ 
+            url:'/commodity/second/brands', 
+            data, 
+            isLoading: false ,
+        })
+    }
+    /*二手发布/提交发布 */
+    SecondHandProduct (data = {}) {
+        return this.AjaxService.post({ 
+            url:'/commodity/second/release', 
+            data, 
+            isLoading: true ,
 			  
-		})
-	}
-	/*二手发布/浏览量 */
-	ProductCount (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/product/updateSecondHandProductCount', 
-			data, 
-			isLoading: true ,
-		})
-	}
-	/**
+        })
+    }
+    /*二手发布/浏览量 */
+    ProductCount (data = {}) {
+        return this.AjaxService.get({ 
+            url:'/product/updateSecondHandProductCount', 
+            data, 
+            isLoading: true ,
+        })
+    }
+    /**
 	 *@二手商品详情
 	 *@param productId:商品ID(数字类型,必传)
 	 */
-	ProductDetail (data={}){//商品详情
-		return this.AjaxService.get({ 
-			url:'/commodity/second/detail', 
-			data, 
-			isLoading: true ,
+    ProductDetail (data={}){//商品详情
+        return this.AjaxService.get({ 
+            url:'/commodity/second/detail', 
+            data, 
+            isLoading: true ,
 			  
-		})
-	}
+        })
+    }
 }

+ 78 - 31
utils/mixins/wechatPay.js

@@ -1,4 +1,4 @@
-import authorize from '@/common/authorize.js'
+import authorize from '@/common/config/authorize.js'
 
 // 调用微信支付
 function wxRequestPayment(payData) {
@@ -20,44 +20,91 @@ function wxRequestPayment(payData) {
 }
 
 // 微信支付
-const wechatCouponPay = {
+const wechatPay = {
     data() {
         
     },
     methods: {
-        // 获取微信支付payment
-        async weChatMiniWxPay(data) {
+        // 微信支付正常订单
+        async weChatMiniOrderWxPay(params) {
             try {
-                // 获取微信code
-                const wechatCode = await authorize.getCode('weixin')
-                // 微信支付请求 返回支付信息
-                const response = await this.PayService.WeChatCouponMiniWxPay({
-                    userId: this.listQuery.userId,
-                    couponId: coupon.couponId,
-                    payWay: 'WEIXIN',
-                    code: wechatcode
-                })
-                // 处理支付信息 调用微信支付
-                const payment = JSON.parse(response.data.data.payInfo)
-                const payFlag = await wxRequestPayment(payment)
-                // debugger
-                // console.log(this.hanldOrder)
-                // 支付成功重定向
-                uni.setStorageSync('orderInfo', this.hanldOrder.order)
-                if (payFlag) {
-                    // 微信支付成功回调 在页面onload中通过this.$on监听orderPaySuccess事件回调
-                    uni.reLaunch({url: '/pages/tabBar/user/user'})
-                } else {
-                    uni.reLaunch({ url: '/pages/order/error' })
+			    // 微信支付请求 返回支付信息
+			    const response = await this.PayService.WeChatScanMiniWxPay(params)
+			    // 处理支付信息 调用微信支付
+			    const payment = JSON.parse(response.data.rt10_payInfo)
+                console.log('payment',payment)
+			    const payFlag = await wxRequestPayment(payment)
+			    console.log('payFlag',payFlag)
+                uni.setStorageSync('shopOrderInfo', this.shopOrderInfo)
+			    if (payFlag) {
+			       // 微信支付成功回调
+			       let linkData =  {
+                        payAmount:this.payAmount,
+                        orderId:this.shopOrderInfo.orderId,
+                        type:'success'
+                    }
+			        uni.redirectTo({ url: `/pages/user/order/order-success?data=${JSON.stringify({ data: linkData })}`})
+			    } else {
+                    // 微信支付失败
+			        this.$util.msg('支付失败~',2000)
+			    }
+			 } catch (error) {
+                // 微信支付失败
+                this.$util.msg('支付失败~',2000)
+			 } 
+        },
+        // 微信支付优惠券
+        async weChatMiniCouponWxPay(params,UmEvent,UmPageName,UmSourcePage,UmCouponId,UmUserId) {
+            try {
+                console.log('params',params)
+			    // 微信支付请求 返回支付信息
+			    const response = await this.PayService.WeChatCouponMiniWxPay(params)
+			    // 处理支付信息 调用微信支付
+			    const payment = JSON.parse(response.data.rt10_payInfo)
+                // 友盟埋点收集微信支付
+                if (process.env.NODE_ENV != 'development') {
+                    this.$uma.trackEvent(UmEvent, {
+                        Um_Key_PageName: UmPageName,
+                        Um_Key_SourcePage: UmSourcePage,
+                        Um_Key_CouponId: UmCouponId,
+                        Um_Key_userId: UmUserId
+                    })
                 }
-            } catch (error) {
+			    const payFlag = await wxRequestPayment(payment)
+			    if (payFlag) {
+			        // 微信支付成功回调
+			        uni.reLaunch({url: '/pages/tabBar/user/user'})
+			    } else {
+			        this.$util.msg('支付失败~',2000)
+			    }
+			 } catch (error) {
                 // 微信支付失败
-                this.$util.msg(error.msg, 2000)
-            } 
+                this.$util.msg('支付失败~',2000)
+			 } 
+        },
+        // 微信支付超级会员
+        async weChatMiniVipWxPay(params) {
+            try {
+                console.log('params',params)
+			    // 微信支付请求 返回支付信息
+			    const response = await this.PayService.PayOrderVipWechat(params)
+			    // 处理支付信息 调用微信支付
+			    const payment = JSON.parse(response.data.rt10_payInfo)
+                console.log('payment',payment)
+			    const payFlag = await wxRequestPayment(payment)
+			    console.log('payFlag',this.payFlag)
+			    if (payFlag) {
+			        // 微信支付成功回调
+			        uni.reLaunch({url: '/pages/tabBar/user/user'})
+			    } else {
+			        this.$util.msg('支付失败~',2000)
+			    }
+			 } catch (error) {
+                // 微信支付失败
+                this.$util.msg('支付失败~',2000)
+			 } 
         }
     }
 }
 
-export default {
-    wechatCouponPay
-}
+export default wechatPay

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.