Pārlūkot izejas kodu

Merge remote-tracking branch 'remotes/origin/developer' into developerA

zhengjinyi 1 gadu atpakaļ
vecāks
revīzija
994abc046e
100 mainītis faili ar 10494 papildinājumiem un 6799 dzēšanām
  1. 1 1
      common/config/caimeiApi.js
  2. 5 0
      common/config/common.js
  3. 7 3
      common/css/iconfont.scss
  4. BIN
      common/fonts/iconfont.ttf
  5. BIN
      common/fonts/iconfont.woff
  6. BIN
      common/fonts/iconfont.woff2
  7. 2 2
      components/cm-custom/cm-drag.vue
  8. 1 0
      components/cm-module/cart-components/cm-unit-popup.vue
  9. 12 7
      components/cm-module/homeIndex/banner.vue
  10. 177 154
      components/cm-module/homeIndex/customer.vue
  11. 42 31
      components/cm-module/homeIndex/navbars.vue
  12. 1 1
      components/cm-module/homeIndex/pageSpecial.vue
  13. 210 0
      components/cm-module/homeIndex/quickOperation.vue
  14. 10 7
      components/cm-module/listTemplate/listSkeleton.vue
  15. 0 140
      components/cm-module/modelAlert/freightAlert.vue
  16. 0 197
      components/cm-module/orderDetails/invoiceTent.vue
  17. 0 181
      components/cm-module/orderDetails/logisticsRecord.vue
  18. 0 329
      components/cm-module/orderDetails/orderInformation.vue
  19. 1 0
      components/cm-module/productDetails/cm-unit-popup.vue
  20. 13 1
      components/cm-module/scrollTop/scrollTop.vue
  21. 352 379
      components/thorui/tui-modal/tui-modal.vue
  22. 3 2
      manifest.json
  23. 2 2
      mixins/appMixins.js
  24. 1 0
      mixins/payMixins.js
  25. 75 21
      pages.json
  26. 2 1
      pages/goods/components/cm-unit-popup.vue
  27. 4 4
      pages/goods/components/cm-unit-price.vue
  28. 161 151
      pages/goods/good-floor.vue
  29. 7 2
      pages/goods/goods-classify.vue
  30. 1 1
      pages/h5/activity/activity-list.vue
  31. 198 174
      pages/h5/activity/activity-topic.vue
  32. 2 2
      pages/h5/activity/components/activity-contact.vue
  33. 4 2
      pages/h5/activity/components/template-picture/templateE.vue
  34. 181 0
      pages/h5/activity/quick-operation.vue
  35. 3 2
      pages/h5/article/path.vue
  36. 329 0
      pages/login/components/basicOperationsProducts.vue
  37. 77 0
      pages/login/components/caimei-about.vue
  38. 76 0
      pages/login/components/caimei-video.vue
  39. 249 0
      pages/login/components/growthCommunity.vue
  40. 146 0
      pages/login/components/markeServices.vue
  41. 109 0
      pages/login/components/menuTopDropdown.vue
  42. 440 0
      pages/login/components/multiple-select/multiple-select.vue
  43. 176 0
      pages/login/components/scenarioMarketing.vue
  44. 445 0
      pages/login/components/solution.vue
  45. 131 0
      pages/login/components/successCases.vue
  46. 187 0
      pages/login/components/supplier-loginMenu.vue
  47. 42 0
      pages/login/components/supplier-title.vue
  48. 39 0
      pages/login/components/swiper-dots.vue
  49. 11 3
      pages/login/login.vue
  50. 70 0
      pages/login/supplier_information.vue
  51. 462 0
      pages/login/supplier_login.vue
  52. 4 4
      pages/notice/club/notice-order.vue
  53. 10 5
      pages/search/search.vue
  54. 22 11
      pages/seller/address/addressManage.vue
  55. 0 7
      pages/seller/cart/cart.vue
  56. 231 226
      pages/seller/cart/components/immediatelyList.vue
  57. 1 1
      pages/seller/cart/mixins/cartMixins.js
  58. 1 1
      pages/seller/cart/second.vue
  59. 18 18
      pages/seller/club/club-list.vue
  60. 1 1
      pages/seller/club/components/echart-info.vue
  61. 1 1
      pages/seller/components/cm-clubpopup.vue
  62. 15 3
      pages/seller/components/home.vue
  63. 5 5
      pages/seller/components/user.vue
  64. 133 112
      pages/seller/index/index.vue
  65. 3 2
      pages/seller/order/components/cm-address-temp.vue
  66. 2 1
      pages/seller/order/components/cm-club-visible.vue
  67. 0 0
      pages/seller/order/components/cm-coupon-chang.vue
  68. 1 1
      pages/seller/order/components/cm-coupon-popup.vue
  69. 199 0
      pages/seller/order/components/cm-coupon-tips.vue
  70. 247 0
      pages/seller/order/components/cm-details-button.vue
  71. 471 0
      pages/seller/order/components/cm-freight-popup.vue
  72. 399 0
      pages/seller/order/components/cm-goods-temp.vue
  73. 454 0
      pages/seller/order/components/cm-invice-popup.vue
  74. 237 0
      pages/seller/order/components/cm-list-button.vue
  75. 1 0
      pages/seller/order/components/cm-orderpay-popup.vue
  76. 10 2
      pages/seller/order/components/cm-regula-popup.vue
  77. 12 10
      pages/seller/order/components/cm-share-popup.vue
  78. 164 0
      pages/seller/order/components/details/cm-address-temp.vue
  79. 535 0
      pages/seller/order/components/details/cm-goods-temp.vue
  80. 151 0
      pages/seller/order/components/details/cm-invice-temp.vue
  81. 246 0
      pages/seller/order/components/details/cm-order-temp.vue
  82. 48 39
      pages/seller/order/components/details/cm-payment-temp.vue
  83. 0 0
      pages/seller/order/components/details/cm-promote-popup.vue
  84. 0 0
      pages/seller/order/components/details/cm-refund-temp.vue
  85. 150 0
      pages/seller/order/components/details/cm-voucher-temp.vue
  86. 0 256
      pages/seller/order/components/sellerDetaileButton.vue
  87. 0 524
      pages/seller/order/components/sellerFreight.vue
  88. 0 695
      pages/seller/order/components/sellerInvoice.vue
  89. 0 218
      pages/seller/order/components/sellerOrderButton.vue
  90. 828 940
      pages/seller/order/create-order.vue
  91. 94 0
      pages/seller/order/mixins/conMixins.js
  92. 168 0
      pages/seller/order/mixins/orderMixins.js
  93. 38 258
      pages/seller/order/order-club-details.vue
  94. 317 291
      pages/seller/order/order-details.vue
  95. 226 401
      pages/seller/order/order-historylist.vue
  96. 331 526
      pages/seller/order/order-list.vue
  97. 249 436
      pages/seller/order/search-order.vue
  98. 2 2
      pages/seller/remarks/list.vue
  99. 1 1
      pages/seller/remarks/record-list.vue
  100. 1 1
      pages/seller/remarks/relation-consult-list.vue

+ 1 - 1
common/config/caimeiApi.js

@@ -271,7 +271,7 @@ const caimeiApi = {
             const typeMap = {
                 1:`/pages/goods/goods-instrument?linkId=${linkId}`,
                 2:`/pages/goods/instrument-details?id=${linkId}`,
-                4:`/pages/h5/activity/activity?id=${linkId}`,
+                4:`/pages/h5/activity/activity?link=${linkHref}&linkId=${linkId}`,
                 5:`/pages/goods/product?id=${linkId}`, 
                 7:`/pages/supplier/user/my-shop?shopId=${linkId}`,
                 8:'/pages/h5/activity/activity-list',

+ 5 - 0
common/config/common.js

@@ -20,6 +20,10 @@ const utils = {
         //是否为手机号
         return RegExp(/^1[1-9][0-9]{9}$/).test(value)
     },
+    isIdCard: function(value) {
+        //是否为手机号
+        return RegExp(/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value)
+    },
     isFloat: function(value) {
         //金额,只允许保留两位小数
         return RegExp(/^([0-9]*[.]?[0-9])[0-9]{0,1}$/).test(value)
@@ -185,6 +189,7 @@ module.exports = {
     isMobile: utils.isMobile,
     isEmail: utils.isEmail,
     isWebsite:utils.isWebsite,
+    isIdCard:utils.isIdCard,
     isFloat: utils.isFloat,
     isNum: utils.isNum,
     isEmailCode:utils.isEmailCode,

+ 7 - 3
common/css/iconfont.scss

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 1519039 */
-  src: url('//at.alicdn.com/t/c/font_1519039_vj73i9j8tkm.woff2?t=1679652049039') format('woff2'),
-       url('//at.alicdn.com/t/c/font_1519039_vj73i9j8tkm.woff?t=1679652049039') format('woff'),
-       url('//at.alicdn.com/t/c/font_1519039_vj73i9j8tkm.ttf?t=1679652049039') format('truetype');
+  src: url('//at.alicdn.com/t/c/font_1519039_dfhum6nnq6r.woff2?t=1680766548825') format('woff2'),
+       url('//at.alicdn.com/t/c/font_1519039_dfhum6nnq6r.woff?t=1680766548825') format('woff'),
+       url('//at.alicdn.com/t/c/font_1519039_dfhum6nnq6r.ttf?t=1680766548825') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,10 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-yixuanze3:before {
+  content: "\e6d1";
+}
+
 .icon-xiaoshou:before {
   content: "\e74b";
 }

BIN
common/fonts/iconfont.ttf


BIN
common/fonts/iconfont.woff


BIN
common/fonts/iconfont.woff2


+ 2 - 2
components/cm-custom/cm-drag.vue

@@ -37,8 +37,8 @@
 		},
 		data() {
 			return {
-				top:300,
-				left:150,
+				top:518,
+				left:314,
 				width: 0,
 				height: 0,
 				offsetWidth: 0,

+ 1 - 0
components/cm-module/cart-components/cm-unit-popup.vue

@@ -82,6 +82,7 @@
 									v-model="addParams.count"
 									maxlength="4"
 									@blur="skuChangNumberChange($event)"
+									cursor-spacing="40"
 								/>
 								<view
 									class="iconfont icon-jiahao"

+ 12 - 7
components/cm-module/homeIndex/banner.vue

@@ -1,5 +1,5 @@
 <template>
-	<view>
+	<view class="banner">
 		<view class="swiper-banner-content">
 			<view class="swiper-banner-box" >
 				<swiper class="tui-banner-swiper tui-banner tui-skeleton-fillet" :autoplay="true" :interval="5000" :duration="500"  @change="swiperChange" :circular="true">
@@ -44,7 +44,8 @@
 		},
 		data() {
 			return{
-				current:0
+				current:0,
+                StatusBar: this.StatusBar,
 			}
 		},
 		created(){
@@ -66,21 +67,25 @@
 	}
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
+    .banner {
+        background-color: #f7f7f7;
+    }
 	.swiper-banner-content{
 		width: 100%;
-		height: 200rpx;
-		padding-top:100rpx;
-		background:#FF7F00;
+		height: auto;
+		margin-top: 55px;
+        background: url(https://static.caimei365.com/app/img/bg/new_home_cumres@2x.png) no-repeat;
 		position: relative;
 		background-size: cover;
-		margin-bottom: 170rpx;
+        background-position-y: -170rpx;
 	}
 	.swiper-banner-box{
 		width: 100%;
 		height: 360rpx;
 		position: relative;
 		background-size: cover;
+        display: flex;
 	}	
 	.tui-banner-swiper {
 		width: 700rpx;

+ 177 - 154
components/cm-module/homeIndex/customer.vue

@@ -1,160 +1,183 @@
 <template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:(CustomBar+55)+'px',paddingTop:StatusBar+'px'}"> 
-	  	<view class="navbar-text" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',lineHeight:(CustomBar - StatusBar)+'px;',fontSize:fontSizeSetting+'px;',paddingLeft:navbarData.textLeft ? '' : 12+'px'}" :class="platformClass">
-	    	  {{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-		<view class="search-input">
-			<view class="gosearch-btn" @click="this.$api.navigateTo(clickPath)">
-				<view class="search-icon">
-					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
-				</view>
-				<view class="search-text">{{hotSearchText}}</view>
-			</view>
-		</view>
-	</view>
+    <!-- 自定义导航栏 -->
+    <view
+        class="navbar-wrap"
+        :class="isScroll ? opacityNav : ''"
+        :style="{
+            height: CustomBar + 55 + 'px',
+            paddingTop: StatusBar + 'px',
+        }"
+    >
+        <view
+            class="navbar-text"
+            :style="{
+                color: navbarData.textColor ? navbarData.textColor : '',
+                lineHeight: CustomBar - StatusBar + 'px;',
+                fontSize: fontSizeSetting + 'px;',
+                paddingLeft: navbarData.textLeft ? '' : 12 + 'px'
+            }"
+            :class="platformClass"
+        >
+            {{ navbarData.title ? navbarData.title : ' ' }}
+        </view>
+        <view class="search-input">
+            <view class="gosearch-btn" @click="this.$api.navigateTo(clickPath)">
+                <view class="search-icon"><text class="iconfont icon-iconfonticonfontsousuo1"></text></view>
+                <view class="search-text">{{ hotSearchText }}</view>
+            </view>
+        </view>
+    </view>
 </template>
 
 <script>
-	var self;
-	import btSearch from '@/components/uni-search/bt-search.vue'
-	export default{
-		name:'headerNavbar',
-		components:{
-			btSearch,
-		},
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    }
-		},
-		data() {
-			return{
-				clickPath:'/pages/search/search',
-				hotSearchText:'搜索商品/项目仪器',
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				StatusBar: this.StatusBar,
-				fontSizeSetting:this.fontSizeSetting,
-				screenWidth:this.screenWidth,
-				capsule:this.capsule,
-				platformClass:this.platformClass,
-			}
-		},
-		created() {
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			      this.navbarData.haveBack = false;
-			} else {
-			      this.navbarData.haveBack = true;
-			}
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			BackPage: function () {
-				this.$emit('navigateBack')
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			},
-			_goHome:function(){
-				uni.switchTab({
-		        	url: '/pages/tabBar/home/index'
-		      	})
-			}
-		},
-		onShow(){
-	
-		}
-	}
+var self
+import btSearch from '@/components/uni-search/bt-search.vue'
+export default {
+    name: 'headerNavbar',
+    components: {
+        btSearch
+    },
+    props: {
+        navbarData: {
+            // 由父页面传递的数据
+            type: Object
+        },
+        isScroll: {
+            type: Boolean,
+            default: () => false
+        }
+    },
+    data() {
+        return {
+            clickPath: '/pages/search/search',
+            hotSearchText: '搜索商品/项目仪器',
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            StatusBar: this.StatusBar,
+            fontSizeSetting: this.fontSizeSetting,
+            screenWidth: this.screenWidth,
+            capsule: this.capsule,
+            platformClass: this.platformClass,
+            opacityNav: 'opacityNav', // 渐变颜色
+        }
+    },
+    created() {
+        if (getCurrentPages().length === 1) {
+            // 当只有一个页面时
+            this.navbarData.haveBack = false
+        } else {
+            this.navbarData.haveBack = true
+        }
+        console.log(this.isScroll)
+    },
+    onLoad() {},
+    onPageScroll(e) {
+    	console.log(e)
+    },
+    methods: {
+        BackPage: function() {
+            this.$emit('navigateBack')
+        },
+        _goSearchPath: function() {
+            this.$emit('goSearchPath')
+        },
+        _goHome: function() {
+            uni.switchTab({
+                url: '/pages/tabBar/home/index'
+            })
+        }
+    },
+    onShow() {}
+}
 </script>
 
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 background: url(https://static.caimei365.com/app/img/bg/home_cumres@2x.png);
-		 background-size: cover;
-		 border-bottom:none;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 45px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 44rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-iconfonticonfontsousuo1 {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-	.search-input{
-		width: 100%;
-		height: 110rpx;
-		padding: 20rpx 24rpx;
-		box-sizing: border-box;
-		.gosearch-btn{
-			width: 100%;
-			height: 100%;
-			border-radius: 40rpx;
-			background: #F0F0F0;
-			margin: 0 auto;
-			font-size: 28rpx;
-			line-height: 70rpx;
-			color: #8A8A8A;
-			background: #FFFFFF;
-			position: relative;
-			box-sizing: border-box;
-			padding-left: 80rpx;
-			.search-icon{
-				width: 80rpx;
-				height: 70rpx;
-				position:absolute ;
-				left: 0;
-				top: 2rpx;
-				text-align: center;
-				line-height: 70rpx;
-				.icon-iconfonticonfontsousuo1{
-					margin:0 6rpx;
-					font-size: $font-size-34;
-					color: #8A8A8A;
-					z-index: 10;
-				}
-			}
-			.search-text{
-				font-size: $font-size-24;
-				line-height: 70rpx;
-				color: #8A8A8A;
-			}
-		}
-	}
-</style>
+<style lang="scss" scoped>
+.navbar-wrap {
+    position: fixed;
+    width: 100%;
+    top: 0;
+    z-index: 100000;
+    box-sizing: border-box;
+    background: url(https://static.caimei365.com/app/img/bg/new_home_cumres@2x.png) no-repeat;
+    background-position-y: -50rpx;
+    border-bottom: none;
+}
+.opacityNav {
+    background: linear-gradient(180deg, #FF5B00 0%, rgba(255,91,0, 1) 100%) !important;
+}
+.navbar-text {
+    font-size: 30rpx;
+    color: #000000;
+    font-weight: 500;
+}
+.navbar-text.center {
+    text-align: center;
+}
+.navbar-text.left {
+    text-align: left;
+    padding-left: 45px;
+}
+.navbar-icon {
+    position: fixed;
+    display: flex;
+    box-sizing: border-box;
+}
+.navbar-icon .iconfont {
+    display: inline-block;
+    overflow: hidden;
+    font-size: 44rpx;
+    padding-right: 40rpx;
+    margin-top: 1px;
+}
+.navbar-icon .icon-iconfonticonfontsousuo1 {
+    color: #000000;
+}
+.navbar-icon view {
+    height: 18px;
+    border-left: 0.5px solid rgba(0, 0, 0, 0.3);
+    margin-top: 6px;
+}
+.navbar-loading {
+    background: #fff;
+    text-align: center;
+}
+.search-input {
+    width: 100%;
+    height: 110rpx;
+    padding: 20rpx 24rpx;
+    box-sizing: border-box;
+    .gosearch-btn {
+        width: 100%;
+        height: 100%;
+        border-radius: 40rpx;
+        background: #f0f0f0;
+        margin: 0 auto;
+        font-size: 28rpx;
+        line-height: 70rpx;
+        color: #8a8a8a;
+        background: #ffffff;
+        position: relative;
+        box-sizing: border-box;
+        padding-left: 80rpx;
+        .search-icon {
+            width: 80rpx;
+            height: 70rpx;
+            position: absolute;
+            left: 0;
+            top: 2rpx;
+            text-align: center;
+            line-height: 70rpx;
+            .icon-iconfonticonfontsousuo1 {
+                margin: 0 6rpx;
+                font-size: $font-size-34;
+                color: #8a8a8a;
+                z-index: 10;
+            }
+        }
+        .search-text {
+            font-size: $font-size-24;
+            line-height: 70rpx;
+            color: #8a8a8a;
+        }
+    }
+}
+</style>

+ 42 - 31
components/cm-module/homeIndex/navbars.vue

@@ -1,5 +1,5 @@
 <template name="navbars">
-	<view>
+	<view class="navbar">
 		<view class="navbars-content clearfix">
 			<view class="nav-item" v-for="(item,index) in navList" :key="index" @click="NavToDetailPage(item,index)">
 				<view class="icon">
@@ -36,47 +36,58 @@
 				this.navList = list
 			},
 			NavToDetailPage(pros,index) {//跳转
-				/**
-				 * 页面跳转类型
-				 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
-				 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
-				 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
-				 * 23、新活动专题页面
-				 **/
-				console.log(pros)
-				if(pros.linkType){
-					 const typeMap = {
-						1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
-						3:'/pages/h5/article/path-live',
-						4:'/pages/h5/other/brands',
-						10:'/pages/second/product/product-list',
-						14:'/pages/h5/other/brand',
-						15:'/pages/h5/other/repair',
-						18:`/pages/h5/article/path?link=${pros.link}`,
-						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',//领券中心
-						
+				if(index === 3){
+					let linkPath = 'https://static.caimei365.com/app/caimei-activity-h5/html/2023/activity_02.html'
+					this.$api.navigateTo(`/pages/h5/activity/activity?link=${linkPath}&linkId=382`)
+				}else{
+					/**
+					 * 页面跳转类型
+					 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
+					 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
+					 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
+					 * 23、新活动专题页面
+					 **/
+					 if(pros.linkType){
+					 	 const typeMap = {
+					 		1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
+					 		3:'/pages/h5/article/path-live',
+					 		4:'/pages/h5/other/brands',
+					 		10:'/pages/second/product/product-list',
+					 		14:'/pages/h5/other/brand',
+					 		15:'/pages/h5/other/repair',
+					 		18:`/pages/h5/article/path?link=${pros.link}`,
+					 		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]
+					 	this.$api.navigateTo(url)
 					 }
-					const url = typeMap[pros.linkType]
-					this.$api.navigateTo(url)
 				}
 			}
 		}
 	}
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
+    .navbar {
+        background: #f7f7f7;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
 	.navbars-content{
-		width: 100%;
+		width: 94%;
 		height: auto;
 		box-sizing: border-box;
-		padding: 0 24rpx;
 		margin-top: 24rpx;
+        padding: 32rpx 0;
+        background-color: #fff;
+        border-radius: 16rpx;
 		.nav-item{
 			width: 164rpx;
 			height: auto;

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

@@ -192,7 +192,7 @@ export default {
 				const typeMap = {
 					1: `/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
 					2: `/pages/goods/instrument-details?id=${pros.linkParam.id}`,
-					4: `/pages/h5/activity/activity?title=${pros.title}&link=${pros.appletsLink}`,
+					4:`/pages/h5/activity/activity?link=${pros.appletsLink}&linkId=${pros.linkParam.id}`,
 					5: `/pages/goods/product?id=${pros.linkParam.id}`,
 					// 7:`/pages/supplier/user/my-shop?shopId=${pros.linkParam.id}`,
 					8: '/pages/h5/activity/activity-list',

+ 210 - 0
components/cm-module/homeIndex/quickOperation.vue

@@ -0,0 +1,210 @@
+<template>
+    <!-- 快捷运营 -->
+    <view class="quick-oprea">
+        <swiper class="swiper" :autoplay="false" @change="swiperChange" :circular="true">
+            <swiper-item v-for="(item, index) in footList" :key="index" class="swiper-item">
+                <view class="content" v-for="(i, o) in item" :key="i" @click="NavToDetailPage(i)">
+                    <view class="list">
+                        <div class="list-icon">
+                            <image :src="i.icon" style="width: 100%;height: 100%;" mode=""></image>
+                        </div>
+                        <div class="list-title">
+                            <div class="title-1">
+                                <div class="title-1-item">
+                                    <view style="display: inline-block;">{{ i.name }}</view>
+                                    <text class="title-2-item">GO></text>
+                                </div>
+                            </div>
+                            <div class="title-2">{{i.remark || ''}}</div>
+                        </div>
+                    </view>
+                </view>
+            </swiper-item>
+        </swiper>
+        <view class="swiper__dots-box">
+            <view
+                v-for="(item, idx) in footList"
+                :key="idx"
+                :class="[idx === current ? 'swiper__dots-long' : 'none']"
+                :data-index="current"
+                class="swiper__dots-item"
+            ></view>
+        </view>
+    </view>
+</template>
+
+<script>
+import cmsMixins from '@/mixins/cmsMixins.js'
+import { mapState } from 'vuex'
+export default {
+    mixins: [cmsMixins],
+    props: {
+        list: {
+            type: Array,
+            default: () => []
+        }
+    },
+    data() {
+        return {
+            current: 0 // 切换轮播
+        }
+    },
+    computed: {
+        ...mapState(['hasLogin']),
+        // 快捷运营列表
+        footList() {
+            let newArr = [],
+                a = []
+            this.list.map((item, index) => {
+                if (index !== 0 && index % 4 === 0) {
+                    newArr.push(a)
+                    a = []
+                    a.push(item)
+                } else a.push(item)
+                if (this.list.length === index + 1) {
+                    newArr.push(a)
+                }
+            })
+            return newArr
+        }
+    },
+    watch: {},
+    mounted() {
+        console.log('this.footList', this.footList)
+    },
+    methods: {
+        // 链接跳转
+        NavToDetailPage(pros) {
+            // if (!this.hasLogin) return this.$api.navigateTo('/pages/login/login')
+            /**
+             * 页面跳转类型
+             * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
+             * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
+             * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
+             * 23、新活动专题页面
+             **/
+            if (pros.linkType) {
+                const typeMap = {
+                    1: `/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
+                    3: '/pages/h5/article/path-live',
+                    4: '/pages/h5/other/brands',
+                    10: '/pages/second/product/product-list',
+                    14: '/pages/h5/other/brand',
+                    15: '/pages/h5/other/repair',
+                    18: `/pages/h5/article/path?link=${pros.link}`,
+                    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', //领券中心
+                    30: `/pages/h5/activity/quick-operation?linkId=${pros.linkParam.id}`, // 快捷运营入口
+                }
+                const url = typeMap[pros.linkType]
+                console.log(url)
+                this.$api.navigateTo(url)
+            }
+        },
+        swiperChange(e) {
+            //轮播图切换
+            this.current = e.detail.current
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.quick-oprea {
+    background-color: #f7f7f7;
+    padding: 20rpx;
+    position: relative;
+    height: 400rpx;
+    .swiper__dots-box {
+        position: absolute;
+        left: 0;
+        right: 0;
+        bottom: 32rpx;
+        display: flex;
+        flex: 1;
+        flex-direction: row;
+        justify-content: center;
+        align-items: center;
+        .swiper__dots-item {
+            width: 14rpx;
+            height: 5rpx;
+            border-radius: 100%;
+            margin-left: 6px;
+            background-color: #e15621;
+            opacity: 0.2;
+        }
+        .swiper__dots-long {
+            width: 26rpx;
+            height: 5rpx;
+            border-radius: 4rpx;
+            background-color: #e15621;
+            transition: all 0.4s;
+            opacity: 1;
+        }
+    }
+}
+.swiper {
+    height: 340rpx;
+    .swiper-item {
+        display: grid;
+        grid-template-columns: repeat(2, 1fr);
+        grid-template-rows: repeat(2, 1fr);
+        grid-gap: 18rpx;
+        .content {
+            box-sizing: border-box;
+            border-radius: 16rpx;
+            background-color: #fff;
+            display: flex;
+            align-items: center;
+            background: linear-gradient(180deg, #FFF1EB 0%, #FFFFFF 100%);
+            .list {
+                width: 100%;
+                display: flex;
+                height: 80rpx;
+                .list-icon {
+                    width: 80rpx;
+                    height: 100%;
+                    border-radius: 50%;
+                    margin-left: 24rpx;
+                    overflow: hidden;
+                }
+                .list-title {
+                    margin-left: 16rpx;
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: space-between;
+                    .title-1 {
+                        .title-1-item {
+                            color: #333333;
+                            font-size: 28rpx;
+                            width: 222rpx;
+                            display: flex;
+                            align-items: center;
+                            .title-2-item {
+                                width: 62rpx;
+                                height: 32rpx;
+                                background: #ff5b00;
+                                border-radius: 14rpx;
+                                font-size: 22rpx;
+                                text-align: center;
+                                height: 32rpx;
+                                color: white;
+                                margin-left: 6rpx;
+                            }
+                        }
+                    }
+                    .title-2 {
+                        color: #999999;
+                        font-size: 22rpx;
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 10 - 7
components/cm-module/listTemplate/listSkeleton.vue

@@ -7,6 +7,16 @@
 <script>
 	var self;
 	export default{
+		props:{
+			listType:{
+				type:Number,
+				default: 0
+			},
+			src: {
+				type: String,
+				default: 'empty'
+			}
+		},
 		data() {
 			return{
 				skeletonList: {
@@ -17,13 +27,6 @@
 				},
 			}
 		},
-		props:{
-			listType:String,
-			src: {
-				type: String,
-				default: 'empty'
-			}
-		},
 		created(){
 			
 		},

+ 0 - 140
components/cm-module/modelAlert/freightAlert.vue

@@ -1,140 +0,0 @@
-<template name="alert">
-	<view class="alert spec" :class="specClass">
-		<!-- 运费弹窗说明 -->
-		<view class="freight-alert"  @tap="hideFreight">
-			<view class="content">
-				<view class="title">
-					<text>运费规则</text>
-					<text class="iconfont icon-iconfontguanbi" @click.stop="hideFreight"></text>
-				</view>
-				<view class="text-content">
-					<view class="text-h1">一、除含有仪器类、家具类等指定商品的订单,运费规则如下:</view>
-					<view class="text">
-						<text>1、首单,全国包邮(注:如果首单中含有不包邮的指定商品,则首单只能"到付");</text>
-						<text>2、订单商品总额满1000元,全国包邮;</text>
-						<text>3、订单商品总额不足1000元,深圳市内运费10元,广东省内深圳市外运费15元,其它地方运费到付;</text>
-						<text>4、地推送货上门无需运费(注:下单可选择运费是否到付)。</text>
-					</view>
-					<view class="text-h1">二、含有仪器类、家具类等指定商品的订单,运费到付。</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'alert',
-		props:{},
-		data() {
-			return{
-				
-			}
-		},
-		created() {
-			
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			hideFreight(){
-				this.$parent.isfreightTip = false
-			},
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	/*弹窗*/
-	.model-warp.none{
-		display: none;
-	}
-	.model-warp.show{
-		display: block;
-	}
-	.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: 530rpx;
-			height: 710rpx;
-			position: absolute;
-			background: $bg-color;
-			left: 0;
-			right: 0;
-			bottom: 0;
-			top: 0;
-			margin: auto;
-			padding: 20rpx 25rpx;
-			border-radius: 12rpx;
-			.title{
-				width: 100%;
-				height: 68rpx;
-				line-height: 68rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: center;
-				margin-bottom: 32rpx;
-				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: 40rpx 0;
-					line-height: 44rpx;
-					font-size: $font-size-26;
-					color:#666666;
-					text-align: justify;
-				}
-				.text-h1{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					text-align: justify;
-				}
-			}
-			.btn{
-				width: 100%;
-				height: 88rpx;
-				float: left;
-				background: $btn-confirm;
-				line-height: 88rpx;
-				font-size: $font-size-28;
-				text-align: center;
-				color: #FFFFFF;
-				border-radius: 0;
-				padding: 0;
-				margin-top: 2rpx;
-			}
-		}
-	}
-	
-</style>

+ 0 - 197
components/cm-module/orderDetails/invoiceTent.vue

@@ -1,197 +0,0 @@
-<template name="invoice">
-	<view class="invoice-template">
-		 <!-- 发票信息 -->
-		 <view class="invoice-content">
-		 	<view class="invoice-title">发票信息</view>
-			<view class="invoice-empty" v-if="isEmpty">
-			 	<text>不要发票</text></text>
-			</view>
-			<view class="invoice-text" v-else>
-				<view class="invoice-top" @click="showInvoice">
-					<view class="name">{{orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : ''}}</view>
-					<text class="iconfont icon-web_xiangxiazhankai" :class="{'icon-web_xiangxiazhankai-active':isOpen}"></text>
-				</view>
-				<view :class="{'invoice-warp--hide':!isOpen}" class="invoice-warp">
-					<view  class="invoice-warp__wrapper invoice-animation" 
-						   :style="{'transform':isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpen?'translateY(0)':'translateY(-50%)'}">
-						<view class="table">
-							<text class="label-name">单位名称:</text>
-							<text>{{orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : ''}}</text>
-						</view>
-						<view class="table long">
-							<text class="label-name">纳锐人识别号:</text>
-							<text>{{orderInvoice.corporationTaxNum ? orderInvoice.corporationTaxNum :''}}</text> 
-						</view>
-						<view class="table">
-							<text class="label-name">注册地址:</text>
-							<text>{{orderInvoice.registeredAddress ? orderInvoice.registeredAddress : ''}}</text> 
-						</view>
-						<view class="table">
-							<text class="label-name">注册电话:</text>
-							<text>{{orderInvoice.registeredPhone ? orderInvoice.registeredPhone : ''}}</text>
-						</view>
-						<view class="table">
-							<text class="label-name">开户银行:</text>
-							<text>{{orderInvoice.openBank ? orderInvoice.openBank : ''}}</text>
-						</view>
-						<view class="table">
-							<text class="label-name">银行账号:</text>
-							<text>{{bankAccountNo ? bankAccountNo : ''}}</text>
-						</view>
-					</view>
-				</view>
-			</view>
-		 </view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:"invoice",
-		props:{
-			orderInvoice:{
-				type:Object
-			}
-		},
-		data() {
-			return{
-				isEmpty:false,
-				title:'发票信息',
-				isOpen:false,
-				bankAccountNo:''
-			}
-		},
-		created(){
-			this.initData(this.orderInvoice)
-		},
-		computed: {
-
-		},
-		methods:{
-			initData(res) {
-				if(res == null || res.type == 0){
-					this.isEmpty = true
-				}else{
-					this.isEmpty = false
-					this.bankAccountNo = this.$reg.bankRegex(res.bankAccountNo)
-				}
-			},
-			onMessage(pros){
-			},
-			showInvoice(){
-				this.isOpen = !this.isOpen
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.invoice-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.invoice-content{
-			width: 702rpx;
-			padding: 20rpx 24rpx;
-		}
-		.invoice-title{
-			font-size: $font-size-28;
-			color: $text-color;
-			text-align: left;
-			line-height: 40rpx;
-			font-weight: bold;
-			margin-bottom: 30rpx;
-		}
-		.invoice-empty{
-			font-size: $font-size-28;
-			color: $text-color;
-			text-align: left;
-			line-height: 40rpx;
-			.txt{
-				font-size: $font-size-24;
-				color: #999999;
-			}
-		}
-		.invoice-animation {
-			/* transition: transform 0.3s ease;*/
-			transition-property: transform;
-			transition-duration: 0.3s;
-			transition-timing-function: ease;
-		}
-		.invoice-text{
-			width: 100%;
-			height: auto;
-			.invoice-top{
-				width: 100%;
-				height: 40rpx;
-				line-height: 40rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: left;
-				.name{
-					width: 400rpx;
-					float: left;
-					-o-text-overflow: ellipsis;
-					text-overflow: ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 1;
-					overflow: hidden;
-				}
-				.icon-web_xiangxiazhankai{
-					transform: rotate(0deg);
-					transform-origin: center center;
-					float: right;
-					font-size: $font-size-32;
-					color: #000000;
-					/* transition: transform 0.3s ease;*/
-					transition-property: transform;
-					transition-duration: 0.3s;
-					transition-timing-function: ease;
-				}
-				.icon-web_xiangxiazhankai-active{
-					transform: rotate(180deg);
-				}
-			}
-			.invoice-warp{
-				width: 100%;
-				padding: 24rpx 0 0 0;
-				overflow: hidden;
-				.table{
-					padding-left: 130rpx;
-					height: auto;
-					line-height: 64rpx;
-					font-size: $font-size-26;
-					color: $text-color;
-					text-align: left;
-					position: relative;
-					.label-name{
-						display: inline-block;
-						line-height: 64rpx;
-						position: absolute;
-						left: 0;
-						top: 0;
-					}
-					&.long{
-						padding-left: 180rpx;
-					}
-				}
-			}	
-			.invoice-warp__wrapper{
-				/* #ifndef APP-NVUE */
-				display: flex;
-				/* #endif */
-				flex-direction: column;
-				padding-top: 20rpx;
-			}
-			.invoice-warp--hide {
-				padding: 0 0;
-				height: 0px;
-				line-height: 0px;
-			}		
-		}
-	}
-</style>

+ 0 - 181
components/cm-module/orderDetails/logisticsRecord.vue

@@ -1,181 +0,0 @@
-<template name="logistics">
-	<view class="logistics-template">
-		<!-- 物流信息 -->
-		<view class="logistics-content" v-if="logisticsData.length > 0" v-for="(item,index) in logisticsData" :key="index">
-			<view class="logistics-top">
-				<text class="name">物流信息</text>
-			</view>
-			<view class="logistics-warp">
-				<view  class="logistics-warp__wrapper">
-					<view class="logistics-main">
-					 	<view class="logistics-main-top">
-					 		<view class="main-top" @click="showlogistics(index)">
-								{{item.expressname}}:{{item.expressNumber}}
-								<text class="clipboard" @click="clipboard(item.expressNumber)">复制</text>
-								<text class="arrow-showMore iconfont icon-web_xiangxiazhankai" :style="{'transform':item.isOpen?'rotate(180deg)':'rotate(0)'}"></text>
-							</view>
-					 		<view class="main-bot">
-								发货时间:{{item.expressNewtime}}
-							</view>
-					 	</view>
-						<view v-if="item.expressRecord.length > 0" v-for="(infoItem,infoIndex) in item.expressRecord" :key="infoIndex" :class="{'logistics-warp--hide':!item.isOpen}" class="logistics-main-bot logistics-animation" :style="{'transform':item.isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':item.isOpen?'translateY(0)':'translateY(-50%)'}" >
-							{{infoItem.time}}  {{infoItem.desc}}
-						</view>
-						<view v-if="item.expressRecord" :class="{'logistics-warp--hide':!item.isOpen}" class="logistics-main-bot logistics-animation" :style="{'transform':item.isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':item.isOpen?'translateY(0)':'translateY(-50%)'}">
-							暂无物流信息
-						</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="logistics-content" v-else>
-			暂无物流信息
-		 </view>
-	</view>
-</template>
-
-<script>
-	const thorui = require("@/components/clipboard/clipboard.thorui.js")
-	export default{
-		name:"logistics",
-		data() {
-			return{
-				title:'发票信息',
-				logisticsData:''
-			}
-		},
-		created(){
-			
-		},
-		computed: {
-
-		},
-		methods:{
-			initData(res) {
-				this.logisticsData = res;
-			},
-			showlogistics(index){
-				let isOpen = this.logisticsData[index]['isOpen'];
-				this.logisticsData[index]['isOpen'] = !isOpen;
-			},
-			clipboard(data) {
-				thorui.getClipboardData(data, (res) => {
-					if (res) {
-						this.$util.msg("复制成功",2000,true,'success');
-					} else {
-						this.$util.msg("复制失败",2000,true,'none');
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.logistics-template{
-		width: 100%;
-		height: 100%;
-		background: #FFFFFF;
-		float: left;
-		.logistics-content{
-			width: 702rpx;
-			padding: 20rpx 24rpx;
-			height: auto;
-			.arrow-showMore {
-				position: absolute;
-				right: 24rpx;
-				z-index: 99;
-			}
-			.logistics-top{
-				width: 100%;
-				height: 40rpx;
-				line-height: 40rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: left;
-				padding-bottom: 24rpx;
-				border-bottom: 1px solid #F8F8F8;
-				.name{
-					float: left;
-					font-weight: bold;
-				}
-				.icon-web_xiangxiazhankai{
-					transform: rotate(0deg);
-					transform-origin: center center;
-					float: right;
-					font-size: $font-size-32;
-					color: #000000;
-					/* transition: transform 0.3s ease;*/
-					transition-property: transform;
-					transition-duration: 0.3s;
-					transition-timing-function: ease;
-				}
-				.icon-web_xiangxiazhankai-active{
-					transform: rotate(180deg);
-				}
-			}
-			.logistics-warp{
-				width: 100%;
-				overflow: hidden;
-				.table{
-					height: 76rpx;
-					line-height: 76rpx;
-					font-size: $font-size-26;
-					color: $text-color;
-					text-align: left;
-				}
-			}	
-			.logistics-main-top{
-				width: 100%;
-				height: auto;
-				float: left;
-				padding-top: 24rpx;
-				margin-bottom: 14rpx;
-				.main-top,.main-bot{
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 40rpx;
-					margin: 4rpx 0;
-				}
-			}
-			.logistics-main-bot{
-				width: 100%;
-				height: auto;
-				font-size: $font-size-24;
-				color: $text-color;
-				line-height: 56rpx;
-				text-align: justify;
-			}
-			.logistics-animation {
-				/* transition: transform 0.3s ease;*/
-				transition-property: transform;
-				transition-duration: 0.3s;
-				transition-timing-function: ease;
-			}
-			.logistics-warp__wrapper{
-				/* #ifndef APP-NVUE */
-				display: flex;
-				/* #endif */
-				flex-direction: column;
-			}
-			.logistics-warp--hide {
-				// padding: 0 0;
-				// height: 0px;
-				// line-height: 0px;
-				display: none;
-			}	
-			.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: 6rpx;
-				line-height: 36rpx;
-				display: inline-block;
-				margin-left: 42rpx;
-			}
-		}
-	}
-</style>

+ 0 - 329
components/cm-module/orderDetails/orderInformation.vue

@@ -1,329 +0,0 @@
-<template name="information">
-	<view class="information-template">
-		<!-- 订单信息 -->
-		<view class="information-content">
-			<view class="information-view title">
-				<view class="view-num">
-					<view class="bage-text">
-						订单编号:<label class="label">{{ orderData.orderNo ? orderData.orderNo : '' }}</label>
-					</view>
-				</view>
-			</view>
-			<view class="information-view same">
-				<view class="view-num">
-					订单总额:<label class="label">¥{{ orderData.payTotalFee | NumFormat }}</label>
-				</view>
-			</view>
-			<view class="information-view">
-				<view class="view-num bold">
-					订单标识:<label class="label">{{ orderData.orderMark ? orderData.orderMark : '' }}</label>
-					<text class="clipboard" @click="clipboard(orderData.orderMark)">复制</text>
-				</view>
-			</view>
-			<view class="information-view same">
-				<view class="view-num">
-					待付金额:<text class="red">¥{{ orderData.pendingPayments | NumFormat }}</text>
-				</view>
-				<view class="view-man"></view>
-			</view>
-			<template v-if="openShowflag">
-				<view class="information-view">
-					<view class="view-num time">
-						下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</label>
-					</view>
-					<!-- <view class="view-type">{{ orderData.status | TextFormat }}</view> -->
-				</view>
-				<view class="information-view same">
-					<view class="view-num">
-						余额抵扣:<label class="label">¥{{ orderData.balancePayFee | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view ">
-					<view class="view-num" v-if="orderData.postageFlag == 0">
-						运费:<label class="label">包邮</label>
-					</view>
-					<view class="view-num" v-if="orderData.postageFlag == -1">
-						运费:<label class="label">到付</label>
-					</view>
-					<view class="view-num" v-if="orderData.postageFlag == 1">
-						运费:<label class="label">¥{{ orderData.postage | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view same" v-if="orderData.svipFullReduction > 0">
-					<view class="view-man">
-						超级会员优惠:<label class="label">¥{{ orderData.svipFullReduction | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view" v-if="orderData.userBeans > 0">
-					<view class="view-man">
-						采美豆抵用运费:<label class="label">{{ orderData.userBeans }}</label>
-					</view>
-				</view>
-				<view class="information-view same" v-if="orderData.discountFee && orderData.discountFee > 0">
-					<view class="view-num">
-						经理折扣:<label class="label">¥{{ orderData.discountFee | NumFormat }}</label>
-					</view>
-				</view>
-				<view
-					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 same">
-					<view class="view-man">
-						优惠券:<label class="label">¥{{ orderData.couponAmount | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view">
-					<view class="view-man">
-						赠品总数:<label class="label">{{
-							orderData.presentCount + orderData.promotionalGiftsCount
-						}}</label>
-					</view>
-				</view>
-				<view class="information-view same">
-					<view class="view-man">
-						应付总额:<label class="red">¥{{ orderData.payableAmount | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view">
-					<view class="view-num">
-						已支付:<label class="red">¥{{ orderData.receiptAmount | NumFormat }}</label>
-					</view>
-					<view class="view-man"></view>
-				</view>
-			</template>
-		</view>
-		<view class="openinfo" v-if="infoflag">
-			<view class="btnInfo" @click="openShow">
-				查看更多
-				<text class="iconfont icon-xiangxiajiantou"></text>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-const thorui = require('@/components/clipboard/clipboard.thorui.js')
-export default {
-	name: 'information',
-	props: {
-		information: {
-			type: Object
-		}
-	},
-	data() {
-		return {
-			orderData: '',
-			openShowflag: false,
-			infoflag: true
-		}
-	},
-	created() {
-		this.initData(this.information)
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			if (!value) return '0.00'
-			let number = Number(value)
-			return number.toFixed(2)
-		},
-		TextFormat(status) {
-			//处理金额
-			let HtmlText,
-				typeTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-
-			Object.keys(typeTextObject).forEach(key => {
-				if (key == status) {
-					HtmlText = typeTextObject[key]
-				}
-			})
-			return HtmlText
-		}
-	},
-	computed: {},
-	watch: {
-		information: {
-			handler: function(val) {
-				this.initData(val)
-			},
-			deep: true //对象内部的属性监听,也叫深度监听
-		}
-	},
-	methods: {
-		openShow() {
-			this.openShowflag = true
-			this.infoflag = false
-		},
-		initData(res) {
-			this.orderData = res
-		},
-		clipboard(data) {
-			thorui.getClipboardData(data, res => {
-				if (res) {
-					this.$util.msg('复制成功', 2000, true, 'success')
-				} else {
-					this.$util.msg('复制失败', 2000, true, 'none')
-				}
-			})
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-.information-template {
-	width: 100%;
-	height: auto;
-	background: #ffffff;
-	float: left;
-	margin-top: 24rpx;
-	.information-content {
-		width: 702rpx;
-		padding: 15rpx 24rpx 20rpx 24rpx;
-		.information-view {
-			height: 50rpx;
-			line-height: 50rpx;
-			font-size: $font-size-24;
-			margin: 4rpx 0;
-			// display: flex;
-			width: 55%;
-			display: inline-block;
-			&.same {
-				width: 45%;
-				text-align: right;
-			}
-			// &.title{
-			// 	height: 68rpx;
-			// 	line-height: 68rpx;
-			// 	margin-bottom: 5rpx;
-			// }
-			view {
-				// flex: 1;
-				color: $text-color;
-				color: #999999;
-				.label {
-					color: #666666;
-				}
-			}
-			.view-num.title {
-				height: 68rpx;
-				line-height: 68rpx;
-				position: relative;
-				.bage-icon {
-					width: 50rpx;
-					height: 50rpx;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 9rpx;
-				}
-				.bage-buss {
-					display: inline-block;
-					width: 72rpx;
-					height: 30rpx;
-					background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
-					border-radius: 4rpx;
-					line-height: 30rpx;
-					font-size: $font-size-24;
-					text-align: center;
-					color: #ffffff;
-					margin-top: 10rpx;
-				}
-				.bage-auto {
-					display: inline-block;
-					width: 72rpx;
-					height: 30rpx;
-					background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
-					border-radius: 4rpx;
-					line-height: 30rpx;
-					font-size: $font-size-24;
-					text-align: center;
-					color: #ffffff;
-					margin-top: 10rpx;
-				}
-				.bage-text {
-					display: inline-block;
-					font-size: $font-size-28;
-					line-height: 68rpx;
-					text-align: left;
-					color: $color-system;
-					// margin-left: 10rpx;
-				}
-			}
-			.view-num.ord {
-				color: $color-system;
-				text-align: left;
-				flex: 3;
-				font-weight: bold;
-			}
-			.view-num.time {
-				color: #999999;
-				flex: 6;
-			}
-			// .bold{
-			// 	font-weight: bold;
-			// }
-			.red {
-				color: #ff2a2a;
-			}
-			.view-type {
-				float: right;
-				text-align: right;
-				color: #ff2a2a;
-				flex: 4;
-			}
-			.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: 6rpx;
-				line-height: 36rpx;
-				display: inline-block;
-				margin-left: 42rpx;
-			}
-		}
-	}
-}
-.openinfo {
-	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: 8rpx;
-		text-align: center;
-		color: #b2b2b2;
-		margin: 0 auto;
-		font-size: $font-size-24;
-	}
-}
-</style>

+ 1 - 0
components/cm-module/productDetails/cm-unit-popup.vue

@@ -88,6 +88,7 @@
 									v-model="productCount"
 									maxlength="4"
 									@blur="changeNumber($event)"
+									cursor-spacing="40"
 								/>
 								<view
 									class="iconfont icon-jiahao"

+ 13 - 1
components/cm-module/scrollTop/scrollTop.vue

@@ -2,6 +2,7 @@
 	<!-- 商品详情价格判断 -->
 	<view>
 		<view class="scrollTop" :style="{bottom:bottom+'rpx'}">
+            <view class="supplierLogo" v-if="isShowSupplier" @click="$api.navigateTo('/pages/login/supplier_login')"></view>
 			<view class="icon msg">
 				<!-- #ifdef MP-WEIXIN -->
 				<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
@@ -27,7 +28,11 @@
 			isScrollTop:{
 				type:Boolean,
 				default:false
-			}
+			},
+            isShowSupplier: { // 是否展示供应商服务图标
+                type: Boolean,
+                default: false
+            }
 		},
 		data() {
 			return{
@@ -61,6 +66,13 @@
 		position: fixed;
 		right: 20rpx;
 		z-index: 99;
+        .supplierLogo {
+            width: 80rpx;
+            height: 80rpx;
+            background: url(https://static.caimei365.com/app/img/icon/supplier_logo.png) no-repeat;
+            background-size: contain;
+            transform: scale(1.5);
+        }
 		.icon{
 			width: 80rpx;
 			height: 80rpx;

+ 352 - 379
components/thorui/tui-modal/tui-modal.vue

@@ -1,289 +1,262 @@
 <template>
-    <view @touchmove.stop.prevent>
-        <view
-            class="tui-modal-box"
-            :style="{ width: width, padding: padding, borderRadius: radius }"
-            :class="[fadeIn || show ? 'tui-modal-normal' : 'tui-modal-scale', show ? 'tui-modal-show' : '']"
-        >
-            <view v-if="!custom">
-                <view class="tui-modal-title" v-if="title">{{ title }}</view>
-                <view
-                    class="tui-modal-content"
-                    :class="[title ? '' : 'tui-mtop']"
-                    :style="{ color: color, fontSize: size + 'rpx' }"
-                >
-                    {{ content }}
-                </view>
-                <view class="tui-modalBtn-box" :class="[button.length != 2 ? 'tui-flex-column' : '']">
-                    <block v-for="(item, index) in button" :key="index">
+	<view @touchmove.stop.prevent>
+		<view class="tui-modal-box" :style="{width:width,padding:padding,borderRadius:radius}" :class="[(fadeIn || show)?'tui-modal-normal':'tui-modal-scale',show?'tui-modal-show':'']">
+			<view v-if="!custom">
+				<view class="tui-modal-title" v-if="title">{{title}}</view>
+				<view class="tui-modal-content" :class="[title?'':'tui-mtop']" :style="{color:color,fontSize:size+'rpx'}">{{content}}</view>
+				<view class="tui-modalBtn-box" :class="[button.length!=2?'tui-flex-column':'']">
+					<block v-for="(item,index) in button" :key="index">
                         <!-- :style="{background: item.customStyle.bgColor ? item.customStyle.bgColor : '',color: item.customStyle.color ? item.customStyle.color : ''}" -->
-                        <button
-                            class="tui-modal-btn"
-                            :class="[
-                                !item.customStyle && 'tui-' + (item.type || 'primary') + (item.plain ? '-outline' : ''),
-                                button.length != 2 ? 'tui-btn-width' : '',
-                                button.length > 2 ? 'tui-mbtm' : '',
-                                shape == 'circle' ? 'tui-circle-btn' : ''
-                            ]"
-                            :style="{
-                                background: item.customStyle.bgColor ? item.customStyle.bgColor : '',
-                                color: item.customStyle.color ? item.customStyle.color : '',
-                                fontSize: item.customStyle.fontSize ? item.customStyle.fontSize : ''
-                            }"
-                            :hover-class="
-                                !item.customStyle &&
-                                    'tui-' + (item.plain ? 'outline' : item.type || 'primary') + '-hover'
-                            "
-                            :data-index="index"
-                            @tap="handleClick"
-                        >
-                            {{ item.text || '确定' }}
-                        </button>
-                    </block>
-                </view>
-            </view>
-            <view v-else><slot></slot></view>
-        </view>
-        <view class="tui-modal-mask" :class="[show ? 'tui-mask-show' : '']" @tap="handleClickCancel"></view>
-    </view>
+						<button class="tui-modal-btn" :class="[(!item.customStyle && ('tui-'+(item.type || 'primary')+(item.plain?'-outline':''))),button.length!=2?'tui-btn-width':'',button.length>2?'tui-mbtm':'',shape=='circle'?'tui-circle-btn':'']"
+                         :style="{background: item.customStyle.bgColor ? item.customStyle.bgColor : '',color: item.customStyle.color ? item.customStyle.color : '',fontSize: item.customStyle.fontSize ? item.customStyle.fontSize : ''}"
+						 :hover-class="!item.customStyle && ('tui-'+(item.plain?'outline':(item.type || 'primary'))+'-hover')"  :data-index="index" @tap="handleClick">{{item.text || "确定"}}</button>
+					</block>
+				</view>
+			</view>
+			<view v-else>
+				<slot></slot>
+			</view>
+		</view>
+		<view class="tui-modal-mask" :class="[show?'tui-mask-show':'']" @tap="handleClickCancel"></view>
+
+	</view>
 </template>
 
 <script>
-export default {
-    name: 'tuiModal',
-    props: {
-        //是否显示
-        show: {
-            type: Boolean,
-            default: false
-        },
-        width: {
-            type: String,
-            default: '84%'
-        },
-        padding: {
-            type: String,
-            default: '40rpx 64rpx'
-        },
-        radius: {
-            type: String,
-            default: '24rpx'
-        },
-        //标题
-        title: {
-            type: String,
-            default: ''
-        },
-        //内容
-        content: {
-            type: String,
-            default: ''
-        },
-        //内容字体颜色
-        color: {
-            type: String,
-            default: '#999'
-        },
-        //内容字体大小 rpx
-        size: {
-            type: Number,
-            default: 28
-        },
-        //形状 circle, square
-        shape: {
-            type: String,
-            default: 'square'
-        },
-        button: {
-            type: Array,
-            default: function() {
-                return [
-                    {
-                        text: '取消',
-                        type: 'danger',
-                        plain: true //是否空心
-                    },
-                    {
-                        text: '确定',
-                        type: 'danger',
-                        plain: false
-                    }
-                ]
-            }
-        },
-        //点击遮罩 是否可关闭
-        maskClosable: {
-            type: Boolean,
-            default: true
-        },
-        //淡入效果,自定义弹框插入input输入框时传true
-        fadeIn: {
-            type: Boolean,
-            default: false
-        },
-        //自定义弹窗内容
-        custom: {
-            type: Boolean,
-            default: false
-        }
-    },
-    data() {
-        return {}
-    },
-    methods: {
-        handleClick(e) {
-            if (!this.show) return
-            const dataset = e.currentTarget.dataset
-            this.$emit('click', {
-                index: Number(dataset.index)
-            })
-        },
-        handleClickCancel() {
-            if (!this.maskClosable) return
-            this.$emit('cancel')
-        }
-    }
-}
+	export default {
+		name: 'tuiModal',
+		props: {
+			//是否显示
+			show: {
+				type: Boolean,
+				default: false
+			},
+			width: {
+				type: String,
+				default: '84%'
+			},
+			padding: {
+				type: String,
+				default: '40rpx 64rpx'
+			},
+			radius: {
+				type: String,
+				default: '24rpx'
+			},
+			//标题
+			title: {
+				type: String,
+				default: ''
+			},
+			//内容
+			content: {
+				type: String,
+				default: ''
+			},
+			//内容字体颜色
+			color: {
+				type: String,
+				default: '#999'
+			},
+			//内容字体大小 rpx
+			size: {
+				type: Number,
+				default: 28
+			},
+			//形状 circle, square
+			shape: {
+				type: String,
+				default: 'square'
+			},
+			button: {
+				type: Array,
+				default: function() {
+					return [{
+						text: '取消',
+						type: 'danger',
+						plain: true //是否空心
+					}, {
+						text: '确定',
+						type: 'danger',
+						plain: false
+					}]
+				}
+			},
+			//点击遮罩 是否可关闭
+			maskClosable: {
+				type: Boolean,
+				default: true
+			},
+			//淡入效果,自定义弹框插入input输入框时传true
+			fadeIn: {
+				type: Boolean,
+				default: false
+			},
+			//自定义弹窗内容
+			custom: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+			handleClick(e) {
+				if (!this.show) return
+				const dataset = e.currentTarget.dataset
+				this.$emit('click', {
+					index: Number(dataset.index)
+				})
+			},
+			handleClickCancel() {
+				if (!this.maskClosable) return
+				this.$emit('cancel')
+			}
+		}
+	}
 </script>
 
 <style scoped>
-.tui-modal-box {
-    position: fixed;
-    left: 50%;
-    top: 50%;
-    margin: auto;
-    background-color: #fff;
-    z-index: 9999998;
-    transition: all 0.3s ease-in-out;
-    opacity: 0;
-    box-sizing: border-box;
-    visibility: hidden;
-}
-
-.tui-modal-scale {
-    transform: translate(-50%, -50%) scale(0);
-}
-
-.tui-modal-normal {
-    transform: translate(-50%, -50%) scale(1);
-}
-
-.tui-modal-show {
-    opacity: 1;
-    visibility: visible;
-}
-
-.tui-modal-mask {
-    position: fixed;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    background-color: rgba(0, 0, 0, 0.6);
-    z-index: 9999996;
-    transition: all 0.3s ease-in-out;
-    opacity: 0;
-    visibility: hidden;
-}
-
-.tui-mask-show {
-    visibility: visible;
-    opacity: 1;
-}
-
-.tui-modal-title {
-    text-align: center;
-    font-size: 34rpx;
-    color: #333;
-    padding-top: 20rpx;
-    font-weight: bold;
-}
-
-.tui-modal-content {
-    text-align: center;
-    color: #999;
-    font-size: 28rpx;
-    padding-top: 20rpx;
-    padding-bottom: 60rpx;
-}
-
-.tui-mtop {
-    margin-top: 30rpx;
-}
-
-.tui-mbtm {
-    margin-bottom: 30rpx;
-}
-
-.tui-modalBtn-box {
-    width: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-}
-
-.tui-flex-column {
-    flex-direction: column;
-}
-
-.tui-modal-btn {
-    width: 46%;
-    height: 68rpx;
-    line-height: 68rpx;
-    position: relative;
-    border-radius: 10rpx;
-    font-size: 26rpx;
-    overflow: visible;
-    margin-left: 0;
-    margin-right: 0;
-}
-
-.tui-modal-btn::after {
-    content: ' ';
-    position: absolute;
-    width: 200%;
-    height: 200%;
-    -webkit-transform-origin: 0 0;
-    transform-origin: 0 0;
-    -webkit-transform: scale(0.5, 0.5);
-    transform: scale(0.5, 0.5);
-    left: 0;
-    top: 0;
-    border-radius: 20rpx;
-}
-
-.tui-btn-width {
-    width: 80% !important;
-}
-
-.tui-primary {
-    background: #5677fc;
-    color: #fff;
-}
-
-.tui-primary-hover {
-    background: #4a67d6;
-    color: #e5e5e5;
-}
-
-.tui-primary-outline {
-    color: #5677fc;
-    background: transparent;
-}
-
-.tui-primary-outline::after {
-    border: 1px solid #5677fc;
-}
+	.tui-modal-box {
+		position: fixed;
+		left: 50%;
+		top: 50%;
+		margin: auto;
+		background-color: #fff;
+		z-index: 9999998;
+		transition: all 0.3s ease-in-out;
+		opacity: 0;
+		box-sizing: border-box;
+		visibility: hidden;
+	}
+
+	.tui-modal-scale {
+		transform: translate(-50%, -50%) scale(0);
+	}
+
+	.tui-modal-normal {
+		transform: translate(-50%, -50%) scale(1);
+	}
+
+	.tui-modal-show {
+		opacity: 1;
+		visibility: visible;
+	}
+
+	.tui-modal-mask {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background-color: rgba(0, 0, 0, 0.6);
+		z-index: 9999996;
+		transition: all 0.3s ease-in-out;
+		opacity: 0;
+		visibility: hidden;
+	}
+
+	.tui-mask-show {
+		visibility: visible;
+		opacity: 1;
+	}
+
+	.tui-modal-title {
+		text-align: center;
+		font-size: 34rpx;
+		color: #333;
+		padding-top: 20rpx;
+		font-weight: bold;
+	}
+
+	.tui-modal-content {
+		text-align: center;
+		color: #999;
+		font-size: 28rpx;
+		padding-top: 20rpx;
+		padding-bottom: 60rpx;
+	}
+
+	.tui-mtop {
+		margin-top: 30rpx;
+	}
+
+	.tui-mbtm {
+		margin-bottom: 30rpx;
+	}
+
+	.tui-modalBtn-box {
+		width: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: space-between
+	}
+
+	.tui-flex-column {
+		flex-direction: column;
+	}
+
+	.tui-modal-btn {
+		width: 46%;
+		height: 68rpx;
+		line-height: 68rpx;
+		position: relative;
+		border-radius: 10rpx;
+		font-size: 26rpx;
+		overflow: visible;
+		margin-left: 0;
+		margin-right: 0;
+	}
+
+	.tui-modal-btn::after {
+		content: " ";
+		position: absolute;
+		width: 200%;
+		height: 200%;
+		-webkit-transform-origin: 0 0;
+		transform-origin: 0 0;
+		-webkit-transform: scale(0.5, 0.5);
+		transform: scale(0.5, 0.5);
+		left: 0;
+		top: 0;
+		border-radius: 20rpx;
+	}
+
+	.tui-btn-width {
+		width: 80% !important;
+	}
+
+	.tui-primary {
+		background: #5677fc;
+		color: #fff;
+	}
+
+	.tui-primary-hover {
+		background: #4a67d6;
+		color: #e5e5e5;
+	}
+
+	.tui-primary-outline {
+		color: #5677fc;
+		background: transparent;
+	}
+
+	.tui-primary-outline::after {
+		border: 1px solid #5677fc;
+	}
 
 	.tui-danger {
 		background: #FF5B00;
 		color: #fff;
 	}
 
-.tui-danger-hover {
-    background: #d53912;
-    color: #e5e5e5;
-}
+	.tui-danger-hover {
+		background: #d53912;
+		color: #e5e5e5;
+	}
 
 	.tui-danger-outline {
 		color: #FF5B00;
@@ -294,110 +267,110 @@ export default {
 		border: 1px solid #FF5B00;
 	}
 
-.tui-red {
-    background: #e41f19;
-    color: #fff;
-}
-
-.tui-red-hover {
-    background: #c51a15;
-    color: #e5e5e5;
-}
-
-.tui-red-outline {
-    color: #e41f19;
-    background: transparent;
-}
-
-.tui-red-outline::after {
-    border: 1px solid #e41f19;
-}
-
-.tui-warning {
-    background: #ff7900;
-    color: #fff;
-}
-
-.tui-warning-hover {
-    background: #e56d00;
-    color: #e5e5e5;
-}
-
-.tui-warning-outline {
-    color: #ff7900;
-    background: transparent;
-}
-
-.tui-warning-outline::after {
-    border: 1px solid #ff7900;
-}
-
-.tui-green {
-    background: #19be6b;
-    color: #fff;
-}
-
-.tui-green-hover {
-    background: #16ab60;
-    color: #e5e5e5;
-}
-
-.tui-green-outline {
-    color: #19be6b;
-    background: transparent;
-}
-
-.tui-green-outline::after {
-    border: 1px solid #19be6b;
-}
-
-.tui-white {
-    background: #fff;
-    color: #333;
-}
-
-.tui-white-hover {
-    background: #f7f7f9;
-    color: #666;
-}
-
-.tui-white-outline {
-    color: #333;
-    background: transparent;
-}
-
-.tui-white-outline::after {
-    border: 1px solid #333;
-}
-
-.tui-gray {
-    background: #ededed;
-    color: #999;
-}
-
-.tui-gray-hover {
-    background: #d5d5d5;
-    color: #898989;
-}
-
-.tui-gray-outline {
-    color: #999;
-    background: transparent;
-}
-
-.tui-gray-outline::after {
-    border: 1px solid #999;
-}
-
-.tui-outline-hover {
-    opacity: 0.6;
-}
-
-.tui-circle-btn {
-    border-radius: 40rpx !important;
-}
-
-.tui-circle-btn::after {
-    border-radius: 80rpx !important;
-}
-</style>
+	.tui-red {
+		background: #e41f19;
+		color: #fff;
+	}
+
+	.tui-red-hover {
+		background: #c51a15;
+		color: #e5e5e5;
+	}
+
+	.tui-red-outline {
+		color: #e41f19;
+		background: transparent;
+	}
+
+	.tui-red-outline::after {
+		border: 1px solid #e41f19;
+	}
+
+	.tui-warning {
+		background: #ff7900;
+		color: #fff;
+	}
+
+	.tui-warning-hover {
+		background: #e56d00;
+		color: #e5e5e5;
+	}
+
+	.tui-warning-outline {
+		color: #ff7900;
+		background: transparent;
+	}
+
+	.tui-warning-outline::after {
+		border: 1px solid #ff7900;
+	}
+
+	.tui-green {
+		background: #19be6b;
+		color: #fff;
+	}
+
+	.tui-green-hover {
+		background: #16ab60;
+		color: #e5e5e5;
+	}
+
+	.tui-green-outline {
+		color: #19be6b;
+		background: transparent;
+	}
+
+	.tui-green-outline::after {
+		border: 1px solid #19be6b;
+	}
+
+	.tui-white {
+		background: #fff;
+		color: #333;
+	}
+
+	.tui-white-hover {
+		background: #f7f7f9;
+		color: #666;
+	}
+
+	.tui-white-outline {
+		color: #333;
+		background: transparent;
+	}
+
+	.tui-white-outline::after {
+		border: 1px solid #333;
+	}
+
+	.tui-gray {
+		background: #ededed;
+		color: #999;
+	}
+
+	.tui-gray-hover {
+		background: #d5d5d5;
+		color: #898989;
+	}
+
+	.tui-gray-outline {
+		color: #999;
+		background: transparent;
+	}
+
+	.tui-gray-outline::after {
+		border: 1px solid #999;
+	}
+
+	.tui-outline-hover {
+		opacity: 0.6;
+	}
+
+	.tui-circle-btn {
+		border-radius: 40rpx !important;
+	}
+
+	.tui-circle-btn::after {
+		border-radius: 80rpx !important;
+	}
+</style>

+ 3 - 2
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "caimei-applets-caimei",
-    "appid" : "__UNI__1EA8401",
+    "appid" : "__UNI__EACD146",
     "description" : "采美采购商城",
     "versionName" : "1.1.4",
     "versionCode" : "100",
@@ -71,7 +71,8 @@
         "navigateToMiniProgramAppIdList" : [ "wx5a5cda32926f55ac" ],
         "uniStatistics" : {
             "enable" : true
-        }
+        },
+        "lazyCodeLoading" : "requiredComponents"
     },
     "mp-alipay" : {
         "usingComponents" : true

+ 2 - 2
mixins/appMixins.js

@@ -3,7 +3,7 @@ import { mapState,mapMutations} from 'vuex'
 import authorize from '@/common/config/authorize.js'
 const appMixins = {
     computed: {
-        ...mapState(['hasLogin','isWxAuthorize'])
+        ...mapState(['hasLogin','isWxAuthorize','couponEntry'])
     },
     methods: {
         ...mapMutations(['login','logout','updateNoticeNum','updateRossShow']),
@@ -27,7 +27,7 @@ const appMixins = {
                     this.$store.commit('updateStatus',error.data)
                     this.updateRossShow()
                     uni.setStorageSync('unionId',error.data.unionId)
-                    if(!this.hasLogin){
+                    if(!this.hasLogin && this.couponEntry === 1){
                         if(uni.getStorageSync('isActivitySwitch')){
                             const  lockTime = uni.getStorageSync('lockTime')
                             const  eTime = this.diffTime(lockTime)

+ 1 - 0
mixins/payMixins.js

@@ -40,6 +40,7 @@ const payMixins = {
 			       // 微信支付成功回调
 			       let linkData =  {
                         payAmount:this.payAmount,
+                        shopOrderId:this.shopOrderInfo.shopOrderId,
                         orderId:this.shopOrderInfo.orderId,
                         type:'success'
                     }

+ 75 - 21
pages.json

@@ -263,7 +263,18 @@
 					"style": {
 						"navigationBarTitleText": "修改密码"
 					}
-				}
+				},
+                {
+                    "path": "supplier_login",
+                    "style": {
+                        "navigationBarTitleText": "美业参谋"
+                    }
+                }, {
+                    "path": "supplier_information",
+                    "style": {
+                        "navigationBarTitleText": "美业参谋"
+                    }
+                }
 			]
 		},
 		{
@@ -281,7 +292,7 @@
 					"style": {
 						"navigationBarTitleText": "采美豆明细",
 						"enablePullDownRefresh": true,
-						"navigationStyle": "custom"
+						"navigationStyle": "custom" 
 					}
 				},
 				{
@@ -335,13 +346,6 @@
 						"navigationStyle": "custom"
 					}
 				},
-				{
-					"path": "order/order-payment",
-					"style": {
-						"navigationBarTitleText": "选择支付方式",
-						"navigationStyle": "custom"
-					}
-				},
 				{
 					"path": "order/order-payunder",
 					"style": {
@@ -361,13 +365,6 @@
 						"navigationStyle": "custom"
 					}
 				},
-				{
-					"path": "order/order-payhlb",
-					"style": {
-						"navigationBarTitleText": "收银台",
-						"navigationStyle": "custom"
-					}
-				},
 				{
 					"path": "order/orderShareLogin",
 					"style": {
@@ -387,6 +384,12 @@
 						"navigationStyle": "custom"
 					}
 				},
+				{
+					"path": "order/search-order",
+					"style": {
+						"navigationBarTitleText": "订单搜索"
+					}
+				},
 				{
 					"path": "order/order-details",
 					"style": {
@@ -400,6 +403,12 @@
 						"navigationBarTitleText": "订单详情"
 					}
 				},
+				{
+					"path": "order/order-addpay",
+					"style": {
+						"navigationBarTitleText": "上传支付凭证"
+					}
+				},
 				{
 					"path": "order/order-logistics",
 					"style": {
@@ -510,6 +519,49 @@
 						"navigationBarTitleText": "专享价商品",
 						"enablePullDownRefresh": true
 					}
+				},
+				{
+					"path": "pay/card-list",
+					"style": {
+						"navigationBarTitleText": "银行卡"
+					}
+				},
+				{
+					"path": "pay/card-sus-list",
+					"style": {
+						"navigationBarTitleText": "支持银行"
+					}
+				},
+				{
+					"path": "pay/card-add",
+					"style": {
+						"navigationBarTitleText": "添加银行卡"
+					}
+				},
+				{
+					"path": "pay/card-comfirm",
+					"style": {
+						"navigationBarTitleText": "确认信息"
+					}
+				},
+				{
+					"path": "pay/card-comfirm-sub",
+					"style": {
+						"navigationBarTitleText": "输入短信验证码"
+					}
+				},
+				{
+					"path": "pay/card-order",
+					"style": {
+						"navigationBarTitleText": "收银台",
+						"navigationStyle": "custom"
+					}
+				},
+				{
+					"path": "pay/card-under",
+					"style": {
+						"navigationBarTitleText": "线下转账"
+					}
 				}
 				
 			]
@@ -882,6 +934,13 @@
 						"enablePullDownRefresh": true
 					}
 				},
+                {
+                	"path": "activity/quick-operation",
+                	"style": {
+                		"navigationBarTitleText": "",
+                		"enablePullDownRefresh": true
+                	}
+                },
 				{
 					"path": "activity/activity-detail",
 					"style": {
@@ -972,11 +1031,6 @@
 				"style": {
 					"navigationBarTitleText": "搜索仪器"
 				}
-			}, {
-				"path": "search-order",
-				"style": {
-					"navigationBarTitleText": "订单搜索"
-				}
 			}, {
 				"path": "search-second",
 				"style": {

+ 2 - 1
pages/goods/components/cm-unit-popup.vue

@@ -43,6 +43,7 @@
 										v-model="productCount"
 										maxlength="4"
 										@blur="changeNumber($event)"
+										cursor-spacing="40"
 									/>
 									<view
 										class="iconfont icon-jiahao"
@@ -218,7 +219,7 @@ export default {
 		},
 		totalLadderPrice() {
 			//单独处理活动价格和阶梯价格
-			if (this.ladderPriceList.length > 0) {
+			if (this.ladderPriceList) {
 				this.ladderPriceList.forEach((ladder, index) => {
 					if (this.productCount >= ladder.buyNum) {
 						this.$parent.skuProduct.price = ladder.buyPrice

+ 4 - 4
pages/goods/components/cm-unit-price.vue

@@ -108,7 +108,7 @@
 							{{ skuProduct.promotions.name
 							}}<text v-if="hasLogin"
 								>:¥{{
-									skuProduct.promotions == null ? '0.00' : skuProduct.promotions.touchPrice | NumFormat
+									skuProduct.promotions == null ? '0.00' : skuProduct.price | NumFormat
 								}}</text
 							>
 						</view>
@@ -130,7 +130,7 @@
 							{{ skuProduct.promotions.name
 							}}<text v-if="hasLogin && skuProduct.priceFlag != 1"
 								>:¥{{
-									skuProduct.promotions == null ? '0.00' : skuProduct.promotions.touchPrice | NumFormat
+									skuProduct.promotions == null ? '0.00' : skuProduct.price | NumFormat
 								}}</text
 							>
 						</view>
@@ -153,7 +153,7 @@
 							{{ skuProduct.promotions.name
 							}}<text v-if="hasLogin && skuProduct.priceFlag != 1"
 								>:¥{{
-									skuProduct.promotions == null ? '0.00' : skuProduct.promotions.touchPrice | NumFormat
+									skuProduct.promotions == null ? '0.00' : skuProduct.price | NumFormat
 								}}</text
 							>
 						</view>
@@ -178,7 +178,7 @@
 							{{ skuProduct.promotions.name
 							}}<text v-if="hasLogin && skuProduct.priceFlag != 1"
 								>:¥{{
-									skuProduct.promotions == null ? '0.00' : skuProduct.promotions.touchPrice | NumFormat
+									skuProduct.promotions == null ? '0.00' : skuProduct.price | NumFormat
 								}}</text
 							>
 						</view>

+ 161 - 151
pages/goods/good-floor.vue

@@ -1,174 +1,184 @@
 <template>
-	<view class="container floor clearfix" :style="{paddingTop:CustomBar+'px'}">
-		<custom-floor   :systeminfo='systeminfo' 
-						:navbar-data='nvabarData' 
-						:headerBtnPosi ="headerBtnPosi">
-		</custom-floor>
-		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view class="container-home tui-skeleton">
-			<!-- 金刚区菜单 -->
-			<templateNav :list="navBarsList" v-if="isRequest"></templateNav>
-		</view>	
-		<!-- ross广告图区 -->
-		<view class="container-ross" v-if="isRossShow">
-			<view class="ross-image" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
-				<image class="image" src="https://static.caimei365.com/app/img/ross/ross-image@2x.jpg" mode=""></image>
+	<view class="container floor clearfix" :style="{ paddingTop: CustomBar + 'px' }">
+		<custom-floor :systeminfo="systeminfo" :navbar-data="nvabarData" :headerBtnPosi="headerBtnPosi" />
+		<tui-skeleton
+			v-if="!isRequest"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="container-home tui-skeleton">
+				<!-- 金刚区菜单 -->
+				<templateNav :list="navBarsList" v-if="isRequest" />
 			</view>
-		</view>
-		<!-- 楼层 -->
-		<view class="container-section tui-skeleton">
-			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
-		</view>
-		<!-- 侧边 -->
-		<scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
+			<!-- ross广告图区 -->
+			<view class="container-ross" v-if="isRossShow">
+				<view class="ross-image" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
+					<image
+						class="image"
+						src="https://static.caimei365.com/app/img/ross/ross-image@2x.jpg"
+						mode=""
+					></image>
+				</view>
+			</view>
+			<!-- 楼层 -->
+			<view class="container-section tui-skeleton">
+				<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest" />
+			</view>
+			<!-- 侧边 -->
+			<scroll-top :isScrollTop="isScrollTop" :bottom="50" />
+		</template>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations} from 'vuex';
-	import customFloor from '@/components/cm-custom/custom-floor' 		 //自定义导航
-	import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
-	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
-	import authorize from '@/common/config/authorize.js'
-	import wxLogin from "@/common/config/wxLogin.js"
-	
-	export default{
-		components:{
-			customFloor,
-			templateNav,
-			pageFloor
-		},
-		data(){
-			return{
-				userId:0,
-				shopId:0,
-				userIdentity:0,
-				skeletonShow:true,
-				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
-				systeminfo: this.setSysteminfo(),		 //获取设备信息
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				navBarsList:[],
-				pageList:[],//楼层
-				isRequest:false,
-				isScrollTop:false,
-				pageId:'',
-				typeSort:'',
-			}
-		},
-		computed: {
-			...mapState(['hasLogin','userInfo','isRossShow','isWxAuthorize'])
-		},
-		onLoad(option) {
-			if(option.type =='share'){
-				wxLogin.wxLoginAuthorize()
-			}
-			this.pageId = option.linkId
-			this.GetInstrumentPageDataa(this.pageId)
-		},
-		methods:{
-			async GetInstrumentPageDataa(pageId){//获取楼层数据
-				const userInfo = await this.$api.getStorage()
-				this.userId = userInfo.userId ? userInfo.userId : 0
-				this.shopId = userInfo.shopId ? userInfo.shopId : 0
-				this.userIdentity = userInfo.userIdentity
-				this.CommonService.GetInstrumentPageData({pageId:pageId,userId:this.userId,source:2}).then(response =>{
+import { mapState, mapMutations } from 'vuex'
+import customFloor from '@/components/cm-custom/custom-floor' //自定义导航
+import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
+import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+
+export default {
+	components: {
+		customFloor,
+		templateNav,
+		pageFloor
+	},
+	data() {
+		return {
+			userId: 0,
+			shopId: 0,
+			userIdentity: 0,
+			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+			systeminfo: this.setSysteminfo(), //获取设备信息
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			navBarsList: [],
+			pageList: [], //楼层
+			isRequest: false,
+			isScrollTop: false,
+			pageId: '',
+			typeSort: ''
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isRossShow', 'isWxAuthorize'])
+	},
+	onLoad(option) {
+		if (option.type == 'share') {
+			wxLogin.wxLoginAuthorize()
+		}
+		this.pageId = option.linkId
+		this.GetInstrumentPageDataa(this.pageId)
+	},
+	methods: {
+		async GetInstrumentPageDataa(pageId) {
+			//获取楼层数据
+			const userInfo = await this.$api.getStorage()
+			this.userId = userInfo.userId ? userInfo.userId : 0
+			this.shopId = userInfo.shopId ? userInfo.shopId : 0
+			this.userIdentity = userInfo.userIdentity
+			this.CommonService.GetInstrumentPageData({ pageId: pageId, userId: this.userId, source: 2 })
+				.then(response => {
 					let data = response.data
-					uni.setStorageSync('pageLabel',`${data.contentLabel}`)
-					this.GetHomeInit(data.typeSort,data.floorList)
-					
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			GetHomeInit(typeSort,floorList){//金刚区分类
-				this.CommonService.GetFirstClassly({typeSort:typeSort,source:'crm'}).then(response =>{
-					this.navBarsList = response.data
-					this.pageList = floorList
-					setTimeout(()=>{
-						this.skeletonShow = false
-						this.isRequest =true
-					},200)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+					uni.setStorageSync('pageLabel', `${data.contentLabel}`)
+					this.GetHomeInit(data.typeSort, data.floorList)
 				})
-			},
-			setHeaderBtnPosi(){
-				// 获得胶囊按钮位置信息
-				let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
-				return headerBtnPosi
-			},
-			setSysteminfo(){
-				let systeminfo;
-				uni.getSystemInfo({ // 获取设备信息
-					success: (res) => {
-						systeminfo = res
-					},
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-				return systeminfo
-			},
-		},
-		onPageScroll(e){//实时获取到滚动的值
-			if(e.scrollTop>400){
-				this.isScrollTop = true
-			}else{
-				this.isScrollTop = false
-			}	
 		},
-		onPullDownRefresh() {
-			setTimeout(() => {
-				uni.stopPullDownRefresh()
-			}, 200)
-		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: '采美-一站式生/医美采购服务平台',
-			  path: `pages/goods/good-floor?type=share&linkId=${this.pageId}`
+		//金刚区分类
+		async GetHomeInit(typeSort, floorList) {
+			try{
+				const res = await this.CommonService.GetFirstClassly({ typeSort: typeSort, source: 'crm' })
+				this.navBarsList = res.data
+				this.pageList = floorList
+				this.isRequest = true
+			}catch(error){
+				console.log('error',error)
 			}
 		},
-		onShow() {
-			
+		setHeaderBtnPosi() {
+			// 获得胶囊按钮位置信息
+			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+			return headerBtnPosi
+		},
+		setSysteminfo() {
+			let systeminfo
+			uni.getSystemInfo({
+				// 获取设备信息
+				success: res => {
+					systeminfo = res
+				}
+			})
+			return systeminfo
 		}
-	}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+		if (e.scrollTop > 400) {
+			this.isScrollTop = true
+		} else {
+			this.isScrollTop = false
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onShareAppMessage(res) {
+		//分享转发
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
+		}
+		return {
+			title: '采美-一站式生/医美采购服务平台',
+			path: `pages/goods/good-floor?type=share&linkId=${this.pageId}`
+		}
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page{
-		background-color: #FFFFFF;
-	}
-	.container-home{
-		width: 100%;
-		height: auto;
-	}
-	.container-ross{
+page {
+	background-color: #ffffff;
+}
+.container-home {
+	width: 100%;
+	height: auto;
+}
+.container-ross {
+	width: 100%;
+	height: 264rpx;
+	box-sizing: border-box;
+	padding: 24rpx 24rpx 0 24rpx;
+	float: left;
+	background-color: #f5f5f5;
+	.ross-image {
 		width: 100%;
-		height: 264rpx;
-		box-sizing: border-box;
-		padding: 24rpx 24rpx 0 24rpx;
-		float: left;
-		background-color: #F5F5F5;
-		.ross-image{
+		height: 100%;
+		line-height: 240rpx;
+		background-color: #f3920d;
+		border-radius: 16rpx;
+		text-align: center;
+		font-size: 80rpx;
+		color: #ffffff;
+		.image {
 			width: 100%;
 			height: 100%;
-			line-height: 240rpx;
-			background-color: #F3920D;
 			border-radius: 16rpx;
-			text-align: center;
-			font-size: 80rpx;
-			color: #FFFFFF;
-			.image{
-				width: 100%;
-				height: 100%;
-				border-radius: 16rpx;
-				display: block;
-			}
+			display: block;
 		}
 	}
-	.container-section{
-		width: 100%;
-		height: auto;
-		background-color: #F7F7F7;
-	}
+}
+.container-section {
+	width: 100%;
+	height: auto;
+	background-color: #f7f7f7;
+}
 </style>

+ 7 - 2
pages/goods/goods-classify.vue

@@ -731,9 +731,11 @@ export default {
 			// 选择品牌
 			brand.isChecked = !brand.isChecked
 			if (brand.isChecked) {
-				this.checkedBrandList.push(brand.id)
+				if(!this.contains(this.checkedBrandList,brand.id)){
+					this.checkedBrandList.push(brand.id)
+				}
 			} else {
-				this.checkedBrandList.splice(index, 1)
+				this.checkedBrandList.splice(this.checkedBrandList.indexOf(brand.id), 1)
 			}
 			this.isAllcheckedBrand = false
 			this.checkedBrandLength = this.checkedBrandList.length
@@ -741,6 +743,9 @@ export default {
 			this.listQuery.brandIds = this.checkedBrandList.join(',')
 			console.log('this.listQuery.brandIds', this.listQuery.brandIds)
 		},
+		contains(arr, val) {// 校验
+			return arr.some(item => item === val)
+		},
 		choiceBrandAll() {
 			// 点击选择全部品牌
 			this.isAllcheckedBrand = true

+ 1 - 1
pages/h5/activity/activity-list.vue

@@ -102,7 +102,7 @@
 				if(item.status!=3 ){
 					if(item.crmLink){
 						this.cmsSysStatistics(6)
-						this.$api.navigateTo(`/pages/h5/activity/activity?title=${item.title}&link=${item.crmLink}`)
+						this.$api.navigateTo(`/pages/h5/activity/activity?link=${item.crmLink}&linkId=${item.linkParam.id}`)
 					}
 				}else{
 					this.$util.msg('活动已经结束',2000)

+ 198 - 174
pages/h5/activity/activity-topic.vue

@@ -1,184 +1,208 @@
 <template>
-	<view class="container floor clearfix">
-		<!-- top -->
-		<view class="container-top" @click="BannerNavigateTo(pageInfo.linkType,pageInfo.linkParam.id,pageInfo.headLink,pageInfo.keyword)" v-if="isRequest && headImage!==''"><image :src="headImage" ></image></view>
-		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<!-- 楼层 -->
-		<view class="container-section tui-skeleton">
-			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
-		</view>
-		<!-- 侧边 -->
-		<scroll-top :isScrollTop="isScrollTop" :bottom="50" ></scroll-top>
+    <view class="container floor clearfix">
+        <!-- top -->
+        <view
+            class="container-top"
+            @click="BannerNavigateTo(pageInfo.linkType, pageInfo.linkParam.id, pageInfo.headLink, pageInfo.keyword)"
+            v-if="isRequest && headImage !== ''"
+        >
+            <image :src="headImage"></image>
+        </view>
+        <tui-skeleton
+            v-if="skeletonShow"
+            backgroundColor="#fafafa"
+            borderRadius="10rpx"
+            :isLoading="true"
+            :loadingType="5"
+        ></tui-skeleton>
+        <!-- 楼层 -->
+        <view class="container-section tui-skeleton">
+            <page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
+        </view>
+        <!-- 侧边 -->
+        <scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
         <!-- 右侧联系 活动入口 -->
         <activity-contact :pageInfo="pageInfo" v-if="isRequest"></activity-contact>
-	</view>
+    </view>
 </template>
 
 <script>
-	import { mapState,mapMutations} from 'vuex' 
-	import customFloor from '@/components/cm-custom/custom-floor' 		 //自定义导航
-	import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
-    import pageFloor from './components/active-floor.vue'
-    import  ActivityContact from './components/activity-contact.vue'
-	import authorize from '@/common/config/authorize.js'
-	import wxLogin from '@/common/config/wxLogin.js'
-	
-	export default{ 
-		components:{
-			customFloor,
-			templateNav,
-			pageFloor,
-            ActivityContact
-		},
-		data(){
-			return{
-				userId:0,
-				shopId:0,
-				userIdentity:0,
-				skeletonShow:true,
-				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
-				systeminfo: this.setSysteminfo(),		 //获取设备信息
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				navBarsList:[],
-				pageList:[],//楼层
-				isRequest:false,
-				isScrollTop:false,
-				pageId:'',
-				typeSort:'',
-				headImage:'',
-				pageInfo:{},
-                activityEntryVisiable:false
-			}
-		},
-		onLoad(option) {
-			if(option.type =='share'){
-				authorize.checkLogin()
-				.then(res => {
-					wxLogin.wxLoginAuthorize()
-				})
-				.catch(err => {
-					console.log(new Date +'用户未授权微信信息')
-				})
-			}
-			this.pageId = option.linkId
-			this.$api.getComStorage('userInfo').then((resolve) =>{
-				this.userId = resolve.userId ? resolve.userId : 0
-				this.shopId = resolve.shopId ? resolve.shopId : 0
-				this.userIdentity = resolve.userIdentity
-				this.GetActivityFloorData()
-			}).catch(error =>{
-				this.GetActivityFloorData()
-			})
-			setTimeout(()=>{
-				this.skeletonShow = false
-			},2000)
-		},
-		computed: {
-			...mapState(['hasLogin','userInfo','identity'])
-		},
-		methods:{
-            
-			GetActivityFloorData(){//获取楼层数据
-				this.CommonService.GetActivityFloorData({pageId:this.pageId,userId:this.userId,source:2}).then(response =>{
-					let data = response.data
-					this.typeSort = data.page.typeSort
-					this.pageList = data.floorList
-					this.headImage = data.page.crmHeadImage
-					this.pageInfo = data.page
-					this.isRequest =true
-					uni.setStorageSync('pageLabel',`${data.page.contentLabel}`)
-					uni.setNavigationBarTitle({title:data.page.title})
-					// this.GetHomeInit()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			GetHomeInit(){//金刚区分类
-				this.CommonService.GetFirstClassly({typeSort:this.typeSort,source:'crm'}).then(response =>{
-					this.navBarsList = response.data
-					this.isRequest =true
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			setHeaderBtnPosi(){
-				// 获得胶囊按钮位置信息
-				let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
-				return headerBtnPosi
-			},
-			setSysteminfo(){
-				let systeminfo
-				uni.getSystemInfo({ // 获取设备信息
-					success: (res) => {
-						systeminfo = res
-					},
-				})
-				return systeminfo
-			},
-			BannerNavigateTo(linkType,linkId,linkHref,keyword) {//跳转商品详情页
-				console.log(linkType,linkId,linkHref,keyword)
-				this.$api.BannerNavigateTo(linkType,linkId,linkHref,keyword)
-			}
-		},
-		onPageScroll(e){//实时获取到滚动的值
-			if(e.scrollTop>400){
-				this.isScrollTop = true
-			}else{
-				this.isScrollTop = false
-			}	
-		},
-		onPullDownRefresh() {
-			setTimeout(() => {
-				uni.stopPullDownRefresh()
-			}, 200)
-		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: '采美-一站式生/医美采购服务平台',
-			  path: `pages/h5/activity/activity-topic?type=share&linkId=${this.pageId}`
-			}
-		},
-		
-	}
+import { mapState, mapMutations } from 'vuex'
+import customFloor from '@/components/cm-custom/custom-floor' //自定义导航
+import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
+import pageFloor from './components/active-floor.vue'
+import ActivityContact from './components/activity-contact.vue'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+
+export default {
+    components: {
+        customFloor,
+        templateNav,
+        pageFloor,
+        ActivityContact
+    },
+    data() {
+        return {
+            userId: 0,
+            shopId: 0,
+            userIdentity: 0,
+            skeletonShow: true,
+            headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+            systeminfo: this.setSysteminfo(), //获取设备信息
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            navBarsList: [],
+            pageList: [], //楼层
+            isRequest: false,
+            isScrollTop: false,
+            pageId: '',
+            typeSort: '',
+            headImage: '',
+            pageInfo: {},
+            activityEntryVisiable: false
+        }
+    },
+    onLoad(option) {
+        if (option.type == 'share') {
+            authorize
+                .checkLogin()
+                .then(res => {
+                    wxLogin.wxLoginAuthorize()
+                })
+                .catch(err => {
+                    console.log(new Date() + '用户未授权微信信息')
+                })
+        }
+        this.pageId = option.linkId
+        this.$api
+            .getComStorage('userInfo')
+            .then(resolve => {
+                this.userId = resolve.userId ? resolve.userId : 0
+                this.shopId = resolve.shopId ? resolve.shopId : 0
+                this.userIdentity = resolve.userIdentity
+                this.GetActivityFloorData()
+            })
+            .catch(error => {
+                this.GetActivityFloorData()
+            })
+        setTimeout(() => {
+            this.skeletonShow = false
+        }, 2000)
+    },
+    computed: {
+        ...mapState(['hasLogin', 'userInfo', 'identity'])
+    },
+    methods: {
+        GetActivityFloorData() {
+            //获取楼层数据
+            this.CommonService.GetActivityFloorData({ pageId: this.pageId, userId: this.userId, source: 2 })
+                .then(response => {
+                    let data = response.data
+                    this.typeSort = data.page.typeSort
+                    this.pageList = data.floorList
+                    this.headImage = data.page.crmHeadImage
+                    this.pageInfo = data.page
+                    this.isRequest = true
+                    uni.setStorageSync('pageLabel', `${data.page.contentLabel}`)
+                    uni.setNavigationBarTitle({ title: data.page.title })
+                    // this.GetHomeInit()
+                })
+                .catch(error => {
+                    this.$util.msg(error.msg, 2000)
+                })
+        },
+        GetHomeInit() {
+            //金刚区分类
+            this.CommonService.GetFirstClassly({ typeSort: this.typeSort, source: 'crm' })
+                .then(response => {
+                    this.navBarsList = response.data
+                    this.isRequest = true
+                })
+                .catch(error => {
+                    this.$util.msg(error.msg, 2000)
+                })
+        },
+        setHeaderBtnPosi() {
+            // 获得胶囊按钮位置信息
+            let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+            return headerBtnPosi
+        },
+        setSysteminfo() {
+            let systeminfo
+            uni.getSystemInfo({
+                // 获取设备信息
+                success: res => {
+                    systeminfo = res
+                }
+            })
+            return systeminfo
+        },
+        BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+            //跳转商品详情页
+            console.log(linkType, linkId, linkHref, keyword)
+            this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+        }
+    },
+    onPageScroll(e) {
+        //实时获取到滚动的值
+        if (e.scrollTop > 400) {
+            this.isScrollTop = true
+        } else {
+            this.isScrollTop = false
+        }
+    },
+    onPullDownRefresh() {
+        setTimeout(() => {
+            uni.stopPullDownRefresh()
+        }, 200)
+    },
+    onShareAppMessage(res) {
+        //分享转发
+        if (res.from === 'button') {
+            // 来自页面内转发按钮
+        }
+        return {
+            title: '采美-一站式生/医美采购服务平台',
+            path: `pages/h5/activity/activity-topic?type=share&linkId=${this.pageId}`
+        }
+    }
+}
 </script>
 
 <style lang="scss" scoped>
-	page{
-		background-color: #FFFFFF;
-	}
-	.container-home{
-		width: 100%;
-		height: auto;
-	}
-	.container-section{
-		width: 100%;
-		height: auto;
-		background-color: #F7F7F7;
-	}
-	.container-top{
-		width: 100%;
-		height: 340rpx;
-		float: left;
-		image{
-			width: 100%;
-			height: 100%;
-			display: block;
-		}
-	}
-	.container-activ{
-		width: 100%;
-		height: 240rpx;
-		box-sizing: border-box;
-		padding: 0 24rpx;
-		margin: 24rpx 0;
-		float: left;
-		image{
-			width: 100%;
-			height: 240rpx;
-			display: block;
-		}
-	}
+page {
+    background-color: #ffffff;
+}
+.container-home {
+    width: 100%;
+    height: auto;
+}
+.container-section {
+    width: 100%;
+    height: auto;
+    background-color: #f7f7f7;
+}
+.container-top {
+    width: 100%;
+    height: 340rpx;
+    float: left;
+    image {
+        width: 100%;
+        height: 100%;
+        display: block;
+    }
+}
+.container-activ {
+    width: 100%;
+    height: 240rpx;
+    box-sizing: border-box;
+    padding: 0 24rpx;
+    margin: 24rpx 0;
+    float: left;
+    image {
+        width: 100%;
+        height: 240rpx;
+        display: block;
+    }
+}
 </style>

+ 2 - 2
pages/h5/activity/components/activity-contact.vue

@@ -6,7 +6,7 @@
             <view class="cm-icon cm-bround cm-open-btn" @click="handleToggleAcitve(true)" v-if="contactVisiable"></view>
         </view>
         <!-- 展开状态 -->
-        <view class="cm-close-box" v-show="contactVisiable && isActive">
+        <!-- <view class="cm-close-box" v-show="contactVisiable && isActive">
             <view class="cm-icon cm-entry" @click="handleToggleEntry(true)" v-if="activityEntryVisiable"></view>
             <view class="cm-icon regexp" @click="handleToCouponExp">优惠券\n规则</view>
             <view class="cm-icon cm-bround cm-mobile" @click="handelShowMobile">
@@ -46,7 +46,7 @@
                 </view>
             </view>
             <view class="cm-icon cm-bround cm-close-btn" @click="handleToggleAcitve(false)"></view>
-        </view>
+        </view> -->
         <view class="mask cover" v-if="activityEntryVisiable && entryVisiable">
             <view class="content">
                 <!-- <image

+ 4 - 2
pages/h5/activity/components/template-picture/templateE.vue

@@ -41,7 +41,7 @@ import { mapState, mapMutations } from 'vuex'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
 import caimeiApi from '@/common/config/caimeiApi.js'
 export default {
-    name: 'templateH',
+    name: 'templateE',
     components: {
         uniGrader
     },
@@ -80,10 +80,12 @@ export default {
     },
     methods: {
         initData(data) {
+            console.log(data)
             this.imageCount = data.floorImageList.length
             while (data.floorImageList.length > 0) {
                 this.productList.push(data.floorImageList.splice(0, this.pageSize))
             }
+            console.log(this.productList)
         },
         swiperChange(e) {
             //轮播切换
@@ -182,4 +184,4 @@ export default {
         }
     }
 }
-</style>
+</style>

+ 181 - 0
pages/h5/activity/quick-operation.vue

@@ -0,0 +1,181 @@
+<template>
+	<view class="container floor clearfix">
+		<!-- top -->
+		<view class="container-top" @click="BannerNavigateTo(pageInfo.linkType,pageInfo.linkParam.id,pageInfo.headLink,pageInfo.keyword)" v-if="isRequest && headImage!==''"><image :src="headImage" ></image></view>
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
+		<!-- 楼层 -->
+		<view class="container-section tui-skeleton">
+			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
+		</view>
+		<!-- 侧边 -->
+		<scroll-top :isScrollTop="isScrollTop" :bottom="50" ></scroll-top>
+        <!-- 右侧联系 活动入口 -->
+        <activity-contact :pageInfo="pageInfo" v-if="isRequest"></activity-contact>
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations} from 'vuex' 
+	import customFloor from '@/components/cm-custom/custom-floor' 		 //自定义导航
+	import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
+    import pageFloor from './components/active-floor.vue'
+    import  ActivityContact from './components/activity-contact.vue'
+	import authorize from '@/common/config/authorize.js'
+	import wxLogin from '@/common/config/wxLogin.js'
+	
+	export default{ 
+		components:{
+			customFloor,
+			templateNav,
+			pageFloor,
+            ActivityContact
+		},
+		data(){
+			return{
+				userId:0,
+				shopId:0,
+				userIdentity:0,
+				skeletonShow:true,
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo: this.setSysteminfo(),		 //获取设备信息
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				navBarsList:[],
+				pageList:[],//楼层
+				isRequest:false,
+				isScrollTop:false,
+				pageId:'',
+				typeSort:'',
+				headImage:'',
+				pageInfo:{},
+                activityEntryVisiable:false
+			}
+		},
+		onLoad(option) {
+			if(option.type =='share'){
+				authorize.checkLogin()
+				.then(res => {
+					wxLogin.wxLoginAuthorize()
+				})
+				.catch(err => {
+					console.log(new Date +'用户未授权微信信息')
+				})
+			}
+			this.pageId = option.linkId
+			this.$api.getComStorage('userInfo').then((resolve) =>{
+				this.userId = resolve.userId ? resolve.userId : 0
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+				this.userIdentity = resolve.userIdentity
+				this.GetActivityFloorData()
+			}).catch(error =>{
+				this.GetActivityFloorData()
+			})
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo','identity'])
+		},
+		methods:{            
+			GetActivityFloorData(){//获取楼层数据
+				this.CommonService.GetActivityFloorData({pageId:this.pageId,userId:this.userId,source:2}).then(response =>{
+					let data = response.data
+					this.typeSort = data.page.typeSort
+					this.pageList = data.floorList
+					this.headImage = data.page.crmHeadImage
+					this.pageInfo = data.page
+					this.isRequest =true
+					uni.setStorageSync('pageLabel',`${data.page.contentLabel}`)
+					uni.setNavigationBarTitle({title:data.page.title})
+                    this.skeletonShow = false
+					// this.GetHomeInit()
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			GetHomeInit(){//金刚区分类
+				this.CommonService.GetFirstClassly({typeSort:this.typeSort,source:'crm'}).then(response =>{
+					this.navBarsList = response.data
+					this.isRequest =true
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			setHeaderBtnPosi(){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+				return headerBtnPosi
+			},
+			setSysteminfo(){
+				let systeminfo
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			},
+			BannerNavigateTo(linkType,linkId,linkHref,keyword) {//跳转商品详情页
+				console.log(linkType,linkId,linkHref,keyword)
+				this.$api.BannerNavigateTo(linkType,linkId,linkHref,keyword)
+			}
+		},
+		onPageScroll(e){//实时获取到滚动的值
+			if(e.scrollTop>400){
+				this.isScrollTop = true
+			}else{
+				this.isScrollTop = false
+			}	
+		},
+		onPullDownRefresh() {
+			setTimeout(() => {
+				uni.stopPullDownRefresh()
+			}, 200)
+		},
+		onShareAppMessage(res){//分享转发
+			if (res.from === 'button') {
+		      // 来自页面内转发按钮
+		    }
+			return {
+			  title: '采美-一站式生/医美采购服务平台',
+			  path: `pages/h5/activity/quick-operation?type=share&linkId=${this.pageId}`
+			}
+		},
+		
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background-color: #FFFFFF;
+	}
+	.container-home{
+		width: 100%;
+		height: auto;
+	}
+	.container-section{
+		width: 100%;
+		height: auto;
+		background-color: #F7F7F7;
+	}
+	.container-top{
+		width: 100%;
+		height: 340rpx;
+		float: left;
+		image{
+			width: 100%;
+			height: 100%;
+			display: block;
+		}
+	}
+	.container-activ{
+		width: 100%;
+		height: 240rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		margin: 24rpx 0;
+		float: left;
+		image{
+			width: 100%;
+			height: 240rpx;
+			display: block;
+		}
+	}
+</style>

+ 3 - 2
pages/h5/article/path.vue

@@ -48,8 +48,9 @@
                     URL_CONFIG = 'https://www.caimei365.com/'
                 }
                 this.activityPath = `${URL_CONFIG}/document/pdfdetails.html?type=1&src=${link}`
-            }
-		}
+            },
+            
+		},
 	}
 </script>
 	

+ 329 - 0
pages/login/components/basicOperationsProducts.vue

@@ -0,0 +1,329 @@
+<template>
+	<view class="basicoperation">
+		<slot name="supplier-title"></slot>
+		<view class="basicoperation_container">
+			<image
+				class="defalut author-empty"
+				:style="{ 'z-index': isOnline ? 0 : 13 }"
+				src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author-empty.png"
+				mode="aspectFill"
+			></image>
+			<image
+				class="defalut store-empty"
+				:style="{ 'z-index': isOnline ? 12 : 0 }"
+				src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store-empty.png"
+				mode="aspectFill"
+			></image>
+			<view class="operation_store" v-if="isOnline">
+				<view class="online_store">
+					<view class="store-logo">
+						<image
+							src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png"
+							class="store"
+							mode=""
+						></image>
+					</view>
+					<view class="store-title"> 在线商城 </view>
+				</view>
+				<view class="store-line-title">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/title.png"
+						style="width: 100%;height: 100%;"
+						mode=""
+					></image>
+				</view>
+				<view class="store-content">
+					<view class="content-item" v-for="item in online_store_list" :key="item.id">
+						<image :src="item.img" mode="" style="width: 80rpx;height: 50rpx;"></image>
+						<view class="store-content-title"> {{ item.title }} </view>
+						<view class="store-content-text"> {{ item.content }} </view>
+					</view>
+				</view>
+				<view class="author" @click="isOnline = false">
+					<view class="author-title"> 正品认证通 </view>
+					<image
+						style="width: 50rpx;height: 54rpx;"
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png"
+						mode=""
+					></image>
+				</view>
+			</view>
+			<view class="operation-author" v-else>
+				<view class="author">
+					<view class="author-logo">
+						<image
+							style="width: 66rpx;
+height: 68rpx;"
+							src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png"
+							mode=""
+						></image>
+					</view>
+					<view class="author-title"> 正品认证通 </view>
+				</view>
+				<view class="author-title-logo">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/logo.png"
+						style="width: 100%;height: 100%;"
+						mode=""
+					></image>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/02.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">易装易用免维护</view> <view class="author-content-split"></view>
+					<view class="author-content-text">独立后台账号体系、会打字就会用、公众号无缝衔接</view>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/03.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">授权认证功能</view> <view class="author-content-split"></view>
+					<view class="author-content-text">机构认证查询、设备认证查询、医师认证查询</view>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/04.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">品牌运营</view> <view class="author-content-split"></view>
+					<view class="author-content-text">与机构客户建立双向沟通渠道</view>
+				</view>
+				<view class="online-store" @click="isOnline = true">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png"
+						style="width: 72rpx;height: 68rpx;"
+						mode=""
+					></image>
+					<view class="online-store-logo"> 在线商城 </view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			isOnline: true,
+			online_store_list: [
+				{
+					id: 1,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/p.png',
+					title: '品牌店铺搭建',
+					content: '轻松开启线上交易'
+				},
+				{
+					id: 2,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/l.png',
+					title: '品牌展露',
+					content: '彰显品牌实力'
+				},
+				{
+					id: 3,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/s.png',
+					title: '商品SKU管理',
+					content: '提高决策效率'
+				}
+			]
+		}
+	},
+	methods: {}
+}
+</script>
+
+<style scoped lang="scss">
+.defalut {
+	width: 610rpx;
+	height: 570rpx;
+	position: absolute;
+	box-sizing: border-box;
+}
+.store {
+	width: 80rpx;
+	height: 70rpx;
+}
+.basicoperation {
+	padding: 1px;
+	box-sizing: border-box;
+	background-color: #fff;
+	.basicoperation_container {
+		height: 690rpx;
+		padding: 0 70rpx;
+		box-sizing: border-box;
+		position: relative;
+		.operation_store {
+			position: absolute;
+			box-sizing: border-box;
+			padding: 36rpx 43rpx;
+			width: 610rpx;
+			height: 570rpx;
+			z-index: 12;
+			.online_store {
+				width: 300rpx;
+				height: 95rpx;
+				border-bottom: 1px solid #ffceaf;
+				display: flex;
+				align-items: center;
+				.store-logo {
+					width: 72rpx;
+					height: 100%;
+					border-bottom: 2px solid #ffc39a;
+				}
+				.store-title {
+					color: #333333;
+					font-size: 40rpx;
+					font-weight: bold;
+					margin-left: 21rpx;
+					margin-top: -25rpx;
+				}
+			}
+			.store-line-title {
+				width: 100%;
+				height: 90rpx;
+				margin: 50rpx 0 33rpx 0;
+			}
+			.store-content {
+				width: 100%;
+				height: 216rpx;
+				display: flex;
+				justify-content: space-between;
+				.content-item {
+					width: 172rpx;
+					height: 216rpx;
+					background: #fdf0e9;
+					border: 4rpx solid #ffffff;
+					box-shadow: 0rpx 6rpx 50rpx 0rpx rgba(255, 91, 0, 0.24);
+					border-radius: 10rpx;
+					box-sizing: border-box;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+					.store-content-title {
+						color: #333333;
+						font-size: 24rpx;
+						font-weight: bold;
+						margin: 30rpx 0 13rpx 0;
+					}
+					.store-content-text {
+						color: #666666;
+						font-size: 19rpx;
+						text-align: center;
+					}
+				}
+			}
+			.author {
+				position: absolute;
+				right: 0;
+				top: 0;
+				width: 242rpx;
+				height: 80rpx;
+				box-sizing: border-box;
+				display: flex;
+				align-items: center;
+				.author-title {
+					font-size: 32rpx;
+					font-weight: bold;
+					color: white;
+					margin-right: 14rpx;
+				}
+			}
+		}
+		.operation-author {
+			position: absolute;
+			box-sizing: border-box;
+			padding: 36rpx 36rpx;
+			width: 610rpx;
+			height: 570rpx;
+			z-index: 13;
+			.author {
+				position: absolute;
+				right: 30rpx;
+				width: 275rpx;
+				height: 110rpx;
+				top: 12rpx;
+				border-bottom: 1px solid #ffceaf;
+				display: flex;
+				align-items: center;
+				flex-direction: row-reverse;
+				.author-logo {
+					width: 72rpx;
+					height: 100%;
+					box-sizing: border-box;
+					border-bottom: 2px solid #ffc39a;
+					padding-top: 17rpx;
+				}
+				.author-title {
+					color: white;
+					font-size: 40rpx;
+					font-weight: bold;
+				}
+			}
+			.author-title-logo {
+				width: 100%;
+				height: 120rpx;
+				margin-top: 130rpx;
+			}
+			.author-content-item {
+				width: 100%;
+				height: 70rpx;
+				border-radius: 70rpx;
+				border: 1px solid #ffc39a;
+				box-sizing: border-box;
+				padding: 2rpx;
+				display: flex;
+				align-items: center;
+				margin-top: 18rpx;
+				view {
+					height: 100%;
+					color: #ffc39a;
+					font-size: 20rpx;
+				}
+				.author-content-title {
+					font-size: 24rpx;
+					font-weight: bold;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					margin: 0 10rpx;
+				}
+				.author-content-split {
+					width: 2rpx;
+					height: 50%;
+					background-color: #ffc39a;
+					margin-right: 10rpx;
+				}
+				.author-content-text {
+					width: 278rpx;
+					display: flex;
+					align-items: center;
+				}
+			}
+			.online-store {
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 250rpx;
+				height: 100rpx;
+				display: flex;
+				align-items: center;
+				box-sizing: border-box;
+				padding: 36rpx 0 36rpx 14rpx;
+				.online-store-logo {
+					font-size: 32rpx;
+					font-weight: bold;
+					color: black;
+					margin-left: 14rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 77 - 0
pages/login/components/caimei-about.vue

@@ -0,0 +1,77 @@
+<template>
+    <view
+        class="about"
+        :style="{
+            background: 'url(' + bgImg + ')',
+            'background-repeat': 'no-repeat',
+            'background-size': '100% 100%'
+        }"
+    >
+        <slot name="supplier-title"></slot>
+        <view class="about-container">
+            <view class="about-explain">
+                <view class="about-bg"></view>
+                <view class="about-text">
+                    采美网是一个生活美容和医疗美容行业B2B数字化营销和供应链服务平台,其核心资产包括采购
+                    信息中心,媒体矩阵,数字运营以及线上交易和供应链管理软件,建立了一个从信息引流到数字
+                    运营到交易结算一体化平台,站外引流站内运营,采购转化的闭环生态,采美平台以创造客户价值为核心,借助数字化营销的优
+                    势,赋能美业供应链上下游企业,共同打造一站式美业双线融合的供应链新生态。
+                </view>
+            </view>
+            <view>
+                <image class="about-achievement" src="https://static.caimei365.com/app/img/supplier-login/caimeiabout/achievement.png" mode=""></image>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            bgImg: 'https://static.caimei365.com/app/img/supplier-login/caimeiabout/bg.png',
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.about {
+    padding: 1px;
+    box-sizing: border-box;
+}
+.about-container {
+    padding: 0 70rpx;
+    box-sizing: border-box;
+    .about-explain {
+        width: 610rpx;
+        height: 760rpx;
+        position: relative;
+        margin-bottom: 78rpx;
+        .about-bg {
+            width: 100%;
+            height: 100%;
+            position: absolute;
+            left: 0;
+            top: 0;
+            background: #FFFFFF;
+            opacity: 0.2;
+            border-radius: 4rpx;
+        }
+        .about-text {
+            width: 100%;
+            height: 100%;
+            box-sizing: border-box;
+            padding: 45rpx 34rpx;
+            color: #FFFFFF;
+            font-size: 32rpx;
+            line-height: 64rpx;
+        }
+    }
+    .about-achievement {
+        width: 610rpx;
+        height: 400rpx;
+        margin-bottom: 62rpx;
+    }
+}
+</style>

+ 76 - 0
pages/login/components/caimei-video.vue

@@ -0,0 +1,76 @@
+<template>
+    <view class="video" :class="show ? 'video-show' : ''">
+        <video v-if="videoObj.cmBrandFiles[0].ossUrl" :src="videoObj.cmBrandFiles[0].ossUrl" autoplay class="videoRef" controls id="videoRef"></video>
+        <view style="display: flex;width: 100%;flex-direction: row-reverse; margin-top: 300rpx;" @click="cancel">
+            <image
+                src="https://static.caimei365.com/app/img/supplier-login/close.png"
+                mode=""
+                class="iconfont icon-guanbi close"
+                :class="show ? 'video-show' : ''"
+            ></image>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        show: {
+            type: Boolean,
+            default: () => false
+        },
+        videoObj: {
+            type: Object,
+            default: () => {}
+        }
+    },
+    data() {
+        return {
+            videoContext: null // 播放器上下文
+        }
+    },
+    watch: {},
+    mounted() {
+        this.videoContext = uni.createVideoContext('videoRef', this)
+    },
+    methods: {
+        cancel() {
+            this.videoContext.pause()
+            this.$emit('closeClick')
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.video {
+    width: 100vw;
+    height: 100vh;
+    box-sizing: border-box;
+    background-color: rgba(0, 0, 0, 0.5);
+    justify-content: flex-end;
+    align-items: center;
+    flex-direction: column-reverse;
+    z-index: 999;
+    position: fixed;
+    opacity: 0;
+    display: none;
+    left: 0;
+    top: 0;
+    .videoRef {
+        width: 80%;
+        height: 500rpx;
+    }
+}
+.video-show {
+    opacity: 1;
+    display: flex !important;
+}
+.close {
+    width: 67rpx;
+    height: 67rpx;
+    margin-bottom: -30rpx;
+    margin-right: 6%;
+    z-index: 1;
+}
+</style>

+ 249 - 0
pages/login/components/growthCommunity.vue

@@ -0,0 +1,249 @@
+<template>
+    <view class="growthcommunity">
+        <slot name="supplier-title"></slot>
+        <view class="negotiation">
+            <view class="enterprise">
+                <view class="title">美业企谈</view>
+                <view class="container">
+                    <scroll-view
+                        scroll-x="true"
+                        class="scroll-view"
+                        @scroll="scrollVideoHandler"
+                        :scroll-into-view="activeVideoMenu"
+                        scroll-with-animation="true"
+                    >
+                        <view
+                            class="video-item"
+                            v-for="(item, index) in videoList"
+                            :key="item.id"
+                            @click="$emit('playVideo', item)"
+                            :id="`item${index}`"
+                            v-if="item.appStatus == '1'"
+                        >
+                            <view class="player">
+                                <image src="https://static.caimei365.com/app/img/supplier-login/player.png" class="player-img"  mode=""></image>
+                            </view>
+                            <view class="img-item"><image :src="item.headAppBanner" mode="" class="img"></image></view>
+                            <view class="videotitle">
+                                <view class="text">{{ item.title }}</view>
+                            </view>
+                        </view>
+                    </scroll-view>
+                </view>
+            </view>
+            <view class="item-dots"><page-dots :pageAll="videoList.length" :isActive="isVideo" @hanlder-click="hanlderVideoClick" /></view>
+            <view class="enterprise">
+                <view class="title">采美资讯</view>
+                <view class="container">
+                    <scroll-view
+                        scroll-x="true"
+                        class="scroll-view"
+                        @scroll="scrollHandler"
+                        :scroll-into-view="activeMenu"
+                        scroll-with-animation="true"
+                    >
+                        <view
+                            class="video-item"
+                            v-for="(item, index) in articelList"
+                            :key="item.id"
+                            @click="handlerTramp(item)"
+                            :id="`item${index}`"
+                            v-if="item.appStatus == '1'"
+                        >
+                            <view class="img-item"><image :src="item.headAppBanner" mode="" class="img"></image></view>
+                            <view class="articleContent">
+                                <view class="text">{{ item.title }}</view>
+                                <view class="article-con">{{ item.content.match(/[\u4e00-\u9fa5]/g).join('') }}</view>
+                            </view>
+                        </view>
+                    </scroll-view>
+                </view>
+            </view>
+            <view class="item-dots"><page-dots :pageAll="articelList.length" :isActive="isArtical" @hanlder-click="hanlderClick" /></view>
+        </view>
+    </view>
+</template>
+
+<script>
+import PageDots from './swiper-dots.vue'
+export default {
+    props: {
+        videoList: {
+            type: Array,
+            default: () => []
+        },
+        articelList: {
+            type: Array,
+            default: () => []
+        }
+    },
+    components: {
+        PageDots
+    },
+    data() {
+        return {
+            isVideo: 0,
+            isArtical: 0,
+            activeMenu: 'item0',
+            activeVideoMenu: 'item0'
+        }
+    },
+    watch: {
+        videoList: {
+            handler(val) {
+                this.community_video_list = val
+            },
+            deep: true
+        },
+        articelList: {
+            handler(val) {
+                this.community_article_list = val
+            },
+            deep: true
+        }
+    },
+    methods: {
+        handlerTramp($event) {
+            const list = this.community_article_list.filter(e => e.id === $event.id)
+            let data = list[0].content.replace(/<img/g, '<img style="width: 100%;height: 200px"')
+            data = data.replace(/\<figure/g, '<div')
+            data = data.replace(/\<\/figure/g, '<\/div')
+            uni.setStorageSync('artForm', data)
+            uni.navigateTo({
+                url: '/pages/login/supplier_information'
+            })
+        },
+        scrollHandler($event) {
+            const data = Math.floor($event.detail.scrollLeft / 192)
+             this.isArtical = data
+        },
+        scrollVideoHandler($event) {
+            const data = Math.floor($event.detail.scrollLeft / 192)
+             this.isVideo = data
+        },
+        // 点击导航
+        hanlderClick($event) {
+            this.isArtical = $event
+            this.activeMenu = `item${$event}`
+        },
+        hanlderVideoClick($event) {
+            this.isVideo = $event
+            this.activeVideoMenu = `item${$event}`
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.img {
+    width: 100%;
+    height: 100%;
+}
+.growthcommunity {
+    padding: 1px;
+    box-sizing: border-box;
+    background-color: #fff;
+    .negotiation {
+        padding-left: 72rpx;
+    }
+}
+.enterprise {
+    position: relative;
+    margin-bottom: 50rpx;
+}
+.title {
+    color: #333333;
+    font-size: 32rpx;
+    margin-bottom: 34rpx;
+}
+.scroll-view {
+    white-space: nowrap;
+}
+.video-item {
+    width: 384rpx;
+    height: 376rpx;
+    background: #ffffff;
+    border: 1px solid #eaeaea;
+    display: inline-flex;
+    margin-right: 32rpx;
+    box-sizing: border-box;
+    flex-direction: column;
+    overflow-wrap: break-word;
+    white-space: normal;
+    position: relative;
+    .player {
+        height: calc(100% - 159rpx);
+        width: 100%;
+        position: absolute;
+        top: 0;
+        left: 0;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        background-color: rgba(0, 0, 0, 0.3);
+        .player-img {
+            width: 60rpx;
+            height: 60rpx;
+        }
+    }
+    .img-item {
+        height: calc(100% - 159rpx);
+        width: 100%;
+    }
+    .videotitle {
+        width: 100%;
+        height: 159rpx;
+        font-size: 28rpx;
+        color: #333333;
+        padding: 40rpx 40rpx;
+        overflow: hidden;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        box-sizing: border-box;
+        .text {
+            width: 336rpx;
+            height: 90rpx;
+            overflow: hidden;
+            line-height: 48rpx;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 2;
+            overflow-wrap: break-word;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+        }
+    }
+    .articleContent {
+        .text {
+            margin-top: 24rpx;
+            box-sizing: border-box;
+            padding-left: 24rpx;
+            color: #333333;
+            font-size: 32rpx;
+            border-left: 2px solid #ff5b00;
+        }
+        .article-con {
+            margin-top: 18rpx;
+            width: 100%;
+            height: 62rpx;
+            box-sizing: border-box;
+            padding: 0 24rpx;
+            color: #666666;
+            font-size: 24rpx;
+            overflow: hidden;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 2;
+            overflow-wrap: break-word;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+        }
+    }
+}
+.item-dots {
+    height: 160rpx;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    margin-left: -20rpx;
+}
+</style>

+ 146 - 0
pages/login/components/markeServices.vue

@@ -0,0 +1,146 @@
+<template>
+    <view class="server">
+        <swiper
+            :indicator-dots="true"
+            :autoplay="true"
+            :interval="3000"
+            :duration="1000"
+            indicator-color="rgba(0, 0, 0, 0.5)"
+            indicator-active-color="rgba(255, 91, 0, 1)"
+        >
+            <swiper-item v-for="item in bannersList" :key="item.id" v-if="item.appStatus == '1'">
+                <view class="swiper-item">
+                    <image class="img" :src="item.headAppBanner" @click="jumplink(item)"/>
+                </view>
+            </swiper-item>
+        </swiper>
+        <slot name="supplier-title"></slot>
+        <scroll-view scroll-x="true" class="scroll-view">
+            <view class="server_item" v-for="item in server_card_list" :key="item.id">
+                <image :src="item.img" mode="" class="card_img"></image>
+                <text class="card_title">{{item.title}}</text>
+                <text class="card_text" v-for="text, index in item.content" :key="index">{{text.text}}</text>
+            </view>
+        </scroll-view>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        bannersList: {
+            type: Array,
+            default: () => []
+        }
+    },
+    data() {
+        return {
+            // 卡片内容
+            server_card_list: [
+                {
+                    id: 1,
+                    title: '全渠道获客',
+                    img: 'https://static.caimei365.com/app/img/supplier-login/server/01.png',
+                    content: [
+                        {
+                            text: '精准投放推广内容触达B端客户',
+                        },
+                        {
+                            text: '精准识别全渠道匿名用户线索',
+                        }
+                    ]
+                },
+                {
+                    id: 2,
+                    title: '潜客运营',
+                    img: 'https://static.caimei365.com/app/img/supplier-login/server/02.png',
+                    content: [
+                        {
+                            text: '潜客筛选',
+                        },
+                        {
+                            text: '精细化分层运营',
+                        },
+                        {
+                            text: '精准推送内容'
+                        }
+                    ]
+                },
+                {
+                    id: 3,
+                    title: '销售转化',
+                    img: 'https://static.caimei365.com/app/img/supplier-login/server/03.png',
+                    content: [
+                        {
+                            text: '全链条商机管理,用户线索流程清晰,高效流转'
+                        },
+                        {
+                            text: '全场景交易平台,线上线下一体化把握每一条商机'
+                        },
+                        {
+                            text: '全方位售后服务,延长客户生命周期、提高复购率'
+                        }
+                    ]
+                }
+            ]
+        }
+    },
+    methods: {
+        jumplink($event) {
+            if ($event.jumpAppLink) {
+                this.$api.navigateTo($event.jumpAppLink)
+            }
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+    .server {
+        background-color: #fff;
+    }
+swiper {
+    height: 360rpx;
+}
+.swiper-item {
+    height: 100%;
+    width: 100%;
+}
+.img {
+    width: 100%;
+    height: 100%;
+}
+.server_item {
+    width: 550rpx;
+    height: 610rpx;
+    box-sizing: border-box;
+    display: inline-flex;
+    flex-direction: column;
+    margin: 10rpx 20rpx;
+    align-items: center;
+    box-shadow: 0rpx 1rpx 16rpx 0rpx rgba(102, 102, 102, 0.3);
+    .card_title {
+        color: #333333;
+        font-size: 36rpx;
+        font-weight: 500;
+        margin-bottom: 20rpx;
+    }
+    .card_text {
+        color: #707070;
+        font-size: 24rpx;
+        margin-top: 10rpx;
+    }
+    .card_img {
+        width: 216rpx;
+        height: 216rpx;
+        margin: 80rpx 0 40rpx 0;
+    }
+}
+.scroll-view {
+    white-space: nowrap;
+    width: 100%;
+    box-sizing: border-box;
+    padding: 0 56rpx;
+    height: 640rpx;
+}
+</style>

+ 109 - 0
pages/login/components/menuTopDropdown.vue

@@ -0,0 +1,109 @@
+<template>
+	<view>
+		<view
+			class="dropdown dropdown-box"
+			:class="[show ? 'dropdown-show' : '']"
+			:style="{
+				height: height ? px(height) : 'auto',
+				backgroundColor: backgroundColor,
+				paddingBottom: px(paddingbtm),
+				transform: 'translateZ(0) translateY(' + (show ? px(translatey) : '-100%') + ')'
+			}"
+		>
+			<slot></slot>
+		</view>
+		<view @touchmove.stop.prevent class="dropdown-mask" :style="{top: px(maskTop)}" :class="[mask && show ? 'mask-show' : '']" @tap="handleClose"></view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'TopDropdown',
+	props: {
+		//是否需要mask
+		mask: {
+			type: Boolean,
+			default: true
+		},
+		//控制显示
+		show: {
+			type: Boolean,
+			default: false
+		},
+		//背景颜色
+		backgroundColor: {
+			type: String,
+			default: '#fff'
+		},
+		//padding-bottom  rpx
+		paddingbtm: {
+			type: Number,
+			default: 0
+		},
+		//高度 rpx
+		height: {
+			type: Number,
+			default: 580
+		},
+		//移动距离 需要计算
+		translatey: {
+			type: Number,
+			default: 0
+		},
+        // mask 的位置
+        maskTop: {
+            type: Number,
+            default: 0
+        }
+	},
+	methods: {
+		handleClose() {
+			if (!this.show) {
+				return
+			}
+			this.$emit('close', {})
+		},
+		px(num) {
+			return uni.upx2px(num) + 'px'
+		}
+	}
+}
+</script>
+
+<style scoped lang="scss">
+.dropdown-box {
+	width: 100%;
+	position: fixed;
+	box-sizing: border-box;
+	border-bottom-right-radius: 24rpx;
+	border-bottom-left-radius: 24rpx;
+	transform: translateZ(0);
+	overflow: hidden;
+	/* visibility: hidden; */
+	transition: all 0.3s ease-in-out;
+	z-index: 996;
+	top: 0;
+    left: 0;
+}
+
+.dropdown-show {
+	/* visibility: visible; */
+}
+
+.dropdown-mask {
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background-color: rgba(0, 0, 0, 0.6);
+	z-index: 986;
+	transition: all 0.3s ease-in-out;
+	opacity: 0;
+	visibility: hidden;
+}
+
+.mask-show {
+	opacity: 1;
+	visibility: visible;
+}
+</style>

+ 440 - 0
pages/login/components/multiple-select/multiple-select.vue

@@ -0,0 +1,440 @@
+<template>
+    <view class="uni-select-cy" :style="{ 'z-index': zindex }">
+        <view class="uni-select-cy-select" :class="{ active: active }" @click.stop="handleSelect">
+            <!-- 禁用mask -->
+            <view class="uni-disabled" v-if="disabled"></view>
+            <!-- 清空 -->
+            <view class="close-icon close-postion" v-if="realValue.length && !active && !disabled && showClearIcon">
+                <text @click.stop="handleRemove(null)"></text>
+            </view>
+            <!-- 显示框 -->
+            <view
+                class="uni-select-multiple"
+                v-show="realValue.length"
+                :style="{ display: realValue.length == 0 && showplaceholder ? 'none' : 'flex' }"
+            >
+                <view class="uni-select-multiple-item" v-for="(item, index) in realValue" :key="index">
+                    <view class="uni-select-multiple-item-row">{{ item }}</view>
+                    <view class="close-icon" v-if="showValueClear">
+                        <text @click.stop="handleRemove(index)"></text>
+                    </view>
+                </view>
+            </view>
+            <!-- 为空时的显示文案 -->
+            <view v-if="realValue.length == 0 && showplaceholder">{{ placeholder }}</view>
+            <!-- 禁用图标 -->
+            <view class="uni-select-cy-icon" :class="{ disabled: disabled }"><text></text></view>
+        </view>
+        <!-- 下拉选项 -->
+        <scroll-view ref="scrollRef" class="uni-select-cy-options" :scroll-y="true" v-show="active" @scrolltolower="scrolltolower">
+            <template>
+                <view
+                    class="uni-select-cy-item"
+                    :class="{ active: realValue.includes(item[svalue]) }"
+                    v-for="(item, index) in options"
+                    :key="index"
+                    @click.stop="handleChange(index, item)"
+                >
+                    <view class="check-icon"></view>
+                    <view class="check-title">{{ item[slabel] }}</view>
+                </view>
+                <view class="select-contain">
+                    <button class="select-contain-btn" @click="active = false">确定</button>
+                </view>
+            </template>
+        </scroll-view>
+    </view>
+</template>
+
+<script>
+export default {
+    name: 'select-cy',
+    props: {
+        //是否显示全部清空按钮
+        showClearIcon: {
+            type: Boolean,
+            default: false
+        },
+        //是否显示单个删除
+        showValueClear: {
+            type: Boolean,
+            default: true
+        },
+        zindex: {
+            type: Number,
+            default: 999
+        },
+        //禁用组件
+        disabled: {
+            type: Boolean,
+            default: false
+        },
+        options: {
+            type: Array,
+            default() {
+                return []
+            }
+        },
+        value: {
+            type: Array,
+            default() {
+                return []
+            }
+        },
+        placeholder: {
+            type: String,
+            default: '请选择'
+        },
+        showplaceholder: {
+            type: Boolean,
+            default: true
+        },
+        slabel: {
+            type: String,
+            default: 'label'
+        },
+        svalue: {
+            type: String,
+            default: 'value'
+        },
+        // 是否开启分页
+        isPaging: {
+            type: Boolean,
+            default: false
+        },
+    },
+    data() {
+        return {
+            active: false, //组件是否激活,
+            changevalue: [], //搜索框同步
+            realValue: [],
+        }
+    },
+    watch: {
+        value: {
+            handler(val) {
+                console.log('value', val)
+                //初始化
+                this.init()
+            },
+            deep: true,
+        }
+    },
+    mounted() {
+        this.init()
+    },
+    methods: {
+        close() {
+            this.active = false
+        },
+        init() {
+            if (this.value.length > 0) {
+                const dataList = this.value.map(i => i.value)
+                this.changevalue = this.options.map(item => {
+                    if (item.value.includes(dataList)) {
+                        return item.value
+                    }
+                })
+                this.realValue = dataList
+            } else {
+                this.changevalue = []
+                this.realValue = []
+            }
+        },
+        scrolltolower() {
+            if (this.isPaging) {
+                this.$emit('scrolltolower')
+            }
+        },
+        //点击展示选项
+        handleSelect() {
+            if (this.disabled) return
+            this.active = !this.active
+        },
+        //移除数据
+        handleRemove(index) {
+            if (index === null) {
+                this.realValue = []
+                this.changevalue = []
+            } else {
+                this.realValue.splice(index, 1)
+                this.changevalue.splice(index, 1)
+            }
+            this.$emit('change', this.changevalue, this.realValue)
+        },
+        //点击组件列
+        handleChange(index, item) {
+            let arrIndex = this.realValue.indexOf(item[this.svalue])
+            if (arrIndex > -1) {
+                this.changevalue.splice(arrIndex, 1)
+                this.realValue.splice(arrIndex, 1)
+            } else {
+                this.changevalue.push(item)
+                this.realValue.push(item[this.svalue])
+            }
+            this.$emit('change', this.realValue)
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.uni-select-cy {
+	position: relative;
+	z-index: 999;
+
+	.uni-select-mask {
+		width: 100%;
+		height: 100%;
+	}
+
+	/* 删除按钮样式*/
+	.close-icon {
+		height: 100%;
+		width: 15px;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		z-index: 3;
+		cursor: pointer;
+
+		text {
+			position: relative;
+			background: #fff;
+			width: 13px;
+			height: 13px;
+			border-radius: 50%;
+			border: 1px solid #bbb;
+
+			&::before,
+			&::after {
+				content: "";
+				position: absolute;
+				left: 20%;
+				top: 50%;
+				height: 1px;
+				width: 60%;
+				transform: rotate(45deg);
+				background-color: #bbb;
+			}
+
+			&::after {
+				transform: rotate(-45deg);
+			}
+
+		}
+	}
+
+	//所有清空的定位
+	.close-postion {
+		position: absolute;
+		right: 35px;
+		top: 0;
+		height: 100%;
+		width: 15px;
+	}
+
+	/* 多选盒子 */
+	.uni-select-multiple {
+		overflow-x: auto;
+		display: flex;
+		flex: 1;
+		width: 0;
+		flex-wrap: nowrap;
+		.uni-select-multiple-item {
+			// background: #bbb;
+			margin-right: 5rpx;
+			padding: 2rpx 4rpx;
+			border-radius: 4rpx;
+			color: #333333;
+			display: flex;
+			flex: 0 0 140rpx;
+
+			.uni-select-multiple-item-row{
+				flex: 1;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+			}
+		}
+	}
+
+	// select部分
+	.uni-select-cy-select {
+		user-select: none;
+		position: relative;
+		z-index: 3;
+		min-height: 90rpx;
+		padding: 0 60rpx 0 20rpx;
+		box-sizing: border-box;
+		border-radius: 4px;
+		border: 1rpx solid #cccccc;
+		display: flex;
+		align-items: center;
+		font-size: 14px;
+		color: #999;
+		flex-wrap: nowrap;
+		.uni-disabled {
+			position: absolute;
+			left: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 19;
+			cursor: no-drop;
+			background: rgba(255, 255, 255, .5);
+		}
+
+
+		.uni-select-cy-input {
+			font-size: 28rpx;
+			color: #999;
+			display: block;
+			width: 96%;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			white-space: nowrap;
+			line-height: 30px;
+			box-sizing: border-box;
+
+			&.active {
+				color: #333;
+			}
+
+		}
+
+		.uni-select-cy-icon {
+			cursor: pointer;
+			position: absolute;
+			right: 0;
+			top: 0;
+			height: 100%;
+			width: 30px;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			&::before {
+				content: "";
+				width: 1px;
+				height: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				// background-color: #e5e5e5;
+			}
+
+			text {
+				display: block;
+				// width: 0;
+				// height: 0;
+				// border-width: 12rpx 12rpx 0;
+				// border-style: solid;
+				// border-color: #bbb transparent transparent;
+				transition: .3s;
+			}
+            text::after {
+                content: '\276F';
+            }
+			&.disabled {
+				cursor: no-drop;
+
+				text {
+					width: 20rpx;
+					height: 20rpx;
+					border: 2px solid #ff0000;
+					border-radius: 50%;
+					transition: .2s;
+					position: relative;
+					z-index: 999;
+
+					&::after {
+						content: "";
+						position: absolute;
+						top: 50%;
+						left: 0;
+						width: 100%;
+						height: 2px;
+						margin-top: -1px;
+						background-color: #ff0000;
+						transform: rotate(45deg);
+
+					}
+				}
+			}
+		}
+
+		&.active .uni-select-cy-icon {
+			text {
+				transform: rotate(90deg);
+			}
+		}
+	}
+
+	// options部分
+	.uni-select-cy-options {
+		user-select: none;
+		position: absolute;
+		top: calc(100% + 5px);
+		left: 0;
+		width: 100%;
+		height: 400rpx;
+		border-radius: 4px;
+		border: 1rpx solid #cccccc;
+		background: #fff;
+		padding: 33rpx 24rpx;
+		box-sizing: border-box;
+		z-index: 9;
+
+		.uni-select-cy-item {
+			box-sizing: border-box;
+			cursor: pointer;
+			// line-height: 2.5;
+            margin-bottom: 25rpx;
+			transition: .3s;
+			font-size: 26rpx;
+            color: #333333;
+            display: flex;
+            justify-content: space-between;
+            .check-icon {
+                width: 24rpx;
+                height: 24rpx;
+                border: 1px solid #CCCCCC;
+                margin-top: 6rpx;
+            }
+            .check-title {
+                width: 395rpx;
+            }
+			&.active {
+                .check-icon {
+                    width: 36rpx;
+                    height: 36rpx;
+                    border: none;
+                    background: url(https://static.caimei365.com/app/img/icon/icon-checked.png) center;
+                    background-size: contain;
+                    margin-top: 0;
+                    border: none;
+                }
+				// background-color: #f5f7fa &:hover {
+				// 	background-color: #f5f7fa
+				// }
+			}
+			// &:hover {
+			// 	background-color: #f5f5f5;
+			// }
+		}
+        .select-contain {
+            padding: 20rpx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            .select-contain-btn {
+                width: 210rpx;
+                height: 60rpx;
+                background: #FF5B00;
+                color: #fff;
+                line-height: 60rpx;
+            }
+        }
+	}
+}
+</style>

+ 176 - 0
pages/login/components/scenarioMarketing.vue

@@ -0,0 +1,176 @@
+<template>
+    <view class="scenariomarketing">
+        <slot name="supplier-title"></slot>
+        <view class="scenario-container">
+            <view class="scenario-item" v-for="item in filterScenarioList" :key="item.id">
+                <view class="scenario-title">{{item.title}}</view>
+                <view class="scenario-contant">{{item.contant}}</view>
+                <image class="scenario-img" :src="item.url" mode=""></image>
+            </view>
+            <view class="more" v-if="filterScenarioList.length < 10" @click="() => {filterScenarioList = ScenarioList}">
+                展开查看更多
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            ScenarioList: [
+                {
+                    id: 1,
+                    title: '信息平台',
+                    contant: '集创作、发布、客户资源收集于一体的美业内容输出平台;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/01.png'
+                },
+                {
+                    id: 2,
+                    title: '媒体矩阵',
+                    contant: '丰富媒体资源,助力品牌快速传播;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/02.png'
+                },
+                {
+                    id: 3,
+                    title: '正版图库',
+                    contant: '永久商业授权的专业医美正版图库;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/03.png'
+                },
+                {
+                    id: 4,
+                    title: 'SEO关键词',
+                    contant: '立足企业全局,进行关键词策划布局;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/04.png'
+                },
+                {
+                    id: 5,
+                    title: 'CRM系统',
+                    contant: '客户全生命周期数字化管理系统;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/05.png'
+                },
+                {
+                    id: 6,
+                    title: '认证通',
+                    contant: '一款专业的正品认证SaaS软件系统;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/06.png'
+                },
+                {
+                    id: 7,
+                    title: '美业社群',
+                    contant: '更紧密的联动用户,提高客户转化率;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/07.png'
+                },
+                {
+                    id: 8,
+                    title: '私域直播',
+                    contant: 'B2B企业直播平台,一键开启直播引流;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/08.png'
+                },
+                {
+                    id: 9,
+                    title: '分销体系',
+                    contant: '降低管理成本,提升经营效率;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/09.png'
+                },
+                {
+                    id: 10,
+                    title: '会议营销',
+                    contant: '以客户体验为导向,促进现场商机转化成交;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/10.png'
+                },
+                {
+                    id: 11,
+                    title: '金融分期',
+                    contant: '缓解客户现金流压力,促进大额交易;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/11.png'
+                },
+                {
+                    id: 12,
+                    title: '交易商城',
+                    contant: '一站式管理客户资源,支持1V1线上交易;',
+                    url: 'https://static.caimei365.com/app/img/supplier-login/scenariomarket/12.png'
+                }
+            ],
+            // 截取的H5列表
+            filterScenarioList: []
+        }
+    },
+    mounted() {
+        this.filterScenarioList = this.ScenarioList.filter(e => e.id <= 6)
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.scenariomarketing {
+    padding: 1px;
+    box-sizing: border-box;
+    background-color: #f7f7f7;
+}
+.scenario-container {
+    padding: 0 70rpx 62rpx 70rpx;
+    display: grid;
+    grid-template-columns: repeat(2, 1fr);
+    width: 610rpx;
+    .more {
+        grid-column: 1 / span 2;
+        justify-content: center;
+        align-items: center;
+        background-color: #fff;
+        border: 0.5px solid #f0f0f0;
+        font-size: 28rpx;
+        color: #999999;
+        height: 158rpx;
+        display: flex;
+        position: relative;
+    }
+    .more::before {
+        content: '';
+        position: absolute;
+        width: 15rpx;
+        height: 15rpx;
+        right: 180rpx;
+        top: 72rpx;
+        border-bottom: 1px solid;
+        border-right: 1px solid;
+        transform: rotate(45deg);
+    }
+    .more::after {
+        content: '';
+        position: absolute;
+        width: 15rpx;
+        height: 15rpx;
+        right: 180rpx;
+        top: 62rpx;
+        border-bottom: 1px solid;
+        border-right: 1px solid;
+        transform: rotate(45deg);
+    }
+    .scenario-item {
+        height: 447rpx;
+        border: 0.5rpx solid #f0f0f0;
+        background-color: #fff;
+        box-sizing: border-box;
+        padding: 57rpx 40rpx 0 40rpx;
+        position: relative;
+        .scenario-title {
+            color: #202020;
+            font-size: 36rpx;
+        }
+        .scenario-contant {
+            color: #666666;
+            font-size: 24rpx;
+            line-height: 36rpx;
+            margin-top: 28rpx;
+        }
+        .scenario-img {
+            position: absolute;
+            right: 49rpx;
+            bottom: 40rpx;
+            width: 118rpx;
+            height: 118rpx;
+        }
+    }
+}
+</style>

+ 445 - 0
pages/login/components/solution.vue

@@ -0,0 +1,445 @@
+<template>
+    <view
+        class="solution"
+        :style="{
+            background: 'url(' + bgImg + ')',
+            'background-repeat': 'no-repeat',
+            'background-size': '100% 100%'
+        }"
+        @click.stop="activeSelect"
+    >
+        <slot name="supplier-title"></slot>
+        <view class="solution_container">
+            <view class="solution_item" v-for="(item, index) in solutionList" :key="item.id">
+                <view
+                    class="solution_item_bg"
+                    :style="{
+                        background: 'url(' + item.bgImg + ')',
+                        'background-repeat': 'no-repeat',
+                        'background-size': '100%'
+                    }"
+                >
+                    {{ item.title }}
+                </view>
+                <view class="solution_item_container">
+                    <view class="solution_text" v-for="(text, index) in item.content" :key="index">
+                        {{ text.text }}
+                    </view>
+                    <button type="default" class="solution_btn" @click="openMadel(item.title, `${index+1}`)">查看解决方案</button>
+                </view>
+            </view>
+        </view>
+        <tui-modal :show.sync="modal" custom maskClosable color="#333" :size="32">
+            <view class="tui-modal-custom">
+                <image class="tui-logo" src="https://static.caimei365.com/app/img/icon/supplier-h5.png" mode=""></image>
+                <view class="tui-close" @click="close"></view>
+                <view class="title_1">{{ solutionTitle }}</view>
+                <view class="title_2">请完成以下信息并提交,1-3个工作日会有专人与您沟通!</view>
+                <form>
+                    <input class="uni-input" v-model="solutionForm.userName" placeholder="请输入姓名" />
+                    <input class="uni-input" v-model="solutionForm.corporateName" placeholder="请输入公司名称" />
+                    <input class="uni-input" v-model="solutionForm.mobile" type="number" maxlength="11" placeholder="请输入您的手机号" />
+                    <multiple-select
+                        placeholder="请选择您感兴趣的问题"
+                        :value="solutionForm.list"
+                        name="name"
+                        :options="selectMultiplecolumns"
+                        @change="selectitem"
+                        :showValueClear="false"
+                        ref='select'
+                    />
+                </form>
+                <button
+                    :class="isTrue ? 'isTrue' : ''"
+                    height="72rpx"
+                    class="solution_btn"
+                    :size="28"
+                    shape="circle"
+                    @click="formSubmit"
+                >
+                    提交
+                </button>
+            </view>
+        </tui-modal>
+    </view>
+</template>
+
+<script>
+import multipleSelect from './multiple-select/multiple-select.vue'
+import {mapState} from 'vuex'
+export default {
+    components: {
+        multipleSelect
+    },
+    props: {
+        isShareTimeline: { // 是否从朋友圈分享进入
+            type: Boolean,
+            default: () => false
+        }
+    },
+    data() {
+        return {
+            bgImg: 'https://static.caimei365.com/app/img/supplier-login/solution/bg.png',
+            // 解决方案内容
+            solutionList: [
+                {
+                    id: 1,
+                    title: '基础版',
+                    bgImg: 'https://static.caimei365.com/app/img/supplier-login/solution/01.png',
+                    content: [
+                        {
+                            text: '品牌商城入驻'
+                        },
+                        {
+                            text: '品牌内容宣发'
+                        },
+                        {
+                            text: '用户画像洞察'
+                        },
+                        {
+                            text: '客户旅程搭建'
+                        },
+                        {
+                            text: '客户线索跟踪'
+                        },
+                        {
+                            text: '线索转化'
+                        }
+                    ]
+                },
+                {
+                    id: 2,
+                    title: '高级版',
+                    bgImg: 'https://static.caimei365.com/app/img/supplier-login/solution/02.png',
+                    content: [
+                        {
+                            text: '基础版全部内容'
+                        },
+                        {
+                            text: '引流关键词策划和布局'
+                        },
+                        {
+                            text: '漏斗模型转化率评估'
+                        },
+                        {
+                            text: '数字营销内容策划'
+                        },
+                        {
+                            text: '客户线索跟踪'
+                        },
+                        {
+                            text: '线索转化'
+                        }
+                    ]
+                },
+                {
+                    id: 3,
+                    title: '战略版',
+                    bgImg: 'https://static.caimei365.com/app/img/supplier-login/solution/03.png',
+                    content: [
+                        {
+                            text: '高级版全部内容'
+                        },
+                        {
+                            text: '设置销售目标'
+                        },
+                        {
+                            text: '数据模型策划和执行'
+                        },
+                        {
+                            text: '品牌私域运营及正品认证通'
+                        },
+                        {
+                            text: '开放平台全域销售系统'
+                        },
+                        {
+                            text: '保证销售目标的执行'
+                        }
+                    ]
+                }
+            ],
+            modal: false,
+            btnStyle: [
+                {
+                    text: '确定',
+                    type: '',
+                    plain: false
+                }
+            ],
+            solutionTitle: '基础版', // 表单标题
+            isTrue: false,
+            solutionForm: {
+                // 解决方案表单
+                userName: '',
+                corporateName: '',
+                mobile: '',
+                level: '',
+                list: []
+            },
+            // 多选框配置
+            selectMultiplecolumns: [
+                {
+                    label: '商城入驻(商品SKU管理、订单交易管理)',
+                    value: '商城入驻(商品SKU管理、订单交易管理)'
+                },
+                {
+                    label: '正品认证(仪器授权认证、购机客户管理、品牌运营)',
+                    value: '正品认证(仪器授权认证、购机客户管理、品牌运营)'
+                },
+                {
+                    label: '销售赋能(降低管理成本,提升运营效果)',
+                    value: '销售赋能(降低管理成本,提升运营效果)'
+                },
+                {
+                    label: '营销获客(全渠道媒体矩阵、压缩获客成本,提高获客数/质量)',
+                    value: '营销获客(全渠道媒体矩阵、压缩获客成本,提高获客数/质量)'
+                },
+                {
+                    label: '私域运营(美业社群/美业直播、提高客户转化率)',
+                    value: '私域运营(美业社群/美业直播、提高客户转化率)'
+                },
+                {
+                    label: '客户管理(客户360“画像、客户旅程、客户行为轨迹等数据)',
+                    value: '客户管理(客户360“画像、客户旅程、客户行为轨迹等数据)'
+                },
+                {
+                    label: '其他',
+                    value: '其他'
+                }
+            ] ,//数据
+            selectMultipleData: [], // 数据
+        }
+    },
+    computed: {
+        ...mapState(['userInfo'])
+    },
+    watch: {
+        solutionForm: {
+            handler(val) {
+                const a = []
+                const v = Object.values(val)
+                v.map((i,o) => {
+                    if (!Array.isArray(i)) {
+                        if (i.length > 0) {
+                            a.push(true)
+                        } else {
+                            a.push(false)
+                        }
+                    }
+                })
+                if (a.findIndex(e => e === false) == -1) {
+                    this.isTrue = true
+                } else {
+                    this.isTrue = false
+                }
+            },
+            deep: true
+        },
+        modal(val) {
+            this.$emit('solutionModal', val)
+        },
+    },
+    methods: {
+        openMadel($event, id) {
+            if (this.isShareTimeline) return this.$util.msg('请前往小程序使用完整服务')
+            this.modal = true
+            this.solutionTitle = $event
+            this.solutionForm.level = id
+        },
+        // 重置
+        resetForm() {
+            this.solutionForm = {
+                // 解决方案表单
+                userName: '',
+                corporateName: '',
+                mobile: '',
+                level: '',
+                list: []
+            }
+            this.selectMultipleData = []
+            this.$refs['select'].changevalue = []
+            this.$refs['select'].changevalue = []
+        },
+        // change 改变form列表数据
+        formatterList() {
+            if (this.selectMultipleData.length > 0) {
+                const newArr = []
+                this.selectMultiplecolumns.forEach((i, index) => {
+                    this.selectMultipleData.forEach(o => {
+                        if(i.value == o) {
+                            newArr.push(index+1)
+                        }
+                    })
+                })
+                return newArr.toString()
+            } else return ''
+        },
+        // 提交
+        formSubmit() {
+            if (this.isTrue) {
+                this.isTrue = false
+                const form = {
+                    userId: this.userInfo.userId ||'',
+                    level: this.solutionForm.level,
+                    userName: this.solutionForm.userName,
+                    corporateName: this.solutionForm.corporateName,
+                    mobile: this.solutionForm.mobile,
+                    content: this.formatterList()
+                }
+                if(!/(^1[0-9][0-9]{9}$)/.test(form.mobile)){
+                	this.$util.msg('请输入正确的手机号码')
+                	return this.isTrue = true
+                }
+                this.UserService.supplierSearchUpdate(form).then(res => {
+                    uni.showToast({
+                        title: '提交成功',
+                        duration: 1000,
+                    })
+                    this.modal = false
+                    this.resetForm()
+                    setTimeout(() => {
+                        this.isTrue = true
+                    }, 1000)
+                })
+                console.log(form)
+            }
+        },
+        // 多选框确定
+        selectitem($event) {
+            this.selectMultipleData = $event
+        },
+        close() {
+            this.modal = false
+            this.$refs.select.active = false
+        },
+        // 下拉框取消选择
+        activeSelect() {
+            this.$refs.select.active = false
+        },
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.solution {
+    box-sizing: border-box;
+    padding: 1rpx;
+    margin-top: 120rpx;
+    .solution_container {
+        padding: 0 72rpx;
+        box-sizing: border-box;
+        .solution_item {
+            width: 606rpx;
+            height: 610rpx;
+            box-sizing: border-box;
+            display: flex;
+            margin-bottom: 60rpx;
+            .solution_item_bg {
+                display: flex;
+                align-items: center;
+                writing-mode: vertical-rl;
+                justify-content: center;
+                width: 140rpx;
+                font-size: 56rpx;
+                color: #ffffff;
+                font-weight: Bold;
+            }
+            .solution_item_container {
+                width: calc(100% - 140rpx);
+                height: 100%;
+                position: relative;
+                box-sizing: border-box;
+                padding: 63rpx 70rpx;
+                background-color: #fff;
+                .solution_text {
+                    font-size: 28rpx;
+                    color: #666666;
+                    line-height: 64rpx;
+                    position: relative;
+                    white-space: nowrap;
+                }
+                .solution_text::before {
+                    content: '';
+                    border: 1px solid #b2b2b2;
+                    width: 10rpx;
+                    height: 10rpx;
+                    position: absolute;
+                    left: -30rpx;
+                    top: 25rpx;
+                    transform: rotate(45deg);
+                }
+                .solution_btn {
+                    position: absolute;
+                    width: 220rpx;
+                    height: 72rpx;
+                    background: #ff5b00;
+                    border-radius: 4rpx;
+                    color: #fff;
+                    font-size: 28rpx;
+                    text-align: center;
+                    line-height: 72rpx;
+                    right: 40rpx;
+                    bottom: 48rpx;
+                }
+            }
+        }
+    }
+}
+.tui-modal-custom {
+    .tui-close {
+        width: 22rpx;
+        height: 22rpx;
+        position: absolute;
+        right: 32rpx;
+        top: 24rpx;
+        background: url(https://static.caimei365.com/app/img/supplier-login/modal-close.png) center;
+    }
+    .tui-logo {
+        width: 580rpx;
+        position: absolute;
+        z-index: -1;
+        top: 0;
+        left: 0;
+        width: 100%;
+        border-radius: 16rpx;
+    }
+    padding-top: 40rpx;
+    .title_1 {
+        font-size: 36rpx;
+        color: black;
+        text-align: center;
+        margin-bottom: 40rpx;
+        font-weight: bold;
+    }
+    .title_2 {
+        color: #666666;
+        font-size: 28rpx;
+        margin-bottom: 56rpx;
+        text-align: center;
+    }
+    .uni-input {
+        padding: 0 20rpx;
+        margin-bottom: 23rpx;
+        border: 1rpx solid #cccccc;
+        border-radius: 8rpx;
+        height: 90rpx;
+        box-sizing: border-box;
+        font-size: 28rpx;
+        font-weight: 100;
+    }
+    .solution_btn {
+        width: 320rpx;
+        height: 90rpx;
+        margin-top: 68rpx;
+        border-radius: 8rpx;
+        font-size: 28rpx;
+        text-align: center;
+        line-height: 90rpx;
+        background: #cccccc;
+        color: white;
+    }
+    .isTrue {
+        background: #ff5b00;
+    }
+}
+</style>

+ 131 - 0
pages/login/components/successCases.vue

@@ -0,0 +1,131 @@
+<template>
+    <view class="successCases">
+        <slot name="supplier-title"></slot>
+        <scroll-view scroll-x="true" class="scroll-view" @scroll="scrollX" :scroll-into-view="activeMenu" scroll-with-animation="true">
+            <view
+                class="swiper-item"
+                v-for="(item, index) in successList"
+                :key="item.id"
+                :id="`item${index}`"
+                :style="{ margin: item.id === 2 ? '40rpx' : '' }"
+                v-if="item.appStatus == '1'"
+            >
+                <view class="swiper-item-title">{{ item.title }}</view>
+                <view class="swiper-item-contant" v-html="item.content"></view>
+                <image :src="item.headAppBanner" mode="" class="swiper-item-img"></image>
+            </view>
+        </scroll-view>
+        <view class="scroll-dots">
+            <page-dots :pageAll="successList.length" :isActive="isSuccess" @hanlder-click="hanlderClick" />
+        </view>
+    </view>
+</template>
+
+<script>
+import PageDots from './swiper-dots.vue'
+export default {
+    props: {
+        successList: {
+            type: Array,
+            default: () => []
+        }
+    },
+    components: {
+        PageDots
+    },
+    data() {
+        return {
+            isSuccess: 0,
+            activeMenu: 'item0'
+        }
+    },
+    methods: {
+        scrollX($event) {
+            const data = Math.floor($event.detail.scrollLeft / 192)
+             this.isSuccess = data
+        },
+        hanlderClick($event) {
+            this.isSuccess = $event
+            this.activeMenu = `item${$event}`
+        },
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.successCases {
+    padding: 1px;
+    box-sizing: border-box;
+    background-color: #fff;
+    position: relative;
+}
+.scroll-view {
+    height: 1400rpx;
+    padding-left: 32rpx;
+    width: 100%;
+    box-sizing: border-box;
+    white-space: nowrap;
+    position: relative;
+    background-color: #fff;
+}
+.swiper-item {
+    width: 566rpx;
+    height: 1124rpx;
+    box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(102, 102, 102, 0.3);
+    background: #ffffff;
+    margin: 40rpx 0 40rpx 40rpx;
+    box-sizing: border-box;
+    padding: 50rpx;
+    overflow-wrap: break-word;
+    white-space: normal;
+    display: inline-flex;
+    flex-direction: column;
+    position: relative;
+    align-items: center;
+}
+.swiper-item-title {
+    color: #333333;
+    font-size: 32rpx;
+    font-weight: 600;
+    text-align: center;
+}
+.swiper-item-contant {
+    font-size: 24rpx;
+    color: #666666;
+    line-height: 48rpx;
+    overflow-wrap: break-word;
+    white-space: normal;
+    margin-top: 40rpx;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 14;
+    -webkit-box-orient: vertical;
+}
+.swiper-item-img {
+    width: 468rpx;
+    height: 274rpx;
+    position: absolute;
+    left: 48rpx;
+    bottom: 40rpx;
+}
+.scroll-dots {
+    position: absolute;
+    left: 50%;
+    bottom: 140rpx;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    transform: translateX(-50%);
+    .scroll-dot {
+        width: 12rpx;
+        height: 12rpx;
+        border-radius: 50%;
+        background-color: #FFBD99;
+        margin-right: 16rpx;
+    }
+}
+.isActive {
+    background: #ff5b00 !important;
+}
+</style>

+ 187 - 0
pages/login/components/supplier-loginMenu.vue

@@ -0,0 +1,187 @@
+<template>
+    <view>
+        <view class="login_menu">
+            <image class="logo" src="https://static.caimei365.com/app/img/supplier-login/logo_.png" mode="" @click="trampLink"></image>
+            <view class="menu_slide">
+                <scroll-view
+                    scroll-x="true"
+                    class="scroll-view"
+                    @scroll="scroll"
+                    :scroll-into-view="activeMenu"
+                    :scroll-with-animation="true"
+                >
+                    <view
+                        :id="'item' + item.id"
+                        class="scroll_menu"
+                        v-for="item in menuList"
+                        @click="handlerActiveLink(item)"
+                        :key="item.id"
+                    >
+                        {{ item.title }}
+                    </view>
+                </scroll-view>
+            </view>
+            <view class="check_menu" @click="scrollintoview">
+                <text class="cell-more iconfont icon-xiayibu" :class="actbtn ? 'act-btn' : ''"></text>
+            </view>
+        </view>
+        <MenuTopDropdown :show="dropdownShow" @close="closeTopDrop" translatey="100" height="260" maskTop="100">
+            <view class="menuList">
+                <button>全部目录</button>
+                <button
+                    type="default"
+                    class="menu-btn"
+                    :class="isActive === item.id ? 'isActive' : ''"
+                    v-for="item in menuList"
+                    :key="item.id"
+                    @click="handlerNavLink(item)"
+                >
+                    {{ item.title }}
+                </button>
+            </view>
+        </MenuTopDropdown>
+    </view>
+</template>
+
+<script>
+import MenuTopDropdown from './menuTopDropdown'
+export default {
+    components: {
+        MenuTopDropdown
+    },
+    props: {
+        menuList: {
+            type: Array,
+            default: () => []
+        }
+    },
+    data() {
+        return {
+            activeMenu: '', // 滚动id
+            dropdownShow: false,
+            isActive: 0, // 活动链接
+            actbtn: false
+        }
+    },
+    watch: {},
+    methods: {
+        // 滚动菜单
+        scroll($event) {
+            this.activeMenu = ''
+        },
+        scrollintoview() {
+            // this.activeMenu = 'item4'
+            this.dropdownShow = !this.dropdownShow
+            this.actbtn = !this.actbtn
+        },
+        closeTopDrop() {
+            this.dropdownShow = false
+            this.actbtn = false
+        },
+        handlerNavLink($event) {
+            this.isActive = $event.id
+            this.activeMenu = 'item' + $event.id
+            this.dropdownShow = false
+            this.actbtn = false
+            this.$emit('scrollPage', this.activeMenu)
+        },
+        handlerActiveLink($event) {
+            this.isActive = $event.id
+            this.activeMenu = 'item' + $event.id
+            this.$emit('scrollPage', this.activeMenu)
+        },
+        trampLink() {
+            uni.navigateTo({
+                url: '/pages/supplier/index/index'
+            })
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.login_menu {
+    width: 100%;
+    height: 100rpx;
+    background-color: #fff;
+    box-shadow: 0rpx 5rpx 14rpx 0rpx rgba(51, 51, 51, 0.12);
+    box-sizing: border-box;
+    padding: 26rpx 40rpx;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    position: fixed;
+    left: 0;
+    top: 0;
+    z-index: 999;
+}
+.logo {
+    width: 132rpx;
+    height: 48rpx;
+}
+.scroll-view {
+    white-space: nowrap;
+    width: 100%;
+}
+.menu_slide {
+    width: 530rpx;
+    box-sizing: border-box;
+    padding: 0 106rpx 0 40rpx;
+    .scroll_menu {
+        width: 150rpx;
+        font-size: 28rpx;
+        color: #333;
+        display: inline-block;
+        text-align: center;
+        box-sizing: border-box;
+        padding-left: 20rpx;
+    }
+}
+.check_menu {
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 148rpx;
+    height: 100rpx;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    box-sizing: border-box;
+    box-shadow: -10px 0px 10px 0 #fff;
+}
+.menuList {
+    width: 100%;
+    height: 100%;
+    background-color: #fff;
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    grid-template-rows: repeat(2, 1fr);
+    align-items: center;
+    padding: 20rpx 0;
+    box-sizing: border-box;
+}
+.menu-btn {
+    width: 148rpx;
+    height: 64rpx;
+    background: #f5f5f5;
+    border-radius: 32rpx;
+    font-size: 24rpx;
+    text-align: center;
+    color: #666666;
+    line-height: 64rpx;
+}
+.isActive {
+    border: 1px solid #ff5b00;
+    color: #ff5b00;
+    background: #fff;
+}
+.iconfont {
+    transition: 0.2s;
+}
+.icon-xiayibu {
+    transform: rotate(90deg);
+}
+.act-btn {
+    transform: rotate(270deg) !important;
+}
+</style>

+ 42 - 0
pages/login/components/supplier-title.vue

@@ -0,0 +1,42 @@
+<template>
+    <view>
+        <view class="title" :style="{color: titlecolor}">{{title}}</view>
+        <view class="subtitle" v-html="subtitle" :style="{color: subtitlecolor}"></view>
+    </view>
+</template>
+
+<script>
+    export default {
+        props: {
+            title: {
+                type: String,
+                default: () => ''
+            },
+            subtitle: {
+                type: String,
+                default: () => ''
+            },
+            titlecolor: {
+                type: String,
+                default: () => '#333333'
+            },
+            subtitlecolor: {
+                type: String,
+                default: () => '#707070'
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .title {
+        margin-top: 122rpx;
+        text-align: center;
+        font-size: 44rpx;
+    }
+    .subtitle {
+        margin: 20rpx 0 100rpx 0;
+        text-align: center;
+        font-size: 28rpx;
+    }
+</style>

+ 39 - 0
pages/login/components/swiper-dots.vue

@@ -0,0 +1,39 @@
+<template>
+    <view class="dots">
+        <view class="dot" v-for="item in pageAll" :key="item" :class="isActive === item ? 'active' : ''" @click="$emit('hanlderClick', item)"></view>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        pageAll: {
+            type: Number,
+            default: () => 0
+        },
+        isActive: {
+            type: Number,
+            default: () => 0
+        }
+    },
+}
+</script>
+
+<style scoped lang="scss">
+.dots {
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    .dot {
+        width: 12rpx;
+        height: 12rpx;
+        border-radius: 50%;
+        background: rgba(255, 91, 0, 0.4);
+        margin-right: 20rpx;
+    }
+}
+.active {
+    background: #FF5B00 !important;
+}
+</style>

+ 11 - 3
pages/login/login.vue

@@ -28,7 +28,8 @@
 				<view class="code-btn" @click.stop="handleMobileCode"> {{ mobileCodeText }} </view>
 			</view>
 			<view class="login-input link">
-				<view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register-select')">免费注册</view>
+				<view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register-supplier')" v-if="JSON.parse(getOption).state == '1'">免费注册</view>
+                <view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register')" v-else>免费注册</view>
 				<view class="login-pwd" @click.stop="handeleLogin(1)">密码登录</view>
 			</view>
 		</view>
@@ -57,7 +58,8 @@
 				/>
 			</view>
 			<view class="login-input link">
-				<view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register-select')">免费注册</view>
+				<view class="login-reg" v-if="JSON.parse(getOption).state == '1'" @click.stop="navigatorRegirst('/pages/login/register-supplier')">免费注册</view>
+                <view class="login-reg" v-else @click.stop="navigatorRegirst('/pages/login/register')">免费注册</view>
 				<view class="login-pwd" @click.stop="handeleLogin(0)">验证码登录</view>
 			</view>
 		</view>
@@ -92,7 +94,11 @@ export default {
 				unionId: ''
 			},
 			smsCodeParams: {
-				mobile: '' //用户登录手机号
+				mobile: '' ,//用户登录手机号
+				imgCode:'',
+				platformType:0,
+				isCheckCaptcha:1,
+				activateCodeType:7
 			},
 			loginType: 0,
 			isMobileDisabled: false, //手机验证码按钮控制
@@ -104,6 +110,7 @@ export default {
 	},
 	onLoad(option) {
 		this.getOption = JSON.stringify(option)
+        console.log(JSON.parse(this.getOption))
 	},
 	computed: {
 		...mapState(['hasLogin', 'isWxAuthorize', 'isLoginType'])
@@ -226,6 +233,7 @@ export default {
 					Um_Key_SourcePage: '登录页面'
 				})
 			}
+            console.log(url)
 			this.$api.navigateTo(url)
 		},
 		handeleLogin(type) {

+ 70 - 0
pages/login/supplier_information.vue

@@ -0,0 +1,70 @@
+<template>
+    <view>
+        <view class="supplier_login"><login-menu :menuList="menuList" @scrollPage="scrollPage" /></view>
+        <view class="artform" v-html="artForm"></view>
+    </view>
+</template>
+
+<script>
+import LoginMenu from './components/supplier-loginMenu.vue'
+export default {
+    components: {
+        LoginMenu
+    },
+    data() {
+        return {
+            menuList: [
+                {
+                    id: 0,
+                    title: '营销服务'
+                },
+                {
+                    id: 1,
+                    title: '解决方案'
+                },
+                {
+                    id: 2,
+                    title: '运营产品'
+                },
+                {
+                    id: 3,
+                    title: '营销工具'
+                },
+                {
+                    id: 4,
+                    title: '成功案例'
+                },
+                {
+                    id: 5,
+                    title: '关于采美'
+                },
+                {
+                    id: 6,
+                    title: '增长社区'
+                }
+            ],
+            activeMenu: '',
+            artForm: ''
+        }
+    },
+    mounted() {
+        this.artForm = uni.getStorageSync('artForm')
+    },
+    methods: {
+        // 滚动事件
+        scrollPage($event) {
+            this.activeMenu = $event
+            uni.navigateBack(1)
+            uni.$emit('changeLink', $event)
+        },
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.artform {
+    margin-top: 220rpx;
+    padding: 0 40rpx 40rpx 40rpx;
+    box-sizing: border-box;
+}
+</style>

+ 462 - 0
pages/login/supplier_login.vue

@@ -0,0 +1,462 @@
+<template>
+    <view>
+        <view class="supplier_login"><login-menu :menuList="menuList" @scrollPage="scrollPage" /></view>
+        <view class="container">
+            <scroll-view
+                class="scrollview"
+                @scroll="scrollView"
+                scroll-y="true"
+                :scroll-into-view="activeMenu"
+                :scroll-with-animation="true"
+            >
+                <view id="item0">
+                    <marke-service :bannersList="bannerList">
+                        <template #supplier-title>
+                            <supplier-title title="全生命周期陪跑服务" subtitle="采美,更专业的美业数字化营销服务" />
+                        </template>
+                    </marke-service>
+                </view>
+                <view id="item1">
+                    <Solution :isShareTimeline="isShareTimeline" @solutionModal="solutionModal">
+                        <template #supplier-title>
+                            <supplier-title title="解决方案" subtitle="满足企业全方位需求" />
+                        </template>
+                    </Solution>
+                </view>
+                <view id="item2">
+                    <basic-operation>
+                        <template #supplier-title>
+                            <supplier-title title="基础运营产品" subtitle="使企业走向数字化的基石" />
+                        </template>
+                    </basic-operation>
+                </view>
+                <view id="item3">
+                    <scenario-market>
+                        <template #supplier-title>
+                            <supplier-title title="场景营销工具" subtitle="多样化工具,全方位助力您的企业目标" />
+                        </template>
+                    </scenario-market>
+                </view>
+                <view id="item4">
+                    <success-cases :successList="successList">
+                        <template #supplier-title>
+                            <supplier-title
+                                title="成功案例"
+                                subtitle="了解已合作品牌的真实推广案例,借鉴成功经验<br />助力有效推广,实现商业目标"
+                            />
+                        </template>
+                    </success-cases>
+                </view>
+                <view id="item5">
+                    <caimei-about>
+                        <template #supplier-title>
+                            <supplier-title
+                                title="关于采美"
+                                subtitle="了解采美,合作共赢"
+                                titlecolor="#ffffff"
+                                subtitlecolor="#ffffff"
+                            />
+                        </template>
+                    </caimei-about>
+                </view>
+                <view id="item6">
+                    <growth-community @playVideo="playVideo" :videoList="videoList" :articelList="articelList">
+                        <template #supplier-title>
+                            <supplier-title title="增长社区" subtitle="数十年资深美业运营经验,教你快速成长" />
+                        </template>
+                    </growth-community>
+                </view>
+            </scroll-view>
+        </view>
+        <view class="supplier-slide" ref="supplierSlide" :style="{zIndex: isModalShow ? -1 : 20}">
+            <view class="user-cicle" @click="supplierLogin" v-if="!hasLogin || userInfo.userIdentity === 3">
+                <image
+                    style="width: 48rpx;height: 48rpx;"
+                    src="https://static.caimei365.com/app/img/supplier-login/userDefault_new.png"
+                    mode=""
+                ></image>
+                <view class="userLogin">{{ hasLogin ? userInfo.name : '登录/注册'}}</view>
+            </view>
+            <view class="slide">
+                <view
+                    class="slide-item"
+                    v-for="item in slideList"
+                    :key="item.id"
+                    v-if="item.isShow"
+                    @click="handlerChange(item)"
+                >
+                    <image class="slide-img" :src="item.slideBg" mode=""></image>
+                    <view class="slide-title">{{ item.title }}</view>
+                </view>
+            </view>
+        </view>
+        <tui-modal :show="show" custom @cancel="cancel">
+            <view class="tui-modal-custom">
+                <view class="tui-modal-custom-text">周一至周五 9:00~1800</view>
+                <view class="tui-modal-custom-phone" @click=";(modal = true), (show = false)">153-3889-7365</view>
+            </view>
+        </tui-modal>
+        <tui-modal :show="isPhone" class="qrcode" custom @cancel="cancel">
+            <view class="tui-modal-custom-qrcode">
+                <image
+                    style="width: 100%;height: 100%;"
+                    show-menu-by-longpress="true"
+                    src="https://static.caimei365.com/app/img/supplier-login/kefu_qr.jpg"
+                    mode=""
+                ></image>
+            </view>
+        </tui-modal>
+        <tui-modal :show="modal" custom @cancel="cancel">
+            <view class="tui-modal-custom-call">
+                <view class="tui-modal-custom-text">
+                    确定拨打
+                    <text style="color: #FF5B00;font-weight: bold;margin: 0 6rpx;">153-3889-7365</text>
+                    吗?
+                </view>
+                <view class="modal-btns">
+                    <tui-button
+                        class="cancel"
+                        type="black"
+                        @click="modal = false"
+                        height="72rpx"
+                        :size="28"
+                        plain
+                        shape="circle"
+                    >
+                        取消
+                    </tui-button>
+                    <tui-button
+                        class="determine"
+                        height="72rpx"
+                        :size="28"
+                        type="warning"
+                        shape="circle"
+                        @click="handleClick"
+                    >
+                        确定
+                    </tui-button>
+                </view>
+            </view>
+        </tui-modal>
+        <cm-video :show="showVideo" @closeClick="closeVideo" :videoObj="videoObj" />
+    </view>
+</template>
+
+<script>
+import LoginMenu from './components/supplier-loginMenu.vue'
+import MarkeService from './components/markeServices.vue'
+import SupplierTitle from './components/supplier-title.vue'
+import Solution from './components/solution.vue'
+import BasicOperation from './components/basicOperationsProducts.vue'
+import ScenarioMarket from './components/scenarioMarketing.vue'
+import SuccessCases from './components/successCases.vue'
+import CaimeiAbout from './components/caimei-about.vue'
+import GrowthCommunity from './components/growthCommunity.vue'
+import CmVideo from './components/caimei-video.vue'
+import { mapState } from 'vuex'
+export default {
+    components: {
+        LoginMenu,
+        MarkeService,
+        SupplierTitle,
+        Solution,
+        BasicOperation,
+        ScenarioMarket,
+        SuccessCases,
+        CaimeiAbout,
+        GrowthCommunity,
+        CmVideo
+    },
+    data() {
+        return {
+            menuList: [
+                {
+                    id: 0,
+                    title: '营销服务'
+                },
+                {
+                    id: 1,
+                    title: '解决方案'
+                },
+                {
+                    id: 2,
+                    title: '运营产品'
+                },
+                {
+                    id: 3,
+                    title: '营销工具'
+                },
+                {
+                    id: 4,
+                    title: '成功案例'
+                },
+                {
+                    id: 5,
+                    title: '关于采美'
+                },
+                {
+                    id: 6,
+                    title: '增长社区'
+                }
+            ],
+            activeMenu: '', // 滚动到指定位置
+            show: false,
+            isPhone: false,
+            modal: false,
+            showVideo: false,
+            videoObj: {},
+            slideList: [
+                {
+                    id: 1,
+                    title: '电话联系',
+                    slideBg: 'https://static.caimei365.com/app/img/supplier-login/phone.png',
+                    isShow: true
+                },
+                {
+                    id: 2,
+                    title: '微信客服',
+                    slideBg: 'https://static.caimei365.com/app/img/supplier-login/qrcode.png',
+                    isShow: true
+                },
+                {
+                    id: 3,
+                    title: '',
+                    slideBg: 'https://static.caimei365.com/app/img/supplier-login/scrolltop.png',
+                    isShow: false
+                }
+            ],
+            successList: [],
+            videoList: [],
+            articelList: [],
+            bannerList: [],
+            isShareTimeline: false, // 是否从朋友圈分享
+            isModalShow: false,
+        }
+    },
+    computed: {
+        ...mapState(['hasLogin', 'userInfo'])
+    },
+    watch: {},
+    onLoad(options) {
+        // 是否从朋友圈分享进入
+        if (options.isShareTimeline) {
+            this.isShareTimeline = options.isShareTimeline
+        } 
+        // 点击链接
+        uni.$on('changeLink', e => {
+            setTimeout(() => {
+                this.activeMenu = e
+            }, 500)
+        })
+    },
+    mounted() {
+        this.getSupplierLanding()
+    },
+    onShareAppMessage(res) {
+        return {
+            title: '更专业的美业数字化营销服务',
+            path: '/pages/login/supplier_login'
+        }
+    },
+    // 分享朋友圈
+    onShareTimeline() {
+        return {
+            title: '更专业的美业数字化营销服务',
+            path: '/pages/login/supplier_login',
+            query: 'isShareTimeline=' + true
+        }
+    },
+    methods: {
+        // 滚动事件
+        scrollPage($event) {
+            this.activeMenu = $event
+        },
+        scrollView(e) {
+            this.activeMenu = ''
+            if (e.detail.scrollTop < 50) {
+                this.slideList[2].isShow = false
+            } else {
+                this.slideList[2].isShow = true
+            }
+        },
+        handlerChange(e) {
+            const obj = {
+                1: () => (this.show = true),
+                2: () => (this.isPhone = true),
+                3: () => (this.activeMenu = 'item0')
+            }
+            obj[e.id]()
+        },
+        hideAlert() {
+            this.show = false
+        },
+        // 拨打电话
+        handleClick() {
+            uni.makePhoneCall({
+                phoneNumber: '153-3889-7365' //仅为示例
+            })
+            this.modal = false
+        },
+        cancel() {
+            this.modal = false
+            this.show = false
+            this.isPhone = false
+        },
+        // 视频播放
+        playVideo($event) {
+            this.videoObj = $event
+            this.showVideo = true
+        },
+        // 视频关闭
+        closeVideo() {
+            this.showVideo = false
+        },
+        // supplierLogin 登陆
+        supplierLogin() {
+            if (this.hasLogin) {
+                uni.navigateTo({
+                    url: '/pages/supplier/user/supplier?shopId=' + this.userInfo.shopId
+                })
+            } else {
+                uni.navigateTo({
+                    url: '/pages/login/login?state=1'
+                })
+            }
+        },
+        // solutionModal 方案解决模块
+        solutionModal(val) {
+            this.isModalShow = val
+        },
+        async getSupplierLanding() {
+            try {
+                const { data } = await this.UserService.supplierLoading({ source: 2 })
+                this.bannerList = data.banner
+                this.successList = data.landing.filter(e => e.type == '1')
+                this.videoList = data.landing.filter(e => e.type == '2')
+                this.articelList = data.landing.filter(e => e.type == '3')
+            } catch (error) {
+                console.log(error)
+            }
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.container {
+    position: absolute;
+    bottom: 0;
+    height: auto;
+}
+.scrollview {
+    width: 100%;
+    height: calc(100vh - 120rpx);
+    background-color: #fff;
+    #item1 {
+        z-index: 20;
+    }
+}
+.supplier-slide {
+    position: fixed;
+    right: 40rpx;
+    box-sizing: border-box;
+    width: 100rpx;
+    bottom: 100rpx;
+    .user-cicle {
+        width: 100rpx;
+        height: 150rpx;
+        background: url(https://static.caimei365.com/app/img/supplier-login/userbg.png) center no-repeat;
+        border-radius: 36px;
+        margin-bottom: 40rpx;
+        box-shadow: 0rpx 6rpx 16rpx 0rpx rgba(51, 51, 51, 0.16);
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        flex-direction: column;
+        font-size: 18rpx;
+        color: white;
+        box-sizing: border-box;
+        padding: 34rpx 0;
+        .userLogin {
+            width: 100%;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            text-align: center;
+        }
+    }
+    .slide {
+        width: 100rpx;
+        overflow: hidden;
+        border-radius: 50rpx;
+        background-color: #ff5b00;
+        box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(255, 91, 0, 0.3);
+        .slide-img {
+            width: 45rpx;
+            height: 45rpx;
+        }
+        .slide-item {
+            height: 140rpx;
+            width: 100rpx;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            box-sizing: border-box;
+            padding-top: 30rpx;
+            border-bottom: 1rpx solid rgba(255, 255, 255, 0.3);
+            .slide-title {
+                margin-top: 10rpx;
+                font-size: 20rpx;
+                color: #fff;
+            }
+        }
+        .slide-item:nth-child(3) {
+            padding-top: 45rpx !important;
+        }
+    }
+}
+.tui-modal-custom {
+    padding: 30rpx 80rpx;
+}
+.tui-modal-custom-text {
+    text-align: center;
+    color: #666666;
+    font-size: 28rpx;
+}
+.tui-modal-custom-phone {
+    margin-top: 62rpx;
+    text-align: center;
+    color: #ff5b00;
+    border-bottom: 1px solid #ff5b00;
+    font-size: 40rpx;
+    font-weight: bold;
+}
+.tui-modal-custom-call {
+    font-size: 32rpx;
+    color: #666666;
+    padding-top: 50rpx;
+}
+.qrcode {
+    ::v-deep .tui-modal-box {
+        width: auto !important;
+        padding: 6rpx !important;
+        border-radius: 0 !important;
+    }
+    .tui-modal-custom-qrcode {
+        width: 412rpx;
+        height: 412rpx;
+    }
+}
+.modal-btns {
+    display: flex;
+    justify-content: space-between;
+    margin-top: 62rpx;
+    .cancel {
+        width: 200rpx !important;
+        color: #666666 !important;
+    }
+    .determine {
+        width: 200rpx !important;
+    }
+}
+</style>

+ 4 - 4
pages/notice/club/notice-order.vue

@@ -36,8 +36,8 @@
 					</tui-swipe-action>
 				</view>
 				<!--加载loadding-->
-				<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
+				<tui-loadmore :visible="loadding" :index="3" type="black" />
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText" />
 				<!--加载loadding-->
 			</view>
 		</view>
@@ -87,9 +87,9 @@ export default {
 				if (this.isOnliyPay(cell)) {
 					let payLinkMap = {
 						0: `/pages/user/order/order-pay-list?orderId=${cell.orderId}`,
-						1: `/pages/user/order/order-payunder?orderId=${cell.orderId}`
+						1: `/pages/user/order/order-pay-list?orderId=${cell.orderId}`
 					}
-					let linkJumpMap = { 1: payLinkMap[cell.onlinePayFlag] }
+					let linkJumpMap = { 1: `/pages/user/order/order-pay-list?orderId=${cell.orderId}` }
 					this.$api.navigateTo(linkJumpMap[cell.orderMessageType])
 				} else {
 					this.$util.msg('订单已完成支付', 2000)

+ 10 - 5
pages/search/search.vue

@@ -1040,17 +1040,22 @@ export default {
         choiceBrand(brand, index) {
             // 选择品牌
             brand.isChecked = !brand.isChecked
-            if (brand.isChecked) {
-                this.checkedBrandList.push(brand.id)
-            } else {
-                this.checkedBrandList.splice(index, 1)
-            }
+			if (brand.isChecked) {
+				if(!this.contains(this.checkedBrandList,brand.id)){
+					this.checkedBrandList.push(brand.id)
+				}
+			} else {
+				this.checkedBrandList.splice(this.checkedBrandList.indexOf(brand.id),1)
+			}
             this.isAllcheckedBrand = false
             this.checkedBrandLength = this.checkedBrandList.length
             console.log('checkedBrandList', this.checkedBrandList)
             this.listQuery.brandIds = this.checkedBrandList.join(',')
             console.log('this.listQuery.brandIds', this.listQuery.brandIds)
         },
+		contains(arr, val) {// 校验
+			return arr.some(item => item === val)
+		},
         choiceBrandAll() {
             // 点击选择全部品牌
             this.isAllcheckedBrand = true

+ 22 - 11
pages/seller/address/addressManage.vue

@@ -71,7 +71,8 @@
 					address: '',	//地址
 					defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
 				},
-				params:{}				//参数
+				params:{},//参数
+				isSelect:false
 			}
 		},
 		onLoad(option){
@@ -95,6 +96,9 @@
 					this.switchDefault = false
 				}
 			}
+			if (option.type == 'select') {
+				this.isSelect = true
+			}
 			uni.setNavigationBarTitle({
 				title
 			})
@@ -146,18 +150,25 @@
 					this.postAddressData(this.params)
 				}
 			},
-			postAddressData(params){
-				this.btnText(true)
-				this.UserService.AddressSave(params).then( response=>{
-					this.$util.msg('保存成功',1500,true,'success')
+			async postAddressData(params) {
+				try{
+					this.btnText(true)
+					const res = await this.UserService.AddressSave(params)
+					const data = res.data
+					this.$util.msg('保存成功', 1500, true, 'success')
 					this.btnText(false)
-					setTimeout(()=>{
-						uni.navigateBack()
-					},2000)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+					if(this.isSelect){
+						console.log('222222222222')
+						uni.setStorageSync('selectAddress', data)
+						let pages = getCurrentPages()
+						let prevPage = pages[pages.length - 2] //上一个页面
+						prevPage.setData({ select: 'select' })
+					}
+					uni.navigateBack()
+				}catch(error){
+					this.$util.msg(error.msg, 2000)
 					this.btnText(false)
-				})
+				}
 			},
 			btnText(flg){
 				if(flg){

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

@@ -380,8 +380,6 @@ export default {
 			this.submitIds = []
 			this.vipFlag = clubInfo.vipFlag ? clubInfo.vipFlag : 0
 			this.userIdentity = clubInfo.userIdentity ? clubInfo.userIdentity : 0
-			console.log('userIdentity', this.userIdentity)
-			console.log('vipFlag', this.vipFlag)
 			this.listQuery.clubId = clubInfo.clubId ? clubInfo.clubId : 0
 			this.listQuery.againBuyProductIds = clubInfo.againBuyProductIds ? clubInfo.againBuyProductIds : ''
 			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
@@ -503,7 +501,6 @@ export default {
 							newFailureList.push(Object.assign({}, failure, { isFailureLayer: isFailureLayer }))
 						})
 						this.failureList = newFailureList
-						console.log(this.failureList)
 					} else {
 						this.failureList = []
 					}
@@ -718,7 +715,6 @@ export default {
 					if (item.promotions.discount == 1) {
 						// 支持促销叠加条件的店铺满减 执行
 						prosDiscountNum = parseInt(prosPrice / item.promotions.touchPrice) // 店铺满减促销叠加次数 = 店铺合计价格/满减促销价格
-						console.log('店铺满减促销叠加通道叠加次数', `${prosDiscountNum}次`)
 						if (prosPrice >= item.promotions.touchPrice) {
 							// 满足店铺满减条件下执行
 							item.totalPrice = prosPrice - item.promotions.reducedPrice * prosDiscountNum
@@ -729,7 +725,6 @@ export default {
 							item.totalPrice = prosPrice
 						}
 					} else {
-						console.log('店铺满减非促销叠加通道')
 						if (prosPrice >= item.promotions.touchPrice) {
 							// 满足店铺满减条件下执行
 							item.totalPrice = prosPrice - item.promotions.reducedPrice
@@ -752,14 +747,12 @@ export default {
 						if (pros.promotions && pros.promotions.type != 2 && pros.promotions.mode == 2) {
 							if (pros.promotions.discount == 1) {
 								discountNum = parseInt(_price / pros.promotions.touchPrice)
-								console.log('单品满减促销叠加通道叠加次数', `${discountNum}次`)
 								if (_price >= pros.promotions.touchPrice) {
 									_price = _price - pros.promotions.reducedPrice * discountNum
 									_reducedPrice += pros.promotions.reducedPrice * discountNum
 								}
 								_totalPrice += _price
 							} else {
-								console.log('单品满减非促销叠加通道')
 								if (_price >= pros.promotions.touchPrice) {
 									_price = _price - pros.promotions.reducedPrice
 									_reducedPrice += pros.promotions.reducedPrice

+ 231 - 226
pages/seller/cart/components/immediatelyList.vue

@@ -3,248 +3,250 @@
 		class="container commodity-list-wrapper"
 		:style="{ overflow: showSkeleton ? 'hidden' : 'auto', height: showSkeleton ? windowHeight + 'px' : 'auto' }"
 	>
-		<view class="good-search clearfix" v-if="searchStatus">
-			<view class="nav-tab-bar u-f-ajc">
-				<block v-for="(tab, index) in tabBars" :key="tab.id" :class="{ current: tabIndex === index }">
-					<view class="tabstyle u-f-ajc" :class="{ addstyle: tabIndex == index }" @tap="changeTab(index)">
-						{{ tab.name }}<i v-if="tabIndex == index" class="nav-tab-line iconfont icon-gou"></i>
-					</view>
-				</block>
+		<list-skeleton :listType="0" v-if="showSkeleton" />
+		<template v-else>
+			<view class="good-search clearfix" v-if="searchStatus">
+				<view class="nav-tab-bar u-f-ajc">
+					<block v-for="(tab, index) in tabBars" :key="tab.id" :class="{ current: tabIndex === index }">
+						<view class="tabstyle u-f-ajc" :class="{ addstyle: tabIndex == index }" @tap="changeTab(index)">
+							{{ tab.name }}<i v-if="tabIndex == index" class="nav-tab-line iconfont icon-gou"></i>
+						</view>
+					</block>
+				</view>
+				<view class="search-from name">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input
+						class="input"
+						type="text"
+						:focus="isFocus"
+						confirm-type="search"
+						v-model="searchInputVal"
+						placeholder="请输入商品关键词"
+						@input="onShowClose"
+						@confirm="searchOpertor(tabIndex)"
+						maxlength="20"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
+				</view>
 			</view>
-			<view class="search-from name">
-				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
-				<input
-					class="input"
-					type="text"
-					:focus="isFocus"
-					confirm-type="search"
-					v-model="searchInputVal"
-					placeholder="请输入商品关键词"
-					@input="onShowClose"
-					@confirm="searchOpertor(tabIndex)"
-					maxlength="20"
-				/>
-				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
+			<view class="empty-container" v-if="isShowEmpty">
+				<image
+					class="empty-container-image"
+					src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
+				></image>
+				<text class="error-text">{{ isShowEmptyText }}</text>
 			</view>
-		</view>
-		<list-skeleton v-if="showSkeleton"></list-skeleton>
-		<view class="empty-container" v-if="isShowEmpty">
-			<image
-				class="empty-container-image"
-				src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
-			></image>
-			<text class="error-text">{{ isShowEmptyText }}</text>
-		</view>
-		<!-- 单一商品 -->
-		<view class="product-container" v-else>
-			<view :class="tabIndex" v-if="tabIndex === 0" :style="{ paddingTop: searchStatus ? '128rpx' : '' }">
-				<scroll-view
-					:style="{ height: scrollHeight + 'px' }"
-					@scrolltolower="scrolltolower(tabIndex)"
-					scroll-y
-					v-if="listData.length > 0"
-				>
-					<view
-						v-for="(pros, index) in listData"
-						:key="index"
-						:id="pros.productId"
-						class="all-type-list-content commodity-list"
-						@click.stop="navToDetailPage(pros.productId)"
+			<!-- 单一商品 -->
+			<view class="product-container" v-else>
+				<view :class="tabIndex" v-if="tabIndex === 0" :style="{ paddingTop: searchStatus ? '128rpx' : '' }">
+					<scroll-view
+						:style="{ height: scrollHeight + 'px' }"
+						@scrolltolower="scrolltolower(tabIndex)"
+						scroll-y
+						v-if="listData.length > 0"
 					>
-						<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>
-							<text class="list-details-miniQuantity list-details-specs"
-								>起订量:{{ pros.minBuyNumber }}</text
-							>
-							<view class="list-details-specs" v-if="pros.code != '' && pros.code != null">
-								<view>商品编码:{{ pros.code }}</view>
-							</view>
-							<view class="list-details-price">
-								<template v-if="priceLoading">
-									<view class="list-price-loding">正在获取价格...</view>
-								</template>
-								<template v-else>
-									<view class="list-shop">
-										<view class="list-price">
-											<text
-												class="price-larger"
-												:class="
-													PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
-														? 'none'
-														: ''
-												"
-											>
-												¥{{
-													(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
-														? pros.originalPrice
-														: pros.price) | NumFormat
-												}}
-											</text>
-										</view>
-									</view>
-									<button class="add-cart-btn" @click.stop="operationHanld(pros)">数量</button>
-								</template>
-							</view>
-							<view class="list-details-price">
-								<view class="floor-item-act">
-									<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
-									<template v-if="pros.actStatus == 1">
-										<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
-											{{ pros.promotions.name }}<text>:¥{{ pros.price | NumFormat }}</text>
-										</view>
-										<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
-									</template>
-									<template v-if="pros.svipProductFlag == 1">
-										<view class="svip-tags">
-											<view class="tags">SVIP</view>
-											<view class="price">{{ pros.svipPriceTag }}</view>
-										</view>
-									</template>
-								</view>
-							</view>
-						</view>
-					</view>
-					<view v-if="showLoading && listData.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
-							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
-						>
-						<view class="loading-wrapper loading-wrapper-btm" v-else
-							>———<text class="btm-text">已至底部</text>———</view
-						>
-					</view>
-				</scroll-view>
-			</view>
-			<!-- 组合商品 -->
-			<view :class="tabIndex" v-if="tabIndex === 1">
-				<scroll-view
-					:style="{ height: scrollHeight + 'px', paddingTop: searchStatus ? '112rpx' : '' }"
-					@scrolltolower="scrolltolower(tabIndex)"
-					scroll-y
-				>
-					<view class="all-zuhe-list" v-for="(item, index) in combinationProduct" :key="index" :id="item.id">
-						<view class="zuhe_title" :class="index % 2 == 0 ? 'active' : ''">{{ item.name }}</view>
 						<view
-							v-for="(pros, proIndex) in item.combinationProductList"
-							:class="index % 2 == 0 ? 'stylecontent' : ''"
-							:key="proIndex"
+							v-for="(pros, index) in listData"
+							:key="index"
 							:id="pros.productId"
-							class="zuhe-list-content commodity-list"
+							class="all-type-list-content commodity-list"
+							@click.stop="navToDetailPage(pros.productId)"
 						>
+							<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 zuhe_list_text">商品编码:{{ pros.code }}</text>
-								<text
-									class="list-details-specs zuhe_list_text"
-									@click.stop="navToDetailPage(pros.productId)"
-									>{{ pros.name }}</text
+								<text class="list-details-title">{{ isInterceptHtmlFn(pros.name) }}</text>
+								<text class="list-details-specs">规格:{{ pros.unit ? pros.unit : '' }}</text>
+								<text class="list-details-miniQuantity list-details-specs"
+									>起订量:{{ pros.minBuyNumber }}</text
 								>
-								<view class="list-details-price zuhe_list_price">
-									<view class="list-shop com">
-										<view class="list-price zuhe_list_price">
-											<view class="zuhe_price-larger zuhe_list_text">
-												<text class="price-larger">规格:{{ pros.unit }}</text>
+								<view class="list-details-specs" v-if="pros.code != '' && pros.code != null">
+									<view>商品编码:{{ pros.code }}</view>
+								</view>
+								<view class="list-details-price">
+									<template v-if="priceLoading">
+										<view class="list-price-loding">正在获取价格...</view>
+									</template>
+									<template v-else>
+										<view class="list-shop">
+											<view class="list-price">
 												<text
-													class="price-btn"
-													@click.stop="handleShowUnitPopup(pros, proIndex)"
-													>重选</text
+													class="price-larger"
+													:class="
+														PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? 'none'
+															: ''
+													"
 												>
+													¥{{
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? pros.originalPrice
+															: pros.price) | NumFormat
+													}}
+												</text>
 											</view>
-											<view class="zuhe_price-larger zuhe_list_text">
-												<view class="list-price-none" v-if="pros.repurchaseFlag == 1">
-													<text class="price-none">价格:¥{{ pros.originalPrice }}</text>
+										</view>
+										<button class="add-cart-btn" @click.stop="operationHanld(pros)">数量</button>
+									</template>
+								</view>
+								<view class="list-details-price">
+									<view class="floor-item-act">
+										<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
+										<template v-if="pros.actStatus == 1">
+											<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
+												{{ pros.promotions.name }}<text>:¥{{ pros.price | NumFormat }}</text>
+											</view>
+											<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
+										</template>
+										<template v-if="pros.svipProductFlag == 1">
+											<view class="svip-tags">
+												<view class="tags">SVIP</view>
+												<view class="price">{{ pros.svipPriceTag }}</view>
+											</view>
+										</template>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view v-if="showLoading && listData.length > 4 && !showRegularBtn">
+							<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+								>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+							>
+							<view class="loading-wrapper loading-wrapper-btm" v-else
+								>———<text class="btm-text">已至底部</text>———</view
+							>
+						</view>
+					</scroll-view>
+				</view>
+				<!-- 组合商品 -->
+				<view :class="tabIndex" v-if="tabIndex === 1">
+					<scroll-view
+						:style="{ height: scrollHeight + 'px', paddingTop: searchStatus ? '112rpx' : '' }"
+						@scrolltolower="scrolltolower(tabIndex)"
+						scroll-y
+					>
+						<view class="all-zuhe-list" v-for="(item, index) in combinationProduct" :key="index" :id="item.id">
+							<view class="zuhe_title" :class="index % 2 == 0 ? 'active' : ''">{{ item.name }}</view>
+							<view
+								v-for="(pros, proIndex) in item.combinationProductList"
+								:class="index % 2 == 0 ? 'stylecontent' : ''"
+								:key="proIndex"
+								:id="pros.productId"
+								class="zuhe-list-content commodity-list"
+							>
+								<view class="list-details-info">
+									<text class="list-details-title zuhe_list_text">商品编码:{{ pros.code }}</text>
+									<text
+										class="list-details-specs zuhe_list_text"
+										@click.stop="navToDetailPage(pros.productId)"
+										>{{ pros.name }}</text
+									>
+									<view class="list-details-price zuhe_list_price">
+										<view class="list-shop com">
+											<view class="list-price zuhe_list_price">
+												<view class="zuhe_price-larger zuhe_list_text">
+													<text class="price-larger">规格:{{ pros.unit }}</text>
 													<text
-														class="iconfont icon-wenhao"
-														@click.stop="repurchModel"
-													></text>
+														class="price-btn"
+														@click.stop="handleShowUnitPopup(pros, proIndex)"
+														>重选</text
+													>
 												</view>
-												<view class="price-larger">价格:¥{{ pros.price | NumFormat }}</view>
-											</view>
-											<view class="zuhe_price-larger zuhe_list_text">
-												<view class="floor-item-act">
-													<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
-													<template v-if="pros.actStatus == 1">
-														<view
-															class="floor-tags"
-															v-if="PromotionsFormat(pros.promotions)"
-														>
-															{{ pros.promotions.name
-															}}<text>:¥{{ pros.price | NumFormat }}</text>
-														</view>
-														<view class="floor-tags" v-else>{{
-															pros.promotions.name
-														}}</view>
-													</template>
-													<template v-if="pros.svipProductFlag == 1">
-														<view class="svip-tags">
-															<view class="tags">SVIP</view>
-															<view class="price">{{ pros.svipPriceTag }}</view>
-														</view>
-													</template>
+												<view class="zuhe_price-larger zuhe_list_text">
+													<view class="list-price-none" v-if="pros.repurchaseFlag == 1">
+														<text class="price-none">价格:¥{{ pros.originalPrice }}</text>
+														<text
+															class="iconfont icon-wenhao"
+															@click.stop="repurchModel"
+														></text>
+													</view>
+													<view class="price-larger">价格:¥{{ pros.price | NumFormat }}</view>
 												</view>
-												<view class="count">
-													<view class="number-box">
-														<view
-															class="iconfont icon-jianhao"
-															@click.stop="changeCountSub(item, pros)"
-														></view>
-														<input
-															class="btn-input"
-															type="number"
-															maxlength="6"
-															v-model="pros.initProductNum"
-															@blur="changeNnmber($event, item, pros)"
-														/>
-														<view
-															class="iconfont icon-jiahao"
-															@click.stop="changeCountAdd(item, pros)"
-														></view>
+												<view class="zuhe_price-larger zuhe_list_text">
+													<view class="floor-item-act">
+														<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
+														<template v-if="pros.actStatus == 1">
+															<view
+																class="floor-tags"
+																v-if="PromotionsFormat(pros.promotions)"
+															>
+																{{ pros.promotions.name
+																}}<text>:¥{{ pros.price | NumFormat }}</text>
+															</view>
+															<view class="floor-tags" v-else>{{
+																pros.promotions.name
+															}}</view>
+														</template>
+														<template v-if="pros.svipProductFlag == 1">
+															<view class="svip-tags">
+																<view class="tags">SVIP</view>
+																<view class="price">{{ pros.svipPriceTag }}</view>
+															</view>
+														</template>
+													</view>
+													<view class="count">
+														<view class="number-box">
+															<view
+																class="iconfont icon-jianhao"
+																@click.stop="changeCountSub(item, pros)"
+															></view>
+															<input
+																class="btn-input"
+																type="number"
+																maxlength="6"
+																v-model="pros.initProductNum"
+																@blur="changeNnmber($event, item, pros)"
+															/>
+															<view
+																class="iconfont icon-jiahao"
+																@click.stop="changeCountAdd(item, pros)"
+															></view>
+														</view>
 													</view>
 												</view>
-											</view>
-											<view class="list-price-all" :style="{ overflow: 'hidden' }">
-												<view class="price-two zuhe_list_text"
-													>总价:<text class="zuhe_list_zj"
-														>¥ {{ pros.totalPrice | NumFormat }}</text
-													></view
-												>
+												<view class="list-price-all" :style="{ overflow: 'hidden' }">
+													<view class="price-two zuhe_list_text"
+														>总价:<text class="zuhe_list_zj"
+															>¥ {{ pros.totalPrice | NumFormat }}</text
+														></view
+													>
+												</view>
 											</view>
 										</view>
 									</view>
 								</view>
 							</view>
-						</view>
-						<view class="foot_conten">
-							<view class="zuhe_foot-box">
-								<view class="">
-									<text>种类:{{ item.productKind }}</text>
-									<text>总数:{{ item.productTotalNum }}</text>
+							<view class="foot_conten">
+								<view class="zuhe_foot-box">
+									<view class="">
+										<text>种类:{{ item.productKind }}</text>
+										<text>总数:{{ item.productTotalNum }}</text>
+									</view>
+									<text
+										>总额:<text class="foot_text">{{
+											item.productTotalAmount | NumFormat
+										}}</text></text
+									>
 								</view>
-								<text
-									>总额:<text class="foot_text">{{
-										item.productTotalAmount | NumFormat
-									}}</text></text
-								>
+								<button type="default" class="buycart" @click.stop="operationHanld(item)">
+									加入购物车
+								</button>
 							</view>
-							<button type="default" class="buycart" @click.stop="operationHanld(item)">
-								加入购物车
-							</button>
 						</view>
-					</view>
-					<view v-if="showLoading && combinationProduct.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
-							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
-						>
-						<view class="loading-wrapper loading-wrapper-btm" v-else
-							>———<text class="btm-text">已至底部</text>———</view
-						>
-					</view>
-				</scroll-view>
+						<view v-if="showLoading && combinationProduct.length > 4 && !showRegularBtn">
+							<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+								>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+							>
+							<view class="loading-wrapper loading-wrapper-btm" v-else
+								>———<text class="btm-text">已至底部</text>———</view
+							>
+						</view>
+					</scroll-view>
+				</view>
 			</view>
-		</view>
+		</template>
 		<!-- 组合商品规格弹窗 -->
 		<cmUnitSupporPopup
 			v-if="popupShow"
@@ -255,6 +257,7 @@
 		></cmUnitSupporPopup>
 		<!-- 可拖动悬浮按钮 -->
 		<cm-drag
+			v-if="!showSkeleton"
 			:cartNum="cartQuantity"
 			:isDock="true"
 			:existTabBar="true"
@@ -299,7 +302,7 @@ export default {
 			searchInputVal: '',
 			isModallayer: false,
 			windowHeight: '',
-			showSkeleton: false,
+			showSkeleton: true,
 			priceLoading: true,
 			isShowEmpty: false,
 			isShowEmptyText: '搜索相关商品',
@@ -401,7 +404,6 @@ export default {
 						} else {
 							this.listData = [...resList]
 							this.getProductPrice()
-							this.showSkeleton = false
 						}
 						// 防上拉暴滑
 						this.pullFlag = false
@@ -441,13 +443,16 @@ export default {
 				productIds: productIds,
 				source: 2
 			})
-				.then(response => {
-					this.listData = this.ReturnNewProducts(this.listData, response.data)
-					this.priceLoading = false
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+			.then(response => {
+				this.listData = this.ReturnNewProducts(this.listData, response.data)
+				this.priceLoading = false
+				setTimeout(() => {
+						this.showSkeleton = false
+				}, 500)
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
 		},
 		ReturnNewProducts(Array, list) {
 			//合并字段

+ 1 - 1
pages/seller/cart/mixins/cartMixins.js

@@ -49,7 +49,7 @@ const cartMixins = {
                     return
                 }
                 let cartSkuIds = { skuIds: skuIds.substring(0, skuIds.lastIndexOf(',')) }
-                this.$api.navigateTo(`/pages/seller/order/create-order?data=${JSON.stringify({ data: cartSkuIds })}`)
+                this.$api.navigateTo(`/pages/seller/order/create-order?type=2&data=${JSON.stringify({ data: cartSkuIds })}`)
             }
         },
         handleBtnConfirm(data) {

+ 1 - 1
pages/seller/cart/second.vue

@@ -169,7 +169,7 @@
 						productIds:this.handleData.productId,
 						productCount:this.number
 				}	
-				this.$api.navigateTo(`/pages/seller/order/create-order?type=prodcut&data=${JSON.stringify({data:productStp})}`)
+				this.$api.navigateTo(`/pages/seller/order/create-order?type=1&data=${JSON.stringify({data:productStp})}`)
 				setTimeout(() => {
 					this.specClass = 'none';
 				}, 200);

+ 18 - 18
pages/seller/club/club-list.vue

@@ -75,19 +75,19 @@
 						</view>
 						<view class="club-list-bot">
 							<view class="btn" @click.stop="handleClickOper(1, club)"> <text class="iconfont icon-lijixiadan"></text> 立即下单</view>
-							<view class="btn" @click.stop="handleClickOper(2, club)"> <text class="iconfont icon-ershouxiadan"></text> 二手下单</view>
-							<view class="btn" @click.stop="handleClickOper(4, club)"> <text class="iconfont icon-chongzhixiadingjin"></text> 充值/下订金</view>
+<!-- 							<view class="btn" @click.stop="handleClickOper(3, club)"> <text class="iconfont icon-zaicigoumai1"></text> 再次购买</view>
+							<view class="btn" @click.stop="handleClickOper(6, club)"> <text class="iconfont icon-youhuiquan"></text> 购买优惠券</view>
 							<view class="btn" @click.stop="handleShowBubble(club,index)"> 
 								<text class="iconfont icon-gengduo2"></text> 
 								<view class="btn-bubble" v-if="currentIndex === index && club.bubble">
-									<view class="btn-view border" @click.stop="handleClickOper(3, club)">
-										<text class="iconfont icon-zaicigoumai1"></text> 再次购买
+									<view class="btn-view border" @click.stop="handleClickOper(2, club)">
+										<text class="iconfont icon-ershouxiadan"></text> 二手下单
 									</view>
-									<view class="btn-view" @click.stop="handleClickOper(6, club)">
-										<text class="iconfont icon-youhuiquan"></text> 购买优惠券
+									<view class="btn-view" @click.stop="handleClickOper(4, club)">
+										<text class="iconfont icon-chongzhixiadingjin"></text> 充值/下订金
 									</view>
 								</view>
-							</view>
+							</view> -->
 						</view>
 					</view>
 					<!--加载loadding-->
@@ -474,17 +474,17 @@ page,
 				text-align: center;
 				float: left;
 				position: relative;
-				&:nth-child(1){
-					&:before{
-						content: '';
-						width: 1px;
-						height: 20rpx;
-						background-color: #B2B2B2;
-						position: absolute;
-						right: 0;
-						top: 30rpx;
-					}
-				}
+				// &:nth-child(1){
+				// 	&:before{
+				// 		content: '';
+				// 		width: 1px;
+				// 		height: 20rpx;
+				// 		background-color: #B2B2B2;
+				// 		position: absolute;
+				// 		right: 0;
+				// 		top: 30rpx;
+				// 	}
+				// }
 				&:nth-child(2){
 					&:before{
 						content: '';

+ 1 - 1
pages/seller/club/components/echart-info.vue

@@ -2,7 +2,7 @@
 	<view class="echart-content"> 
 		<view class="echart-title">
 			<view class="e-icon e1"><text class="iconfont icon-gongsi"></text></view>
-			<view class="e-name">采美信息技术有限公司</view>
+			<view class="e-name">{{ data.name }}</view>
 			<view class="e-start">{{ data.status | statusFilters }}</view>
 		</view>
 		<view class="echart-main clearfix" @click="handleClubInfo">

+ 1 - 1
pages/seller/components/cm-clubpopup.vue

@@ -14,7 +14,7 @@
 							v-model="listQuery.name"
 							@input="onShowClose"
 							@confirm="initclubList()"
-							placeholder="机构名称/联系人"
+							placeholder="机构名称/联系人/手机号"
 							maxlength="16"
 						/>
 						<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>

+ 15 - 3
pages/seller/components/home.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">
-		<customer ref="customer" :navbar-data='nvabarData'></customer>
+		<customer ref="customer" :isScroll="isScroll" :navbar-data='nvabarData'></customer>
 		<!-- 主页内容 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
 		<view class="container-home tui-skeleton">
@@ -8,6 +8,8 @@
 			<banner :list="bannerImageList" v-if="isNavRequest"></banner>
 			<!-- 金刚区菜单 -->
 			<navbars :list="navBarsList" v-if="isNavRequest"></navbars>
+            <!-- 快捷运营 -->
+            <quick-opera :list="quickOpreaList" v-if="isNavRequest && quickOpreaList.length > 0"/>
 			<!-- 轮播公告 -->
 			<notice :list="newsList" v-if="isNavRequest && newsList.length>0 "></notice>
 			<!-- 直播 -->
@@ -25,7 +27,7 @@
 		<!-- 活动弹窗 -->
 		<activityAlert :show="isActivity" @click="handleClick" @cancel="handleCancelClick"></activityAlert>
 		<!-- 侧边 -->
-		<scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
+		<scroll-top :isScrollTop="isScrollTop" :isShowSupplier="true" :bottom="130"></scroll-top>
 	</view>
 </template>
 
@@ -40,6 +42,7 @@
 	import Certificate from '@/components/cm-module/homeIndex/certificate.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
+    import quickOpera from '@/components/cm-module/homeIndex/quickOperation.vue'
 	import { mapState,mapMutations} from 'vuex'
 	export default {
 		components:{
@@ -51,7 +54,8 @@
 			pageFloor,
 			Certificate,
 			pageSpecial,
-			supplierList
+			supplierList,
+            quickOpera
 		},
 		data() {
 			return {
@@ -84,6 +88,8 @@
 				isRequest:false,
 				isNavRequest:false,
 				isLiveRequest:false,
+                quickOpreaList: [], // 快捷运营
+                isScroll: false
 			}
 		},
 		created() {
@@ -131,6 +137,7 @@
 					this.skeletonShow = false
 					this.navBarsList = data.topMenuList
 					this.newsList = data.annlist
+                    this.quickOpreaList = data.shortcutList || [] // 快捷运营
 					this.isNavRequest = true
 					this.GetHomeTopDataInfo()
 					this.GetHomeFloorInfo()
@@ -147,6 +154,11 @@
 			}
 		},
 		onPageScroll(e){//实时获取到滚动的值
+            if (e.scrollTop > 0) {
+                this.isScroll = true
+            } else {
+                this.isScroll = false
+            }
 			if(e.scrollTop>50){
 				this.inputActive = 'fixed'
 			}else{

+ 5 - 5
pages/seller/components/user.vue

@@ -232,11 +232,11 @@ export default {
 					path: '/pages/seller/club/club-list',
 					icon: 'https://static.caimei365.com/app/img/icon/icon_seller_5@2x.png'
 				},
-				{
-					name: '发布二手商品',
-					path: '/pages/second/form/form-select',
-					icon: 'https://static.caimei365.com/app/img/icon/icon_seller_6@2x.png'
-				},
+				// {
+				// 	name: '发布二手商品',
+				// 	path: '/pages/second/form/form-select',
+				// 	icon: 'https://static.caimei365.com/app/img/icon/icon_seller_6@2x.png'
+				// },
 				{
 					name: '客户咨询记录',
 					path: '/pages/seller/remarks/list',

+ 133 - 112
pages/seller/index/index.vue

@@ -1,25 +1,25 @@
 <template>
-	<view class="content"  :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">
+	<view class="content" :style="{ paddingBottom: isIphoneX ? '140rpx' : '98rpx' }">
 		<!-- 采美采购商城 -->
-		<view :style="{'display':show_index == 0 ?'block':'none'}">
-			<seller-home  ref="home" v-if="isHomeData"></seller-home>
+		<view :style="{ display: show_index == 0 ? 'block' : 'none' }">
+			<seller-home ref="home" v-if="isHomeData"></seller-home>
 		</view>
 		<!-- 商品分类 -->
-		<view :style="{'display':show_index == 1? 'block':'none'}">
-			<seller-category  ref="category" v-if="isCategory"></seller-category>
+		<view :style="{ display: show_index == 1 ? 'block' : 'none' }">
+			<seller-category ref="category" v-if="isCategory"></seller-category>
 		</view>
 		<!-- 账户中心 -->
-		<view :style="{'display':show_index == 2 ?'flex':'none'}">
-			<seller-user  ref="user" v-if="isUserData"></seller-user>
+		<view :style="{ display: show_index == 2 ? 'flex' : 'none' }">
+			<seller-user ref="user" v-if="isUserData"></seller-user>
 		</view>
 		<!-- isIphoneX判断是否为刘海屏在main.js里,好像uniapp有一个css变量获取刘海屏的安全区域 -->
-		<view class="tabBar" :style="{height:isIphoneX?'140rpx':'98rpx'}">
+		<view class="tabBar" :style="{ height: isIphoneX ? '140rpx' : '98rpx' }">
 			<!-- 导航的中间圆圈 -->
-			<view class="tabBar_list" :style="{paddingBottom:isIphoneX?'40rpx':''}">
-				<view v-for="(item) in tab_nav_list" :key="item.id" class="tabBar_item" @tap="cut_index(item.id)">
+			<view class="tabBar_list" :style="{ paddingBottom: isIphoneX ? '40rpx' : '' }">
+				<view v-for="item in tab_nav_list" :key="item.id" class="tabBar_item" @tap="cut_index(item.id)">
 					<image v-if="show_index == item.id" :src="item.iconAc"></image>
 					<image v-else :src="item.icon"></image>
-					<view :class="{'tabBar_name':true,'nav_active':show_index == item.id}">{{item.name}}</view>
+					<view :class="{ tabBar_name: true, nav_active: show_index == item.id }">{{ item.name }}</view>
 				</view>
 			</view>
 		</view>
@@ -27,117 +27,138 @@
 </template>
 
 <script>
-	import sellerHome from '../components/home.vue'
-	import sellerUser from '../components/user.vue'
-	import sellerCategory from '../components/category.vue'
-	export default {
-		components: {
-			sellerHome,//采美采购商城 0
-			sellerUser,//账户中心     1
-			sellerCategory,//商品分类 2
-		},
-		data() {
-			return {
-				show_index:2,//控制显示那个组件
-				isUserData: false,
-				isCategory: false,
-				isHomeData: false,
-				isIphoneX:this.$store.state.isIphone,
-				tab_nav_list :[//菜单列表
-					{'id':0,'name':'首页',icon:'https://static.caimei365.com/app/img/icon/icon-home@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-home-active@3x.png'},
-					{'id':1,'name':'分类',icon:'https://static.caimei365.com/app/img/icon/icon-sort@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-sort-active@3x.png'},
-					{'id':2,'name':'我的',icon:'https://static.caimei365.com/app/img/icon/icon-user@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-user-active@3x.png'}
-				],
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '账户中心',  // 导航栏 中间的标题
-					textLeft:false
-				}, 
-				isIphoneX:this.$store.state.isIphoneX,
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-			}
-		},
-		onLoad() {
-			this.$nextTick(()=>{// 一定要等视图更新完再调用方法
-				setTimeout(()=>{ this.isUserData = true },100)
-			})
-		},
-		methods: {
-			// 切换组件
-			cut_index(type){
-				this.show_index = type
-				if(this.show_index == 0){
-					this.isHomeData = true
-					this.isUserData = false
-					this.isCategory = false
-				}else if(this.show_index == 1){
-					this.isHomeData = false
-					this.isUserData = false
-					this.isCategory = true
-				}else if(this.show_index == 2){
-					this.isHomeData = false
-					this.isUserData = true
-					this.isCategory = false
+import sellerHome from '../components/home.vue'
+import sellerUser from '../components/user.vue'
+import sellerCategory from '../components/category.vue'
+export default {
+	components: {
+		sellerHome, //采美采购商城 0
+		sellerUser, //账户中心     1
+		sellerCategory //商品分类 2
+	},
+	data() {
+		return {
+			show_index: 2, //控制显示那个组件
+			isUserData: false,
+			isCategory: false,
+			isHomeData: false,
+			isIphoneX: this.$store.state.isIphone,
+			tab_nav_list: [
+				//菜单列表
+				{
+					id: 0,
+					name: '首页',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-home@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-home-active@3x.png'
+				},
+				{
+					id: 1,
+					name: '分类',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-sort@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-sort-active@3x.png'
+				},
+				{
+					id: 2,
+					name: '我的',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-user@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-user-active@3x.png'
 				}
+			],
+			nvabarData: {
+				//顶部自定义导航
+				showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
+				showSearch: 0,
+				title: '账户中心', // 导航栏 中间的标题
+				textLeft: false
 			},
-			onPullDownRefresh(){
-				if(this.show_index == 0){
-					this.$refs.home.getHomeInformation()
-				}else if(this.show_index == 2){
-					this.$refs.user.initData()
-				}
-				uni.stopPullDownRefresh()
+			isIphoneX: this.$store.state.isIphoneX,
+			CustomBar: this.CustomBar // 顶部导航栏高度
+		}
+	},
+	onLoad() {
+		this.$nextTick(() => {
+			// 一定要等视图更新完再调用方法
+			setTimeout(() => {
+				this.isUserData = true
+			}, 100)
+		})
+	},
+	methods: {
+		// 切换组件
+		cut_index(type) {
+			this.show_index = type
+			if (this.show_index == 0) {
+				this.isHomeData = true
+				this.isUserData = false
+				this.isCategory = false
+			} else if (this.show_index == 1) {
+				this.isHomeData = false
+				this.isUserData = false
+				this.isCategory = true
+			} else if (this.show_index == 2) {
+				this.isHomeData = false
+				this.isUserData = true
+				this.isCategory = false
 			}
 		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: '生美医美正品采购服务平台',
-			  path: 'pages/tabBar/home/index',
-			  imageUrl:'https://static.caimei365.com/app/img/bg/min-banner.jpg'
+		onPullDownRefresh() {
+			if (this.show_index == 0) {
+				this.$refs.home.getHomeInformation()
+			} else if (this.show_index == 2) {
+				this.$refs.user.initData()
 			}
-		},
+			uni.stopPullDownRefresh()
+		}
+	},
+	onShareAppMessage(res) {
+		//分享转发
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
+		}
+		return {
+			title: '生美医美正品采购服务平台',
+			path: 'pages/tabBar/home/index',
+			imageUrl: 'https://static.caimei365.com/app/img/bg/min-banner.jpg'
+		}
 	}
+}
 </script>
 
 <style lang="scss">
-	.tabBar{
-		width:100%;
-		height: 98rpx;
-		background: #fff;
-		border-top:1px solid #E5E5E5;
-		position: fixed;
-		bottom:0px;
-		left:0px;
-		right:0px;
+.tabBar {
+	width: 100%;
+	height: 98rpx;
+	background: #fff;
+	border-top: 1px solid #e5e5e5;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	z-index: 999;
+	.tabBar_list {
+		width: 86%;
 		display: flex;
-		align-items: center;
-		justify-content: center;
-		z-index: 999;
-		.tabBar_list{
-			width:86%;
+		justify-content: space-between;
+		image {
+			width: 48rpx;
+			height: 48rpx;
+			margin-bottom: 2rpx;
+		}
+		.tabBar_item {
+			width: 150rpx;
 			display: flex;
-			justify-content: space-between;
-			image{
-				width:48rpx;
-				height: 48rpx;
-				margin-bottom:2rpx
-			}
-			.tabBar_item{
-				width:150rpx;
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				flex-direction: column;
-				font-size: 20rpx;
-				color: #999999;
-			}
-		 }
-	}
-	.nav_active{
-		color: $color-system;
+			justify-content: center;
+			align-items: center;
+			flex-direction: column;
+			font-size: 20rpx;
+			color: #999999;
+		}
 	}
+}
+.nav_active {
+	color: $color-system;
+}
 </style>

+ 3 - 2
pages/seller/order/components/sellerAddress.vue → pages/seller/order/components/cm-address-temp.vue

@@ -27,7 +27,7 @@
 		 		</view>
 		 	</view>
 		 </navigator>
-		 <image  src="../../../static/temp/line@3x.png" mode=""></image>
+		<image  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
 	</view>
 </template>
 
@@ -43,6 +43,7 @@
 			return{
 				isEmpty:false,
 				addressSrc:'',
+				StaticUrl: this.$Static,
 			}
 		},
 		created(){
@@ -62,7 +63,7 @@
 			initData(res) {
 				if(Object.keys(res).length == 0){
 					this.isEmpty = true
-					this.addressSrc = '/pages/seller/address/addressManage'
+					this.addressSrc = '/pages/seller/address/addressManage?type=select'
 				}else{
 					this.isEmpty = false
 					this.$parent.isFreight = false

+ 2 - 1
pages/seller/order/components/sellerClubVisible.vue → pages/seller/order/components/cm-club-visible.vue

@@ -2,7 +2,7 @@
 	<view class="orderVisible-template">
 		<!-- 订单对机构是否可见 -->
 		<view class="visible-title" @tap.stop="showPopup">
-			<text class="orderVisible">订单对机构是否可见</text>
+			<text class="orderVisible">订单对机构是否可见:</text>
 			<view class="visible-right">
 				<text class="text-l">{{ orderVisibleText }}</text> <text class="iconfont icon-xiayibu"></text>
 			</view>
@@ -104,6 +104,7 @@ export default {
 		.visible-right {
 			float: right;
 			color: #2a81ff;
+			font-weight: normal;
 			.text-l {
 				margin-right: 40rpx;
 			}

+ 0 - 0
pages/seller/order/components/sellerExchangeCoupon.vue → pages/seller/order/components/cm-coupon-chang.vue


+ 1 - 1
pages/seller/order/components/sellerCoupon.vue → pages/seller/order/components/cm-coupon-popup.vue

@@ -232,7 +232,7 @@ export default {
 		.text-coupon {
 			display: inline-block;
 			float: right;
-			padding-right: 30rpx;
+			padding-right: 40rpx;
 			line-height: 88rpx;
 			font-size: 28rpx;
 			color: #f94b4b;

+ 199 - 0
pages/seller/order/components/cm-coupon-tips.vue

@@ -0,0 +1,199 @@
+<template name="alert">
+	<view class="coupon-content-model">
+		<view class="coupon-alert-content">
+			<view class="coupon">
+				<view class="coupon-list">
+					<view class="list-cell-tags"
+						><text>{{ coupon.couponType | TypeFormat }}</text></view
+					>
+					<view class="list-cell-le">
+						<view class="coupon-maxMoney"> <text class="small">¥</text> {{ coupon.couponAmount }} </view>
+						<view class="coupon-minMoney">
+							<text class="txt">满{{ coupon.touchPrice }}可用</text>
+						</view>
+					</view>
+					<view class="list-cell-ri">
+						<view class="list-cell-top">
+							<text v-if="coupon.couponType == 0">
+								{{
+									coupon.productType && coupon.productType == 1
+										? '全商城商品通用'
+										: '仅可购买指定商品'
+								}}
+							</text>
+							<text v-if="coupon.couponType == 1">
+								{{ coupon.categoryType == 1 ? '仅限购买产品类商品' : '仅限购买仪器类商品' }}
+							</text>
+							<text v-if="coupon.couponType == 3">仅限购买店铺【{{ coupon.shopName }}】的商品</text>
+							<text v-if="coupon.couponType == 4 || coupon.couponType == 2">全商城商品通用</text>
+						</view>
+						<view class="list-cell-time">{{ coupon.startDate }} - {{ coupon.endDate }}</view>
+					</view>
+				</view>
+				<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'alert',
+	props: {
+		coupon: {
+			type: Object
+		}
+	},
+	filters: {
+		TypeFormat(value) {
+			const map = {
+				0:'活动券',
+				1:'品类券',
+				2:'用户专享券',
+				3:'店铺券',
+				4:'新用户券',
+			}
+		}
+	},
+	data() {
+		return {}
+	},
+	created() {},
+	onLoad() {},
+	methods: {},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+.coupon-content-model {
+	width: 100%;
+	height: 100%;
+	background: rgba(0, 0, 0, 0.5);
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 8888;
+	transition: all 0.4s;
+	.coupon-alert-content {
+		width: 600rpx;
+		height: 612rpx;
+		position: absolute;
+		top: 0;
+		left: 0;
+		bottom: 0;
+		right: 0;
+		margin: auto;
+		box-sizing: border-box;
+		padding-top: 92rpx;
+		.coupon {
+			width: 600rpx;
+			height: 522rpx;
+			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
+			background-size: cover;
+			box-sizing: border-box;
+			padding: 230rpx 40rpx 0 40rpx;
+			.coupon-list {
+				width: 100%;
+				height: 147rpx;
+				margin-bottom: 32rpx;
+				box-sizing: border-box;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
+				background-size: cover;
+				position: relative;
+				.list-cell-tags {
+					display: inline-block;
+					padding: 0 10rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					background-color: #f94b4b;
+					color: #ffffff;
+					font-size: 18rpx;
+					border-radius: 16rpx 0 16rpx 0;
+					text-align: center;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.list-cell-le {
+					width: 154rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 0;
+					float: left;
+					.coupon-maxMoney {
+						width: 100%;
+						height: 54rpx;
+						line-height: 54rpx;
+						font-size: 42rpx;
+						color: #f94b4b;
+						text-align: center;
+						margin-top: 10rpx;
+						.small {
+							font-size: $font-size-20;
+						}
+					}
+					.coupon-minMoney {
+						width: 100%;
+						height: 28rpx;
+						float: left;
+						box-sizing: border-box;
+						padding-left: 24rpx;
+						.txt {
+							display: block;
+							height: 28rpx;
+							line-height: 28rpx;
+							font-size: 16rpx;
+							color: #f94b4b;
+							text-align: center;
+							padding: 0 5rpx;
+							background-color: #fff1eb;
+							border-radius: 4rpx;
+							float: left;
+						}
+					}
+				}
+				.list-cell-ri {
+					width: 366rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 20rpx;
+					float: left;
+					.list-cell-top {
+						width: 100%;
+						height: 64rpx;
+						line-height: 64rpx;
+						font-size: $font-size-26;
+						color: #333333;
+						float: left;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
+						overflow: hidden;
+					}
+					.list-cell-time {
+						width: 100%;
+						height: 28rpx;
+						line-height: 28rpx;
+						text-align: left;
+						font-size: $font-size-20;
+						color: #999999;
+					}
+				}
+			}
+			.coupon-btn {
+				width: 100%;
+				height: 78rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
+				background-size: cover;
+				line-height: 78rpx;
+				text-align: center;
+				color: #ffffff;
+				font-size: $font-size-36;
+			}
+		}
+	}
+}
+</style>

+ 247 - 0
pages/seller/order/components/cm-details-button.vue

@@ -0,0 +1,247 @@
+<template name="button">
+	<view class="button-template" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<view
+				class="btn btn-cancel"
+				v-if="secondHandOrderFlag != 1 && !rechargeGoods"
+				@click.stop="btnConfirm('again', order)"
+				>再来一单</view
+			>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel', order)"
+				>取消订单</view
+			>
+			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete"  @click.stop="btnConfirm('delete',order)">删除订单</view> -->
+			<template>
+				<view class="btn btn-share" v-if="btnState.isPay" @click.stop="onShareCode(1)">
+					<view class="tips" v-if="shareCode">分享码:{{ shareCode }}</view> 分享支付
+				</view>
+				<view class="btn btn-share" v-else @click.stop="onShareCode(2)">
+					<view class="tips" v-if="shareCode">分享码:{{ shareCode }}</view> 分享订单
+				</view>
+			</template>
+			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', order)"
+				>确认订单</view
+			>
+			<view
+				class="btn btn-query"
+				v-if="btnState.isQuery && order.secondHandOrderFlag != 1"
+				@click.stop="btnConfirm('query', order)"
+				>查看物流</view
+			>
+			<view
+				class="btn btn-color"
+				v-if="btnState.isPay && ableUserMoney > 0 && !rechargeGoods"
+				@click.stop="btnConfirm('balance', order)"
+				>余额抵扣</view
+			>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'button',
+	props: {
+		status: {
+			type: Number
+		},
+		order: {
+			type: Object
+		},
+		ableUserMoney: {
+			type: Number
+		},
+		rechargeGoods: {
+			type: Boolean
+		},
+		shareCode: {
+			type: String
+		},
+		secondHandOrderFlag: {
+			type: String
+		}
+	},
+	watch: {
+		status: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	data() {
+		return {
+			btnState: this.initStatus(),
+			isIphoneX: this.$store.state.isIphoneX,
+			invoiceStatus: false,
+			mapStateArr: [
+				{ label: 'isQuery', val: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], status: true }
+			]
+		}
+	},
+	created() {
+		console.log(this.rechargeGoods)
+		this.initData(this.status)
+	},
+	computed: {},
+	methods: {
+		initData(resVal) {
+			/**
+			 * @分享按钮统一显示
+			 * @按钮根据状态显示
+			 * @(2,3,5,6,12,13,22,23,32,33)显示[查看物流]按钮,其他隐藏
+			 * @(4)显示[删除订单],其他隐藏
+			 * @(0、11)显示[取消订单],其他隐藏
+			 * @(13,33)显示[确认收货]和[查看物流]
+			 */
+			this.btnState = this.initStatus()
+			this.mapStateArr.forEach(el => {
+				el.val.forEach(value => {
+					if (resVal === value) {
+						this.btnState[el.label] = el.status
+						//console.log(this.btnState[el.label]);
+					}
+				})
+			})
+		},
+		initStatus() {
+			let btnState = {
+				isQuery: false,
+				isDelete: false,
+				isCancel: false,
+				isConfirm: false,
+				isPay: false
+			}
+			return btnState
+		},
+		getShareCode(code) {
+			this.shareCode = code
+		},
+		onShareCode(type) {
+			if (this.order.onlinePay == 1) {
+				this.$util.modal(
+					'提示',
+					'本订单不能进行线上支付,请让客户选择线下转账方式付款',
+					'继续分享',
+					'知道了',
+					true,
+					() => {
+						this.$parent.isShareModal = true
+					}
+				)
+			} else {
+				this.$parent.isShareModal = true
+				this.$parent.isShareType = type
+			}
+		},
+		btnConfirm(type, order) {
+			let data = {
+				type: type,
+				shopOrderId: order.shopOrderId,
+				order: order
+			}
+			this.$emit('buttonConfirm', data)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.button-template {
+	width: 100%;
+	height: auto;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background: #ffffff;
+	.button-content {
+		padding: 0 24rpx;
+		height: auto;
+		float: right;
+		position: relative;
+		margin: 20rpx 0;
+		.share-code {
+			width: 200rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			color: #2a45ff;
+			text-align: left;
+			position: absolute;
+			font-size: $font-size-28;
+			font-weight: bold;
+			left: 24rpx;
+			top: 24rpx;
+		}
+		.btn {
+			width: 160rpx;
+			height: 64rpx;
+			// margin:22rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 34rpx;
+			float: right;
+		}
+		.btn-color {
+			background: $btn-confirm;
+		}
+		.btn-cancel {
+			background: #ffffff;
+			color: #666666;
+			float: left;
+			// margin: 22rpx 0;
+			margin-right: 15rpx;
+			border: 2rpx solid #999999;
+		}
+		.btn-delete {
+			background: linear-gradient(315deg, rgba(255, 163, 3, 1) 0%, rgba(255, 53, 1, 1) 100%);
+		}
+		.btn-query {
+			background: linear-gradient(135deg, rgba(255, 212, 129, 1) 0%, rgba(198, 129, 0, 1) 100%);
+		}
+		.btn-confirm {
+			background: linear-gradient(315deg, rgba(231, 0, 0, 1) 0%, rgba(255, 104, 1, 1) 100%);
+		}
+		.btn-share {
+			background: #ffffff;
+			color: #666666;
+			float: left;
+			// margin: 22rpx 0;
+			margin-right: 15rpx;
+			border: 2rpx solid #999999;
+			position: relative;
+			.tips {
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background: #ff5b00;
+				border-radius: 8rpx;
+				position: absolute;
+				color: #ffffff;
+				line-height: 34rpx;
+				font-size: $font-size-24;
+				text-align: left;
+				right: 0;
+				top: -69rpx;
+				&:before {
+					content: '';
+					width: 25rpx;
+					height: 25rpx;
+					background: #ff5b00;
+					position: absolute;
+					bottom: -8rpx;
+					left: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
+				}
+			}
+		}
+	}
+}
+</style>

+ 471 - 0
pages/seller/order/components/cm-freight-popup.vue

@@ -0,0 +1,471 @@
+<template name="freight">
+	<!-- 运费信息 -->
+	<view>
+		<view class="goods-pros-m">
+			<view class="freight-main">
+				<view class="freight-left">运费:</view>
+				<view class="freight-right" @click.stop="handlePupShow">
+					<template v-if="handlePostageFlag === 0">
+						<view class="freight-text" v-if="handleSupplier.isColdChina"
+							>¥{{ handleSupplier.coldChain | NumFormat }}</view
+						>
+						<view class="freight-text" v-else>包邮</view>
+					</template>
+					<view class="freight-text" v-if="handlePostageFlag === 1"
+						>¥{{ handleTotalPostage | NumFormat }}</view
+					>
+					<template v-if="handlePostageFlag === 2">
+						<view class="freight-text" v-if="handleSupplier.isColdChina"
+							>¥{{ handleSupplier.coldChain | NumFormat }}</view
+						>
+						<view class="freight-text" v-else>到付</view>
+					</template>
+					<view class="select"><text class="iconfont icon-xiayibu"></text></view>
+				</view>
+			</view>
+			<tui-bottom-popup :radius="true" :show="popupShow" @close="handleComfirm">
+				<view class="freight-title">运费设置</view>
+				<view class="freight-content">
+					<radio-group @change="radioChange">
+						<label v-for="(item, index) in radioItems" :key="index">
+							<radio
+								style="transform:scale(0.7)"
+								color="#FF5B00"
+								:id="item.value"
+								:value="item.value"
+								:checked="item.checked"
+							></radio>
+							<label :for="item.value" class="label">
+								<text>{{ item.name }}</text>
+							</label>
+						</label>
+					</radio-group>
+					<template v-if="handlePostageFlag === 0">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view> <view class="texts red">包邮</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费</view>
+								<view class="texts red" v-if="handleSupplier.isColdChina"
+									>¥{{ handleSupplier.coldChain | NumFormat }}</view
+								>
+								<view class="texts red" v-else>包邮</view>
+							</view>
+						</view>
+					</template>
+					<template v-if="handlePostageFlag === 1">
+						<view class="freight-form">
+							<view class="freight-form-item">
+								<input
+									class="form-input"
+									type="number"
+									v-model="handlePostageVal"
+									@input="handleInputPostage"
+									placeholder="请填写运费"
+									maxlength="20"
+								/>
+							</view>
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view>
+								<view class="texts">¥{{ handleSupplier.postage | NumFormat }} </view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费 </view>
+								<view class="texts red">¥{{ handleTotalPostage | NumFormat }} </view>
+							</view>
+						</view>
+					</template>
+					<template v-if="handlePostageFlag === 2">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view><view class="texts red">到付</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费</view>
+								<view class="texts red" v-if="handleSupplier.isColdChina"
+									>¥{{ handleSupplier.coldChain | NumFormat }}</view
+								>
+								<view class="texts red" v-else>到付</view>
+							</view>
+						</view>
+					</template>
+					<view class="freight-btn" @click="handleComfirm"> 确定 </view>
+				</view>
+			</tui-bottom-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'freight',
+	props: {
+		supplier: {
+			type: Object
+		},
+		index: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			popupShow: false,
+			isColdChina: false,
+			handleColdChain:0,// 记录冷链费
+			handlePostage: 0, // 记录原始运费
+			handlePostageVal: 0, // 记录修改的运费
+			handlePostageFlag: 0, //  记录运费类型
+			radioItems: [
+				{
+					name: '包邮',
+					value: 0,
+					checked: false
+				},
+				{
+					name: '不包邮',
+					value: 1,
+					checked: false
+				},
+				{
+					name: '到付',
+					value: 2,
+					checked: false
+				}
+			],
+			handleTotalPrice: 0, // 记录原始供应商总价
+			handleSupplier: {} // 记录原始信息
+		}
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	created() {
+		this.infoSupplier(this.supplier)
+	},
+	computed: {
+		// 计算总运费
+		handleTotalPostage() {
+			if (this.handleSupplier.isColdChina) {
+				return (this.handleSupplier.postage * 100 + this.handleSupplier.coldChain * 100) / 100
+			} else {
+				return this.handleSupplier.postage
+			}
+		}
+	},
+	watch: {
+		supplier: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.supplier = el
+			},
+			deep: true
+		}
+	},
+	methods: {
+		// 初始化
+		infoSupplier(data) {
+			this.handleSupplier = data
+			this.isColdChina = data.isColdChina
+			this.handleColdChain = data.coldChain
+			this.handleTotalPrice = data.totalPrice
+			this.handlePostage = this.handlePostageVal = data.postage
+			this.handlePostageFlag = data.handlePostageFlag
+			console.log('handlePostageFlag', this.handlePostageFlag)
+			switch (this.handlePostageFlag) {
+				case 0:
+					this.radioItems[0].checked = true
+					break
+				case 1:
+					this.radioItems[1].checked = true
+					break
+				case 2:
+					this.radioItems[2].checked = true
+					break
+			}
+		},
+		handleInputPostage(e) {
+			//处理邮费显示
+			// if (e.detail.value == '') {
+			// 	this.handleSupplier.postage = 0
+			// }
+		},
+		// 勾选冷链费
+		handleChangeColdChina() {
+			this.isColdChina = !this.isColdChina
+			this.handleSupplier.isColdChina = this.isColdChina
+			if (this.isColdChina) {
+				this.handleSupplier.totalPrice = Number(
+					(this.handleSupplier.totalPrice * 100 + this.handleSupplier.coldChain * 100) / 100
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			} else {
+				this.handleSupplier.totalPrice = Number(
+					this.repiceNumSub(this.handleSupplier.totalPrice, this.handleSupplier.coldChain)
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			}
+		},
+		// 切换运费类型0包邮 1 不包邮 2 到付
+		radioChange($event) {
+			this.handlePostageFlag = this.handleSupplier.handlePostageFlag = $event.detail.value * 1
+			if (this.handlePostageFlag === 1) {
+				this.handleSupplier.postage = this.handlePostage
+			} else {
+				this.handleSupplier.postage = this.handlePostage
+			}
+		},
+		// 确定运费
+		handleComfirm() {
+			if (this.handlePostageFlag === 0) {
+				let handleTotalPrice = this.isColdChina ? this.handleTotalPrice : Number(this.repiceNumSub(this.handleTotalPrice, this.handleColdChain))
+				this.handleSupplier.totalPrice = Number(this.repiceNumSub(handleTotalPrice, this.handleSupplier.postage))
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			} else if (this.handlePostageFlag === 1) {
+				if (this.handlePostageVal == 0 || !this.handlePostageVal) {
+					this.$util.msg('请填写运费', 2000)
+					return
+				}
+				this.handleSupplier.totalPrice = Number(
+					(this.handleTotalPrice * 100 - this.handlePostage * 100 + this.handlePostageVal * 100) / 100
+				)
+				this.handleSupplier.postage = this.handlePostageVal
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			} else {
+				let handleTotalPrice = this.isColdChina ? this.handleTotalPrice : Number(this.repiceNumSub(this.handleTotalPrice, this.handleColdChain))
+				this.handleSupplier.totalPrice = Number(this.repiceNumSub(handleTotalPrice, this.handleSupplier.postage))
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			}
+			this.popupShow = false
+		},
+		//减法精确,arg2:被减数,arg1:减数
+		repiceNumSub(arg1, arg2) {
+			var r1, r2, m, n
+			try {
+				r1 = arg1.toString().split('.')[1].length
+			} catch (e) {
+				r1 = 0
+			}
+			try {
+				r2 = arg2.toString().split('.')[1].length
+			} catch (e) {
+				r2 = 0
+			}
+			m = Math.pow(10, Math.max(r1, r2))
+			// last modify by deeka
+			// 动态控制精度长度
+			n = r1 >= r2 ? r1 : r2
+			return ((arg1 * m - arg2 * m) / m).toFixed(n)
+		},
+		handlePupShow() {
+			this.popupShow = true
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-pros-m {
+	width: 100%;
+	box-sizing: border-box;
+	padding: 10rpx 0;
+	.freight-main {
+		width: 100%;
+		height: 78rpx;
+		line-height: 78rpx;
+		font-size: $font-size-28;
+		color: $text-color;
+		background: #ffffff;
+		float: left;
+		.freight-left {
+			float: left;
+			font-weight: bold;
+		}
+		.freight-right {
+			float: right;
+			color: #333333;
+			position: relative;
+			.freight-text {
+				float: left;
+			}
+			.select {
+				float: right;
+				height: 78rpx;
+				padding: 0 20rpx;
+				line-height: 78rpx;
+				color: #333333;
+				font-weight: normal;
+				position: relative;
+				.select-text {
+					display: inline-block;
+					float: left;
+					margin-right: 30rpx;
+				}
+				.iconfont {
+					width: 60rpx;
+					height: 78rpx;
+					line-height: 78rpx;
+					text-align: right;
+					position: absolute;
+					right: 0;
+					top: 0;
+					font-size: $font-size-30;
+					color: #b2b2b2;
+				}
+			}
+		}
+	}
+	.freight-bean {
+		width: 100%;
+		height: 58rpx;
+		line-height: 58rpx;
+		float: left;
+		.bean-le {
+			float: left;
+			color: #666666;
+			font-size: $font-size-26;
+			font-weight: normal;
+		}
+		.bean-ri {
+			float: right;
+			display: flex;
+			align-items: center;
+			.checkbox-box {
+				display: flex;
+				width: 60rpx;
+				float: left;
+				height: 100%;
+				font-size: $font-size-26;
+				margin-top: 8rpx;
+				.checkbox {
+					width: 40rpx;
+					text-align: right;
+					box-sizing: border-box;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $color-system;
+				}
+			}
+		}
+	}
+}
+.freight-title {
+	color: #333333;
+	font-size: 32rpx;
+	text-align: center;
+	margin: 40rpx 0;
+}
+.freight-content {
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	font-weight: normal;
+	radio {
+		margin-right: 8rpx;
+	}
+	.label {
+		color: #666666;
+		font-size: 28rpx;
+		margin-right: 102rpx;
+	}
+	.freight-btn {
+		height: 90rpx;
+		background: $btn-confirm;
+		border-radius: 45rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #ffffff;
+		width: 100%;
+		margin: 100rpx 0 0 0;
+	}
+}
+.freight-form {
+	margin-top: 50rpx;
+	width: 100%;
+	.freight-form-item {
+		width: 100%;
+		height: 60rpx;
+		line-height: 60rpx;
+		margin-bottom: 24rpx;
+		color: #666666;
+		font-size: 28rpx;
+		.label {
+			width: 50%;
+			float: left;
+			margin-right: 0;
+		}
+		.texts {
+			width: 50%;
+			float: right;
+			text-align: right;
+			&.red {
+				color: #f94b4b;
+			}
+			.iconfont {
+				margin-left: 20rpx;
+				color: $color-system;
+			}
+		}
+		.form-input {
+			width: 100%;
+			height: 60rpx;
+			line-height: 60rpx;
+			flex-grow: 1;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			border: 1px solid #e1e1e1;
+			border-radius: 4rpx;
+		}
+	}
+}
+.freight-pay {
+	position: absolute;
+	right: -60%;
+	transform: scale(0.7);
+}
+</style>

+ 399 - 0
pages/seller/order/components/cm-goods-temp.vue

@@ -0,0 +1,399 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list">
+			<view v-for="(supplier, index) in goodsData" :key="index" class="goods-item">
+				<view class="shoptitle">
+					<view v-if="supplier.promotions" class="floor-item-act">
+						<view class="floor-tags">{{ supplier.promotions.name }}</view>
+					</view>
+					<view class="title-text">{{ supplier.shopName }}</view>
+				</view>
+				<view class="productlist" v-for="(pros, idx) in supplier.cartList" :key="idx">
+					<view class="goods-pros-t">
+						<view class="pros-img">
+							<image :src="pros.image" alt="" />
+							<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1">赠品</text>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ pros.name }}</view>
+							<view class="productspec" v-if="pros.productCategory != 2">规格:{{ pros.unit }}</view>
+							<view class="productspec" v-if="pros.productCode != '' && pros.productCode != null">
+								<view>商品编码:{{ pros.productCode }}</view>
+							</view>
+							<view class="productprice">
+								<view class="price"
+									><text>¥{{ pros.price | NumFormat }}</text></view
+								>
+								<view class="count"><text class="small">x</text>{{ pros.number }}</view>
+							</view>
+							<view class="floor-item-act">
+								<template v-if="pros.actStatus == 1 && pros.promotions">
+									<view v-if="PromotionsFormat(pros.promotions)" class="floor-tags">
+										{{ pros.promotions.name }}
+										<text v-if="pros.promotions">
+											:¥{{
+												pros.promotions == null
+													? '0.00'
+													: pros.promotions.touchPrice | NumFormat
+											}}
+										</text>
+									</view>
+									<view v-else-if="pros.promotions.type != 3" class="floor-tags">{{
+										pros.promotions.name
+									}}</view>
+								</template>
+								<template v-if="pros.svipProductFlag == 1 && vipFlag == 1">
+									<view class="svip-tags">
+										<view class="tags">SVIP</view>
+										<view class="price">{{ pros.svipPriceTag }}</view>
+									</view>
+								</template>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="goods-pros-m">
+					<view class="m-text">留言:</view>
+					<view class="m-input">
+						<input
+							type="text"
+							v-model="remark[index]"
+							@change="changeHandle(index)"
+							placeholder-class="placeholder"
+							maxlength="50"
+							placeholder="选填,最多不超过50个汉字"
+						/>
+					</view>
+				</view>
+				<!-- 运费 -->
+				<cm-freight-popup         
+					ref="freight"
+					v-if="isFreight"
+					:index.sync="index"
+					:supplier.sync="supplier"
+					@changePostage="changePostageFlag"
+					@changeColdChina="hanldChangeColdChina"
+				/>
+				<view class="goods-pros-b">
+					<view class="sum-none" v-if="supplier.originalPrice - supplier.totalPrice > 0">
+						<text class="money-sign">¥</text>
+						<text class="money">{{ supplier.originalPrice | NumFormat }}</text>
+						<text class="money-reduced"
+							>减<text>¥{{ (supplier.originalPrice - supplier.totalPrice) | NumFormat }}</text></text
+						>
+					</view>
+					<view class="sum" v-if="secondflag"
+						>合计:<text class="money">¥{{ supplier.totalPrice | NumFormat }}</text></view
+					>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import cmFreightPopup from './cm-freight-popup'
+export default {
+	name: 'goods',
+	components: {
+		cmFreightPopup
+	},
+	props: {
+		goodsData: {
+			type: Array
+		},
+		secondflag: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {
+			isFreight:false,
+			remark: [],
+			vipFlag: 0
+		}
+	},
+	created() {
+		this.initGetStotage()
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	watch: {
+		goodsData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.goodsData = el
+			},
+			deep: true
+		}
+	},
+	computed: {},
+	methods: {
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.isFreight = true
+		},
+		// 勾选冷链费操作
+		hanldChangeColdChina(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changeChina', supplier)
+		},
+		// 更换运费类型 1 不包邮  2 到付
+		changePostageFlag(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changePostage', supplier)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		changeHandle(index) {
+			//输入框的值被改变后
+			this.goodsData[index].note = this.remark[index]
+			this.$emit('handleGoodList', this.goodsData)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.goods-list {
+		width: 100%;
+		height: auto;
+		background: #f7f7f7;
+		.goods-item {
+			width: 702rpx;
+			padding: 0 24rpx;
+			background: #ffffff;
+			margin-bottom: 24rpx;
+			&:last-child {
+				margin-bottom: 0;
+			}
+		}
+		.shoptitle {
+			display: flex;
+			align-items: center;
+			height: 80rpx;
+			line-height: 80rpx;
+			.title-text {
+				width: 400rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				float: left;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 56rpx;
+				font-weight: bold;
+			}
+			.floor-item-act {
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 12rpx 0;
+				margin-right: 12rpx;
+			}
+		}
+		.productlist {
+			width: 100%;
+			height: auto;
+		}
+		.goods-pros-t {
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: auto;
+			padding: 12rpx 0;
+			.pros-img {
+				width: 210rpx;
+				height: 100%;
+				border-radius: 10rpx;
+				margin: 0 26rpx 0 0;
+				position: relative;
+				.tips {
+					display: inline-block;
+					width: 80rpx;
+					height: 40rpx;
+					background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+					line-height: 40rpx;
+					text-align: center;
+					font-size: $font-size-24;
+					color: #ffffff;
+					border-radius: 10rpx 0 10rpx 0;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				image {
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					border: 1px solid #f3f3f3;
+				}
+			}
+		}
+		.pros-product {
+			width: 468rpx;
+			height: 100%;
+			line-height: 40rpx;
+			font-size: $font-size-26;
+			position: relative;
+			.producttitle {
+				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;
+				margin-bottom: 8rpx;
+			}
+			.productspec {
+				height: 40rpx;
+				line-height: 40rpx;
+				color: #999999;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 1;
+				overflow: hidden;
+			}
+			.productprice {
+				height: 54rpx;
+				width: 100%;
+				float: left;
+				.price {
+					line-height: 54rpx;
+					font-size: $font-size-28;
+					width: 48%;
+					color: #ff2a2a;
+					float: left;
+				}
+				.count {
+					height: 100%;
+					float: right;
+					position: relative;
+					.small {
+						color: #666666;
+					}
+				}
+			}
+			.floor-item-act {
+				width: 100%;
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 0 0 10rpx 0;
+			}
+		}
+		.goods-pros-b {
+			width: 100%;
+			height: auto;
+			padding: 10rpx 0;
+			.sum-none {
+				width: 100%;
+				height: 48rpx;
+				line-height: 48rpx;
+				color: $text-color;
+				float: left;
+				text-align: right;
+				.money {
+					font-size: $font-size-26;
+					color: #999999;
+					text-decoration: line-through;
+				}
+				.money-sign {
+					font-size: $font-size-26;
+					color: #999999;
+					text-decoration: line-through;
+				}
+				.money-reduced {
+					margin-left: 10rpx;
+					font-size: $font-size-26;
+					color: $color-system;
+					.iconfont {
+						font-size: $font-size-34;
+					}
+				}
+			}
+			.sum {
+				width: 100%;
+				height: 48rpx;
+				font-size: $font-size-28;
+				line-height: 48rpx;
+				color: $text-color;
+				display: flex;
+				justify-content: flex-end;
+				.money {
+					color: #ff2a2a;
+					font-size: $font-size-28;
+				}
+			}
+		}	
+	}
+}
+.goods-pros-m {
+	height: 76rpx;
+	line-height: 76rpx;
+	font-size: $font-size-26;
+	color: $text-color;
+	margin-top: 12rpx;
+	.m-text {
+		width: 62rpx;
+		float: left;
+		padding-right: 20rpx;
+		font-weight: bold;
+	}
+	.m-input {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		position: relative;
+		width: 580rpx;
+		height: 36rpx;
+		padding: 20rpx;
+		background: #f7f7f7;
+		border-radius: 10rpx;
+		input {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			font-size: $font-size-26;
+			line-height: 36rpx;
+			color: #333333;
+			min-height: 36rpx;
+		}
+	}
+}
+</style>

+ 454 - 0
pages/seller/order/components/cm-invice-popup.vue

@@ -0,0 +1,454 @@
+<template name="cm-parameter">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-title" @tap.stop="handleShowPopup">
+			<text class="text">发票信息:</text> <text class="invoice-text">{{ invoiceText }}</text>
+			<text class="iconfont icon-xiangyou"></text>
+		</view>
+		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="title">发票信息</view>
+				<view class="tui-popup-close" @click="hidePopup">
+					<text class="iconfont icon-iconfontguanbi"></text>
+				</view>
+				<view class="tui-popup-main">
+					<view class="popup-form">
+						<text
+							class="radio"
+							v-for="(invoice, index) in invoiceType"
+							:key="index"
+							@click="handleTnvoiceType(invoice.type, index)"
+							:class="invoiceTypeIndex === index ? 'active' : ''"
+						>
+							{{ invoice.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex === 1">
+						<view class="label">抬头类型:</view>
+						<text
+							class="radio"
+							v-for="(title, index) in titleType"
+							:key="index"
+							@click="handleTitleType(title.type, index)"
+							:class="titleIndex === index ? 'active' : ''"
+						>
+							{{ title.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex > 0">
+						<view class="label">发票抬头:</view>
+						<input
+							class="input"
+							type="text"
+							v-model="invoiceData.invoiceTitle"
+							placeholder="请输入发票抬头"
+							maxlength="50"
+							cursor-spacing="40"
+						/>
+					</view>
+					<template v-if="invoiceTypeIndex === 2 || titleIndex === 1">
+						<view class="popup-form">
+							<view class="label">单位税号:</view>
+							<input
+								class="input"
+								type="text"
+								v-model="invoiceData.corporationTaxNum"
+								placeholder="请输入单位税号"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册地址:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.registeredAddress"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册地址' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册电话:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.registeredPhone"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册电话' : '选填'"
+								maxlength="11"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">开户银行:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.openBank"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入开户银行' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">银行账号:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.bankAccountNo"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入银行账号' : '选填'"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+					</template>
+				</view>
+				<view class="tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-modal-flex">
+						<button
+							class="tui-modal-button"
+							:disabled="disabled"
+							@click="handleConfirm"
+						>
+							确定
+						</button>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'cm-prams-popup',
+	props: {},
+	data() {
+		return {
+			popupShow: false,
+			isIphoneX: this.$store.state.isIphoneX,
+			userId:0,
+			invoiceTypeIndex: 0,
+			titleIndex: 0,
+			invoiceType: [
+				{
+					name: '不开发票',
+					type: 0
+				},
+				{
+					name: '普通发票',
+					type: 1
+				},
+				{
+					name: '增值税专用发票',
+					type: 2
+				}
+			],
+			titleType: [
+				{
+					name: '个人',
+					type: 0
+				},
+				{
+					name: '单位',
+					type: 1
+				}
+			],
+			invoiceText: '不开发票',
+			invoiceData: {
+				type: 0, 		//发票类型 0 不开发票 1 普通发票 2 增值税发票
+				headingType: 0, 		//抬头类型 0 个人 1 单位
+				invoiceTitle: '', 		//发票抬头
+				corporationTaxNum: '',  //单位税号
+				registeredAddress: '',  //单位地址
+				registeredPhone: '',    //注册电话
+				openBank: '', 		    //开户银行
+				bankAccountNo: ''       //银行账号
+			}
+		}
+	},
+	created() {
+		
+	},
+	computed: {
+		
+	},
+	methods: {
+		// 切换发票类型
+		handleTnvoiceType(type, index) {
+			this.invoiceTypeIndex = index
+			this.invoiceData.type = type
+			if(this.invoiceTypeIndex === 1){
+				this.titleIndex = 0
+				this.invoiceData.headingType = 0
+			}
+		},
+		// 切换抬头类型
+		handleTitleType(type, index) {
+			this.titleIndex = index
+			this.invoiceData.headingType = type
+		},
+		// 显示发票弹窗 查询发票信息
+		handleShowPopup(){
+			this.getUseFindInvoice()
+		},
+		// 确认保存发票
+		handleConfirm(){
+			if(this.invoiceTypeIndex === 0){
+				this.invoiceData = {...this.invoiceData , ...{ type : 0 }}
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.hidePopup()
+			}else{
+				this.checkedInput()
+			}
+		},
+		// 校验必填项
+		checkedInput(){
+			/**
+			 *  普通发票 个人 仅校验发票抬头
+			 * 	普通发票 单位 校验发票抬头 校验单位税号
+			 *  增值税发票 校验全部
+			 * */ 
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 0){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 1){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 2){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredAddress) {
+					this.$util.msg('请输入注册地址', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredPhone) {
+					this.$util.msg('请输入注册电话', 2000)
+					return
+				}
+				if (!this.invoiceData.openBank) {
+					this.$util.msg('请输入开户银行', 2000)
+					return
+				}
+				if (!this.invoiceData.bankAccountNo) {
+					this.$util.msg('请输入银行账号', 2000)
+					return
+				}
+			}
+			this.updateInvoiceFn()
+		},
+		//获取发票信息
+		async getUseFindInvoice() {
+			try {
+				this.popupShow = true
+				const resolve = await this.$api.getComStorage('orderUserInfo')
+				this.userId = resolve.userId
+				const res = await this.OrderService.GetFindInvoice({ userId: resolve.userId })
+				this.invoiceData = {...this.invoiceData, ...res.data}
+				console.log('invoiceData',this.invoiceData)
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		//保存发票信息
+		async updateInvoiceFn() {
+			try {
+				const resolve = await this.$api.getComStorage('orderUserInfo')
+				const res = await this.OrderService.UpdateInvoice({ ...this.invoiceData,...{userId: resolve.userId }})
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.$emit('handleChoiceaInvoice', this.invoiceData)
+				this.popupShow = false
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data){
+			const map = {
+				0:'个人',
+				1:'单位'
+			}
+			switch (data.type){
+				case 0:
+					return `不开发票`
+					break;
+				case 1:
+					return `普票-${map[data.headingType]}(${this.nameFilters(data.invoiceTitle)})`
+					break;
+				case 2:
+					return `专票(${this.nameFilters(data.invoiceTitle)})`
+					break;
+			}
+		},
+		nameFilters(value) {
+			if(value && value.length>10){
+				return value.substring(0,10)+"..." 
+			}else{
+				return value
+			}
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.invoice-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.invoice-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		border-bottom: 1px solid #ebebeb;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+			font-weight: bold;
+		}
+		.invoice-text {
+			font-size: $font-size-28;
+			color: #F85050;
+			line-height: 90rpx;
+			display: inline-block;
+			float: right;
+			box-sizing: border-box;
+			padding-right: 40rpx;
+		}
+		.iconfont {
+			width: 50rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			color: #999999;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 0;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 24rpx 0 24rpx;
+	.title {
+		font-size: $font-size-34;
+		color: $text-color;
+		line-height: 88rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 88rpx;
+		font-weight: bold;
+	}
+	.tui-popup-close {
+		width: 90rpx;
+		height: 90rpx;
+		position: absolute;
+		right: 0;
+		top: 24rpx;
+		line-height: 90rpx;
+		text-align: center;
+		color: #b2b2b2;
+		.icon-iconfontguanbi {
+			font-size: $font-size-40;
+		}
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		min-height: 400rpx;
+		.popup-form {
+			width: 100%;
+			height: 112rpx;
+			box-sizing: border-box;
+			padding: 23rpx 0;
+			border-bottom: 1px solid #e1e1e1;
+			&.none{
+				border-bottom: none;
+			}
+			.label {
+				width: 140rpx;
+				float: left;
+				font-size: $font-size-28;
+				line-height: 64rpx;
+				color: #666666;
+			}
+			.radio {
+				height: 64rpx;
+				padding: 0 28rpx;
+				line-height: 64rpx;
+				color: #666666;
+				text-align: center;
+				border-radius: 32rpx;
+				margin: 0 8rpx;
+				display: inline-block;
+				background: #f5f5f5;
+				font-size: $font-size-28;
+				&.active {
+					background: #fff4e6;
+					color: #f3b574;
+				}
+			}
+			.input {
+				line-height: 64rpx;
+				height: 64rpx;
+				color: #333333;
+				font-size: $font-size-28;
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+	}
+	.tui-modal-flex {
+		width: 100%;
+		height: 84rpx;
+		margin-top: 40rpx;
+		display: flex;
+		.tui-modal-button {
+			flex: 1;
+			line-height: 84rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 42rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			background: $btn-confirm;
+			color: #ffffff;
+			&.disabled {
+				background: #e1e1e1;
+				border-radius: 42rpx;
+			}
+		}
+	}
+}
+</style>

+ 237 - 0
pages/seller/order/components/cm-list-button.vue

@@ -0,0 +1,237 @@
+<template name="button">
+	<view class="button-template">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<view
+				class="btn btn-cancel"
+				v-if="secondHandOrderFlag != 1 && !rechargeGoods"
+				@click.stop="btnConfirm('again', shopOrderId)"
+				>再来一单</view
+			>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel', shopOrderId)"
+				>取消订单</view
+			>
+			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',orderId)">删除订单</view> -->
+			<template>
+				<view class="btn btn-cancel" v-if="btnState.isPay" @click.stop="onShareCode(shopOrderId, userId, 1)"
+					>分享支付</view
+				>
+				<view class="btn btn-cancel" v-else @click.stop="onShareCode(shopOrderId, userId, 2)">分享订单</view>
+			</template>
+			<view
+				class="btn btn-query"
+				v-if="btnState.isQuery && order.secondHandOrderFlag != 1"
+				@click.stop="btnConfirm('query', shopOrderId)"
+				>查看物流</view
+			>
+			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', shopOrderId)"
+				>确认订单</view
+			>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'button',
+	props: {
+		status: {
+			type: Number
+		},
+		order: {
+			type: Object
+		},
+		shopOrderId: {
+			type: Number
+		},
+		userId: {
+			type: Number
+		},
+		rechargeGoods: {
+			type: Boolean
+		},
+		serviceProviderId: {
+			type: Number
+		},
+		secondHandOrderFlag: {
+			type: String
+		}
+	},
+	data() {
+		return {
+			isShare: true,
+			shareCode: '',
+			btnState: this.initStatus(),
+			mapStateArr: [
+				{ label: 'isQuery', val: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], status: true }
+			]
+		}
+	},
+	created() {
+		this.initData(this.status)
+	},
+	computed: {},
+	watch: {
+		status: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	methods: {
+		initData(resVal) {
+			/**
+			 * @分享按钮统一显示
+			 * @按钮根据状态显示
+			 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
+			 * @(6)显示[删除订单],其他隐藏
+			 * @(0、111)显示[取消订单],其他隐藏
+			 * @(21,31)只显示分享
+			 * @(13,33)显示[确认收货]和[查看物流]
+			 */
+			this.btnState = this.initStatus()
+			this.mapStateArr.forEach(el => {
+				el.val.forEach(value => {
+					if (resVal === value) {
+						this.btnState[el.label] = el.status
+					}
+				})
+			})
+		},
+		initStatus() {
+			let btnState = {
+				isDelete: false,
+				isCancel: false,
+				isConfirm: false,
+				isShare: true
+			}
+			return btnState
+		},
+		getShareCode(code) {
+			this.shareCode = code
+		},
+		onShareCode(shopOrderId, userId, type) {
+			if (this.order.onlinePayFlag == 1) {
+				this.$util.modal(
+					'提示',
+					'本订单不能进行线上支付,请让客户选择线下转账方式付款',
+					'继续分享',
+					'知道了',
+					true,
+					() => {
+						this.$parent.isShareModal = true
+						;(this.$parent.handleShopOrderId = shopOrderId), (this.$parent.btnClubUserId = userId)
+						this.$parent.isShareType = type
+						this.$emit('shareConfirm')
+					}
+				)
+			} else {
+				this.$parent.isShareModal = true
+				;(this.$parent.handleShopOrderId = shopOrderId), (this.$parent.btnClubUserId = userId)
+				this.$parent.isShareType = type
+				this.$emit('shareConfirm')
+			}
+		},
+		btnConfirm(type, shopOrderId) {
+			let data = {
+				type: type,
+				shopOrderId: shopOrderId
+			}
+			this.$emit('buttonConfirm', data)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.button-template {
+	width: 100%;
+	height: auto;
+	float: left;
+	background: #ffffff;
+	.button-content {
+		height: auto;
+		float: right;
+		position: relative;
+		margin: 20rpx 0;
+		.share-code {
+			width: 200rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			color: #2a45ff;
+			text-align: left;
+			position: absolute;
+			font-size: $font-size-28;
+			font-weight: bold;
+			left: 24rpx;
+			top: 24rpx;
+		}
+		.btn {
+			width: 160rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 34rpx;
+			// float: right;
+			display: inline-block;
+		}
+		.btn-color {
+			background: $btn-confirm;
+			// margin: 22rpx 0 22rpx 22rpx;
+		}
+		.btn-cancel {
+			border: 2rpx solid #999999;
+			background: #ffffff;
+			color: #666666;
+			// float: left;
+			margin-right: 15rpx;
+		}
+		.btn-delete {
+			background: linear-gradient(315deg, rgba(255, 163, 3, 1) 0%, rgba(255, 53, 1, 1) 100%);
+		}
+		.btn-query {
+			background: linear-gradient(135deg, rgba(255, 212, 129, 1) 0%, rgba(198, 129, 0, 1) 100%);
+		}
+		.btn-confirm {
+			background: linear-gradient(315deg, rgba(231, 0, 0, 1) 0%, rgba(255, 104, 1, 1) 100%);
+		}
+		.btn-share {
+			background: linear-gradient(315deg, rgba(0, 212, 150, 1) 0%, rgba(126, 243, 174, 1) 100%);
+			margin-right: 0;
+			position: relative;
+			.tips {
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background: #ff5b00;
+				border-radius: 8rpx;
+				position: absolute;
+				color: #ffffff;
+				line-height: 34rpx;
+				font-size: $font-size-24;
+				text-align: left;
+				right: 0;
+				top: -65rpx;
+				&:before {
+					content: '';
+					width: 25rpx;
+					height: 25rpx;
+					background: #ff5b00;
+					position: absolute;
+					bottom: -8rpx;
+					left: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
+				}
+			}
+		}
+	}
+}
+</style>

+ 1 - 0
components/cm-module/modelAlert/order-alert.vue → pages/seller/order/components/cm-orderpay-popup.vue

@@ -54,6 +54,7 @@
 		methods:{
 			infoData(el){
 				this.dataInfo = el
+				console.log('payModelData',this.dataInfo)
 			},
 			hideConfirm(){
 				this.$parent.isPayModel = false

+ 10 - 2
pages/seller/order/components/sellerRegulations.vue → pages/seller/order/components/cm-regula-popup.vue

@@ -1,7 +1,7 @@
 <template name="regulations">
 	<view class="regulations-template">
 		<view class="regulations-title" @tap.stop="hanldOperationConfim">
-			<text class="text">售后条款</text>
+			<text class="text">售后条款:</text>
 			<view class="freight-right">
 				<text class="text-l">{{regulaText}}</text>
 				<text class="iconfont icon-xiayibu"></text>
@@ -106,6 +106,7 @@
 			float: left;
 			font-weight: bold;
 			border-bottom: 1rpx solid #EBEBEB;
+			position: relative;
 			.freight-left{
 				float: left;
 				.icon-yunfeishuoming{
@@ -125,7 +126,8 @@
 				float: right;
 				color: #2A81FF;
 				.text-l{
-					margin-right: 20rpx;
+					margin-right: 40rpx;
+					font-weight: normal;
 				}
 				.text{
 					line-height: 88rpx;
@@ -134,8 +136,14 @@
 					font-weight: normal;
 				}
 				.icon-xiayibu{
+					width: 50rpx;
+					height: 88rpx;
 					line-height: 88rpx;
 					color: #999999;
+					display: block;
+					position: absolute;
+					right: 0;
+					top: 0;
 					font-weight: normal;
 				}
 			}

+ 12 - 10
pages/seller/order/components/sellerShareAlert.vue → pages/seller/order/components/cm-share-popup.vue

@@ -27,7 +27,7 @@
 	export default{
 		name:'sharealert',
 		props:{
-			orderId:{
+			shopOrderId:{
 				type:Number
 			},
 			shareType:{
@@ -40,17 +40,19 @@
 			}
 		},
 		created() {
-			this.getShareCode(this.orderId)
+			this.getShareCode(this.shopOrderId)
 		},
 		methods:{
-			getShareCode(res){
-				this.OrderService.QueryOrderShareCode({orderId:res}).then(response =>{
-					this.shareCode = response.data
-					this.$parent.shareCode = this.shareCode
-				}).catch(error =>{
-					this.$parent.isShareModal = false
-					this.$util.modal('提示',error.msg,'确定','',false,() =>{})
-				})
+			//获取订单分享码
+			async getShareCode(shopOrderId){
+				try{
+					const res = await this.OrderService.QueryOrderShareCode({shopOrderId:shopOrderId})
+					this.shareCode = res.data
+					this.$parent.shareCode = this.shareCode;
+				}catch(error){
+					this.$parent.isShareModal = false;
+					this.$util.msg(error.msg, 2000)
+				}
 			},
 			hideConfirm(){
 				this.$parent.isShareModal = false

+ 164 - 0
pages/seller/order/components/details/cm-address-temp.vue

@@ -0,0 +1,164 @@
+<template name="address">
+	<view class="address-template">
+		 <!-- 地址信息 -->
+		 <view class="address-section">
+		 	<view class="address-content">
+				<view class="address-cen">
+					<view class="top">
+						<view class="name">{{addressData.receiver ? addressData.receiver : ''}}</view>
+						<view class="mobile">{{addressData.mobile ? addressData.mobile : ''}}</view>
+					</view>
+					<view class="address">
+						<view class="address-icon">
+							<text class="iconfont icon-shouhuodizhi"></text>
+						</view>
+						<view class="address-text">
+							{{addressData.province ? addressData.province : ''}}
+							{{addressData.city ? addressData.city : ''}}
+							{{addressData.town ? addressData.town : ''}}
+							{{addressData.address ? addressData.address : ''}}
+						</view>
+					</view>
+				</view>
+		 	</view>
+		 </view>
+		 <image class="a-bg"  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
+	</view>
+</template>
+
+<script>
+	import { mapState, mapMutations } from 'vuex'	
+	export default{
+		name:'address',
+		props:{
+			addressData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				initData:'',
+				StaticUrl: this.$Static,
+			}
+		},
+		created(){
+			this.initData = this.addressData
+		},
+		computed: {
+			...mapState(['isManage'])
+		},
+		methods:{
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	.address-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+        &::after{
+            content: "";
+            display: block;
+            clear: both;
+        }
+		image{
+			float: left;
+			width: 100%;
+			height: 12rpx;
+		}
+	}
+	.address-section {
+		width: 100%;
+		height: auto;
+		float: left;
+		position: relative;
+		.address-empty{
+			width: 100%;
+			height: 84rpx;
+			line-height: 84rpx;
+			color: $color-system;
+			text-align: center;
+			font-size: $font-size-26;
+			font-weight: bold;
+			background: #fff;
+			float: left;
+			.icon-tianjiadizhi{
+				font-size: 30rpx;
+				margin: 0 8rpx;
+			}
+		}
+		.address-content {
+			display: flex;
+			align-items: center;
+			padding:20rpx 24rpx;
+			background: #fff;
+		}
+		
+		.icon-shouhuodizhi {
+			flex-shrink: 0;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 40rpx;
+			color: $color-system;
+			font-size: 40rpx;
+			margin-right: 10rpx;
+		}	
+		.address-cen {
+			width: 100%;
+			height: auto;
+			position: relative;
+			.top{
+				padding-left: 50rpx;
+				height: 42rpx;
+				line-height: 42rpx;
+				text-align: left;
+				font-size: $font-size-30;
+				color: $text-color;
+				padding-bottom: 8rpx;
+				display: flex;
+				float: left;
+				.name{
+					margin-right: 48rpx;
+				}
+				.mobile{
+					margin-right: 40rpx;
+				}
+			}
+			.address {
+				width: 100%;
+				height: auto;
+				float: left;
+				.address-icon{
+					width: 40rpx;
+					height: auto;
+					float: left;
+					line-height: 40rpx;
+				}
+				.address-text{
+					width: 650rpx;
+					padding-left: 10rpx;
+					float: left;
+					line-height: 40rpx;
+					font-size: $font-size-28;
+					color: #666666;
+					text-align: left;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+				}
+			}
+		}
+		.icon-xiayibu {
+			font-size: 32rpx;
+			color: $text-color;
+			margin-right: 30rpx;
+		}
+	}
+</style>

+ 535 - 0
pages/seller/order/components/details/cm-goods-temp.vue

@@ -0,0 +1,535 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list clearfix">
+			<view class="goods-item clearfix">
+				<view class="shoptitle">
+					<view v-if="orderInfo.shopPromotion" class="floor-item-act">
+						<view class="floor-tags" @click.stop="clickPopupShow(orderInfo.shopPromotion)">{{
+							orderInfo.shopPromotion.name
+						}}</view>
+					</view>
+					<view class="title-text" v-if="orderInfo.secondHandOrderFlag == 1"
+						>{{ orderInfo.shopName }}
+						<label class="paymenttext" v-if="orderInfo.affirmPaymentFlag == 1">已确认打款供应商</label>
+					</view>
+					<view class="title-text" v-else @click="goShophome(orderInfo)">
+						{{ orderInfo.shopName }} <label class="iconfont icon-jinrudianpu"></label>
+					</view>
+				</view>
+				<view class="productlist">
+					<view class="goods-pros-t"  v-for="(item, index) in dataList" :key="index" @click="details(item)">
+						<view class="pros-left">
+							<view class="pros-img">
+								<image :src="item.image" alt="" />
+								<text class="tips" v-if="item.giftType == 2 || item.giftType == 1">赠品</text>
+							</view>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ item.name }}</view>
+							<view class="productspec product-view" v-if="item.productCategory != 2"
+								>规格:{{ item.productUnit ? item.productUnit : '' }}</view
+							>
+							<view class="product-view">
+								<view
+									class="view-num red"
+									:class="
+										item.svipPriceFlag == 1 || PromotionsFormat(item.productPromotion) ? 'none' : ''
+									"
+									>¥{{ item.price | NumFormat }}</view
+								>
+								<view class="view-num right">x {{ item.num }}</view>
+							</view>
+							<view class="floor-item-act">
+								<template v-if="item.productPromotion">
+									<view
+										v-if="PromotionsFormat(item.productPromotion)"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+									>
+										{{ item.productPromotion.name }}
+										<text v-if="item.productPromotion != null && item.productPromotion.type != 3">
+											:¥{{
+												item.productPromotion == null
+													? '0.00'
+													: item.productPromotion.touchPrice | NumFormat
+											}}
+										</text>
+									</view>
+									<view
+										v-else-if="item.productPromotion.type != 3"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+										>{{ item.productPromotion.name }}</view
+									>
+								</template>
+								<template v-if="item.svipPriceFlag == 1">
+									<view class="svip-tags">
+										<view class="tags">SVIP</view>
+										<view class="price">{{ item.svipPriceTag }}</view>
+									</view>
+								</template>
+							</view>
+						</view>
+					</view>
+					<!-- <view class=" product-info clearfix">
+						<view class="product-view" v-if="orderInfo.returnedNum > 0 || orderInfo.actualCancelNum > 0">
+							<view class="view-num"
+								>已退货/已取消:<text class="text"
+									>{{ orderInfo.returnedNum }}/{{ orderInfo.actualCancelNum }}</text
+								></view
+							>
+						</view>
+						<view class="product-view" v-if="item.svipPriceType != 1">
+							<view class="view-num">折扣:<text class="text">{{ item.discount == null ? '0' : item.discount }}%</text></view>
+						</view>
+						<view class="product-view">
+							<view class="view-num"
+								>税率:<text class="text">{{ orderInfo.taxRate }}%</text></view
+							>
+						</view>
+						<view class="product-view">
+							<view class="view-num">折后单价:<text class="text">¥{{ item.discountPrice | NumFormat }}</text></view>
+						</view>
+						<view class="product-view allPrice">
+							<view class="view-num"
+								>合计:<text class="text">¥{{ orderInfo.totalFee | NumFormat }}</text></view
+							>
+						</view>
+					</view> -->
+				</view>
+				<view class="goods-pros-m" v-if="orderInfo.note">
+					<view class="m-text">留言:</view>
+					<view class="m-input">
+						<view class="text">{{ orderInfo.note ? orderInfo.note : '' }}</view>
+					</view>
+				</view>
+			</view>
+			<view class="goods-item">
+				<view class="goods-pros-b clearfix">
+					<view class="pros-price-view">
+						<view class="price-view-le">商品总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.productAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">运费:</view>
+						<view class="price-view-ri">{{ orderInfo.postageInfo }}</view>
+					</view>
+					<view class="pros-price-view" v-if="orderInfo.eachDiscount > 0"
+						>> <view class="price-view-le">优惠:</view>
+						<view class="price-view-ri">¥{{ orderInfo.eachDiscount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">订单总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">已付金额:</view>
+						<view class="price-view-ri">
+							¥{{ orderInfo.receiptAmount | NumFormat }}
+							<text v-if="orderInfo.accountAmount > 0"
+								>(余额抵扣:¥{{ orderInfo.accountAmount | NumFormat }})</text
+							>
+						</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">待付金额:</view>
+						<view class="price-view-ri red">¥{{ orderInfo.obligation | NumFormat }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'goods',
+	props: {
+		list: {
+			type: Array
+		},
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			dataList: [],
+			isHandelShow: false,
+			vipFlag: 0
+		}
+	},
+	created() {
+		this.initGetStotage(this.list)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		},
+		formatIncludedTax(value) {
+			if (value === '1') {
+				return '不含税 '
+			} else if (value === '2') {
+				return '含税'
+			} else {
+				return ''
+			}
+		}
+	},
+	computed: {},
+	methods: {
+		async initGetStotage(list) {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.dataList = list
+		},
+		handelShowDetails() {
+			this.isHandelShow = !this.isHandelShow
+		},
+		goShophome(shop) {
+			if (shop.shopType === 2) {
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
+		},
+		details(item) {
+			if (pros.validFlag == 9) {
+				return
+			} else {
+				this.$api.navigateTo(`/pages/goods/product?id=${item.productId}`)
+			}
+		},
+		clickPopupShow(pros) {
+			console.log(pros)
+			this.$emit('popupClick', pros)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.goods-list {
+		width: 100%;
+		height: auto;
+		background: #f7f7f7;
+		.goods-item {
+			width: 702rpx;
+			padding: 24rpx;
+			height: auto;
+			background: #ffffff;
+			border-bottom: 1px solid #e1e1e1;
+			float: left;
+			&:last-child {
+				border-bottom: none;
+			}
+		}
+		.shoptitle {
+			width: 100%;
+			float: left;
+			height: 56rpx;
+			line-height: 56rpx;
+			margin-bottom: 12rpx;
+			.floor-item-act {
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 10rpx 0;
+				margin-right: 12rpx;
+				.floor-tags {
+					height: 28rpx;
+					border-radius: 6rpx;
+					background-color: #ffffff;
+					line-height: 28rpx;
+					color: $color-system;
+					text-align: center;
+					display: inline-block;
+					padding: 0 6rpx;
+					font-size: $font-size-20;
+					border: 1px solid #ff5b00;
+					float: left;
+				}
+			}
+			.title-text {
+				width: 400rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				float: left;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 56rpx;
+				font-weight: bold;
+				.iconfont {
+					color: #999999;
+					font-size: 28rpx;
+					margin-left: 10rpx;
+				}
+				.paymenttext {
+					color: #f9a94b;
+					font-size: $font-size-22;
+					margin-left: 20rpx;
+				}
+			}
+		}
+		.productlist {
+			width: 100%;
+			height: auto;
+			padding: 0;
+			box-sizing: border-box;
+		}
+		.goods-pros-t {
+			display: flex;
+			width: 100%;
+			height: auto;
+			margin: 20rpx 0;
+			&:last-child{
+				margin-bottom: 0;
+			}
+			.pros-left {
+				width: 210rpx;
+				height: 100%;
+				margin: 0 26rpx 0 0;
+			}
+			.pros-img {
+				width: 210rpx;
+				height: 210rpx;
+				border-radius: 10rpx;
+				border: 1px solid #f3f3f3;
+				position: relative;
+				.tips {
+					display: inline-block;
+					width: 80rpx;
+					height: 40rpx;
+					background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+					line-height: 40rpx;
+					text-align: center;
+					font-size: $font-size-24;
+					color: #ffffff;
+					border-radius: 10rpx 0 10rpx 0;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				image {
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+				}
+			}
+		}
+		.product-info {
+			padding: 10rpx 0;
+			.product-view {
+				font-size: $font-size-24;
+				color: #999999;
+				overflow: hidden;
+				height: 44rpx;
+				line-height: 44rpx;
+				float: left;
+				width: 50%;
+				.view-num {
+					float: left;
+					.text {
+						color: #333333;
+					}
+				}
+			}
+		}
+		.pros-product {
+			width: 468rpx;
+			height: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-26;
+			position: relative;
+			.product-view {
+				&.allPrice {
+					width: 100%;
+				}
+				.view-num {
+					flex: 1;
+					text-align: left;
+					font-size: $font-size-26;
+					color: #999999;
+					line-height: 44rpx;
+					float: left;
+					&.right {
+						float: right;
+					}
+					&.red {
+						color: #ff2000;
+						font-weight: bold;
+						&.none {
+							text-decoration: line-through;
+							color: #999999;
+						}
+					}
+				}
+			}
+			.producttitle {
+				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;
+				margin-bottom: 8rpx;
+			}
+			.productspec {
+				height: 44rpx;
+				color: #999999;
+				line-height: 44rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 1;
+				overflow: hidden;
+			}
+			.productprice {
+				height: 48rpx;
+				position: absolute;
+				width: 100%;
+				bottom: 0;
+				.price {
+					line-height: 48rpx;
+					font-size: $font-size-28;
+					width: 48%;
+					color: #ff2a2a;
+					float: left;
+					.price {
+						line-height: 48rpx;
+						font-size: $font-size-28;
+						width: 48%;
+						color: #ff2a2a;
+						float: left;
+						font-weight: bold;
+					}
+				}
+				.count {
+					height: 100%;
+					float: right;
+					position: relative;
+					.small {
+						color: #666666;
+					}
+				}
+			}
+			.floor-item-act {
+				width: 100%;
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 10rpx 0 0 0;
+			}
+			.floor-item-act {
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 10rpx 0;
+				margin-right: 12rpx;
+			}
+		}
+		.goods-pros-m {
+			width: 100%;
+			height: auto;
+			line-height: 76rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			float: left;
+			.m-text {
+				width: 62rpx;
+				float: left;
+				padding-right: 20rpx;
+				font-weight: bold;
+			}
+			.m-input {
+				display: -webkit-box;
+				display: -webkit-flex;
+				display: flex;
+				-webkit-box-align: center;
+				-webkit-align-items: center;
+				align-items: center;
+				position: relative;
+				width: 620rpx;
+				height: auto;
+				padding: 20rpx 0 10rpx 0;
+				background: #ffffff;
+				.text {
+					width: 100%;
+					height: 100%;
+					font-size: $font-size-26;
+					line-height: 36rpx;
+					color: #333333;
+				}
+			}
+		}
+		.goods-pros-b {
+			width: 100%;
+			float: left;
+			.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;
+					&.red {
+						color: #f94b4b;
+					}
+				}
+			}
+			.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 {
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 151 - 0
pages/seller/order/components/details/cm-invice-temp.vue

@@ -0,0 +1,151 @@
+<template name="invoice">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-content">
+			<view class="invoice-title">发票信息</view>
+			<view class="invoice-empty">
+				<text>{{ invoiceText }}</text>
+			</view>
+			<view class="invoice-text" v-if="orderInvoice.type > 0">
+				<view class="table">
+					<text class="label-name">发票抬头:</text>
+					<text class="label-text">{{ orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : '无' }}</text>
+				</view>
+				<template v-if="orderInvoice.type === 2 || orderInvoice.headingType === 1">
+					<view class="table">
+						<text class="label-name">单位税号:</text>
+						<text class="label-text">{{
+							orderInvoice.corporationTaxNum ? orderInvoice.corporationTaxNum : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册地址:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredAddress ? orderInvoice.registeredAddress : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册电话:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredPhone ? orderInvoice.registeredPhone : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">开户银行:</text>
+						<text class="label-text">{{ orderInvoice.openBank ? orderInvoice.openBank : '无' }}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">银行账号:</text>
+						<text class="label-text">{{ bankAccountNo ? bankAccountNo : '无' }}</text>
+					</view>
+				</template>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'invoice',
+	props: {
+		orderInvoice: {
+			type: Object
+		}
+	},
+	filters: {},
+	data() {
+		return {
+			invoiceText: '不开发票',
+			title: '发票信息',
+			isOpen: false,
+			bankAccountNo: ''
+		}
+	},
+	created() {
+		this.initData(this.orderInvoice)
+	},
+	computed: {},
+	methods: {
+		initData(data) {
+			if (data) {
+				this.bankAccountNo = this.$reg.bankRegex(data.bankAccountNo)
+				this.invoiceText = this.setInvoiceText(data)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data) {
+			const map = {
+				0: '个人',
+				1: '单位'
+			}
+			switch (data.type) {
+				case 0:
+					return `不开发票`
+					break
+				case 1:
+					return `普票-${map[data.headingType]}`
+					break
+				case 2:
+					return `专票`
+					break
+			}
+		},
+		onMessage(pros) {},
+		showInvoice() {
+			this.isOpen = !this.isOpen
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.invoice-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.invoice-content {
+		width: 702rpx;
+		padding: 20rpx 24rpx;
+	}
+	.invoice-title {
+		font-size: $font-size-28;
+		color: $text-color;
+		text-align: left;
+		line-height: 40rpx;
+		font-weight: bold;
+		margin-bottom: 30rpx;
+	}
+	.invoice-empty {
+		font-size: $font-size-28;
+		color: $text-color;
+		text-align: left;
+		line-height: 64rpx;
+		.txt {
+			font-size: $font-size-24;
+			color: #999999;
+		}
+	}
+	.invoice-text {
+		width: 100%;
+		height: auto;
+		.table {
+			height: auto;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			text-align: left;
+			position: relative;
+			.label-name {
+				display: inline-block;
+				line-height: 64rpx;
+				color: #999999;
+			}
+			.label-text {
+				color: #333333;
+			}
+		}
+	}
+}
+</style>

+ 246 - 0
pages/seller/order/components/details/cm-order-temp.vue

@@ -0,0 +1,246 @@
+<template name="information">
+	<view class="information-template">
+		<!-- 订单信息 -->
+		<view class="information-content">
+			<view class="information-view title">
+				<view class="view-num">
+					<view class="bage-text">
+						订单编号:<label class="label">{{ orderData.shopOrderNo ? orderData.shopOrderNo : '' }}</label>
+					</view>
+				</view>
+			</view>
+			<view class="information-view same" v-if="orderData.presentNum > 0">
+				<view class="view-man">
+					赠品总数:<label class="label">{{
+						orderData.presentNum
+					}}</label>
+				</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num time">
+					下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</label>
+				</view>
+			</view>
+<!-- 			<view class="information-view same" v-if="orderData.svipFullReduction > 0">
+				<view class="view-man">
+					超级会员优惠:<label class="label">¥{{ orderData.svipFullReduction | NumFormat }}</label>
+				</view>
+			</view>
+			<view class="information-view" v-if="orderData.userBeans > 0">
+				<view class="view-man">
+					采美豆抵用运费:<label class="label">{{ orderData.userBeans }}</label>
+				</view>
+			</view>
+			<view class="information-view same" v-if="orderData.discountFee && orderData.discountFee > 0">
+				<view class="view-num">
+					经理折扣:<label class="label">¥{{ orderData.discountFee | NumFormat }}</label>
+				</view>
+			</view>
+			<view
+				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 same">
+				<view class="view-man">
+					优惠券:<label class="label">¥{{ orderData.couponAmount | NumFormat }}</label>
+				</view>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+const thorui = require('@/components/clipboard/clipboard.thorui.js')
+export default {
+	name: 'orderInfo',
+	props: {
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			orderData: '',
+			openShowflag: false,
+		}
+	},
+	created() {
+		this.initData(this.orderInfo)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value)
+			return number.toFixed(2)
+		}
+	},
+	computed: {},
+	watch: {
+		orderInfo: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	methods: {
+		openShow() {
+			this.openShowflag = true
+			this.infoflag = false
+		},
+		initData(data) {
+			this.orderData = data
+		},
+		clipboard(data) {
+			thorui.getClipboardData(data, res => {
+				if (res) {
+					this.$util.msg('复制成功', 2000, true, 'success')
+				} else {
+					this.$util.msg('复制失败', 2000, true, 'none')
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.information-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.information-content {
+		width: 702rpx;
+		padding: 15rpx 24rpx 20rpx 24rpx;
+		.information-view {
+			height: 50rpx;
+			line-height: 50rpx;
+			font-size: $font-size-24;
+			margin: 4rpx 0;
+			// display: flex;
+			width: 55%;
+			display: inline-block;
+			&.same {
+				width: 45%;
+				text-align: right;
+			}
+			// &.title{
+			// 	height: 68rpx;
+			// 	line-height: 68rpx;
+			// 	margin-bottom: 5rpx;
+			// }
+			view {
+				// flex: 1;
+				color: $text-color;
+				color: #999999;
+				.label {
+					color: #666666;
+				}
+			}
+			.view-num.title {
+				height: 68rpx;
+				line-height: 68rpx;
+				position: relative;
+				.bage-icon {
+					width: 50rpx;
+					height: 50rpx;
+					display: block;
+					position: absolute;
+					right: 0;
+					top: 9rpx;
+				}
+				.bage-buss {
+					display: inline-block;
+					width: 72rpx;
+					height: 30rpx;
+					background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+					border-radius: 4rpx;
+					line-height: 30rpx;
+					font-size: $font-size-24;
+					text-align: center;
+					color: #ffffff;
+					margin-top: 10rpx;
+				}
+				.bage-auto {
+					display: inline-block;
+					width: 72rpx;
+					height: 30rpx;
+					background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+					border-radius: 4rpx;
+					line-height: 30rpx;
+					font-size: $font-size-24;
+					text-align: center;
+					color: #ffffff;
+					margin-top: 10rpx;
+				}
+				.bage-text {
+					display: inline-block;
+					font-size: $font-size-28;
+					line-height: 68rpx;
+					text-align: left;
+					color: $color-system;
+					// margin-left: 10rpx;
+				}
+			}
+			.view-num.ord {
+				color: $color-system;
+				text-align: left;
+				flex: 3;
+				font-weight: bold;
+			}
+			.view-num.time {
+				color: #999999;
+				flex: 6;
+			}
+			// .bold{
+			// 	font-weight: bold;
+			// }
+			.red {
+				color: #ff2a2a;
+			}
+			.view-type {
+				float: right;
+				text-align: right;
+				color: #ff2a2a;
+				flex: 4;
+			}
+			.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: 6rpx;
+				line-height: 36rpx;
+				display: inline-block;
+				margin-left: 42rpx;
+			}
+		}
+	}
+}
+.openinfo {
+	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: 8rpx;
+		text-align: center;
+		color: #b2b2b2;
+		margin: 0 auto;
+		font-size: $font-size-24;
+	}
+}
+</style>

+ 48 - 39
components/cm-module/orderDetails/paymentRecord.vue → pages/seller/order/components/details/cm-payment-temp.vue

@@ -12,10 +12,14 @@
 			 	<text>暂无支付记录</text>
 			</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">{{ item.payTypeStr }}</view>
-					<view class="item-time mm">¥{{item.associateAmount.toFixed(2)}}</view>
+				<view class="record-item" v-for="(record,index) in discernReceiptList" :key="index">
+					<view class="record-item-t">
+						<view class="item-time mm">¥{{record.associateAmount.toFixed(2)}}</view>
+					</view>
+					<view class="record-item-t">
+						<view class="item-time tt">{{ record.receiptDate }}</view>
+						<view class="item-time pp">{{ payTypeText(record) }}</view>
+					</view>	
 				</view>
 			</view>
 		</view>
@@ -56,23 +60,22 @@
 					this.isEmpty = true
 				}
 			},
-			payTypeText (state){//处理支付记录文字
-				let stateText = '',
-					stateTextObject={
-						12:'企业网银',
-						13:'微信支付',
-						14:'支付宝',
-						15:'微信支付',
-						16:'余额抵扣',
-						18:'大额银联转账',
-					}
-				Object.keys(stateTextObject).forEach(key => {
-					if(key == state){
-						stateText = stateTextObject[key]
-					}
-				})
-				return stateText
-			},
+			payTypeText(record) {
+				//处理支付记录文字
+				const map = {
+					12: '企业网银',
+					13: '微信支付',
+					14: '支付宝',
+					15: '微信支付',
+					16: '余额抵扣',
+					31: '线下支付凭证'
+				}
+				if(record.payType === 28 || record.payType === 29 ){
+					return record.quickPayStr
+				}else{
+					return map[record.payType]
+				}
+			}
 		}
 	}
 </script>
@@ -120,28 +123,34 @@
 				float: left;
 				margin-top: 12rpx;
 				.record-item{
-					height: 40rpx;
+					height: auto;
 					width: 100%;
 					padding: 12rpx 0;
 					font-size: $font-size-28;
-					line-height: 40rpx;
 					float: left;
-					display: flex;
-					justify-content: center;
-					flex-direction: row;
-					.item-time{
-						&.mm{
-							flex: 3;
-							color: $text-color;
-							text-align: right;
-						}
-						&.pp{
-							flex: 3;
-							color: $text-color;
-						}
-						&.tt{
-							flex: 4;
-							color: #999999;
+					.record-item-t{
+						width: 100%;
+						height: 40rpx;
+						display: flex;
+						justify-content: center;
+						flex-direction: row;
+						.item-time{
+							line-height: 48rpx;
+							&.mm{
+								flex: 1;
+								color: $text-color;
+								text-align: left;
+							}
+							&.pp{
+								flex: 5;
+								color: #999999;
+								text-align: right;
+							}
+							&.tt{
+								flex: 5;
+								color: #999999;
+								text-align: left;
+							}
 						}
 					}
 				}

+ 0 - 0
components/cm-module/orderDetails/activipopu.vue → pages/seller/order/components/details/cm-promote-popup.vue


+ 0 - 0
components/cm-module/orderDetails/refundRecord.vue → pages/seller/order/components/details/cm-refund-temp.vue


+ 150 - 0
pages/seller/order/components/details/cm-voucher-temp.vue

@@ -0,0 +1,150 @@
+<template name="refund">
+	<view class="record-template" v-if="isEmpty">
+		<!-- 支付凭证 -->
+		<view class="record-content">
+			<view class="record-title">线下支付凭证</view>
+			<view class="record-list" v-for="(item,index) in voucherList">
+				<view class="record-list-time">{{ item.addtime }}</view>
+				<scroll-view scroll-x>
+					<view class="tui-goods__list">
+						<view class="tui-goods__item" @click.stop="previewImg(image.img)" v-for="image in item.imgs">
+							<view class="tui-goods__imgbox">
+								<image :src="image.img" mode="" class="tui-goods__img"></image>
+							</view>
+						</view>
+					</view>
+				</scroll-view> 
+				<view class="record-list-tmk" v-if="item.remarks">
+					备注:{{ item.remarks }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"refund",
+		props:{
+			list:{
+				type:Array
+			},
+		},
+		data() {
+			return{
+				isEmpty:true,
+				voucherList:[]
+			}
+		},
+		created(){
+			this.initData(this.list)
+		},
+		computed: {
+		
+		},
+		methods:{
+			initData(data) {
+				this.voucherList = data
+			},
+			previewImg (image) {//顶部商品图片预览
+				this.isPreviewImage = true
+				let urls = []
+				urls.push(image)
+				uni.previewImage({
+					urls: urls,
+					current: 0
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.record-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		padding-bottom: 40rpx;
+		.record-content{
+			width: 100%;
+			padding: 24rpx;
+			box-sizing: border-box;
+			height: auto;
+			.record-title{
+				width: 100%;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+				margin-bottom: 12rpx;
+				float: left;
+				font-weight: bold;
+				padding: 24rpx 0;
+				box-sizing: border-box;
+			}
+			.record-list{
+				width: 100%;
+				padding: 0 24rpx 24rpx;
+				box-sizing: border-box;
+				overflow: hidden;
+				.record-list-time{
+					width: 100%;
+					line-height: 37rpx;
+					text-align: left;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					color: #666666;
+					font-size: $font-size-26;
+					margin-bottom: 20rpx;
+				}
+				.record-list-tmk{
+					width: 100%;
+					line-height: 37rpx;
+					text-align: justify;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					color: #999999;
+					font-size: $font-size-26;
+					margin-top: 20rpx;
+				}
+			}
+		}
+	}
+	.tui-goods__list {
+		display: flex;
+		align-items: center;
+	}
+	.tui-goods__item {
+		background-color: #fff;
+		width: 210rpx;
+		height: 210rpx;
+		border-radius: 6rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		flex-shrink: 0;
+		margin-right: 18rpx;
+		border:1px solid #B8BFCA;
+	}
+	.tui-goods__imgbox {
+		width: 210rpx;
+		height: 210rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		box-sizing: border-box;
+		border-radius: 8rpx;
+	}
+	
+	.tui-goods__img {
+		width: 210rpx;
+		height: 210rpx;
+		display: block;
+	}
+</style>

+ 0 - 256
pages/seller/order/components/sellerDetaileButton.vue

@@ -1,256 +0,0 @@
-<template name="button">
-	<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
-		<!-- 底部按钮 -->
-		<view class="button-content">
-			<view class="btn btn-cancel"  v-if="secondHandOrderFlag!=1 && !rechargeGoods"  @click.stop="btnConfirm('again',order)">再来一单</view>
-			<view class="btn btn-cancel" v-if="btnState.isCancel"  @click.stop="btnConfirm('cancel',order)">取消订单</view>
-			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete"  @click.stop="btnConfirm('delete',order)">删除订单</view> -->
-			<template>
-				<view class="btn btn-share" v-if="btnState.isPay" @click.stop="onShareCode(1)">
-					<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
-					分享支付
-				</view>	
-				<view class="btn btn-share" v-else @click.stop="onShareCode(2)">
-					<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
-					分享订单
-				</view>	
-			</template>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',order)">确认订单</view>
-			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',order)">查看物流</view>
-			<view class="btn btn-color" v-if="btnState.isPay && ableUserMoney > 0 && !rechargeGoods" @click.stop="btnConfirm('balance',order)">余额抵扣</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'button',
-		props:{
-			status:{
-				type:Number
-			},
-			order: {
-				type:Object
-			},
-			ableUserMoney:{
-				type:Number
-			},
-			rechargeGoods:{
-				type:Boolean
-			},
-			shareCode:{
-				type:String
-			},
-			serviceProviderId:{
-				type:Number
-			},
-			secondHandOrderFlag:{
-				type:String
-			}
-		},
-		watch:{
-			status:{
-				handler:function(val){
-					this.initData(val)
-				},
-				deep:true//对象内部的属性监听,也叫深度监听
-			}
-		},
-		data() {
-			return{
-				btnState:this.initStatus(),
-				isIphoneX:this.$store.state.isIphoneX,
-				invoiceStatus:false,
-				mapStateArr:[
-					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
-					{label:'isDelete',val:[6],status: true},
-					{label:'isCancel',val:[0,111],status: true},
-					{label:'isConfirm',val:[0],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],status: true},
-				]
-			}
-		},
-		created(){
-			console.log(this.rechargeGoods)
-			this.initData(this.status)
-		},
-		computed: {
-
-		},
-		methods:{
-			initData(resVal) {
-				/**
-				 * @分享按钮统一显示
-				 * @按钮根据状态显示
-				 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
-				 * @(6)显示[删除订单],其他隐藏
-				 * @(0、111)显示[取消订单],其他隐藏
-				 * @(21,31)只显示分享
-				 * @(13,33)显示[确认收货]和[查看物流]
-				 */
-				this.btnState = this.initStatus()
-				this.mapStateArr.forEach(el => {
-					el.val.forEach(value => {
-						if(resVal === value){
-							this.btnState[el.label] = el.status
-							//console.log(this.btnState[el.label]);
-						}
-					})
-				})
-			},
-			initStatus(){
-				let btnState= {
-						isQuery: false,
-						isDelete: false,
-						isCancel: false,
-						isConfirm: false,
-						isPay: false,
-					}
-				return 	btnState
-			},
-			getShareCode(code){
-				this.shareCode = code
-			},
-			onShareCode(type){
-				if(this.order.onlinePayFlag == 1){
-					this.$util.modal('提示','本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
-						this.$parent.isShareModal = true
-					})	
-				}else{
-					this.$parent.isShareModal = true
-					this.$parent.isShareType = type
-				}
-			},
-			btnConfirm(type,order){
-				let data = {
-						type:type,
-						orderId:order.orderId,
-						order:order
-					}
-				this.$emit('buttonConfirm',data)
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	.button-template{
-		width: 100%;
-		height: auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background: #FFFFFF;
-		.button-content{
-			padding:0 24rpx;
-			height: auto;
-			float: right;
-			position: relative;
-			margin: 20rpx 0;
-			.share-code{
-				width: 200rpx;
-				height:  64rpx;
-				line-height: 64rpx;
-				color: #2A45FF;
-				text-align: left;
-				position: absolute;
-				font-size: $font-size-28;
-				font-weight: bold;
-				left: 24rpx;
-				top: 24rpx;
-			}
-			.btn{
-				width: 160rpx;
-				height:  64rpx;
-				// margin:22rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius: 34rpx;
-				float: right;
-			}
-			.btn-color{
-				background: #f94b4b;
-				// margin: 20rpx 0 20rpx 20rpx;
-				.tips{
-					width: 160rpx;
-					height: 34rpx;
-					padding: 10rpx 10rpx;
-					background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
-					box-shadow:0px 2px 4px 0px rgba(0,0,0,0.2);
-					border-radius: 8rpx;
-					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 24rpx;
-					top: -45rpx;
-					&:before{
-						content: "";
-						width: 25rpx;
-						height: 25rpx;
-						background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
-						position: absolute;
-						bottom: -8rpx;
-						right: 30rpx;
-						z-index: -1;
-						transform:rotate(45deg);
-					}
-				}
-			}
-			.btn-cancel{
-				background:#FFFFFF;
-				color: #666666;
-				float: left;
-				// margin: 22rpx 0;
-				margin-right: 15rpx;
-				border: 2rpx solid #999999;
-			}
-			.btn-delete{
-				background:linear-gradient(315deg,rgba(255,163,3,1) 0%,rgba(255,53,1,1) 100%);
-			}
-			.btn-query{
-				background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
-			}
-			.btn-confirm{
-				background:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
-			}
-			.btn-share{
-				background:#FFFFFF;
-				color: #666666;
-				float: left;
-				// margin: 22rpx 0;
-				margin-right: 15rpx;
-				border: 2rpx solid #999999;
-				position: relative;
-				.tips{
-					width: 160rpx;
-					height: 34rpx;
-					padding: 10rpx 10rpx;
-					background:#FF5B00;
-					border-radius: 8rpx;
-					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 0;
-					top: -69rpx;
-					&:before{
-						content: "";
-						width: 25rpx;
-						height: 25rpx;
-						background:#FF5B00;
-						position: absolute;
-						bottom: -8rpx;
-						left: 30rpx;
-						z-index: -1;
-						transform:rotate(45deg);
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 524
pages/seller/order/components/sellerFreight.vue

@@ -1,524 +0,0 @@
-<template name="freight">
-	<view class="freight-template">
-		 <!-- 运费信息 -->
-		<view class="invoice-freight" @tap.stop="hanldOperationConfim">
-			<view class="freight-left">运费</view>
-			<view class="freight-right">
-				<text class="text-l">{{freightText}}</text>
-				<text class="text" v-if="hanldFreightData.postageFlag == 1">¥{{orderPriceToFixed(freightMoney)}}</text>
-				<text class="iconfont icon-xiayibu"></text>
-			</view>
-		</view>
-		<!--底部选择模态层弹窗组件 -->
-		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @click="freightConfim">
-			<!-- 遮罩层 -->
-			<view class="mask"></view>
-			<view class="layer" @tap.stop="discard">
-				<view class="content">
-					<view class="freight-ltitle">选择运费</view>
-					<view class="freight-radio">
-						<radio-group class="row-group" @change="radioChange">
-							<label class="row-input" v-for="(item, index) in freightList" :key="item.value">
-								<radio class="row-radio" :value="item.value" :checked="index === current" color="#FF5B00"/>
-								<view class="row-text">{{item.name}}</view>
-							</label>
-						</radio-group>
-					</view>
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == 1">
-						<view class="group-from">
-							<input class="form-input" type="number" v-model="hanldFreight" @input="setFreightMoney" placeholder="请填写运费" maxlength="20">
-						</view>
-					</view>	
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == 0">
-						<text class="text">{{freightText}}</text>
-					</view>
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == -1">
-						<text class="text">{{freightText}}</text>
-					</view>
-				</view>
-				<view class="btn">
-					<view class="button add" @click="freightConfim">完成</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'freight',
-		props:{
-			freightDatas:{
-				type:Object
-			}
-		},
-		data() {
-			return{
-				freightText:'不包邮',
-				freightMoney:0,
-				specClass: '',//规格弹窗css类,控制开关动画
-				freightList:[
-					{value:1,name:'不包邮'},
-					{value:0,name:'包邮'},
-					{value:-1,name:'到付'},
-				],
-				current:0,
-				hanldFreight:0,
-				hanldFreightData:{
-					postageFlag:1,
-					postage:0
-				}
-			}
-		},
-		created(){
-			this.infoData(this.freightDatas)
-		},
-		watch: {
-			freightDatas: {
-				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
-					this.freightDatas = el
-					this.infoData(this.freightDatas)
-				},
-				deep: true
-			}
-		},
-		methods:{
-			infoData(data){//初始化运费
-				console.log('初始化运费',data)
-				switch(data.postageFlag){
-					case 1:
-						this.current = 0
-						this.hanldFreightData.postageFlag = data.postageFlag
-						if(data.freight == 0){
-							this.hanldFreight = ''
-						}else{
-							this.hanldFreight = data.postage
-						}
-						this.hanldFreightData.postage = data.postage
-						this.freightMoney = this.hanldFreight
-						this.freightText = ''
-						break
-					case 0:
-						this.current = 1
-						this.hanldFreightData.postageFlag = data.postageFlag
-						this.freightText = '包邮'
-						break
-					case -1:
-						this.current = 2
-						this.hanldFreightData.postageFlag = data.postageFlag
-						this.freightText = '到付'
-						break
-				}
-			},
-			freightConfim(){//提交完成运费选择
-				switch(this.hanldFreightData.postageFlag){
-					case 1:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break
-					case 0:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break
-					case -1:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break	
-				}		
-			},
-			choiceaFreightFirst(index){//校验运费形式及运费价
-				if(index == 1){
-					if(this.hanldFreight == 0 || this.hanldFreight== ''){
-						this.$util.msg('请填写运费',2000)
-						return
-					}
-					this.hanldFreightData.postage = this.hanldFreight
-					this.$emit('handleChoiceaFreight',this.hanldFreightData)
-				}else{
-					this.hanldFreightData.postage = 0
-					this.$emit('handleChoiceaFreight',this.hanldFreightData)
-				}
-				this.hideSpec()
-			},
-			showTip(){//显示运费弹窗
-				this.$emit('showFreightAlert')
-			},
-			hideSpec() {//关闭编辑运费弹窗
-				this.specClass = 'hide'
-				setTimeout(() => {
-					this.specClass = 'none'
-				}, 200)
-			},
-			hanldOperationConfim(data){//显示编辑运费弹窗
-				if(this.$parent.rebatecheck){
-					this.$util.msg('返佣订单不能编辑运费',2000)
-				}else{
-					this.specClass = 'show'
-					this.freightMoney = this.hanldFreight
-				}
-			},
-			radioChange(e) {//运费选择切换
-				this.hanldFreightData.postageFlag = parseInt(e.target.value)
-				switch(this.hanldFreightData.postageFlag){
-					case 1:
-						this.freightText = '不包邮'
-						break
-					case 0:
-						this.freightText = '包邮'
-						break
-					case -1:
-						this.freightText = '到付'
-						break	
-				}		
-				for (let i = 0; i < this.freightList.length; i++) {
-					if (this.freightList[i].value === this.postageFlag) {
-						this.current = i
-						break
-					}
-				}
-			},
-			setFreightMoney(e){//处理邮费显示
-				if(e.detail.value == ''){
-					this.freightMoney=0
-					this.hanldFreightData.postage=0
-				}else{
-					this.hanldFreightData.postage = e.detail.value
-					this.freightMoney = this.orderPriceToFixed(e.detail.value)
-				}
-			},
-			orderPriceToFixed (num){
-				let price =''
-				price = parseInt(num).toFixed(2)
-				return price
-			},
-			discard(){
-				//丢弃
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.freight-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.invoice-freight{
-			width: 702rpx;
-			padding: 0 24rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			font-size: $font-size-28;
-			color: $text-color;
-			background: #FFFFFF;
-			float: left;
-			font-weight: bold;
-			.freight-left{
-				float: left;
-				.icon-yunfeishuoming{
-					height: 100%;
-					padding:15rpx;
-					color: $color-system;
-					font-weight: normal;
-				}
-			}
-			.freight-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					margin-right: 20rpx;
-				}
-				.text{
-					line-height: 88rpx;
-					color: #ff0000;
-					margin:0 20rpx;
-					font-weight: normal;
-				}
-				.icon-xiayibu{
-					line-height: 88rpx;
-					color: #999999;
-					font-weight: normal;
-				}
-			}
-		}
-	}
-	.freight-ltitle{
-		width: 100%;
-		line-height: 60rpx;
-		height: 60rpx;
-		font-size: $font-size-28;
-		color: #333333;
-	}
-	.freight-radio{
-		width: 100%;
-		height: 88rpx;
-		line-height: 88rpx;
-		display: flex;
-		border-bottom: 1px solid #EBEBEB;
-		.row-group{
-			flex:1;
-			display: flex;
-		}
-		.row-input{
-			flex: 1;
-			height: 88rpx;
-			line-height: 88rpx;
-		}
-		.row-radio{
-			float: left;
-			transform: scale(0.6);
-		}
-		.row-text{
-			font-size: $font-size-24;
-			color: $text-color;
-		}
-	}
-	.freight-group{
-		width: 100%;
-		height: 88rpx;
-		display: flex;
-		border-bottom: 1px solid #FFFFFF;
-		flex-direction: row;
-		.text{
-			display: block;
-			flex: 1;
-			line-height: 88rpx;
-			font-size: $font-size-24;
-			color: #999999;
-			text-align: left;
-			padding-left: 10rpx;
-		}
-		.group-from{
-			flex: 1;
-			height: 40rpx;
-			padding: 20rpx;
-			line-height: 40rpx;
-			align-items: flex-start;
-			font-size: $font-size-24;
-			color: $text-color;
-			background: #F7F7F7;
-			border-radius: 14rpx;
-			margin-bottom: 20rpx;
-			margin-top: 10rpx;
-			.form-input{
-				height: 40rpx;
-				line-height: 40rpx;
-				flex-grow: 1;
-			}
-		}
-	}	
-	/* 加入购物模态层*/
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
-		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
-		}
-		100% {
-			opacity: 0;
-		}
-	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(0);
-		}
-		100% {
-			transform: translateY(-100%);
-		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(-100%);
-		}
-		100% {
-			transform: translateY(0);
-		}
-	}
-	@keyframes showAmnation {
-		0% {
-			top: -12rpx;
-			opacity: 0;
-		}
-		50% {
-			top: -60rpx;
-			opacity: 1;
-		}
-		100% {
-			top: -100rpx;
-			opacity: 0;
-		}
-	}
-	@keyframes hideAmnation {
-		0% {
-			top: -100rpx;
-			opacity: 0;
-		}
-		100% {
-			top: -12rpx;
-			opacity: 0;
-		}
-	}
-	.popup {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
-			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: fixed;
-			z-index: 22;
-			bottom: -460rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 36rpx 24rpx;
-			height: 400rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
-				width: 100%;
-			}
-			.btn {
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				.button {
-					width: 702rpx;
-					height: 88rpx;
-					color: #fff;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					font-size: $font-size-28;
-					border-radius: 44rpx;
-					background: $btn-confirm;
-				}
-			}
-		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
-		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
-		}
-		&.none {
-			display: none;
-		}
-		&.service {
-			.row {
-				margin: 30upx 0;
-				.title {
-					font-size: 30upx;
-					margin: 10upx 0;
-				}
-				.description {
-					font-size: 28upx;
-					color: #999;
-				}
-			}
-		}
-		.layer-smimg{
-			width: 114rpx;
-			height: 114rpx;
-			float: left;
-			border-radius: 10rpx;
-			margin-right: 24rpx;
-			image{
-				width: 114rpx;
-				height: 114rpx;	
-				border-radius: 10rpx;
-			}
-		}
-		.layer-nunbox{
-			justify-content: space-between;
-			align-items: center;
-			width: 536rpx;
-			height: 88rpx;
-			padding: 13rpx 0 0 0;
-			float: left;
-			.layer-nunbox-t{
-				width: 100%;
-				height:44rpx;
-				position:relative;
-				display: flex;
-				.layer-nunbox-text{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-				}
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-32;
-						padding:0 18rpx;
-						font-size: $text-color;
-					}
-					.btn-input{
-						width: 62rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-28;
-					}
-				}
-				.product-step{
-					position: absolute;
-					left: 45rpx;
-					bottom: 0;
-					height: 44rpx;
-					background: #FFFFFF;
-				}
-			}
-			.layer-nunbox-b{
-				width: 100%;
-				height:44rpx;
-				margin-top: 13rpx;
-			}
-			.text{
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				.p{
-					color: #FF2A2A;
-				}
-				.p:first-child{
-					margin-left: 30rpx;
-				}
-				.p.sm{
-					font-size: $font-size-24;
-				}
-			}
-		}
-	}	
-</style>

+ 0 - 695
pages/seller/order/components/sellerInvoice.vue

@@ -1,695 +0,0 @@
-<template name="invoice">
-	<view class="invoice-template">
-		 <!-- 发票信息 -->
-		<view class="invoice-title" @tap.stop="hanldOperationConfim">
-			<text class="text">发票信息</text>
-			<view class="invoice-right">
-				<text class="text-l">{{invoiceText}}</text>
-				<text class="iconfont icon-xiayibu"></text>
-			</view>
-		</view>
-		<!-- <view class="invoice-text">
-			<text>{{invoiceText}}</text>
-		</view> -->
-		<!--底部选择模态层弹窗组件 -->
-		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="choiceaInvoiceConfim">
-			<!-- 遮罩层 -->
-			<view class="mask"></view>
-			<view class="layer" @tap.stop="discard">
-				<view class="content clearfix">
-					<view class="invoice-ltitle">发票类型</view>
-					<view class="invoice-radio">
-						<radio-group class="row-group" @change="radioChange">
-							<label class="row-input" v-for="(item, index) in invoiceTypeList" :key="item.value">
-								<radio class="row-radio" :value="item.value" :checked="index === current" color="#FF5B00"/>
-								<view class="row-text">{{item.name}}</view>
-							</label>
-						</radio-group>
-					</view>
-					<view class="invoice-main from" v-if="invoiceType == '2'">
-						<view class="invoice-from">
-							<view class="label">单位名称:</view>
-							<input class="form-input" type="text" v-model="invoiceData.invoiceTitle" placeholder="请填写单位信息(必填)" placeholder-class="placeholder" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">纳税人识别号:</view>
-							<input class="form-input" type="text" v-model="invoiceData.corporationTaxNum" placeholder="请填写纳税人识别号(必填)" placeholder-class="placeholder" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册地址:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredAddress" placeholder="请填写单位注册地址(必填)" placeholder-class="placeholder" maxlength="100">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册电话:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredPhone" placeholder="请填写注册电话(必填)" placeholder-class="placeholder" maxlength="15">
-						</view>
-						<view class="invoice-from">
-							<view class="label">开户银行:</view>
-							<input class="form-input" type="text" v-model="invoiceData.openBank"   placeholder="请填写开户银行(必填)" placeholder-class="placeholder" maxlength="30">
-						</view>
-						<view class="invoice-from">
-							<view class="label">银行账号:</view>
-							<input class="form-input" 
-								   type="text" 
-								   v-model="invoiceData.bankAccountNo" 
-								   placeholder="请填写银行账号(必填)" 
-								   maxlength="30"
-								   placeholder-class="placeholder">
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '3'">
-						<view class="invoice-ltitle">发票内容</view>
-						<view class="invoice-group tit">
-							<checkbox-group class="row-group" @change="checkboxChange">
-								<view class="text">商品明细</view>
-								<checkbox class="row-radio" value="明细"  :checked="inventoryChecked" color="#FF5B00"></checkbox>
-							</checkbox-group>
-						</view>
-						<view class="invoice-ltitle">发票抬头</view>
-						<view class="invoice-group tit">
-							<radio-group class="row-group radio" @change="radioChangeTitle">
-								<label class="row-input" v-for="(item, index) in invoiceTitleList" :key="item.value">
-									<radio class="row-radio" :value="item.value" :checked="index === titleCurrent" color="#FF5B00"/>
-									<view class="row-text">{{item.name}}</view>
-								</label>
-							</radio-group>
-						</view>
-						<view class="invoice-group from">
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '0'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写个人抬头" placeholder-class="placeholder" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写公司抬头" placeholder-class="placeholder" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.corporationTaxNum"   placeholder="请填写纳税人识别号" placeholder-class="placeholder" maxlength="20">
-							</view>
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '1'">
-						<view class="invoice-none">不开具发票信息</view>
-					</view>
-				</view>
-				<view class="btn">
-					<view class="button add" @click="choiceaInvoiceConfim">完成</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'invoice',
-		data() {
-			return{
-				invoiceText:'不要发票',
-				specClass: '',//规格弹窗css类,控制开关动画
-				invoiceType:'1',//发票类型
-				current:0,
-				titleCurrent:0,
-				inventoryChecked:false,
-				invoiceTypeList:[
-					{value:'1',name:'不要发票'},
-					{value:'2',name:'增值税发票'},
-				],
-				invoiceTitleList:[
-					{value:'0',name:'个人'},
-					{value:'1',name:'公司'},
-				],
-				peopleInvoiceData:{
-					invoiceTitle:'',
-					invoiceContent:'',
-					corporationTaxNum:'',
-					invoiceTitleType:'0'//发票抬头类型 1企业 0个人
-				},
-				invoiceData:{
-					invoiceTitle:'',	 //单位名称
-					corporationTaxNum:'',//纳税人识别号
-					registeredAddress: '',//单位地址
-					registeredPhone:'',	 //注册电话
-					openBank:'',		//开户银行
-					bankAccountNo: ''  ,//银行账号
-				},
-			}
-		},
-		created(){
-			// this.initData(this.invoiceDatas)
-		},
-		computed: {
-
-		},
-		methods:{
-			getUseFindInvoice(){//获取发票信息
-				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-					this.OrderService.GetFindInvoice({userId:resolve.userId}).then(response =>{
-						if(response.data == null){
-							this.invoiceData = Object.assign(this.invoiceData,'',{type:0})
-						}else{
-							this.invoiceData = response.data
-						} 
-					})
-				})
-			},
-			updateInvoiceFn(){//保存发票信息
-				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-					let params =Object.assign(this.invoiceData,'',{userId:resolve.userId})
-					this.OrderService.UpdateInvoice(params).then(response =>{})
-				})
-			},
-			choiceaInvoiceConfim(){
-				switch(this.invoiceType){
-					case '1':
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-						break
-					// case '2':
-					// 	this.choiceaInvoiceTwo()
-					// 	this.invoiceText = this.peopleInvoiceData.invoiceTitle
-					// 	break;
-					case '2':
-						this.choiceaInvoiceFirst()
-						this.invoiceText = this.invoiceData.invoiceTitle
-						break
-						default:
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-				}
-			},
-			choiceaInvoiceFirst(){//增值税发票
-				if(this.invoiceData.invoiceTitle == ''){
-					this.$util.msg('请输入单位名称',2000)
-					return
-				}
-				if(this.invoiceData.corporationTaxNum == ''){
-					this.$util.msg('请输入纳税人识别号',2000)
-					return
-				}
-				if(this.invoiceData.registeredAddress == ''){
-					this.$util.msg('请输入单位地址',2000)
-					return
-				}
-				if(this.invoiceData.registeredPhone == ''){
-					this.$util.msg('请输入注册电话',2000)
-					return
-				}
-				if(this.invoiceData.openBank == ''){
-					this.$util.msg('请输入开户银行',2000)
-					return
-				}
-				if(this.invoiceData.bankAccountNo == ''){
-					this.$util.msg('请输入银行账号',2000)
-					return
-				}
-				this.updateInvoiceFn()
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:2}))
-				this.hideSpec()
-			},
-			choiceaInvoiceTwo(){//普通发票			
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '0':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入个人抬头',2000)
-							return
-						}
-						break
-					case '1':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入公司抬头',2000)
-							return
-						}
-						if(this.peopleInvoiceData.corporationTaxNum == ''){
-							this.$util.msg('请输入纳税人识别号',2000)
-							return
-						}
-						break
-				}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.peopleInvoiceData,'',{type:1}))
-				this.hideSpec()
-			},
-			choiceaInvoiceThree(){//不要发票
-				this.invoiceData = {}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:0}))
-				this.hideSpec()
-			},
-			hideSpec() {//关闭弹窗
-				this.specClass = 'hide'
-				setTimeout(() => {
-					this.specClass = 'none'
-				}, 200)
-			},
-			hanldOperationConfim(){//显示发票弹窗
-				this.specClass = 'show'
-			},
-			radioChange(e) {
-				this.invoiceType = e.target.value
-				for (let i = 0; i < this.invoiceTypeList.length; i++) {
-					if (this.invoiceTypeList[i].value === this.invoiceType) {
-						this.current = i
-						break
-					}
-				}
-				switch(this.invoiceType){
-					case '2':
-						this.getUseFindInvoice()
-						break
-				}		
-			},
-			radioChangeTitle(e) {
-				this.peopleInvoiceData.invoiceTitleType = e.target.value
-				for (let i = 0; i < this.invoiceTitleList.length; i++) {
-					if (this.invoiceTitleList[i].value === this.peopleInvoiceData.invoiceTitleType) {
-						this.titleCurrent = i
-						break
-					}
-				}
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '1':
-						this.inventoryChecked = false
-						this.peopleInvoiceData.invoiceTitle = ''
-						this.peopleInvoiceData.invoiceContent = ''
-						break
-				}		
-			},
-			checkboxChange(e){
-				this.inventoryChecked = !this.inventoryChecked
-				this.peopleInvoiceData.invoiceContent = e.detail.value[0]
-			},
-			inputBankNum(val) {
-				if (/\S{5}/.test(val)) {
-					this.invoiceData.bankAccountNo = val.replace(/\s/g, '').replace(/(.{4})/g, '$1 ')
-				}
-			},
-			discard(){
-				//丢弃
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.invoice-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		.invoice-title{
-			width: 702rpx;
-			padding: 0 24rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			position: relative;
-			font-size: $font-size-28;
-			font-weight: bold;
-			border-bottom: 1px solid #EBEBEB;
-			.text{
-				font-size: $font-size-28;
-				color: $text-color;
-				font-weight: bold;
-			}
-			.invoice-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					margin-right: 40rpx;
-				}
-				.iconfont{
-					width: 50rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					color: #999999;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 0;
-				}
-			}
-		}
-		.invoice-text{
-			width: 702rpx;
-			padding: 0 24rpx;
-			font-size: $font-size-24;
-			color: #666666;
-			line-height: 60rpx;
-		}
-		.invoice-ltitle{
-			width: 100%;
-			line-height: 60rpx;
-			height: 60rpx;
-			font-size: $font-size-28;
-			color: #333333;
-		}
-		.invoice-radio{
-			width: 100%;
-			height: 88rpx;
-			line-height: 88rpx;
-			display: flex;
-			border-bottom: 1px solid #EBEBEB;
-			.row-group{
-				flex:1;
-				display: flex;
-			}
-			.row-input{
-				flex: 1;
-				height: 88rpx;
-				line-height: 88rpx;
-			}
-			.row-radio{
-				float: left;
-				transform: scale(0.6);
-			}
-			.row-text{
-				font-size: $font-size-24;
-				color: $text-color;
-			}
-		}
-		.invoice-main{
-			width: 100%;
-			height: auto;
-			margin-top: 30rpx;
-			&.from{
-				padding-bottom: 40rpx;
-			}
-			.invoice-none{
-				line-height: 60rpx;
-				height: 60rpx;
-				font-size: $font-size-24;
-				color: #666666;
-				text-align: center;
-			}
-			.invoice-from{
-				width: 662rpx;
-				height: 40rpx;
-				padding: 20rpx;
-				line-height: 40rpx;
-				align-items: flex-start;
-				font-size: $font-size-28;
-				color: $text-color;
-				// background: #F7F7F7;
-				// border-radius: 14rpx;
-				margin-bottom: 20rpx;
-				border-bottom: 2rpx solid #e1e1e1;
-				.label{
-					height: 40rpx;
-					line-height: 40rpx;
-					float: left;
-				}
-				.form-input{
-					height: 40rpx;
-					line-height: 40rpx;
-					flex-grow: 1;
-					padding-left: 20rpx;
-				}
-			}
-			.invoice-group{
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				border-bottom: 1px solid #EBEBEB;
-				&.tit{
-					margin-bottom: 30rpx;
-				}
-				&.from{
-					margin-bottom: 30rpx;
-					border-bottom: 1px solid #FFFFFF;
-					flex-direction: row;
-					display: block;
-					.group-from{
-						flex: 1;
-						height: 40rpx;
-						padding: 20rpx;
-						line-height: 40rpx;
-						align-items: flex-start;
-						font-size: $font-size-24;
-						color: $text-color;
-						background: #F7F7F7;
-						border-radius: 14rpx;
-						margin-bottom: 20rpx;
-						.form-input{
-							height: 40rpx;
-							line-height: 40rpx;
-							flex-grow: 1;
-						}
-					}
-				}
-				.row-group{
-					line-height: 88rpx;
-					flex: 1;
-					.text{
-						font-size: $font-size-24;
-						color: $text-color;
-						line-height: 88rpx;
-						float: left;
-					}
-					.row-radio{
-						float: right;
-						transform: scale(0.8);
-						border-radius: 50%;
-					}
-					&.radio{
-						display: flex;
-						.row-input{
-							flex: 1;
-							height: 88rpx;
-							line-height: 88rpx;
-						}
-						.row-radio{
-							float: left;
-							transform: scale(0.6);
-						}
-						.row-text{
-							font-size: $font-size-24;
-							color: $text-color;
-						}
-					}
-				}
-			}
-		}
-	}
-	/* 加入购物模态层*/
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
-		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
-		}
-		100% {
-			opacity: 0;
-		}
-	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(0);
-		}
-		100% {
-			transform: translateY(-100%);
-		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(-100%);
-		}
-		100% {
-			transform: translateY(0);
-		}
-	}
-	@keyframes showAmnation {
-		0% {
-			top: -12rpx;
-			opacity: 0;
-		}
-		50% {
-			top: -60rpx;
-			opacity: 1;
-		}
-		100% {
-			top: -100rpx;
-			opacity: 0;
-		}
-	}
-	@keyframes hideAmnation {
-		0% {
-			top: -100rpx;
-			opacity: 0;
-		}
-		100% {
-			top: -12rpx;
-			opacity: 0;
-		}
-	}
-	.popup {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
-			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: absolute;
-			z-index: 22;
-			bottom: -1010rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 65rpx 24rpx;
-			height: 920rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
-				width: 100%;
-			}
-			.btn {
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				.button {
-					width: 702rpx;
-					height: 88rpx;
-					color: #fff;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					font-size: $font-size-28;
-					border-radius: 44rpx;
-					background: $btn-confirm;
-				}
-			}
-		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
-		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
-		}
-		&.none {
-			display: none;
-		}
-		&.service {
-			.row {
-				margin: 30upx 0;
-				.title {
-					font-size: 30upx;
-					margin: 10upx 0;
-				}
-				.description {
-					font-size: 28upx;
-					color: #999;
-				}
-			}
-		}
-		.layer-smimg{
-			width: 114rpx;
-			height: 114rpx;
-			float: left;
-			border-radius: 10rpx;
-			margin-right: 24rpx;
-			image{
-				width: 114rpx;
-				height: 114rpx;	
-				border-radius: 10rpx;
-			}
-		}
-		.layer-nunbox{
-			justify-content: space-between;
-			align-items: center;
-			width: 536rpx;
-			height: 88rpx;
-			padding: 13rpx 0 0 0;
-			float: left;
-			.layer-nunbox-t{
-				width: 100%;
-				height:44rpx;
-				position:relative;
-				display: flex;
-				.layer-nunbox-text{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-				}
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-32;
-						padding:0 18rpx;
-						font-size: $text-color;
-					}
-					.btn-input{
-						width: 62rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-28;
-					}
-				}
-				.product-step{
-					position: absolute;
-					left: 45rpx;
-					bottom: 0;
-					height: 44rpx;
-					background: #FFFFFF;
-				}
-			}
-			.layer-nunbox-b{
-				width: 100%;
-				height:44rpx;
-				margin-top: 13rpx;
-			}
-			.text{
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				.p{
-					color: #FF2A2A;
-				}
-				.p:first-child{
-					margin-left: 30rpx;
-				}
-				.p.sm{
-					font-size: $font-size-24;
-				}
-			}
-		}
-	}	
-	.placeholder{
-		color: #b2b2b2;
-	}
-</style>

+ 0 - 218
pages/seller/order/components/sellerOrderButton.vue

@@ -1,218 +0,0 @@
-<template name="button">
-	<view class="button-template">
-		<!-- 底部按钮 -->
-		<view class="button-content"> 
-			<view class="btn btn-cancel" v-if="secondHandOrderFlag!=1 && !rechargeGoods"  @click.stop="btnConfirm('again',orderId)">再来一单</view>
-			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel',orderId)">取消订单</view>
-			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',orderId)">删除订单</view> -->
-			<template>
-				<view class="btn btn-cancel" v-if="btnState.isPay" @click.stop="onShareCode(orderId,userId,1)">分享支付</view>
-				<view class="btn btn-cancel" v-else @click.stop="onShareCode(orderId,userId,2)">分享订单</view>	
-			</template>
-			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',orderId)">查看物流</view>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',orderId)">确认订单</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'button',
-		props:{
-			status: {
-				type:Number
-			},
-			order: {
-				type:Object
-			},
-			orderId: {
-				type:Number
-			},
-			userId:{
-				type:Number
-			},
-			rechargeGoods:{
-				type:Boolean
-			},
-			serviceProviderId:{
-				type:Number
-			},
-			secondHandOrderFlag:{
-				type:String
-			}
-		},
-		data() {
-			return{
-				isShare:true,
-				shareCode:'',
-				btnState:this.initStatus(),
-				mapStateArr:[
-					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
-					{label:'isDelete',val:[6],status: true},
-					{label:'isCancel',val:[0,111],status: true},
-					{label:'isConfirm',val:[0],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],status: true},
-				]
-			}
-		},
-		created(){
-			this.initData(this.status)
-		},
-		computed: {
-			
-		},
-		watch:{
-			status:{
-				handler:function(val){
-					this.initData(val)
-				},
-				deep:true//对象内部的属性监听,也叫深度监听
-			}
-		},
-		methods:{
-			initData(resVal) {
-				/**
-				 * @分享按钮统一显示
-				 * @按钮根据状态显示
-				 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
-				 * @(6)显示[删除订单],其他隐藏
-				 * @(0、111)显示[取消订单],其他隐藏
-				 * @(21,31)只显示分享
-				 * @(13,33)显示[确认收货]和[查看物流]
-				 */
-				this.btnState = this.initStatus()
-				this.mapStateArr.forEach(el => {
-					el.val.forEach(value => {
-						if(resVal === value){
-							this.btnState[el.label] = el.status
-						}
-					})
-				})
-			},
-			initStatus(){
-				let btnState= {
-						isDelete: false,
-						isCancel: false,
-						isConfirm: false,
-						isShare: true
-					}
-				return 	btnState
-			},
-			getShareCode(code){
-				this.shareCode = code
-			},
-			onShareCode(oID,uID,type){
-				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 = {
-						type:type,
-						orderId:orderId,
-					}
-				this.$emit('buttonConfirm',data)
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	.button-template{
-		width: 100%;
-		height: auto;
-		float: left;
-		background: #FFFFFF;
-		.button-content{
-			height: auto;
-			float: right;
-			position: relative;
-			margin: 20rpx 0;
-			.share-code{
-				width: 200rpx;
-				height:  64rpx;
-				line-height: 64rpx;
-				color: #2A45FF;
-				text-align: left;
-				position: absolute;
-				font-size: $font-size-28;
-				font-weight: bold;
-				left: 24rpx;
-				top: 24rpx;
-			}
-			.btn{
-				width: 160rpx;
-				height:  64rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius:34rpx;
-				// float: right; 
-				display: inline-block;
-			}
-			.btn-color{
-				background: $btn-confirm;
-				// margin: 22rpx 0 22rpx 22rpx;
-			}
-			.btn-cancel{
-				border: 2rpx solid #999999;
-				background:#FFFFFF;
-				color: #666666;
-				// float: left;
-				margin-right: 15rpx;
-			}
-			.btn-delete{
-				background:linear-gradient(315deg,rgba(255,163,3,1) 0%,rgba(255,53,1,1) 100%);
-			}
-			.btn-query{
-				background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
-			}
-			.btn-confirm{
-				background:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
-			}
-			.btn-share{
-				background:linear-gradient(315deg,rgba(0,212,150,1) 0%,rgba(126,243,174,1) 100%);
-				margin-right: 0;
-				position: relative;
-				.tips{
-					width: 160rpx;
-					height: 34rpx;
-					padding: 10rpx 10rpx;
-					background:#FF5B00;
-					border-radius: 8rpx;
-					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 0;
-					top: -65rpx;
-					&:before{
-						content: "";
-						width: 25rpx;
-						height: 25rpx;
-						background:#FF5B00;
-						position: absolute;
-						bottom: -8rpx;
-						left: 30rpx;
-						z-index: -1;
-						transform:rotate(45deg);
-					}
-				}
-			}
-		}
-	}
-</style>

+ 828 - 940
pages/seller/order/create-order.vue

@@ -1,97 +1,104 @@
 <template>
-	<view class="container order clearfix" :style="{paddingBottom :isIphoneX ? '190rpx' : '134rpx'}">
+	<view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '190rpx' : '134rpx' }">
 		<!-- 地址选择 -->
-		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
+		<cm-address-temp ref="choiceAddress" v-if="isRequest" :addressData="addressData" />
 		<!-- 商品 -->
-		<seller-goodsList ref='goods' v-if="isRequest" :secondflag="secondflag" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList"></seller-goodsList>
+		<cm-goods-temp
+			ref="goods"
+			v-if="isRequest"
+			:secondflag="secondflag"
+			:goodsData.sync="goodsData"
+			@handleGoodList="handChangeInputGoodsList"
+			@changeChina="handleChangeChina"
+			@changePostage="handleChangePostage"
+		/>
 		<!-- 返佣订单 -->
-		<view class="order-return" v-if="goodsData.length==1 && secondflag">
+		<!-- 		<view class="order-return" v-if="goodsData.length == 1 && secondflag">
 			<view class="order-return-main" @click="handleRebateFlag">
 				<view class="label">是否返佣</view>
 				<view class="label-right">
-					<text class="text-l">{{ rebateFeeText }}</text>
-					<text class="iconfont icon-xiayibu"></text>
+					<text class="text-l">{{ rebateFeeText }}</text> <text class="iconfont icon-xiayibu"></text>
 				</view>
 			</view>
 			<view class="order-return-input" v-if="confirmParam.payInfo.rebateFlag === 2">
-				<input class="input" v-model="rebateFee" type="number" placeholder="请输入返佣服务费" maxlength="20">
+				<input class="input" v-model="rebateFee" type="number" placeholder="请输入返佣服务费" maxlength="20" />
 			</view>
-		</view>
+		</view> -->
 		<!-- 返佣订单 -->
-		<view class="Rebate" @click="handleSecondFlag" v-if="!secondflag">
+		<!-- 		<view class="Rebate" @click="handleSecondFlag" v-if="!secondflag">
 			<text class="rebate-title">二手返佣订单</text>
-			<text class="iconfont" :class="rebatecheck?'icon-yixuanze':'icon-weixuanze'" ></text>
-		</view>
+			<text class="iconfont" :class="rebatecheck ? 'icon-yixuanze' : 'icon-weixuanze'"></text>
+		</view> -->
 		<!-- 发票信息 -->
-		<seller-invoice ref="invoice" 
-						v-if="isRequest" 
-						:invoiceDatas="invoiceData" 
-						@handleChoiceaInvoice="handleChoiceaInvoiceData">
-		</seller-invoice>
+		<cm-invice-popup
+			ref="invoice"
+			v-if="isRequest"
+			:invoiceDatas="invoiceData"
+			@handleChoiceaInvoice="handleChoiceaInvoiceData"
+		/>
 		<!-- 优惠券选择弹窗 -->
-		<sellerCoupon ref="coupon" 
-				v-if="isCouponShow"
-				:couponList="couponList" 
-				@handleChoiceaCoupon="handleChoiceaCouponData">
-		</sellerCoupon>
+		<cm-coupon-popup
+			ref="coupon"
+			v-if="isCouponShow"
+			:couponList="couponList"
+			@handleChoiceaCoupon="handleChoiceaCouponData"
+		/>
 		<!-- 兑换优惠券弹窗 -->
-		<sellerExchangeCoupon v-if="isExchangePopup"></sellerExchangeCoupon>
-		<!-- 运费 -->
-		<seller-freight ref="freight" 
-						v-if="isFreight" 
-						:freightDatas="freightData" 
-						@handleChoiceaFreight="handleChoiceaFreightData" 
-						@showFreightAlert="handFreightAlertShow">
-		</seller-freight>
-		<freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
+		<cm-coupon-chang v-if="isExchangePopup" />
 		<!-- 余额抵扣 -->
-		<view class="invoice-balance" v-if="!rechargeGoods">
+		<view class="invoice-balance" v-if="isRequest && !rechargeGoods">
 			<view class="balabce-t">
-				<view class="balabce-t-le">余额抵扣</view>
+				<view class="balabce-t-le">余额抵扣:</view>
 				<view class="balabce-t-ri">
 					<view class="money">
-						<text>可用余额:</text>
-						<text>¥{{ userMoney | NumFormat }}</text>
+						<text>可用余额:</text> <text>¥{{ userMoney | NumFormat }}</text>
 					</view>
 					<view class="checkbox-box">
-						<button class="checkbox iconfont" 
-								hover-class="btn-hover"
-								v-if="userMoney!=0"
-								@click.stop="checkedBalabce"
-								:class="[ischecked ?'icon-yixuanze':'icon-weixuanze']"
-						>
-						</button>
+						<button
+							class="checkbox iconfont"
+							hover-class="btn-hover"
+							v-if="userMoney != 0"
+							@click.stop="checkedBalabce"
+							:class="[ischecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+						></button>
 					</view>
 				</view>
 			</view>
-			<view class="balabce-b" :class="{'balabce-b--hide':!ischecked}">	
-				<view class="balabce-b-text animation" 
-					  :style="{'transform':ischecked?'translateY(0)':'translateY(-50%)','-webkit-transform':ischecked?'translateY(0)':'translateY(-50%)'}">
-					<text>当前使用:¥{{deductMoney | NumFormat}},剩余:¥{{ surplusMoney | NumFormat }}</text>
+			<view class="balabce-b" :class="{ 'balabce-b--hide': !ischecked }">
+				<view
+					class="balabce-b-text animation"
+					:style="{
+						transform: ischecked ? 'translateY(0)' : 'translateY(-50%)',
+						'-webkit-transform': ischecked ? 'translateY(0)' : 'translateY(-50%)'
+					}"
+				>
+					<text>当前使用:¥{{ deductMoney | NumFormat }},剩余:¥{{ surplusMoney | NumFormat }}</text>
 				</view>
 			</view>
 		</view>
 		<!-- 选择对机构是否可见 -->
-		<sellerClubVisible ref="clubVisible"  v-if="isRequest" @handleClubVisible="handleClubVisibleData"></sellerClubVisible>
+		<cm-club-visible ref="clubVisible" v-if="isRequest" @handleClubVisible="handleClubVisibleData" />
 		<!-- 售后条例 -->
-		<seller-regulations  ref="regulations"
-							 v-if="isRequest && seconDepositFlg" 
-							:regulaDatas="clauseList" 
-							@handleData="handleClauseData">
-		</seller-regulations>
-		<regula-alert v-if="isregulaTip" ref="csPhone"></regula-alert>
+		<cm-regula-popup
+			ref="regulations"
+			v-if="isRequest && seconDepositFlg"
+			:regulaDatas="clauseList"
+			@handleData="handleClauseData"
+		/>
 		<!-- 底部 -->
-		<view class="footer" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+		<view class="footer" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
 			<view class="footer-le">
 				<view class="footer-count">
 					<text>共{{ totalCount }}件商品</text>
 				</view>
 				<view class="footer-price">
 					<view class="sum" :class="totalDiscountAmount == 0 ? 'none' : ''">
-						总价:<text class="price">¥{{orderShouldPayFee | NumFormat}}</text>
+						总价:<text class="price">¥{{ orderShouldPayFee | NumFormat }}</text>
 					</view>
 					<view class="sum-none" v-if="totalDiscountAmount > 0">
-						<text class="money-reduced">共减<text>¥{{ totalDiscountAmount  | NumFormat}}</text></text>
+						<text class="money-reduced"
+							>共减<text>¥{{ totalDiscountAmount | NumFormat }}</text></text
+						>
 					</view>
 				</view>
 			</view>
@@ -99,39 +106,6 @@
 				<view class="btn" :class="isSubLoading ? 'disabled' : ''">提交订单</view>
 			</view>
 		</view>
-		<!-- 优惠券 -->
-		<view class="coupon-content-model" v-if="isCouponModel">
-			<view class="coupon-alert-content">
-				<view class="coupon">
-					<view class="coupon-list">
-						<view class="list-cell-tags">{{ ExchangeCouponData.couponType | TypeFormat }}</text></view>
-						<view class="list-cell-le">
-							<view class="coupon-maxMoney">
-								<text class="small">¥</text>
-								{{ ExchangeCouponData.couponAmount }}
-							</view>
-							<view class="coupon-minMoney">
-								<text class="txt">满{{ ExchangeCouponData.touchPrice }}可用</text>
-							</view>
-						</view>
-						<view class="list-cell-ri">
-							<view class="list-cell-top">
-								<text v-if="ExchangeCouponData.couponType == 0">
-									{{ ExchangeCouponData.productType && ExchangeCouponData.productType == 1 ? '全商城商品通用' : '仅可购买指定商品'  }}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 1">
-									{{ ExchangeCouponData.categoryType == 1 ? '仅限购买产品类商品' : '仅限购买仪器类商品' }}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 3">仅限购买店铺【{{ ExchangeCouponData.shopName }}】的商品</text>
-								<text v-if="ExchangeCouponData.couponType == 4 || ExchangeCouponData.couponType == 2">全商城商品通用</text>
-							</view>
-							<view class="list-cell-time">{{ ExchangeCouponData.startDate  }} - {{ ExchangeCouponData.endDate }}</view>
-						</view>
-					</view>
-					<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
-				</view>
-			</view>
-		</view>
 		<!-- 弹窗提示 -->
 		<tui-modal
 			:show="modal"
@@ -149,945 +123,859 @@
 </template>
 
 <script>
-	import freightAlert from '@/components/cm-module/modelAlert/freightAlert.vue'
-	import choiceAddress from './components/sellerAddress'  
-	import sellerGoodsList from './components/sellerGoodsList'
-	import sellerInvoice from './components/sellerInvoice'
-	import sellerFreight from './components/sellerFreight'
-	import sellerCoupon from './components/sellerCoupon'
-	import sellerExchangeCoupon from './components/sellerExchangeCoupon'
-	import sellerClubVisible from './components/sellerClubVisible'
-	import sellerRegulations from './components/sellerRegulations.vue'
-	
-	export default {
-		components:{
-			choiceAddress,
-			sellerGoodsList,
-			sellerInvoice,
-			sellerFreight,
-			sellerCoupon,
-			sellerExchangeCoupon,
-			sellerClubVisible,
-			freightAlert,
-			sellerRegulations
-		},
-		data() {
-			return {
-				isSubLoading:false,
-				modalButton: [
-					{
-						text: '再想一想',
-						type: 'gray',
-						plain: true //是否空心
-					},
-					{
-						text: '继续提交',
-						customStyle: {
-							color: '#fff',
-							bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
-						},
-						plain: false
-					}
-				],
-				contentModalText: '', //操作文字提示语句
-				modal: false,
-				showModalstauts:1,
-				isIphoneX:this.$store.state.isIphoneX,
-				cartParam: {// 购物车立即结算确认订单参数
-					skuIds:0,		// 商品Id(逗号隔开)
-					serviceProviderId:0,// 协销Id
-					clubId:0			// 机构Id
-				}, 		
-				productParam: {// 商品立即购买确认订单参数
-					productCount:0, 	// 商品数量
-					productId:0,		// 商品Id
-					serviceProviderId:0,// 协销Id
-					clubId:0			// 机构Id
-				}, 	
-				postageParam: {// 邮费计算参数
-					skuIds:0,			// 商品Id(逗号隔开)
-					userId:0,			// 用户Id
-					townId:0			// 地区Id
-				},	
-				confirmParam: {// 提交订单参数
-					cartType:3, 		// 购买类型:(1自主下单, 3协销下单)
-					orderMiniType:0,    // 订单提交状态 0初始提交 1 继续提交
-					orderSource:6,		// 订单来源 1WWW 6小程序[采美,星范]
-					addressId:0,		// 收货地址Id
-					clubCouponId:0,		// 关联优惠券Id
-					clubId:0,			// 机构Id
-					orderInfo:[],		// 订单商品数据
-					orderInvoice:{type:0},	// 订单发票信息
-					orderSeen:1,		// 订单对机构可见度 1可见  2不可见
-					payInfo:{			// 订单金额数据
-						orderShouldPayFee: 0,	// 订单最终支付金额
-						balancePayFlag: 0,		// 勾选余额的状态(1使用,0不使用)
-						clauseId:0,				// 条款Id
-						postage: 0,				// 运费金额
-						postageFlag: 0,			// 运费类型
-						userBeans: 0,			// 抵扣采美豆数量
-						rebateFee:0, 			// 返佣服务费
-						rebateFlag:0			// 是否返佣订单
+import cmAddressTemp from './components/cm-address-temp'
+import cmGoodsTemp from './components/cm-goods-temp'
+import cmInvicePopup from './components/cm-invice-popup'
+import cmFreightPopup from './components/cm-freight-popup'
+import cmCouponPopup from './components/cm-coupon-popup'
+import cmCouponChang from './components/cm-coupon-chang'
+import cmClubVisible from './components/cm-club-visible'
+import cmRegulaPopup from './components/cm-regula-popup'
+import cmCouponTips from './components/cm-coupon-tips'
+import conMixins from './mixins/conMixins.js'
+
+export default {
+	mixins: [conMixins],
+	components: {
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmInvicePopup,
+		cmFreightPopup,
+		cmCouponPopup,
+		cmCouponChang,
+		cmClubVisible,
+		cmRegulaPopup,
+		cmCouponTips
+	},
+	data() {
+		return {
+			isSubLoading: false,
+			modalButton: [
+				{
+					text: '再想一想',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '继续提交',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
 					},
-					unionId:uni.getStorageSync('unionId'),// 用户unionId
-				}, 	
-				rebateFee:'',
-				rebateFeeText:'否',
-				confirmType:1,			  
-				submitState:'',  		  // 提交状态
-				totalCount:0,			  // 订单提交总数量
-				reducedPrice:0,			  // 满减金额
-				couponAmount:0,	  		  // 优惠券金额
-				totalDiscountAmount:0,	  // 共减金额
-				orderShouldPayFee:0.00,	  // 订单提交总金额
-				allPrice:0.00,			  // 订单总金额
-				surplusMoney:0.00,		  // 显示勾选后的剩余抵扣
-				userMoney:0.00,			  // 显示可使用余额
-				deductMoney:0.00,		  // 显示已使用的余额
-				isRequest:false,		  // 是否加载完成渲染子组件
-				isFreight:false,		  // 是否加载完成渲染子组件
-				isAddress:false,		  // 是否加载完成地址
-				isExchangePopup:false, 	  // 控制兑换优惠券弹窗
-				isfreightTip:false,		  // 控制邮费弹窗
-				ischecked:false,	      // 是否勾选余额
-				addressData:{},			  // 初始化地址信息
-				goodsData:[],			  // 初始化商品信息
-				couponList:[],		  	  // 初始化优惠券信息
-				invoiceData:{type:0},	  // 初始化发票信息
-				freightData:{},			  // 邮费数据
-				handleFreightData:{},	  // 监听邮费数据
-				orderInfo:[],			  // 提交的商品信息
-				payInfo:{},				  // 订单信息
-				rechargeGoods:false,
-				clauseList:[],
-				seconDepositFlg:true,
-				rebatecheck:false,
-				isCouponShow:false,		  // 是否显示可选优惠券
-				secondflag:true,
-				isCouponModel:false,	  // 兑换优惠券成功提示
-				ExchangeCouponData:{},	  // 兑换优惠券信息
-			}
-		},
-		onLoad(option){//商品数据
-			this.initStorage(option)
-		},
-		filters:{
-			NumFormat(value) {//处理金额
-				return Number(value).toFixed(2)
+					plain: false
+				}
+			],
+			contentModalText: '', //操作文字提示语句
+			modal: false,
+			showModalstauts: 1,
+			isIphoneX: this.$store.state.isIphoneX,
+			confirmParam: {
+				// 提交订单参数
+				cartType: 3, // 购买类型:(1自主下单, 3协销下单)
+				orderMiniType: 0, // 订单提交状态 0初始提交 1 继续提交
+				orderSource: 6, // 订单来源 1WWW 6小程序[采美,星范]
+				addressId: 0, // 收货地址Id
+				clubCouponId: 0, // 关联优惠券Id
+				clubId: 0, // 机构Id
+				orderInfo: [], // 订单商品数据
+				orderInvoice: { type: 0 }, // 订单发票信息
+				orderSeen: 1, // 订单对机构可见度 1可见  2不可见
+				payInfo: {
+					// 订单金额数据
+					orderShouldPayFee: 0, // 订单最终支付金额
+					balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
+					clauseId: 0, // 条款Id
+					postage: 0, // 运费金额
+					postageFlag: 0, // 运费类型
+					userBeans: 0, // 抵扣采美豆数量
+					rebateFee: 0, // 返佣服务费
+					rebateFlag: 0 // 是否返佣订单
+				},
+				unionId: uni.getStorageSync('unionId') // 用户unionId
 			},
+			rebateFee: '',
+			rebateFeeText: '否',
+			confirmType: 1,
+			submitState: '', // 提交状态
+			isRequest: false, // 是否加载完成渲染子组件
+			isFreight: false, // 是否加载完成渲染子组件
+			isExchangePopup: false, // 控制兑换优惠券弹窗
+			isfreightTip: false, // 控制邮费弹窗
+			ischecked: false, // 是否勾选余额
+			addressData: {}, // 初始化地址信息
+			goodsData: [], // 初始化商品信息
+			couponList: [], // 初始化优惠券信息
+			invoiceData: { type: 0 }, // 初始化发票信息
+			orderInfo: [], // 提交的商品信息
+			payInfo: {}, // 订单信息
+			rechargeGoods: false,
+			clauseList: [],
+			seconDepositFlg: true,
+			rebatecheck: false,
+			isCouponShow: false, // 是否显示可选优惠券
+			secondflag: true,
+			isCouponModel: false, // 兑换优惠券成功提示
+			ExchangeCouponData: {} // 兑换优惠券信息
+		}
+	},
+	onLoad(option) {
+		//商品数据
+		this.initStorage(option)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	methods: {
+		async initStorage(option) {
+			const data = JSON.parse(option.data)
+			const clubInfo = await this.$api.getComStorage('orderUserInfo')
+			const userInfo = await this.$api.getStorage()
+			this.handleComType = option.type * 1
+			this.productParam.clubId = this.cartParam.clubId = this.confirmParam.clubId = clubInfo.clubId
+			this.productParam.serviceProviderId = userInfo.serviceProviderId
+			this.cartParam.serviceProviderId = userInfo.serviceProviderId
+			this.confirmParam.serviceProviderId = userInfo.serviceProviderId
+			if (option.type == '1') {
+				this.confirmType = 1
+				this.productParam.productCount = data.data.productCount
+				this.productParam.productId = data.data.productIds
+				this.getAddressData(clubInfo.userId, 1)
+			} else {
+				this.confirmType = 2
+				this.cartParam.skuIds = data.data.skuIds
+				this.getAddressData(clubInfo.userId, 2)
+			}
 		},
-		methods: {
-			async initStorage(option){
-					const data = JSON.parse(option.data)
-					const clubInfo = await this.$api.getComStorage('orderUserInfo')
-					const userInfo = await this.$api.getStorage()
-					this.productParam.clubId = this.cartParam.clubId = this.confirmParam.clubId = clubInfo.clubId ? clubInfo.clubId : 0
-					this.postageParam.userId = clubInfo.userId ? clubInfo.userId : 0
-					this.productParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					this.cartParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					this.confirmParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					if(option.type =='prodcut'){
-						this.confirmType = 1
-						this.productParam.productCount = data.data.productCount
-						this.productParam.productId = data.data.productIds
-						this.getInitProdcutCrearOrder()
-					}else{
-						this.confirmType = 2
-						this.cartParam.skuIds = data.data.skuIds
-						this.getInitCrearOrder()
-					}
-			},
-			getInitCrearOrder(){//协销购物车跳转确认订单初始化信息
-				this.SellerService.SellerSettlement(this.cartParam).then(response =>{
-					let data = response.data
-					this.isRequest = true
-					this.goodsData = data.list
-					this.userMoney = data.userMoney
-					this.couponList = data.couponList
-					this.reducedPrice = data.reducedPrice
-					this.totalCount = data.totalCount
-					this.allPrice = data.totalPrice
-					this.rechargeGoods = data.includeRecharge
-					this.clauseList = data.clauseList
-					this.postageParam.productIds  = this.getProductIds(data.list)
-					this.isCouponShow = true
-					if(this.couponList.length>0){
-						this.couponAmount = data.couponList[0].couponAmount
-						this.confirmParam.clubCouponId = data.couponList[0].clubCouponId 
-					}
-					this.orderShouldPayFee = this.allPrice - this.couponAmount
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-					this.getAddressData()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+		//协销购物车跳转确认订单初始化信息
+		async getInitCrearOrder() {
+			try {
+				const res = await this.SellerService.SellerSettlement(this.cartParam)
+				const data = res.data
+				this.goodsData = data.list.map(el => {
+					el.handlePostageFlag = el.postageFlag
+					return el
 				})
-			},
-			getInitProdcutCrearOrder(){//二手下单初始化查询
+				this.userMoney = data.userMoney
+				this.couponList = data.couponList
+				this.reducedPrice = data.reducedPrice
+				this.totalCount = data.totalCount
+				this.allPrice = data.totalPrice
+				this.rechargeGoods = data.includeRecharge
+				this.clauseList = data.clauseList
+				this.isCouponShow = true
+				if (this.couponList.length > 0) {
+					this.couponAmount = data.couponList[0].couponAmount
+					this.confirmParam.clubCouponId = data.couponList[0].clubCouponId
+				}
+				this.orderShouldPayFee = this.allPrice - this.couponAmount
+				this.isRequest = true
+			} catch (error) {
+				console.log('获取订单信息异常')
+			}
+		},
+		//二手下单初始化查询
+		async getInitProdcutCrearOrder() {
+			try {
 				this.seconDepositFlg = false
-				this.SellerService.GetSettlementBySencondProduct(this.productParam).then(response =>{
-					const data = response.data
-					this.isRequest = true
-					this.goodsData = data.list
-					this.userMoney = data.userMoney
-					this.totalCount = data.totalCount
-					this.allPrice = data.totalPrice
-					this.orderShouldPayFee = this.allPrice
-					this.isCouponShow = false
-					this.secondflag = false
-					this.getAddressData()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+				const res = await this.SellerService.GetSettlementBySencondProduct(this.productParam)
+				const data = res.data
+				this.goodsData = data.list.map(el => {
+					el.handlePostageFlag = el.postageFlag
+					return el
 				})
-			},
-			getProductIds(list){// 获取订单商品id列表
-				let productIds = []
-				list.forEach(function(supplier){
-					supplier.cartList.forEach(function(product){
-						productIds.push(product.productId)
-					})
-				})
-				return productIds.join(',')
-			},
-			getFreightData(){//获取邮费信息
-				this.OrderService.GetOrderPostage(this.postageParam).then(response =>{
-					let data = response.data
-					this.freightData  = data
-					this.handleFreightData = data
-					this.isFreight = true
-					if(data.postageFlag== 1){
-						this.orderShouldPayFee = this.allPrice + data.postage
-						this.attributePallPrice()
-					}else{
-						this.orderShouldPayFee = this.allPrice
-						this.attributePallPrice()
-					}
-				})
-			},
-			async getAddressData(){//获取地址信息
-				const clubInfo = await this.$api.getComStorage('orderUserInfo')
-				this.UserService.QueryAddressList(
-					{
-						pageNum:1,
-						pageSize:1,
-						userId:clubInfo.userId,
-					}
-				).then(response =>{
-					let data = response.data
-					this.isAddress = true
-					this.addressData = {}
-					if(response.data.results != ''){
-						this.confirmParam.addressId = data.list[0].addressId
-						this.postageParam.townId = data.list[0].townId
-						this.addressData = data.list[0]
-						this.getFreightData()
-					}else{
-						this.addressData = this.addressData
-					}
-				})
-			},
-			handChangeInputGoodsList(data){//对应供应商的留言信息
-				this.goodsData = data
-			},
-			handleChoiceaInvoiceData(data){//获取发票信息
-				this.confirmParam.orderInvoice = data
-			},
-			handleChoiceaFreightData(data){//获取运费信息
-				console.log('编辑运费信息',data)
-				if(data.postageFlag == 1){
-					this.handleFreightData = data
-					this.orderShouldPayFee = this.allPrice + parseInt(data.postage)
-					this.attributePallPrice()
-				}else{
-					this.handleFreightData = data
-					this.orderShouldPayFee = this.allPrice
-					this.attributePallPrice()
-				}
-			},
-			handleClauseData(clauseId){// 条款Id
-				this.confirmParam.payInfo.clauseId = parseInt(clauseId)
-			},
-			handleChoiceaCouponData(data){// 勾选使用优惠券
-				console.log('优惠券信息',data)
-				this.couponAmount = data.couponAmount
-				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-				this.confirmParam.clubCouponId = data.clubCouponId
-				this.attributePallPrice()
-			},
-			handleClubVisibleData(data){// 订单对机构是否可见
-				console.log('对机构是否可见',data)
-				this.confirmParam.orderSeen = Number(data) 
-			},
-			checkedBalabce(){//勾选使用余额
-				if(this.rebatecheck){
-					this.$util.msg('返佣订单不能使用余额抵扣',2000)
-				}else{
-					if(this.userMoney > 0){
-						this.ischecked = !this.ischecked
-						if(this.ischecked){
-							this.confirmParam.payInfo.balancePayFlag = 1
-							this.attributePallPrice()
-						}else{
-							this.confirmParam.payInfo.balancePayFlag = 0
-							if( this.handleFreightData.postageFlag == 1 ){
-								this.orderShouldPayFee = this.allPrice + parseInt(this.handleFreightData.postage) - this.couponAmount
-							}else{
-								this.orderShouldPayFee = this.allPrice - this.couponAmount
-							}
-						}
-						console.log('最终订单支付金额',this.orderShouldPayFee)
-						console.log('优惠券金额',this.couponAmount)
-					}else{
-						return
-					}
-				}
-			},	
-			attributePallPrice(){//计算价格
-				if( this.handleFreightData.postageFlag == 1){
-					this.attributeHashfreight(this.handleFreightData.postage)
-				}else{
-					this.attributeNofreight()
-				}
-			},
-			attributeNofreight(){//计算没有邮费的支付价格
-				if(this.ischecked){
-					let totalAmount = this.allPrice - this.couponAmount//计算不包邮的价格 总价等于商品价格+邮费
-					if(this.userMoney > totalAmount){
-						this.orderShouldPayFee = 0.00
-						this.deductMoney = this.allPrice - this.couponAmount		// 勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    // 勾选后的剩余抵扣
-					}else{
-						this.orderShouldPayFee = this.allPrice - this.userMoney -	this.couponAmount //勾选后的总价
-						this.deductMoney = this.userMoney				            // 勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    // 勾选后的剩余抵扣
-					}
-				}else{
-					this.orderShouldPayFee = this.allPrice  - this.couponAmount
-					this.deductMoney = 0.00
-					this.surplusMoney = this.userMoney
-				}
-				console.log('最终订单支付金额',this.orderShouldPayFee)
-				console.log('优惠券金额',this.couponAmount)
-			},
-			attributeHashfreight(postage){//计算需要邮费的支付价格
-				let totalAmount = this.allPrice + parseInt(postage) - this.couponAmount//计算不包邮的价格 总价等于商品价格+邮费
-				if(this.ischecked){
-					if(this.userMoney > totalAmount ){							//余额大于支付金额
-						this.orderShouldPayFee = 0.00
-						this.deductMoney = this.allPrice + parseInt(postage) - this.couponAmount			//勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
-					}else{
-						this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.userMoney  - this.couponAmount       	//勾选后的总价
-						this.deductMoney = this.userMoney				            //勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
-					}
-				}else{
-					this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.couponAmount
-					this.deductMoney = 0.00
-					this.surplusMoney = this.userMoney
+				this.userMoney = data.userMoney
+				this.totalCount = data.totalCount
+				this.allPrice = data.totalPrice
+				this.orderShouldPayFee = this.allPrice
+				this.isCouponShow = false
+				this.secondflag = false
+				this.isRequest = true
+			} catch (error) {
+				console.log('获取订单信息异常')
+			}
+		},
+		//获取地址信息
+		async getAddressData(userId, type) {
+			try {
+				const params = { pageNum: 1, pageSize: 1, userId: userId }
+				const res = await this.UserService.QueryAddressList(params)
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					this.addressData = data.list[0]
+					this.confirmParam.addressId = this.addressData.addressId
+					this.cartParam.townId = this.addressData.townId
+					this.productParam.townId = this.addressData.townId
 				}
-				console.log('最终订单支付金额',this.orderShouldPayFee)
-				console.log('优惠券金额',this.couponAmount)
-			},
-			orderSubmitMit(){//提交订单
-				if(this.confirmParam.addressId == ''){
-					this.$util.msg('请先添加收货地址~',2000)
-					return
+				if (type === 1) {
+					//立即都买提交
+					this.getInitProdcutCrearOrder()
 				}
-				if(this.confirmParam.payInfo.rebateFlag ===2){
-					if(this.rebateFee == 0){
-						this.$util.msg('请输入返佣服务费',2000)
-						return
-					}
-					this.confirmParam.payInfo.rebateFee = Number(this.rebateFee).toFixed(2)
+				if (type === 2) {
+					//购物车提交
+					this.getInitCrearOrder()
 				}
-				this.modal = true
-				this.contentModalText = '请仔细确认订单是否为返佣订单后再提交订单'
-			},
-			SellerCreateOrderSubmit(){
-				//提交订单
-				if(this.isSubLoading){ return }
-				this.confirmParam.orderInfo = this.goodsData.map(el => {
-					let productInfo = []
-					el.cartList.forEach(pros => {
-						productInfo.push({
-							skuId:pros.skuId,
-							productNum:pros.number,
-							presentNum:0,
-							productType:pros.giftType
-						})
+			} catch (error) {
+				console.log('获取订单地址异常')
+			}
+		},
+		handChangeInputGoodsList(data) {
+			//对应供应商的留言信息
+			this.goodsData = data
+		},
+		handleChoiceaInvoiceData(data) {
+			//获取发票信息
+			this.confirmParam.orderInvoice = data
+		},
+		handleClauseData(clauseId) {
+			// 条款Id
+			this.confirmParam.payInfo.clauseId = parseInt(clauseId)
+		},
+		handleChoiceaCouponData(data) {
+			// 勾选使用优惠券
+			console.log('优惠券信息', data)
+			this.couponAmount = data.couponAmount
+			this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+			this.confirmParam.clubCouponId = data.clubCouponId
+			this.attributePallPrice()
+		},
+		handleClubVisibleData(data) {
+			// 订单对机构是否可见
+			console.log('对机构是否可见', data)
+			this.confirmParam.orderSeen = Number(data)
+		},
+		orderSubmitMit() {
+			//提交订单
+			if (this.confirmParam.addressId == '') {
+				this.$util.msg('请先添加收货地址~', 2000)
+				return
+			}
+			this.SellerCreateOrderSubmit()
+			// if (this.confirmParam.payInfo.rebateFlag === 2) {
+			// 	if (this.rebateFee == 0) {
+			// 		this.$util.msg('请输入返佣服务费', 2000)
+			// 		return
+			// 	}
+			// 	this.confirmParam.payInfo.rebateFee = Number(this.rebateFee).toFixed(2)
+			// }
+			// this.modal = true
+			// this.contentModalText = '请仔细确认订单是否为返佣订单后再提交订单'
+		},
+		SellerCreateOrderSubmit() {
+			//提交订单
+			if (this.isSubLoading) {
+				return
+			}
+			this.confirmParam.orderInfo = this.goodsData.map(el => {
+				let productInfo = []
+				el.cartList.forEach(pros => {
+					productInfo.push({
+						skuId: pros.skuId,
+						productNum: pros.number,
+						presentNum: 0,
+						productType: pros.giftType
 					})
-					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)
-				this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
-				this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
-				this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
-				this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
-				this.isSubLoading = true	
-				this.hanldeOrderSubmit(this.confirmParam)
-			},
-			hanldeOrderSubmit(params){// 提交订单
-				this.SellerService.SellerCreateOrderSubmit(params).then(response =>{
-					const data = response.data
-					if(data.code === 1){
-						this.$util.msg('支付成功',2000,true,'success')
-						setTimeout(() =>{
-							this.isSubLoading = false
-							this.$api.redirectTo(`/pages/seller/order/order-details?type=cash&orderId=${data.orderId}&userId=${this.postageParam.userId}`)
-						},2000)
-					}else{
-						this.$util.msg('订单提交成功',2000,true,'success')
-						setTimeout(()=>{
-							this.isSubLoading = false
-							this.$api.redirectTo(`/pages/seller/order/order-details?type=cash&orderId=${data.orderId}&userId=${this.postageParam.userId}`)
-						},2000)
-					}
-				}).catch(error =>{
-					this.isSubLoading = false
-					this.handleError(error)
-				})
-			},
-			handleError(data){// 提交订单异常处理
-				this.formatConfirmParam()
-				const buttonMap = {
-						1:{
-							contentModalText :  '订单内存在械字号三类商品,需要拥有医疗执业许可证的医美机构才能购买。建议升级医美机构后再下单,否则会导致订单退款或影响发货。',
-							modalButton :  [
-								{ text: '取消',  type: 'gray', plain: true },
-								{ text: '继续提交', customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)' },plain: false }
-							]
-						}
+				return {
+					splitCode: el.splitCode,
+					shopId: el.shopId,
+					note: el.note ? el.note : '',
+					postage: parseInt(el.postage).toFixed(2),
+					postageFlag: parseInt(el.handlePostageFlag),
+					isColdChina: el.isColdChina ? 1 : 0,
+					productInfo: productInfo
 				}
-				if(data.code === -6){// 非医美机构下三类商品订单
-					this.modal = true
-					this.showModalstauts = 2
-					this.contentModalText = buttonMap[1].contentModalText
-					this.modalButton= buttonMap[1].modalButton
-				}else{
-					this.$util.msg(error.msg,3000)
+			})
+			this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
+			this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
+			this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
+			this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
+			this.isSubLoading = true
+			this.hanldeOrderSubmit(this.confirmParam)
+		},
+		// 提交订单
+		async hanldeOrderSubmit(params) {
+			try {
+				const res = await this.SellerService.SellerCreateOrderSubmit(params)
+				const data = res.data
+				if (data.code === 1) {
+					this.$util.msg('支付成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.isSubLoading = false
+						this.$api.redirectTo('/pages/seller/order/order-list?listType=0')
+					}, 2000)
+				} else {
+					this.$util.msg('订单提交成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.isSubLoading = false
+						this.$api.redirectTo('/pages/seller/order/order-list?listType=0')
+					}, 2000)
 				}
-			},
-			formatConfirmParam(){// 还原提交订单参数格式
-				this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo)
-				this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
-				this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
-			},
-			handleRebateFlag(){// 普通订单返佣
-				let self = this
-				uni.showActionSheet({
-					itemList: ['返佣订单', '普通订单,存在返佣服务费','否'],
-					success: (e) => {
-						switch(e.tapIndex){
-							case 0:
-								self.confirmParam.payInfo.rebateFlag = 1
-								self.rebateFeeText = '返佣订单'
-								break
-							case 1:
-								self.confirmParam.payInfo.rebateFlag = 2
-								self.rebateFeeText = '普通订单,存在返佣服务费'
-								break
-							case 2:
-								self.confirmParam.payInfo.rebateFlag = 0
-								self.rebateFeeText = '否'
-								break
+			} catch (error) {
+				this.isSubLoading = false
+				this.handleError(error)
+			}
+		},
+		handleError(data) {
+			// 提交订单异常处理
+			this.formatConfirmParam()
+			const buttonMap = {
+				1: {
+					contentModalText:
+						'订单内存在械字号三类商品,需要拥有医疗执业许可证的医美机构才能购买。建议升级医美机构后再下单,否则会导致订单退款或影响发货。',
+					modalButton: [
+						{ text: '取消', type: 'gray', plain: true },
+						{
+							text: '继续提交',
+							customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)' },
+							plain: false
 						}
-					}
-				})
-				if(this.confirmParam.payInfo.rebateFlag ===1){
-					this.confirmParam.payInfo.balancePayFlag = 0
-					this.couponAmount = 0
-					this.confirmParam.clubCouponId = 0
-					this.confirmParam.orderSeen = 2
-					this.$refs.clubVisible.orderVisibleText = '不可见'
-					this.$refs.clubVisible.current = 1
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-					this.$refs.coupon.coupon.couponAmount = 0
-					this.$refs.freight.infoData(this.freightData)
-					this.$refs.freight.freightData  = this.freightData
-					this.handleFreightData = this.freightData
-				}else{
-					this.confirmParam.orderSeen = 1
-					this.$refs.clubVisible.orderVisibleText = '可见'
-					if(this.couponList.length>0){
-						this.confirmParam.clubCouponId = this.couponList[0].clubCouponId 
-						this.$refs.coupon.coupon.couponAmount = this.couponAmount = this.couponList[0].couponAmount
-					}
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount 
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+					]
 				}
-			},
-			handleClick(e){
-				//确认提交
-				if (e.index == 1) {
-					if(this.showModalstauts == 2){
-						this.confirmParam.orderMiniType = 2
-						this.SellerCreateOrderSubmit()
-					}else{
-						this.SellerCreateOrderSubmit()
+			}
+			if (data.code === -6) {
+				// 非医美机构下三类商品订单
+				this.modal = true
+				this.showModalstauts = 2
+				this.contentModalText = buttonMap[1].contentModalText
+				this.modalButton = buttonMap[1].modalButton
+			} else {
+				this.$util.msg(data.msg, 3000)
+			}
+		},
+		formatConfirmParam() {
+			// 还原提交订单参数格式
+			this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo)
+			this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
+			this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
+		},
+		handleRebateFlag() {
+			// 普通订单返佣
+			let self = this
+			uni.showActionSheet({
+				itemList: ['返佣订单', '普通订单,存在返佣服务费', '否'],
+				success: e => {
+					switch (e.tapIndex) {
+						case 0:
+							self.confirmParam.payInfo.rebateFlag = 1
+							self.rebateFeeText = '返佣订单'
+							break
+						case 1:
+							self.confirmParam.payInfo.rebateFlag = 2
+							self.rebateFeeText = '普通订单,存在返佣服务费'
+							break
+						case 2:
+							self.confirmParam.payInfo.rebateFlag = 0
+							self.rebateFeeText = '否'
+							break
 					}
 				}
-				this.confirmParam.orderMiniType = 0
-				this.modal = false
-			},
-			handleSecondFlag(){// 二手订单勾选返佣
-				this.rebatecheck = !this.rebatecheck
-				if(this.rebatecheck){
-					this.ischecked = false
-					this.confirmParam.payInfo.rebateFlag=1
-					this.confirmParam.payInfo.balancePayFlag = 0
-					this.confirmParam.clubCouponId = 0
-					this.confirmParam.orderSeen = 2
-					this.$refs.clubVisible.orderVisibleText = '不可见'
-					this.$refs.clubVisible.current = 1
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
-					this.$refs.freight.infoData(this.freightData)
-					this.$refs.freight.freightData  = this.freightData
-					this.handleFreightData = this.freightData
-				}else{
-					this.confirmParam.orderSeen = 1
-					this.$refs.clubVisible.orderVisibleText = '可见'
-					this.confirmParam.payInfo.rebateFlag=0
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+			})
+			if (this.confirmParam.payInfo.rebateFlag === 1) {
+				this.confirmParam.payInfo.balancePayFlag = 0
+				this.couponAmount = 0
+				this.confirmParam.clubCouponId = 0
+				this.confirmParam.orderSeen = 2
+				this.$refs.clubVisible.orderVisibleText = '不可见'
+				this.$refs.clubVisible.current = 1
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+				this.$refs.coupon.coupon.couponAmount = 0
+				this.$refs.freight.infoData(this.freightData)
+				this.$refs.freight.freightData = this.freightData
+				this.handleFreightData = this.freightData
+			} else {
+				this.confirmParam.orderSeen = 1
+				this.$refs.clubVisible.orderVisibleText = '可见'
+				if (this.couponList.length > 0) {
+					this.confirmParam.clubCouponId = this.couponList[0].clubCouponId
+					this.$refs.coupon.coupon.couponAmount = this.couponAmount = this.couponList[0].couponAmount
 				}
-			},
-			handFreightAlertShow(){//显示邮费弹窗
-				this.isfreightTip = true
-			},
-			handleClickCancel(){// 关闭优惠券弹窗
-				this.isCouponModel = false
-				this.getInitCrearOrder()
-			},
-			hideFreight(){//关闭邮费弹窗
-				this.isfreightTip = false
-			},
-			hideMobel() {
-				this.modal = false
-			},
+				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+			}
+		},
+		handleClick(e) {
+			//确认提交
+			if (e.index == 1) {
+				if (this.showModalstauts == 2) {
+					this.confirmParam.orderMiniType = 2
+					this.SellerCreateOrderSubmit()
+				} else {
+					this.SellerCreateOrderSubmit()
+				}
+			}
+			this.confirmParam.orderMiniType = 0
+			this.modal = false
+		},
+		handleSecondFlag() {
+			// 二手订单勾选返佣
+			this.rebatecheck = !this.rebatecheck
+			if (this.rebatecheck) {
+				this.ischecked = false
+				this.confirmParam.payInfo.rebateFlag = 1
+				this.confirmParam.payInfo.balancePayFlag = 0
+				this.confirmParam.clubCouponId = 0
+				this.confirmParam.orderSeen = 2
+				this.$refs.clubVisible.orderVisibleText = '不可见'
+				this.$refs.clubVisible.current = 1
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+				this.$refs.freight.infoData(this.freightData)
+				this.$refs.freight.freightData = this.freightData
+				this.handleFreightData = this.freightData
+			} else {
+				this.confirmParam.orderSeen = 1
+				this.$refs.clubVisible.orderVisibleText = '可见'
+				this.confirmParam.payInfo.rebateFlag = 0
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+			}
+		},
+		handFreightAlertShow() {
+			//显示邮费弹窗
+			this.isfreightTip = true
+		},
+		handleClickCancel() {
+			// 关闭优惠券弹窗
+			this.isCouponModel = false
+			this.getInitCrearOrder()
 		},
-		onShow() {
-			let pages = getCurrentPages()
-			let currPage = pages[pages.length-1]
-			if(currPage.data.select =='select'){
-				this.isAddress = true
-				let SelectData = uni.getStorageSync('selectAddress')
-				this.confirmParam.addressId = SelectData.addressId
-				this.postageParam.townId = SelectData.townId 
-				this.addressData = SelectData
-				this.getFreightData()
-			}else{
-				this.getAddressData()
+		hideFreight() {
+			//关闭邮费弹窗
+			this.isfreightTip = false
+		},
+		hideMobel() {
+			this.modal = false
+		}
+	},
+	onShow() {
+		let pages = getCurrentPages()
+		let currPage = pages[pages.length - 1]
+		if (currPage.data.select == 'select') {
+			let address = uni.getStorageSync('selectAddress')
+			this.confirmParam.addressId = address.addressId
+			this.cartParam.townId = address.townId
+			this.productParam.townId = address.townId
+			this.addressData = address
+			this.ischecked = false
+			this.isRequest = false
+			if (this.handleComType === 1) {
+				//立即都买提交
+				this.getInitProdcutCrearOrder()
+			}
+			if (this.handleComType === 2) {
+				//购物车提交
+				this.getInitCrearOrder()
 			}
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	page {
-		height: auto;
-		background:#F7F7F7;
-	}
-	.btn-hover{
-		background: #FFFFFF;
+page {
+	height: auto;
+	background: #f7f7f7;
+}
+.btn-hover {
+	background: #ffffff;
+}
+.animation {
+	/* transition: transform 0.3s ease;*/
+	transition-property: transform;
+	transition-duration: 0.3s;
+	transition-timing-function: ease;
+}
+.invoice-freight {
+	width: 702rpx;
+	padding: 0 24rpx;
+	height: 86rpx;
+	line-height: 86rpx;
+	font-size: $font-size-28;
+	color: $text-color;
+	background: #ffffff;
+	float: left;
+	font-weight: bold;
+	.freight-left {
+		float: left;
+		.icon-yunfeishuoming {
+			height: 100%;
+			padding: 0 15rpx;
+			color: $color-system;
+			font-weight: normal;
+		}
 	}
-	.animation{
-		/* transition: transform 0.3s ease;*/
-		transition-property: transform;
-		transition-duration: 0.3s;
-		transition-timing-function: ease;
+	.freight-right {
+		float: right;
+		color: #2a81ff;
 	}
-	.invoice-freight{
-		width: 702rpx;
-		padding: 0 24rpx;
+}
+.invoice-balance {
+	width: 702rpx;
+	height: auto;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	margin-bottom: 24rpx;
+	.balabce-t {
+		width: 100%;
 		height: 86rpx;
 		line-height: 86rpx;
 		font-size: $font-size-28;
 		color: $text-color;
-		background: #FFFFFF;
 		float: left;
-		font-weight: bold;
-		.freight-left{
+		.balabce-t-le {
 			float: left;
-			.icon-yunfeishuoming{
-				height: 100%;
-				padding: 0 15rpx;
-				color: $color-system;
-				font-weight: normal;
-			}
+			font-weight: bold;
 		}
-		.freight-right{
+		.balabce-t-ri {
 			float: right;
-			color: #2A81FF;
-		}
-	}
-	.invoice-balance{
-		width: 702rpx;
-		height: auto;
-		padding:0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		margin-bottom: 24rpx;
-		.balabce-t{
-			width: 100%;
-			height: 86rpx;
-			line-height: 86rpx;
-			font-size: $font-size-28;
-			color: $text-color;
-			float: left;
-			.balabce-t-le{
+			display: flex;
+			align-items: center;
+			.money {
+				display: flex;
 				float: left;
-				font-weight: bold;
 			}
-			.balabce-t-ri{
-				float: right;
+			.checkbox-box {
 				display: flex;
-				align-items: center;
-				.money{
-					display: flex;
-					float: left;
-				}
-				.checkbox-box{
-					display: flex;
-					width: 60rpx;
-					float: left;
-					height: 100%;
-					font-size: $font-size-24;
-					.checkbox{
-						width: 40rpx;
-						text-align: right;
-						box-sizing: border-box;
-						text-align: center;
-						text-decoration: none;
-						border-radius: 0;
-						-webkit-tap-highlight-color: transparent;
-						overflow: hidden;
-						color: $color-system;
-						padding: 5rpx;
-					}
-				}	
-			}
-		}
-		.balabce-b{
-			width: 100%;	
-			float: left;
-			overflow: hidden;
-			.balabce-b-text{
-				width: 100%;
-				line-height: 58rpx;
+				width: 60rpx;
+				float: left;
+				height: 100%;
 				font-size: $font-size-24;
-				color: #FF2A2A;
-				text-align: right;
-				float: right;
+				.checkbox {
+					width: 40rpx;
+					text-align: right;
+					box-sizing: border-box;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $color-system;
+					padding: 5rpx;
+				}
 			}
-			&.balabce-b--hide {
-				padding: 0 0;
-				height: 0px;
-				line-height: 0px;
-			}	
 		}
 	}
-	.footer{
-		position: fixed;
-		left: 0;
-		bottom: 0;
-		display: flex;
-		align-items: center;
+	.balabce-b {
 		width: 100%;
-		height: 110rpx;
-		line-height: 110rpx;
-		justify-content: space-between;
-		font-size: $font-size-28;
-		background-color: #FFFFFF;
-		z-index: 990;
-		color: $text-color;
-		.footer-le{
-			width:570rpx;
-			height:100%;
-			float: left;
+		float: left;
+		overflow: hidden;
+		.balabce-b-text {
+			width: 100%;
+			line-height: 58rpx;
+			font-size: $font-size-24;
+			color: #ff2a2a;
+			text-align: right;
+			float: right;
 		}
-		.footer-count{
-			float: left;
-			padding-left: 24rpx;
-			width:190rpx;
-			box-sizing: border-box;
-			font-size: $font-size-26;
+		&.balabce-b--hide {
+			padding: 0 0;
+			height: 0px;
+			line-height: 0px;
 		}
-		.footer-price{
-			width:370rpx;
-			float: right;
-			text-align: right;
+	}
+}
+.footer {
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	display: flex;
+	align-items: center;
+	width: 100%;
+	height: 110rpx;
+	line-height: 110rpx;
+	justify-content: space-between;
+	font-size: $font-size-28;
+	background-color: #ffffff;
+	z-index: 990;
+	color: $text-color;
+	.footer-le {
+		width: 570rpx;
+		height: 100%;
+		float: left;
+	}
+	.footer-count {
+		float: left;
+		padding-left: 24rpx;
+		width: 190rpx;
+		box-sizing: border-box;
+		font-size: $font-size-26;
+	}
+	.footer-price {
+		width: 370rpx;
+		float: right;
+		text-align: right;
+		color: $text-color;
+		padding: 10rpx 20rpx 10rpx 0;
+		box-sizing: border-box;
+		.sum-none {
+			width: 100%;
+			height: 45rpx;
+			line-height: 45rpx;
 			color: $text-color;
-			padding: 10rpx 20rpx 10rpx 0;
-			box-sizing: border-box;
-			.sum-none{
-				width: 100%;
-				height: 45rpx;
-				line-height: 45rpx;
-				color: $text-color;
-				float: left;
-				text-align: right;
-				.money{
-					font-size: $font-size-26;
-					color: #999999;
-					text-decoration: line-through;
-				}
-				.money-sign{
-					font-size: $font-size-26;
-					color: #999999;
-					text-decoration: line-through;
-				}
-				.money-reduced{
-					margin-left: 10rpx;
-					font-size: $font-size-26;
-					color:$color-system;
-				}
+			float: left;
+			text-align: right;
+			.money {
+				font-size: $font-size-26;
+				color: #999999;
+				text-decoration: line-through;
 			}
-			.sum{
-				width: 100%;
-				height: 45rpx;
-				line-height: 45rpx;
-				float: left;
-				&.none{
-					height: 90rpx;
-					line-height: 90rpx;
-				}
-				.price{
-					font-size: $font-size-32;
-					color: #FF2A2A;
-				}
+			.money-sign {
+				font-size: $font-size-26;
+				color: #999999;
+				text-decoration: line-through;
 			}
-			
-		}
-		.footer-submit{
-			display:flex;
-			align-items:center;
-			justify-content: center;
-			width: 180rpx;
-			height: 100%;
-			box-sizing: border-box;
-			padding: 15rpx 5rpx;
-			.btn{
-				width: 100%;
-				height: 100%;
-				color: #FFFFFF;
-				background:linear-gradient(90deg, #FF9300 0%, #FF5B00 100%);
+			.money-reduced {
+				margin-left: 10rpx;
 				font-size: $font-size-26;
-				text-align: center;
-				line-height: 80rpx;
-				border-radius: 40rpx;
-				&.disabled{
-					background: #e4e8eb;
-					color: #999999;
-				}
+				color: $color-system;
 			}
 		}
-	}
-	.order-return{
-		width: 100%;
-		height: auto;
-		box-sizing: border-box;
-		padding: 0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin: 24rpx 0;
-		.order-return-main{
-			width:100%;
-			height: 86rpx;
-			line-height: 86rpx;
-			.label{
-				float: left;
-				font-weight: bold;
-				color: #333333;
-				font-size: $font-size-28;
+		.sum {
+			width: 100%;
+			height: 45rpx;
+			line-height: 45rpx;
+			float: left;
+			&.none {
+				height: 90rpx;
+				line-height: 90rpx;
 			}
-			.label-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					font-size: 28rpx;
-					font-weight: bold;
-					margin-right: 20rpx;
-				}
-				.icon-xiayibu{
-					line-height: 88rpx;
-					color: #999999;
-					font-weight: normal;
-				}
+			.price {
+				font-size: $font-size-32;
+				color: #ff2a2a;
 			}
-			
 		}
-		.order-return-input{
+	}
+	.footer-submit {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 180rpx;
+		height: 100%;
+		box-sizing: border-box;
+		padding: 15rpx 5rpx;
+		.btn {
 			width: 100%;
-			height: 86rpx;
-			padding-bottom: 20rpx;
-			box-sizing: border-box;
-			.input{
-				width: 100%;
-				height: 66rpx;
-				font-size: $font-size-26;
-				border: 1px solid #e1e1e1;
-				line-height: 66rpx;
-				color: #333333;
-				border-radius: 4rpx;
-				box-sizing: border-box;
-				padding: 0 20rpx;
+			height: 100%;
+			color: #ffffff;
+			background: linear-gradient(90deg, #ff9300 0%, #ff5b00 100%);
+			font-size: $font-size-26;
+			text-align: center;
+			line-height: 80rpx;
+			border-radius: 40rpx;
+			&.disabled {
+				background: #e4e8eb;
+				color: #999999;
 			}
 		}
 	}
-	.Rebate{
-		width: 702rpx;
-		height: auto;
-		padding: 0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin-bottom: 24rpx;
-		margin-top: 24rpx;
+}
+.order-return {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin: 24rpx 0;
+	.order-return-main {
+		width: 100%;
+		height: 86rpx;
 		line-height: 86rpx;
-		.rebate-title{
+		.label {
 			float: left;
 			font-weight: bold;
 			color: #333333;
 			font-size: $font-size-28;
 		}
-		.iconfont{
+		.label-right {
 			float: right;
-			color: #b2b2b2;
-			font-size: 40rpx;
-			&.icon-yixuanze{
-				color: $color-system;
+			color: #2a81ff;
+			.text-l {
+				font-size: 28rpx;
+				font-weight: bold;
+				margin-right: 20rpx;
+			}
+			.icon-xiayibu {
+				line-height: 88rpx;
+				color: #999999;
+				font-weight: normal;
 			}
 		}
 	}
-	.coupon-content-model{
+	.order-return-input {
 		width: 100%;
-		height: 100%;
-		background: rgba(0,0,0,.5);
-		position: fixed;
+		height: 86rpx;
+		padding-bottom: 20rpx;
+		box-sizing: border-box;
+		.input {
+			width: 100%;
+			height: 66rpx;
+			font-size: $font-size-26;
+			border: 1px solid #e1e1e1;
+			line-height: 66rpx;
+			color: #333333;
+			border-radius: 4rpx;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+		}
+	}
+}
+.Rebate {
+	width: 702rpx;
+	height: auto;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin-bottom: 24rpx;
+	margin-top: 24rpx;
+	line-height: 86rpx;
+	.rebate-title {
+		float: left;
+		font-weight: bold;
+		color: #333333;
+		font-size: $font-size-28;
+	}
+	.iconfont {
+		float: right;
+		color: #b2b2b2;
+		font-size: 40rpx;
+		&.icon-yixuanze {
+			color: $color-system;
+		}
+	}
+}
+.coupon-content-model {
+	width: 100%;
+	height: 100%;
+	background: rgba(0, 0, 0, 0.5);
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 8888;
+	transition: all 0.4s;
+	.coupon-alert-content {
+		width: 600rpx;
+		height: 612rpx;
+		position: absolute;
 		top: 0;
 		left: 0;
-		z-index: 8888;
-		transition: all 0.4s;
-		.coupon-alert-content{
+		bottom: 0;
+		right: 0;
+		margin: auto;
+		box-sizing: border-box;
+		padding-top: 92rpx;
+		.coupon {
 			width: 600rpx;
-			height: 612rpx;
-			position: absolute;
-			top: 0;
-			left: 0;
-			bottom: 0;
-			right: 0;
-			margin: auto;
+			height: 522rpx;
+			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
+			background-size: cover;
 			box-sizing: border-box;
-			padding-top: 92rpx;
-			.coupon{
-				width: 600rpx;
-				height: 522rpx;
-				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
-				background-size: cover;
+			padding: 230rpx 40rpx 0 40rpx;
+			.coupon-list {
+				width: 100%;
+				height: 147rpx;
+				margin-bottom: 32rpx;
 				box-sizing: border-box;
-				padding: 230rpx 40rpx 0 40rpx;
-				.coupon-list{
-					width: 100%;
-					height: 147rpx;
-					margin-bottom: 32rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
+				background-size: cover;
+				position: relative;
+				.list-cell-tags {
+					display: inline-block;
+					padding: 0 10rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					background-color: #f94b4b;
+					color: #ffffff;
+					font-size: 18rpx;
+					border-radius: 16rpx 0 16rpx 0;
+					text-align: center;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.list-cell-le {
+					width: 154rpx;
+					height: 100%;
 					box-sizing: border-box;
-					background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
-					background-size: cover;
-					position: relative;
-					.list-cell-tags{
-						display: inline-block;
-						padding: 0 10rpx;
-						height: 32rpx;
-						line-height: 32rpx;
-						background-color: #f94b4b;
-						color: #FFFFFF;
-						font-size: 18rpx;
-						border-radius: 16rpx 0 16rpx 0;
+					padding: 30rpx 0;
+					float: left;
+					.coupon-maxMoney {
+						width: 100%;
+						height: 54rpx;
+						line-height: 54rpx;
+						font-size: 42rpx;
+						color: #f94b4b;
 						text-align: center;
-						position: absolute;
-						top: 0;
-						left: 0;
+						margin-top: 10rpx;
+						.small {
+							font-size: $font-size-20;
+						}
 					}
-					.list-cell-le{
-						width: 154rpx;
-						height: 100%;
-						box-sizing: border-box;
-						padding: 30rpx 0;
+					.coupon-minMoney {
+						width: 100%;
+						height: 28rpx;
 						float: left;
-						.coupon-maxMoney{
-							width: 100%;
-							height: 54rpx;
-							line-height: 54rpx;
-							font-size: 42rpx;
+						box-sizing: border-box;
+						padding-left: 24rpx;
+						.txt {
+							display: block;
+							height: 28rpx;
+							line-height: 28rpx;
+							font-size: 16rpx;
 							color: #f94b4b;
 							text-align: center;
-							margin-top: 10rpx;
-							.small{
-								font-size: $font-size-20;
-							}
-						}
-						.coupon-minMoney{
-							width: 100%;
-							height: 28rpx;
+							padding: 0 5rpx;
+							background-color: #fff1eb;
+							border-radius: 4rpx;
 							float: left;
-							box-sizing: border-box;
-							padding-left: 24rpx;
-							.txt{
-								display: block;
-								height: 28rpx;
-								line-height: 28rpx;
-								font-size: 16rpx;
-								color: #f94b4b;
-								text-align: center;
-								padding: 0 5rpx;
-								background-color: #fff1eb;
-								border-radius: 4rpx;
-								float: left;
-							}
 						}
 					}
-					.list-cell-ri{
-						width: 366rpx;
-						height: 100%;
-						box-sizing: border-box;
-						padding:30rpx 20rpx;
+				}
+				.list-cell-ri {
+					width: 366rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 20rpx;
+					float: left;
+					.list-cell-top {
+						width: 100%;
+						height: 64rpx;
+						line-height: 64rpx;
+						font-size: $font-size-26;
+						color: #333333;
 						float: left;
-						.list-cell-top{
-							width: 100%;
-							height: 64rpx;
-							line-height: 64rpx;
-							font-size: $font-size-26;
-							color: #333333;
-							float: left;
-							text-overflow:ellipsis;
-							display: -webkit-box;
-							word-break: break-all;
-							-webkit-box-orient: vertical;
-							-webkit-line-clamp: 1;
-							overflow: hidden;
-						}
-						.list-cell-time{
-							width: 100%;
-							height: 28rpx;
-							line-height: 28rpx;
-							text-align: left;
-							font-size: $font-size-20;
-							color: #999999;
-						}
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
+						overflow: hidden;
+					}
+					.list-cell-time {
+						width: 100%;
+						height: 28rpx;
+						line-height: 28rpx;
+						text-align: left;
+						font-size: $font-size-20;
+						color: #999999;
 					}
 				}
-				.coupon-btn{
-					width: 100%;
-					height: 78rpx;
-					background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
-					background-size: cover;
-					line-height: 78rpx;
-					text-align: center;
-					color: #FFFFFF;
-					font-size: $font-size-36;
-				}
+			}
+			.coupon-btn {
+				width: 100%;
+				height: 78rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
+				background-size: cover;
+				line-height: 78rpx;
+				text-align: center;
+				color: #ffffff;
+				font-size: $font-size-36;
 			}
 		}
 	}
+}
 </style>

+ 94 - 0
pages/seller/order/mixins/conMixins.js

@@ -0,0 +1,94 @@
+import Vue from 'vue'
+const conMixins = {
+    data() {
+        return {
+            handleComType:0,//跳转类型
+            cartParam: {
+                // 购物车立即结算确认订单参数
+                townId:'',          //地址ID
+                skuIds:'',
+                serviceProviderId: 0, // 协销Id
+                clubId: 0 // 机构Id
+            },
+            productParam: {
+                // 商品立即购买确认订单参数
+                townId:'',          //地址ID
+                productCount: 0, // 商品数量
+                productId: 0, // 商品Id
+                serviceProviderId: 0, // 协销Id
+                clubId: 0 // 机构Id
+            },
+            totalCount: 1, // 订单提交总数量
+            reducedPrice: 0, // 满减金额
+            couponAmount: 0, // 优惠券金额
+            allPrice: 0.0, // 订单总金额
+            userMoney: 0.0, // 显示可使用余额
+            deductMoney: 0.0, // 显示已使用的余额
+            orderShouldPayFee:0 //显示最终订单金额
+        }
+    },
+    computed: {
+        // 计算订单最终支付金额 = 供应商下的合计金额之和
+        orderTotalPrice(){
+            let totalPrice = 0
+            this.goodsData.forEach(el =>{
+                totalPrice += el.totalPrice
+            })
+            console.log('订单最终金额',totalPrice)
+            return totalPrice - this.couponAmount
+        },
+        // 显示勾选后的剩余抵扣 = 用户总余额-当前使用金额
+        surplusMoney(){
+			 console.log('剩余抵扣', (this.userMoney - this.deductMoney))
+            return this.userMoney - this.deductMoney
+        },
+        // 共减 = 减金额 + 优惠券金额
+        totalDiscountAmount(){
+			 console.log('共减金额', (this.reducedPrice + this.couponAmount))
+            return this.reducedPrice + this.couponAmount
+        }
+    },
+    methods: {
+        //勾选使用余额
+        checkedBalabce() {
+            if (this.userMoney > 0) {
+                this.ischecked = !this.ischecked
+                if (this.ischecked) {
+                    this.confirmParam.payInfo.balancePayFlag = 1
+                    this.attributePallPrice()
+                } else {
+                    this.confirmParam.payInfo.balancePayFlag = 0
+                    this.attributePallPrice()
+                }
+                console.log('勾选使用余额最终订单支付金额', this.orderShouldPayFee)
+            }
+        },
+        // 是否勾选冷链费计算
+        handleChangeChina(supplier){
+        	this.attributePallPrice()
+        },
+        // 修改供应商运费类型
+        handleChangePostage(supplier){
+            this.attributePallPrice()
+        },
+        // 计算最终订单支付金额
+        attributePallPrice() {
+            if (this.ischecked) {// 是否勾选余额抵扣
+                if (this.userMoney >= this.orderTotalPrice) {
+                    this.orderShouldPayFee =0.0
+                    this.deductMoney = this.orderTotalPrice// 当前使用金额等于订单金额
+                } else {
+                    this.orderShouldPayFee = this.orderTotalPrice - this.userMoney // 订单最终支付金额等于订单金额-账户余额
+                    this.deductMoney = this.userMoney // 当前使用金额等于总余额
+                }
+                console.log('余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            } else {
+                this.orderShouldPayFee = this.orderTotalPrice
+                this.deductMoney = 0 // 当前使用
+                console.log('未余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            }
+        }
+    }
+}
+
+export default conMixins

+ 168 - 0
pages/seller/order/mixins/orderMixins.js

@@ -0,0 +1,168 @@
+import Vue from 'vue'
+const orderMixins = {
+    data() {
+        return {
+            btnClubUserId: 0,
+            handleShopOrderId: 0, //点击按钮传入的的订单ID
+            handleModelEven: 0,
+            modal: false,
+            contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+            modalButton: [
+            	{
+            		text: '取消',
+            		type: 'gray',
+            		plain: true //是否空心
+            	},
+            	{
+            		text: '确定',
+            		customStyle: {
+            			color: '#fff',
+            			bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
+            		},
+            		plain: false
+            	}
+            ]
+        }
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        },
+        statusFilters(value) {
+            //处理订单状态显示
+            const map = {
+                0: '待确认',
+                2: '交易完成',
+                4: '已关闭',
+                5: '交易全退',
+                6: '交易全退',
+                11: '待付款待发货',
+                12: '待付款部分发货',
+                13: '待付款已发货',
+                21: '部分付款待发货',
+                22: '部分付款部分发货',
+                23: '部分付款已发货',
+                31: '已付款待发货',
+                32: '已付款部分发货',
+                33: '已付款已发货'
+            }
+            return map[value]
+        }
+    },
+    computed: {
+       
+    },
+    methods: {
+        //确认操作
+        handleClick(e) {
+            if (e.index == 1) {
+                switch (this.handleModelEven) {
+                case 1: //取消订单
+                    this.cancelOrder(this.handleShopOrderId)
+                    break
+                case 2: //删除订单
+                    this.deleteOrder(this.handleShopOrderId)
+                    break
+                case 3: //确认订单
+                    this.affirmOrder(this.handleShopOrderId)
+                    break
+                }
+            }
+            this.modal = false
+        },
+        //取消订单
+        async cancelOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.CancelOrder({ shopOrderId: shopOrderId, userIdentity: 1 })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        //删除订单
+        async deleteOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.DeleteOrder({ shopOrderId: shopOrderId })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        //确认订单
+        async affirmOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.AffirmOrder({ shopOrderId: shopOrderId })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        // 再来一单
+        async handOrderAgain(shopOrderId) {
+        	try {
+        		const res = await this.SellerService.SellerCreateOrderAgain({
+        			confirmFlag: 0,
+        			shopOrderId: shopOrderId,
+        			serviceProviderId: this.listQuery.serviceProviderId
+        		})
+        		const data = res.data
+        		this.$api.setStorage('orderUserInfo', {
+        			clubId: data.clubId,
+        			againBuyProductIds: data.productIds,
+        			userId: data.userId
+        		})
+        		this.$api.navigateTo('/pages/seller/cart/cart')
+        	} catch (error) {
+        		if (error.code == -3) {
+        			this.showAgan = true
+        			this.promptitle = error.msg
+        			this.failList = error.data
+        		} else if (error.code == -2) {
+        			this.$util.modal('', error.msg, '确定', '', false, () => {})
+        		} else {
+        			this.$util.msg(error.msg, 2000)
+        		}
+        	}
+        },
+        // 再来一单弹窗
+        async handleAddAgian() {
+        	try {
+        		await this.SellerService.SellerCreateOrderAgain({
+        			confirmFlag: 1,
+        			shopOrderId: this.handleShopOrderId,
+        			serviceProviderId: this.listQuery.serviceProviderId
+        		})
+        		this.$api.navigateTo('/pages/seller/cart/cart')
+        		this.showAgan = false
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        }
+    },
+    onShareAppMessage(res) {
+	    //分享转发
+	    this.isShareModal = false
+	    if (res.from === 'button') {
+	        // 来自页面内转发按钮
+	    }
+	    return {
+	        title: '您有新的分享订单,快来查看吧~',
+	        path: `/pages/user/order/order-sharelogin?shopOrderId=${this.handleShopOrderId}&userId=${
+	            this.btnClubUserId
+	        }&serviceProviderId=${this.listQuery.serviceProviderId}`,
+	        imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+	    }
+    }
+}
+
+export default orderMixins

+ 38 - 258
pages/seller/order/order-club-details.vue

@@ -1,12 +1,7 @@
 <template>
 	<view class="container details clearfix" :style="{ paddingBottom: isIphoneX ? 130 + 68 + 'rpx' : '130rpx' }">
 		<!-- 自定义返回 -->
-		<header-back
-			:systeminfo="systeminfo"
-			:navbar-data="nvabarData"
-			:headerBtnPosi="headerBtnPosi"
-			:isShare="isOrderShare"
-		></header-back>
+		<header-back :systeminfo="systeminfo" :navbar-data="nvabarData" :headerBtnPosi="headerBtnPosi" :isShare="isOrderShare" />
 		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
 				<view class="view-type">{{ information.status | TextFormat }}</view>
@@ -27,37 +22,21 @@
 				>
 			</view>
 			<!-- 地址选择 -->
-			<order-address
-				ref="orderAddress"
-				v-if="isRequest && !rechargeGoods"
-				:addressData="addressData"
-			></order-address>
+			<cm-address-temp ref="orderAddress" v-if="isRequest && !rechargeGoods" :addressData="addressData" /> 
+			<!-- 特殊商品退货须知 -->
+			<view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
 			<!-- 商品 -->
-			<goods-list
-				ref="goods"
-				v-if="isRequest"
-				:shopOrderData="shopOrderData"
-				:information="information"
-				@popupClick="hanldePopupFn"
-			></goods-list>
+			<cm-goods-temp ref="goods" v-if="isRequest" :shopOrderData="shopOrderData" :information="information" @popupClick="hanldePopupFn" />
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<cm-order-temp ref="information" v-if="isRequest" :information="information"/>
 			<!-- 发票信息 -->
-			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<cm-invice-temp ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
-			<payment-record
-				ref="payment"
-				v-if="isRequest"
-				:discernReceiptList="discernReceiptList"
-				:receiptAmount="receiptAmount"
-			></payment-record>
+			<cm-payment-temp ref="payment" v-if="isRequest" :discernReceiptList="discernReceiptList" :receiptAmount="receiptAmount" />
 			<!-- 退款记录 -->
-			<refund-record
-				ref="refund"
-				v-if="!isManage"
-				:returnedPurchaseList="returnedPurchaseList"
-				:returnedPurchaseFee="returnedPurchaseFee"
-			></refund-record>
+			<cm-refund-temp ref="refund" v-if="isRequest" :returnedPurchaseList="returnedPurchaseList" :returnedPurchaseFee="returnedPurchaseFee" />
+			<!-- 支付凭证记录 -->
+			<cm-voucher-temp ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
 			<view
 				class="clause"
 				v-if="information.secondHandOrderFlag != 1"
@@ -68,82 +47,41 @@
 					clauseData.name
 				}}</label>
 			</view>
-			<!-- 底部button -->
-<!-- 			<order-button
-				ref="orderButton"
-				v-if="isRequest"
-				:status="btnStatus"
-				:order="information"
-				:rechargeGoods="rechargeGoods"
-				:ableUserMoney="ableUserMoney"
-				:shareCode="shareCode"
-				:serviceProviderId="serviceProviderId"
-				:secondHandOrderFlag="information.secondHandOrderFlag"
-				@buttonConfirm="handButtonConfirm"
-			>
-			</order-button> -->
 		</view>
-		<!-- 付款弹窗 -->
-		<order-model
-			v-if="isPayModel"
-			:payModelData="payModelData"
-			:modelType="modelType"
-			@paymentConfirm="hanldPaymentConfirm"
-		/>
 		<!-- 分享弹窗 -->
-		<share-alert :orderId="orderId" 
-					 :shareType="isShareType"
-					 v-if="isShareModal" 
-					 @shareConfirm="onShareAppMessage"> 
-		</share-alert>
+		<cm-share-popup :orderId="orderId" :shareType="isShareType" v-if="isShareModal" @shareConfirm="onShareAppMessage" />
 		<!-- 促销活动弹窗 -->
-		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
-		<!-- 再来一单 -->
-		<view class="aganBj" v-show="showAgan">
-			<view class="alertAgan">
-				<text class="title">{{ promptitle }}</text>
-				<view class="goods">
-					<view class="list" v-for="(item, index) in failList" :key="index">
-						<image class="image-left" :src="item.image"></image>
-						<view class="name-right">{{ item.name }}</view>
-					</view>
-				</view>
-				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
-				</view>
-			</view>
-		</view>
+		<cm-promote-popup :Promotion="handlerPros" :popupShow="popupShow" />
 	</view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import orderAddress from '../components/cm-seller-address.vue' //地址信息
-import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
-import invoiceTent from '@/components/cm-module/orderDetails/invoiceTent' //发票信息
-import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
-import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord' //支付记录
-import refundRecord from '@/components/cm-module/orderDetails/refundRecord' //退款记录
-import orderButton from './components/sellerDetaileButton' //底部按钮
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
-import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+import cmAddressTemp from './components/details/cm-address-temp' //地址信息
+import cmGoodsTemp from './components/details/cm-goods-temp' //商品列表
+import cmOrderTemp from './components/details/cm-order-temp' //订单信息
+import cmInviceTemp from './components/details/cm-invice-temp' //发票信息
+import cmPaymentTemp from './components/details/cm-payment-temp' //支付记录
+import cmRefundTemp from './components/details/cm-refund-temp' //退款记录
+import cmVoucherTemp from './components/details/cm-voucher-temp' //退款记录
+import cmDetailsButton from './components/cm-details-button' //底部按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import cmPromotePopup from './components/details/cm-promote-popup' //促销活动弹窗
 
 export default {
 	components: {
 		headerBack,
-		orderInformation,
-		orderAddress,
-		invoiceTent,
-		goodsList,
-		paymentRecord,
-		refundRecord,
-		orderButton,
-		shareAlert,
-		orderModel,
-		activiPopup
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmOrderTemp,
+		cmInviceTemp,
+		cmPaymentTemp,
+		cmRefundTemp,
+		cmVoucherTemp,
+		cmDetailsButton,
+		cmSharePopup,
+		cmPromotePopup
 	},
 	data() {
 		return {
@@ -219,11 +157,9 @@ export default {
 			let HtmlText,
 				typeTextObject = {
 					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
+					2: '交易完成',
+					4: '已关闭',
+					5: '交易全退',
 					11: '待付款待发货',
 					12: '待付款部分发货',
 					13: '待付款已发货',
@@ -232,8 +168,7 @@ export default {
 					23: '部分付款已发货',
 					31: '已付款待发货',
 					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
+					33: '已付款已发货'
 				}
 
 			Object.keys(typeTextObject).forEach(key => {
@@ -285,162 +220,7 @@ export default {
 					})
 				})
 		},
-		handButtonConfirm(data) {
-			//监听点击时间的按钮类型并执行...
-			this.handShowAlert(data)
-		},
-		handShowAlert(data) {
-			//判断点击的按钮类型并执行...
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele()
-					break
-				case 'cancel':
-					this.handCenceConfirm()
-					break
-				case 'confirm':
-					this.handOrderConfirm(data)
-					break
-				case 'balance':
-					this.getOrderPaymentValidation(data)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(data) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		hanldPaymentConfirm(data) {
-			//监听余额抵扣按钮
-			switch (data.type) {
-				case 3:
-					this.OrderService.OrderBalanceDeduction({ orderId: this.orderId })
-						.then(response => {
-							this.$util.msg('余额抵扣成功', 2000)
-							this.initOrderDetaileData()
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-					break
-			}
-		},
-		getOrderPaymentValidation(data) {
-			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
-				.then(response => {
-					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 => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		handOrderDetele() {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							if (this.shareType === 'share') {
-								this.$api.navigateTo('/pages/seller/index/index')
-							} else {
-								this.$api.navigateTo(
-									`/pages/seller/order/order-list?type=detele&listType=${this.listType}`
-								)
-							}
-						}, 500)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm() {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: this.orderId ,userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
+		
 		hanldePopupFn(data) {
 			//监听活动内容
 			this.popupShow = true

+ 317 - 291
pages/seller/order/order-details.vue

@@ -6,64 +6,69 @@
 			:navbar-data="nvabarData"
 			:headerBtnPosi="headerBtnPosi"
 			:isShare="isOrderShare"
-		></header-back>
+		/>
+		<tui-skeleton
+			v-if="!skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
 		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
-				<view class="view-type">{{ information.status | TextFormat }}</view>
+				<view class="view-type">{{ orderInfo.status | statusFilters }}</view>
 				<view class="status-visible">
-					{{ information.orderSeen == 2 ? '订单对机构不可见' : '订单对机构可见' }}
+					{{ orderInfo.orderSeen == 2 ? '订单对机构不可见' : '订单对机构可见' }}
 				</view>
-				<view class="Rebate " v-if="information.rebateFlag == 1">返佣</view>
-				<text class="bage-buss btn" v-if="information.orderSubmitType == 3 || information.orderSubmitType == 4"
+				<view class="Rebate " v-if="orderInfo.rebateFlag == 1">返佣</view>
+				<text class="bage-buss btn" v-if="orderInfo.orderSubmitType == 3 || orderInfo.orderSubmitType == 4"
 					>协销</text
 				>
 				<text
 					class="bage-auto btn"
 					v-if="
-						information.orderSubmitType == 0 ||
-							information.orderSubmitType == 1 ||
-							information.orderSubmitType == 2
+						orderInfo.orderSubmitType == 0 ||
+							orderInfo.orderSubmitType == 1 ||
+							orderInfo.orderSubmitType == 2
 					"
 					>自主</text
 				>
 			</view>
 			<!-- 地址选择 -->
-			<order-address
-				ref="orderAddress"
-				v-if="isRequest && !rechargeGoods"
-				:addressData="addressData"
-			></order-address> 
-            <!-- 特殊商品退货须知 -->
-            <view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
+			<cm-address-temp ref="orderAddress" v-if="skeletonShow && !rechargeGoods" :addressData="addressData" />
+			<!-- 特殊商品退货须知 -->
+			<view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
 			<!-- 商品 -->
-			<goods-list
+			<cm-goods-temp
 				ref="goods"
-				v-if="isRequest"
-				:shopOrderData="shopOrderData"
-				:information="information"
+				v-if="skeletonShow"
+				:list="orderInfo.orderProductList"
+				:orderInfo="orderInfo"
 				@popupClick="hanldePopupFn"
-			></goods-list>
+			/>
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<cm-order-temp ref="orderInfo" v-if="skeletonShow" :orderInfo="orderInfo" />
 			<!-- 发票信息 -->
-			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<cm-invice-temp ref="invoice" v-if="skeletonShow" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
-			<payment-record
+			<cm-payment-temp
 				ref="payment"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:discernReceiptList="discernReceiptList"
 				:receiptAmount="receiptAmount"
-			></payment-record>
+			/>
 			<!-- 退款记录 -->
-			<refund-record
+			<cm-refund-temp
 				ref="refund"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:returnedPurchaseList="returnedPurchaseList"
 				:returnedPurchaseFee="returnedPurchaseFee"
-			></refund-record>
+			/>
+			<!-- 支付凭证记录 -->
+			<cm-voucher-temp ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
 			<view
 				class="clause"
-				v-if="information.secondHandOrderFlag != 1"
+				v-if="orderInfo.secondHandOrderFlag != 1"
 				@click="openclauseConten(clauseData.id)"
 				:class="clauseData.name == '无条款' ? 'noclick' : ''"
 			>
@@ -72,32 +77,34 @@
 				}}</label>
 			</view>
 			<!-- 底部button -->
-			<order-button
+			<cm-details-button
 				ref="orderButton"
-				v-if="isRequest"
-				:status="btnStatus"
-				:order="information"
+				v-if="skeletonShow"
+				:status="orderInfo.status"
+				:order="orderInfo"
 				:rechargeGoods="rechargeGoods"
 				:ableUserMoney="ableUserMoney"
 				:shareCode="shareCode"
-				:serviceProviderId="serviceProviderId"
-				:secondHandOrderFlag="information.secondHandOrderFlag"
+				:secondHandOrderFlag="orderInfo.secondHandOrderFlag"
 				@buttonConfirm="handButtonConfirm"
-			>
-			</order-button>
+			/>
 		</view>
 		<!-- 付款弹窗 -->
-		<order-model
+		<cm-orderpay-popup
 			v-if="isPayModel"
 			:payModelData="payModelData"
 			:modelType="modelType"
 			@paymentConfirm="hanldPaymentConfirm"
 		/>
 		<!-- 分享弹窗 -->
-		<share-alert :orderId="orderId" :shareType="isShareType" v-if="isShareModal" @shareConfirm="onShareAppMessage">
-		</share-alert>
+		<cm-share-popup
+			:shopOrderId="shopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 促销活动弹窗 -->
-		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
+		<cm-promote-popup :Promotion="handlerPros" :popupShow="popupShow" />
 		<!-- 再来一单 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -109,40 +116,53 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
 	</view>
 </template>
 
 <script>
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import orderAddress from '@/components/cm-module/orderDetails/orderAddress' //地址信息
-import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
-import invoiceTent from '@/components/cm-module/orderDetails/invoiceTent' //发票信息
-import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
-import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord' //支付记录
-import refundRecord from '@/components/cm-module/orderDetails/refundRecord' //退款记录
-import orderButton from './components/sellerDetaileButton' //底部按钮
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
-import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+import cmAddressTemp from './components/details/cm-address-temp' //地址信息
+import cmGoodsTemp from './components/details/cm-goods-temp' //商品列表
+import cmOrderTemp from './components/details/cm-order-temp' //订单信息
+import cmInviceTemp from './components/details/cm-invice-temp' //发票信息
+import cmPaymentTemp from './components/details/cm-payment-temp' //支付记录
+import cmRefundTemp from './components/details/cm-refund-temp' //退款记录
+import cmVoucherTemp from './components/details/cm-voucher-temp' //退款记录
+import cmDetailsButton from './components/cm-details-button' //底部按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import cmOrderpayPopup from './components/cm-orderpay-popup' //付款弹窗
+import cmPromotePopup from './components/details/cm-promote-popup' //促销活动弹窗
 
 export default {
 	components: {
 		headerBack,
-		orderInformation,
-		orderAddress,
-		invoiceTent,
-		goodsList,
-		paymentRecord,
-		refundRecord,
-		orderButton,
-		shareAlert,
-		orderModel,
-		activiPopup
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmOrderTemp,
+		cmInviceTemp,
+		cmPaymentTemp,
+		cmRefundTemp,
+		cmVoucherTemp,
+		cmDetailsButton,
+		cmSharePopup,
+		cmOrderpayPopup,
+		cmPromotePopup
 	},
 	data() {
 		return {
@@ -153,15 +173,14 @@ export default {
 			},
 			state: 0,
 			userId: '',
-			orderId: '',
+			orderId: 0,
+			shopOrderId: 0,
 			clubUserId: 0,
 			serviceProviderId: '', //协销ID
 			shareCode: '', //分享码
 			shareType: '', //分享登录页过来记录的状态
 			cellPhone: '', //客服电话
-			payStatus: 0,
-			btnStatus: 0, //按钮组件状态
-			isRequest: false, //是否加载完成渲染子组件
+			skeletonShow: false, //是否加载完成渲染子组件
 			isOrderShare: false,
 			isShareModal: false,
 			isShareType: 2,
@@ -170,11 +189,11 @@ export default {
 			ableUserMoney: '', //机构余额
 			payModelData: {},
 			addressData: {}, //地址信息初始化
-			information: {}, //订单信息初始化
-			shopOrderData: {}, //商品信息初始化
+			orderInfo: {}, //订单信息初始化
 			orderInvoice: {}, //发票信息初始化
 			returnedPurchaseList: {}, //退款信息初始化
 			discernReceiptList: {}, //支付信息初始化
+			voucherList:[], // 线下支付凭证
 			receiptAmount: 0, //支付金额
 			returnedPurchaseFee: 0, //退款金额
 			navbarHeight: '',
@@ -189,15 +208,32 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0 ,// 再来一单商品id
-            returnGoodsStutas: false,
-            helpContent: '',
+			returnGoodsStutas: false,
+			helpContent: '',
+			handleModelEven: 0,
+			modal: false,
+			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确定',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
+					},
+					plain: false
+				}
+			],
 		}
 	},
 	onLoad(option) {
 		console.log(option)
 		this.shareType = option.type
-		this.orderId = option.orderId
+		this.shopOrderId = option.shopOrderId
 		this.clubUserId = option.userId
 		if (this.shareType === 'share') {
 			this.listType = 0
@@ -215,253 +251,229 @@ export default {
 			//处理金额
 			return Number(value).toFixed(2)
 		},
-		TextFormat(status) {
-			//处理金额
-			let HtmlText,
-				typeTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-
-			Object.keys(typeTextObject).forEach(key => {
-				if (key == status) {
-					HtmlText = typeTextObject[key]
-				}
-			})
-			return HtmlText
+		statusFilters(value) {
+			//处理订单状态显示
+			const map = {
+				0: '待确认',
+				2: '交易完成',
+				4: '已关闭',
+				5: '交易全退',
+				6: '交易全退',
+				11: '待付款待发货',
+				12: '待付款部分发货',
+				13: '待付款已发货',
+				21: '部分付款待发货',
+				22: '部分付款部分发货',
+				23: '部分付款已发货',
+				31: '已付款待发货',
+				32: '已付款部分发货',
+				33: '已付款已发货'
+			}
+			return map[value]
 		}
 	},
 	methods: {
-		openclauseConten(id) {
-			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
-		},
-		initOrderDetaileData() {
-			//初始化页面数据@参数:订单ID
-			this.OrderService.QueryOrderDetails({
-				orderId: this.orderId,
-				userId: this.clubUserId
-			})
-				.then(response => {
-					let data = response.data
-					this.isRequest = true
-					this.userId = data.order.userId
-					this.shareCode = data.shareCode
-					this.addressData = data.userInfo
-					this.information = data.order
-					this.rechargeGoods = data.order.rechargeGoods
-					this.btnStatus = data.order.status
-					this.payStatus = data.order.payStatus
-					this.shopOrderData = data.shopOrderList
-					this.orderInvoice = data.orderInvoice
-					this.returnedPurchaseList = data.returnedPurchaseList
-					this.discernReceiptList = data.discernReceiptList
-					this.receiptAmount = data.order.receiptAmount
-					this.returnedPurchaseFee = data.order.returnedPurchaseFee
-					this.ableUserMoney = data.ableUserMoney
-					this.clauseData = data.clause
-					if (this.clauseData && this.clauseData.name.length > 10) {
-						this.clauseData.name = this.clauseData.name.substr(0, 10) + '...'
-					}
-                    // 特殊商品退货须知
-                    this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
-                    this.helpContent = data.helpContent
-				})
-				.catch(error => {
-					this.$util.modal('提示', '订单查询失败,请稍后重试~', '确定', '', false, () => {
-						this.$api.switchTabTo('/pages/seller/index/index')
-					})
+		async initOrderDetaileData() {
+			try {
+				const res = await this.OrderService.QueryOrderDetails({
+					shopOrderId: this.shopOrderId,
+					userId: this.clubUserId
 				})
+				const data = res.data
+				this.orderInfo = data.shopOrder
+				this.userId = this.orderInfo.userId
+				this.rechargeGoods = this.orderInfo.rechargeGoods
+				// this.shareCode = data.shareCode
+				this.addressData = data.userInfo
+				this.receiptAmount = this.orderInfo.receiptAmount
+				this.returnedPurchaseFee = this.orderInfo.returnedPurchaseFee
+				this.orderInvoice = data.orderInvoice
+				this.returnedPurchaseList = data.returnedPurchaseList
+				this.discernReceiptList = data.discernReceiptList
+				this.voucherList = data.voucher
+				this.ableUserMoney = data.ableUserMoney
+				this.clauseData = data.clause
+				if (this.clauseData && this.clauseData.name.length > 10) {
+					this.clauseData.name = this.clauseData.name.substr(0, 10) + '...'
+				}
+				// 特殊商品退货须知
+				this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
+				this.helpContent = data.helpContent
+				this.skeletonShow = true
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
 		handButtonConfirm(data) {
-			//监听点击时间的按钮类型并执行...
-			this.handShowAlert(data)
-		},
-		handShowAlert(data) {
 			//判断点击的按钮类型并执行...
 			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele()
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
 					break
-				case 'cancel':
-					this.handCenceConfirm()
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
 					break
-				case 'confirm':
-					this.handOrderConfirm(data)
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
 					break
 				case 'balance':
 					this.getOrderPaymentValidation(data)
 					break
 				case 'again':
-					this.handOrderAgain(data.orderId)
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
 					break
 			}
 		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
+		handleClick(e) {
+			//确认操作
+			if (e.index == 1) {
+				switch (this.handleModelEven) {
+					case 1: //取消订单
+						this.cancelOrder(this.shopOrderId)
+						break
+					case 2: //删除订单
+						this.deleteOrder(this.shopOrderId)
+						break
+					case 3: //确认订单
+						this.affirmOrder(this.shopOrderId)
+						break
+				}
+			}
+			this.modal = false
+		},
+		//取消订单
+		async cancelOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.CancelOrder({ shopOrderId: shopOrderId, userIdentity: 1 })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//删除订单
+		async deleteOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.DeleteOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					if (this.shareType === 'share') {
+						this.$api.switchTabTo('/pages/tabBar/home/index')
 					} else {
-						this.$util.msg(error.msg, 2000)
+						this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
 					}
-				})
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		closeBtn() {
-			//
-			this.showAgan = false
+		//确认订单
+		async affirmOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.AffirmOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
+		// 再来一单
+		async handOrderAgain(shopOrderId) {
+			try{
+				const res = await this.SellerService.SellerCreateOrderAgain({
+					confirmFlag: 0,
+					shopOrderId: shopOrderId,
+					serviceProviderId: this.serviceProviderId
+				})
+				const data = res.data
+				this.$api.setStorage('orderUserInfo', {
+					clubId: data.clubId,
+					againBuyProductIds: data.productIds,
+					userId: data.userId
+				})
+				this.$api.navigateTo('/pages/seller/cart/cart')
+			}catch(error){
+				if (error.code == -3) {
+					this.showAgan = true
+					this.promptitle = error.msg
+					this.failList = error.data
+				} else if (error.code == -2) {
+					this.$util.modal('', error.msg, '确定', '', false, () => {})
+				} else {
+					this.$util.msg(error.msg, 2000)
 				}
-			})
+			}
 		},
-		handOrderConfirm(data) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		async handleAddAgian() {
+			// 再来一单弹窗
+			try{
+				await this.SellerService.SellerCreateOrderAgain({
+					confirmFlag: 1,
+					shopOrderId: this.shopOrderId,
+					serviceProviderId: this.serviceProviderId,
+				})
+				this.$api.navigateTo('/pages/seller/cart/cart')
+				this.showAgan = false
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		hanldPaymentConfirm(data) {
-			//监听余额抵扣按钮
-			switch (data.type) {
-				case 3:
-					this.OrderService.OrderBalanceDeduction({ orderId: this.orderId })
-						.then(response => {
-							this.$util.msg('余额抵扣成功', 2000)
-							this.initOrderDetaileData()
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-					break
+		//监听余额抵扣按钮
+		async hanldPaymentConfirm(data) {
+			try{
+				await this.OrderService.OrderBalanceDeduction({ shopOrderId: this.shopOrderId })
+				this.$util.msg('余额抵扣成功', 2000)
+				this.initOrderDetaileData()
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
 			}
 		},
-		getOrderPaymentValidation(data) {
-			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
-				.then(response => {
-					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
-						}
+		//监听根据付款状态做操作
+		async getOrderPaymentValidation(order) {
+			try{
+				const res = await this.OrderService.OrderPaymentValidation({ shopOrderId: order.shopOrderId })
+				const data = res.data
+				this.payModelData = data
+				if (data.balanceFlag == 0) {
+					// 0可以走余额抵扣,1不能走余额抵扣
+					if (data.code == -1) {
+						this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
 					} else {
-						this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
+						console.log('payModelData',this.payModelData)
+						this.isPayModel = true
+						this.modelType = 3
+						console.log('isPayModel',this.isPayModel)
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		handOrderDetele() {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							if (this.shareType === 'share') {
-								this.$api.navigateTo('/pages/seller/index/index')
-							} else {
-								this.$api.navigateTo(
-									`/pages/seller/order/order-list?type=detele&listType=${this.listType}`
-								)
-							}
-						}, 500)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+				} else {
+					this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		handCenceConfirm() {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: this.orderId ,userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		// 条款
+		openclauseConten(id) {
+			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
 		},
 		hanldePopupFn(data) {
 			//监听活动内容
 			this.popupShow = true
 			this.handlerPros = data
 		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-			}
-			return {
-				title: '您有新的订单,请点击查看~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.orderId}&userId=${
-					this.userId
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
 		getHeaderTopHeight() {
 			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
 			let headerPosi = this.headerBtnPosi
@@ -494,6 +506,20 @@ export default {
 			return systeminfo
 		}
 	},
+	onShareAppMessage(res) {
+		//分享转发
+		this.isShareModal = false
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
+		}
+		return {
+			title: '您有新的订单,请点击查看~',
+			path: `/pages/user/order/order-sharelogin?shopOrderId=${this.shopOrderId}&userId=${
+				this.userId
+			}&serviceProviderId=${this.serviceProviderId}`,
+			imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+		}
+	},
 	onShow() {
 		this.$api.getStorage().then(resolve => {
 			this.serviceProviderId = resolve.serviceProviderId ? resolve.serviceProviderId : 0
@@ -732,12 +758,12 @@ page {
 		}
 	}
 }
-.return-instructions{
-    font-size: 26rpx;
-    color: #FF5B00;
-    line-height: 42rpx;
-    padding: 32rpx 50rpx;
-    background-color: #FFFAF8;
-    text-align: justify;
+.return-instructions {
+	font-size: 26rpx;
+	color: #ff5b00;
+	line-height: 42rpx;
+	padding: 32rpx 50rpx;
+	background-color: #fffaf8;
+	text-align: justify;
 }
 </style>

+ 226 - 401
pages/seller/order/order-historylist.vue

@@ -68,14 +68,17 @@
 										<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
 									</view>
 									<view class="order-title-t">
+										<view class="order-title-tip tui-skeleton-fillet">
+											{{ order.status | statusFilters }}
+										</view>
 										<text
-											class="bage-buss tui-skeleton-fillet"
+											class="bage buss tui-skeleton-fillet"
 											v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
 										>
 											协销
 										</text>
 										<text
-											class="bage-auto tui-skeleton-fillet"
+											class="bage auto tui-skeleton-fillet"
 											v-if="
 												order.orderSubmitType == 0 ||
 													order.orderSubmitType == 1 ||
@@ -84,9 +87,6 @@
 										>
 											自主
 										</text>
-										<text class="bage-text tui-skeleton-fillet">
-											订单编号:{{ order.orderNo }}({{ order.orderId }})
-										</text>
 										<image
 											class="bage-icon"
 											src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
@@ -95,103 +95,93 @@
 										>
 										</image>
 									</view>
-									<view class="order-title-b">
-										<view class="order-title-btxt tui-skeleton-fillet">
-											下单时间:{{ order.orderTime }}
-										</view>
-										<view class="order-title-tip tui-skeleton-fillet">
-											{{ StateExpFormat(order.status) }}
-										</view>
+								</view>
+								<view class="goods-title">
+									<view v-if="order.shopPromotion" class="floor-item-act">
+										<view class="floor-tags"> {{ order.shopPromotion.name }} </view>
 									</view>
+									<view class="title-text tui-skeleton-fillet"> {{ order.shopName }} </view>
 								</view>
-								<block v-for="(shop, index) in order.shopOrderList" :key="index">
-									<view class="goods-title">
-										<view v-if="shop.shopPromotion" class="floor-item-act">
-											<view class="floor-tags"> {{ shop.shopPromotion.name }} </view>
+								<view
+									class="goods-item"
+									v-for="(pros, prosIndex) in order.orderProductList"
+									:key="prosIndex"
+								>
+									<view class="goods-pros-t">
+										<view class="pros-img tui-skeleton-fillet">
+											<image :src="pros.image" alt="" />
+											<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1"
+												>赠品</text
+											>
 										</view>
-										<view class="title-text tui-skeleton-fillet"> {{ shop.shopName }} </view>
-									</view>
-									<view
-										class="goods-item"
-										v-for="(pros, prosIndex) in shop.orderProductList"
-										:key="prosIndex"
-									>
-										<view class="goods-pros-t">
-											<view class="pros-img tui-skeleton-fillet">
-												<image :src="pros.image" alt="" />
-												<text class="tips" v-if="pros.productType == 2 || pros.productType == 1"
-													>赠品</text
-												>
+										<view class="pros-product clearfix">
+											<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+											<view
+												class="productspec tui-skeleton-fillet"
+												v-if="pros.productCategory != 2"
+											>
+												规格:{{ pros.productUnit ? pros.productUnit : '' }}
 											</view>
-											<view class="pros-product clearfix">
-												<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+											<view class="productprice">
 												<view
-													class="productspec tui-skeleton-fillet"
-													v-if="pros.productCategory != 2"
+													class="price tui-skeleton-fillet"
+													:class="
+														pros.svipPriceFlag == 1 ||
+														PromotionsFormat(pros.productPromotion)
+															? 'none'
+															: ''
+													"
 												>
-													规格:{{ pros.productUnit ? pros.productUnit : '' }}
+													<text>¥{{ pros.price | NumFormat }}</text>
 												</view>
-												<view class="productprice">
+												<view class="count tui-skeleton-fillet">
+													<text class="small">x</text>{{ pros.num }}
+												</view>
+											</view>
+											<view class="floor-item-act">
+												<template v-if="pros.productPromotion">
 													<view
-														class="price tui-skeleton-fillet"
-														:class="
-															pros.svipPriceFlag == 1 ||
-															PromotionsFormat(pros.productPromotion)
-																? 'none'
-																: ''
-														"
+														v-if="PromotionsFormat(pros.productPromotion)"
+														class="floor-tags"
+														@click.stop="clickPopupShow(pros.productPromotion)"
 													>
-														<text>¥{{ pros.price | NumFormat }}</text>
+														{{ pros.productPromotion.name }}
+														<text
+															v-if="
+																pros.productPromotion != null &&
+																	pros.productPromotion.type != 3
+															"
+														>
+															:¥{{
+																pros.productPromotion == null
+																	? '0.00'
+																	: pros.productPromotion.touchPrice | NumFormat
+															}}
+														</text>
 													</view>
-													<view class="count tui-skeleton-fillet">
-														<text class="small">x</text>{{ pros.num }}
+													<view
+														v-else-if="pros.productPromotion.type != 3"
+														class="floor-tags"
+														@click.stop="clickPopupShow(pros.productPromotion)"
+														>{{ pros.productPromotion.name }}</view
+													>
+												</template>
+												<template v-if="pros.svipPriceFlag == 1">
+													<view class="svip-tags">
+														<view class="tags">SVIP</view>
+														<view class="price">{{ pros.svipPriceTag }}</view>
 													</view>
-												</view>
-												<view class="floor-item-act">
-													<template v-if="pros.productPromotion">
-														<view
-															v-if="PromotionsFormat(pros.productPromotion)"
-															class="floor-tags"
-															@click.stop="clickPopupShow(pros.productPromotion)"
-														>
-															{{ pros.productPromotion.name }}
-															<text
-																v-if="
-																	pros.productPromotion != null &&
-																		pros.productPromotion.type != 3
-																"
-															>
-																:¥{{
-																	pros.productPromotion == null
-																		? '0.00'
-																		: pros.productPromotion.touchPrice | NumFormat
-																}}
-															</text>
-														</view>
-														<view
-															v-else-if="pros.productPromotion.type != 3"
-															class="floor-tags"
-															@click.stop="clickPopupShow(pros.productPromotion)"
-															>{{ pros.productPromotion.name }}</view
-														>
-													</template>
-													<template v-if="pros.svipPriceFlag == 1">
-														<view class="svip-tags">
-															<view class="tags">SVIP</view>
-															<view class="price">{{ pros.svipPriceTag }}</view>
-														</view>
-													</template>
-												</view>
+												</template>
 											</view>
 										</view>
 									</view>
-								</block>
+								</view>
 								<view class="order-footer">
-									<view class="order-footer-top" v-if="order.discountFee != 0">
+									<!-- <view class="order-footer-top" v-if="order.discountFee != 0">
 										经理折扣:¥{{ order.discountFee | NumFormat }}
-									</view>
+									</view> -->
 									<view class="order-footer-bot">
-										<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
+										<view class="count tui-skeleton-fillet">共{{ order.itemCount }}件商品</view>
 										<view
 											class="money tui-skeleton-fillet"
 											v-if="order.status == 31 || order.status == 32 || order.status == 33"
@@ -202,32 +192,31 @@
 										</view>
 										<view class="money tui-skeleton-fillet" v-else>
 											待付总额:<label style="color:#f94b4b ;"
-												>¥{{ order.pendingPayments | NumFormat }}</label
+												>¥{{ order.obligation | NumFormat }}</label
 											>
 										</view>
 									</view>
 								</view>
 								<!-- 底部button -->
-								<order-button
+								<cm-list-button
+									v-if="clubSpId === listQuery.serviceProviderId"
 									ref="orderButton"
-									v-if="clubSpId === serviceProviderId"
+									:order="order"
 									:status="order.status"
-									:order = "order"
-									:rechargeGoods="order.rechargeGoods"
-									:orderId="order.orderId"
 									:userId="order.userId"
+									:shopOrderId="order.shopOrderId"
+									:rechargeGoods="order.rechargeGoods"
 									:secondHandOrderFlag="order.secondHandOrderFlag"
 									@buttonConfirm="handButtonConfirm"
-								>
-								</order-button>
+								/>
 							</view>
 							<!--加载loadding-->
-							<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+							<tui-loadmore :visible="loadding" :index="3" type="black"/>
 							<tui-nomore
 								:visible="!pullUpOn"
 								:backgroundColor="'#ffffff'"
 								:text="nomoreText"
-							></tui-nomore>
+							/>
 							<!--加载loadding-->
 						</view>
 					</view>
@@ -235,9 +224,12 @@
 			</swiper-item>
 		</swiper>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :shareType="isShareType" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
-		<!-- 透明模态层 -->
-		<modal-layer v-if="isModalLayer"></modal-layer>
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 再来一单弹窗 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -249,35 +241,44 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
+		<!-- 透明模态层 -->
+		<modal-layer v-if="isModalLayer"></modal-layer>
 	</view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'		
 import headerBack from '@/components/cm-module/headerNavbar/header-back' // 自定义顶部导航
-import btSearch from '@/components/uni-search/bt-search.vue' // 搜索
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' // 操作按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' // 分享弹窗
+import cmListButton from './components/cm-list-button' //操作按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import orderMixins from './mixins/orderMixins.js'
 
 export default {
+	mixins: [orderMixins],
 	components: {
 		headerBack,
 		empty,
-		btSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		modalLayer,
-		shareAlert
+		cmListButton,
+		cmSharePopup,
 	},
 	data() {
 		return {
@@ -295,25 +296,24 @@ export default {
 				{ type: 2, text: '协销订单' }
 			],
 			winHeight: '', //窗口高度
-			clubId: 0, //机构ID
-			userId: 0,
 			currentTab: 0, //预设当前项的值
 			screenTab: 0, //筛选预设当前项的值
 			scrollLeft: 0, //tab标题的滚动条位置
 			clubSpId:0, // 机构协销Id
-			serviceProviderId: 0, //协销用户ID
+			listQuery:{
+				listType: 0,
+				clubId: 0,
+				orderSubmitType: 0,
+				serviceProviderId: 0,
+				pageNum: 1,
+				pageSize: 10
+			},
 			orderData: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
-			pageNum: 1, //页数
-			pageSize: 10, //条数
 			scrollTop: 0,
-			deteleType: '',
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
 			isShareType:2,
-			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
 			pullUpOn: true,
@@ -324,13 +324,12 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0,
-			authType:0,
+			authType:0
 		}
 	},
 	onLoad(option) {
 		let self = this
-		this.currentTab = option.listType
+		this.currentTab = this.listQuery.listType = option.listType
 		this.authType = option.authType
 		this.initDataInfo()
 		uni.getSystemInfo({
@@ -341,20 +340,13 @@ export default {
 			}
 		})
 	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
 	methods: {
 		async initDataInfo() {
 			const clubInfo = await this.$api.getComStorage('orderUserInfo')
 			const userInfo = await this.$api.getStorage()
-			this.clubId = clubInfo.clubId ? clubInfo.clubId : 0
-			this.userId = clubInfo.userId ? clubInfo.userId : 0
+			this.listQuery.clubId = clubInfo.clubId
 			this.clubSpId = clubInfo.serviceProviderId
-			this.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId
 			this.getOrderDatainit(this.currentTab)
 		},
 		onChange(e) {
@@ -367,6 +359,7 @@ export default {
 			}
 			this.isClickChange = false
 			this.currentTab = index
+			this.listQuery.listType = index
 			this.checkCor()
 			this.pageNum = 1
 			this.pullUpOn = true //切换时隐藏
@@ -382,7 +375,7 @@ export default {
 			} else {
 				this.isClickChange = true
 				this.currentTab = tabIndex
-				this.pageNum = 1
+				this.listQuery.listType = tabIndex
 				this.pullUpOn = true //切换时隐藏
 				this.loadding = false //切换时隐藏
 				this.getOrderDatainit(this.currentTab)
@@ -391,7 +384,7 @@ export default {
 		onClickScreenTab(index) {
 			console.log(index)
 			this.screenTab = index
-			this.pageNum = 1
+			this.listQuery.orderSubmitType = tabIndex
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -406,88 +399,93 @@ export default {
 				this.scrollLeft = 0
 			}
 		},
-		getOrderDatainit(index, source) {
-			setTimeout(() => {
-				this.skeletonShow = false
-			}, 1500)
-			let orderItem = this.orderTabBar[index]
-			let listType = orderItem.listType
-			if (source === 'tabChange' && orderItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return
-			}
-			setTimeout(() => {
-				this.SellerService.GetSellerClubOrderList({
-					listType: index,
-					clubId: this.clubId,
-					orderSubmitType: this.screenTab,
-					serviceProviderId: this.serviceProviderId,
-					pageNum: 1,
-					pageSize: this.pageSize
-				})
-					.then(response => {
-						let data = response.data
-						let orderList = data.list.filter(item => {
-							//添加不同状态下订单的表现形式
-							item = Object.assign(item, this.StateExpFormat(item.listType))
-							return item
-						})
-						orderItem.orderList = []
-						orderList.forEach(item => {
-							orderItem.orderList.push(item)
-						})
-						//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
-						this.$set(orderItem, 'loaded', true)
-						this.hasNextPage = data.hasNextPage
-						if (this.hasNextPage) {
-							this.pullUpOn = false
-							this.nomoreText = '上拉显示更多'
-						} else {
-							if (orderItem.orderList.length < 2) {
-								this.pullUpOn = true
-							} else {
-								this.pullUpOn = false
-								this.nomoreText = '已至底部'
-							}
-						}
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			}, 600)
-		},
-		getOnReachBottomData(index) {
-			//上拉加载
-			this.pageNum += 1
-			this.SellerService.GetSellerClubOrderList({
-				listType: index,
-				clubId: this.clubId,
-				orderSubmitType: this.screenTab,
-				serviceProviderId: this.serviceProviderId,
-				pageNum: this.pageNum,
-				pageSize: this.pageSize
-			})
-				.then(response => {
-					let orderItem = this.orderTabBar[index]
-					let data = response.data
+		async getOrderDatainit(index, source) {
+			try {
+				this.listQuery.pageNum = 1
+				let orderItem = this.orderTabBar[index]
+				if (source === 'tabChange' && orderItem.loaded === true) {
+					//tab切换只有第一次需要加载数据
+					return
+				}
+				const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					orderItem.orderList =[]
+					orderItem.orderList = data.list
+					//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
 					this.hasNextPage = data.hasNextPage
-					orderItem.orderList = orderItem.orderList.concat(data.list)
-					this.pullFlag = false // 防上拉暴滑
-					setTimeout(() => {
-						this.pullFlag = true
-					}, 500)
 					if (this.hasNextPage) {
 						this.pullUpOn = false
 						this.nomoreText = '上拉显示更多'
 					} else {
-						this.loadding = false
-						this.pullUpOn = false
-						this.nomoreText = '已至底部'
+						if (orderItem.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+				} else {
+					this.$set(orderItem, 'loaded', true)
+					orderItem.orderList = []
+				}
+				this.skeletonShow = false
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		async getOnReachBottomData(index) {
+			//上拉加载
+			try {
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
+				const data = res.data
+				const orderItem = this.orderTabBar[index]
+				orderItem.orderList = orderItem.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				this.pullFlag = false // 防上拉暴滑
+				setTimeout(() => {
+					this.pullFlag = true
+				}, 500)
+				if (this.hasNextPage) {
+					this.pullUpOn = false
+					this.nomoreText = '上拉显示更多'
+				} else {
+					this.loadding = false
+					this.pullUpOn = false
+					this.nomoreText = '已至底部'
+				}
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		handButtonConfirm(data) {
+			//获取点击
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
 		},
 		scrolltolower() {
 			if (this.hasNextPage) {
@@ -501,154 +499,21 @@ export default {
 			this.isModalLayer = true
 			if(this.authType === '1' || this.authType === '2'){
 				this.$api.navigateTo(
-					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
 						order.userId
 					}`
 				)
 			}else{
 				this.$api.navigateTo(
-					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+					`/pages/seller/order/order-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
 						order.userId
 					}`
 				)
 			}
-			
-		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(orderId) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handOrderDetele(orderId) {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm(orderId) {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: orderId , userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
 		},
 		handlSearchPath() {
 			this.$api.navigateTo('/pages/seller/order/search-order')
 		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-				// console.log(res.target)
-			}
-			return {
-				title: '您有新的分享订单,快来查看吧~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.btnoRderID}&userId=${
-					this.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -659,39 +524,6 @@ export default {
 				}
 			}
 			return false
-		},
-		//订单状态文字和颜色
-		StateExpFormat(state) {
-			let stateText = '',
-				stateTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(key => {
-				if (key == state) {
-					stateText = stateTextObject[key]
-				}
-			})
-			return stateText
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
 		}
 	},
 	onPageScroll(e) {
@@ -850,40 +682,33 @@ page {
 			height: 50rpx;
 			display: block;
 			position: absolute;
-			right: 0;
-			top: 9rpx;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.bage-buss {
+		.bage{
 			display: inline-block;
 			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
-			margin-top: 8rpx;
-		}
-		.bage-auto {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			height: 32rpx;
+			margin: 19rpx 10rpx 0 10rpx;
 			border-radius: 4rpx;
-			line-height: 30rpx;
+			line-height: 32rpx;
 			font-size: $font-size-22;
 			text-align: center;
 			color: #ffffff;
-			margin-top: 8rpx;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
 		}
-		.bage-text {
-			display: inline-block;
+		.order-title-tip {
+			float: left;
 			font-size: $font-size-28;
 			line-height: 68rpx;
-			text-align: left;
-			color: $color-system;
-			margin-left: 15rpx;
+			text-align: right;
+			color: #ff2a2a;
 		}
 	}
 	.order-title-b {

+ 331 - 526
pages/seller/order/order-list.vue

@@ -9,145 +9,144 @@
 			:isUsertype="1"
 			:screenTab="screenTab"
 			@goSearchPath="handlSearchPath"
-		>
-		</header-back>
-		<view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
-			<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
-				<view
-					v-for="(item, index) in orderTabBar"
-					:key="index"
-					class="tab-bar-item"
-					:class="[currentTab == index ? 'active' : '']"
-					:data-current="index"
-					@tap.stop="onClickTab"
-				>
-					<text class="tab-bar-title">{{ item.text }}</text>
-				</view>
-			</scroll-view>
-			<scroll-view scroll-x scroll-with-animation class="tab-screen" :scroll-left="scrollLeft">
-				<view
-					v-for="(item, index) in screenTabBar"
-					:key="index"
-					class="tab-screen-item"
-					:class="[screenTab == index ? 'active' : '']"
-					:data-current="index"
-					@tap.stop="onClickScreenTab(index)"
-					>{{ item.text }}</view
-				>
-				<view
-					class="tab-screen-item"
-					v-if="isManage"
-					:data-current="3"
-					:class="[screenTab == 3 ? 'active' : '']"
-					@tap.stop="onClickScreenTab(3)"
-					>组员订单</view
-				>
-			</scroll-view>
-		</view>
-		<swiper
-			class="tab-content"
-			:current="currentTab"
-			duration="80"
-			@animationfinish="onChange"
-			:style="{ height: winHeight + 'px' }"
-		>
-			<swiper-item v-for="(tabItem, index) in orderTabBar" :key="index">
-				<tui-skeleton
-					v-if="skeletonShow"
-					backgroundColor="#fafafa"
-					borderRadius="10rpx"
-					:isLoading="false"
-					:loadingType="5"
-				></tui-skeleton>
-				<scroll-view
-					scroll-y
-					class="scoll-y tui-skeleton"
-					@scrolltolower="scrolltolower"
-					:style="{ height: winHeight + 'px' }"
-				>
-					<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
-						<!-- 空白页 -->
-						<empty
-							v-if="tabItem.loaded === true && tabItem.orderList.length === 0"
-							:typeIndex="currentTab"
-							:navbarHeight="navbarHeight"
-						></empty>
-						<!-- 列表 -->
-						<view v-else class="tui-order-content">
-							<view
-								class="tui-order-item"
-								v-for="(order, orderIndex) in tabItem.orderList"
-								:key="orderIndex"
-								@click.stop="detail(order)"
-							>
-								<view class="order-title">
-									<view class="order-title-name">
-										<text>{{ order.clubName ? order.clubName : '' }}</text>
-										<text class="tags" v-if="order.svipUserFlag == 0 && order.userIdentity === 2"
-											>VIP</text
-										>
-										<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
-										<view class="name" v-if="screenTab === 3">【 {{ order.serviceName ? order.serviceName : '' }} 】</view>
-									</view>
-									<view class="order-title-t">
-										<view class="Rebate " v-if="order.rebateFlag == 1">返佣</view>
-										<text
-											class="bage-buss tui-skeleton-fillet"
-											v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
-										>
-											协销
-										</text>
-										<text
-											class="bage-auto tui-skeleton-fillet"
-											v-if="
-												order.orderSubmitType == 0 ||
-													order.orderSubmitType == 1 ||
-													order.orderSubmitType == 2
-											"
-										>
-											自主
-										</text>
-										<text class="bage-text tui-skeleton-fillet">
-											订单编号:{{ order.orderNo }}({{ order.orderId }})
-										</text>
-										<image
-											class="bage-icon"
-											src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
-											mode="widthFix"
-											v-if="order.secondHandOrderFlag == 1"
-										>
-										</image>
-									</view>
-									<view class="order-title-b">
-										<view class="order-title-btxt tui-skeleton-fillet">
-											下单时间:{{ order.orderTime }}
+		/>
+		<tui-skeleton
+			v-if="skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
+				<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
+					<view
+						v-for="(item, index) in orderTabBar"
+						:key="index"
+						class="tab-bar-item"
+						:class="[currentTab == index ? 'active' : '']"
+						:data-current="index"
+						@tap.stop="onClickTab"
+					>
+						<text class="tab-bar-title">{{ item.text }}</text>
+					</view>
+				</scroll-view>
+				<scroll-view scroll-x scroll-with-animation class="tab-screen" :scroll-left="scrollLeft">
+					<view
+						v-for="(item, index) in screenTabBar"
+						:key="index"
+						class="tab-screen-item"
+						:class="[screenTab == index ? 'active' : '']"
+						:data-current="index"
+						@tap.stop="onClickScreenTab(index)"
+						>{{ item.text }}</view
+					>
+					<view
+						class="tab-screen-item"
+						v-if="isManage"
+						:data-current="3"
+						:class="[screenTab == 3 ? 'active' : '']"
+						@tap.stop="onClickScreenTab(3)"
+						>组员订单</view
+					>
+				</scroll-view>
+			</view>
+			<swiper
+				class="tab-content"
+				:current="currentTab"
+				duration="80"
+				@animationfinish="onChange"
+				:style="{ height: winHeight + 'px' }"
+			>
+				<swiper-item v-for="(tabItem, index) in orderTabBar" :key="index"  @touchmove.stop="">
+					<scroll-view
+						scroll-y
+						class="scoll-y tui-skeleton"
+						@scrolltolower="scrolltolower"
+						:style="{ height: winHeight + 'px' }"
+					>
+						<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
+							<!-- 空白页 -->
+							<empty
+								v-if="tabItem.loaded === true && tabItem.orderList.length === 0"
+								:typeIndex="currentTab"
+								:navbarHeight="navbarHeight"
+							/>
+							<!-- 列表 -->
+							<view v-else class="tui-order-content">
+								<view
+									class="tui-order-item"
+									v-for="(order, orderIndex) in tabItem.orderList"
+									:key="orderIndex"
+									@click.stop="detail(order)"
+								>
+									<view class="order-title">
+										<view class="order-title-name">
+											<text>{{ order.clubName ? order.clubName : '' }}</text>
+											<text
+												class="tags"
+												v-if="order.svipUserFlag == 0 && order.userIdentity === 2"
+												>VIP</text
+											>
+											<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
+											<view class="name" v-if="screenTab === 3"
+												>【 {{ order.serviceName ? order.serviceName : '' }} 】</view
+											>
 										</view>
-										<view class="order-title-tip tui-skeleton-fillet">
-											{{ StateExpFormat(order.status) }}
+										<view class="order-title-t">
+											<view class="order-title-tip tui-skeleton-fillet">
+												{{ order.status | statusFilters }}
+											</view>
+											<view class="bage ebate" v-if="order.rebateFlag == 1">返佣</view>
+											<text
+												class="bage buss tui-skeleton-fillet"
+												v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
+											>
+												协销
+											</text>
+											<text
+												class="bage auto tui-skeleton-fillet"
+												v-if="
+													order.orderSubmitType == 0 ||
+														order.orderSubmitType == 1 ||
+														order.orderSubmitType == 2
+												"
+											>
+												自主
+											</text>
+											<image
+												class="bage-icon"
+												src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
+												mode="widthFix"
+												v-if="order.secondHandOrderFlag == 1"
+											>
+											</image>
 										</view>
 									</view>
-								</view>
-								<block v-for="(shop, index) in order.shopOrderList" :key="index">
 									<view class="goods-title">
-										<view v-if="shop.shopPromotion" class="floor-item-act">
-											<view class="floor-tags">{{ shop.shopPromotion.name }}</view>
+										<view v-if="order.shopPromotion" class="floor-item-act">
+											<view class="floor-tags">{{ order.shopPromotion.name }}</view>
 										</view>
-										<view class="title-text tui-skeleton-fillet">{{ shop.shopName }}</view>
+										<view class="title-text tui-skeleton-fillet">{{ order.shopName }}</view>
 									</view>
 									<view
 										class="goods-item"
-										v-for="(pros, prosIndex) in shop.orderProductList"
+										v-for="(pros, prosIndex) in order.orderProductList"
 										:key="prosIndex"
 									>
 										<view class="goods-pros-t">
 											<view class="pros-img tui-skeleton-fillet">
 												<image :src="pros.image" alt="" />
-												<text class="tips" v-if="pros.productType == 2 || pros.productType == 1"
+												<text
+													class="tips"
+													v-if="pros.giftType == 2 || pros.giftType == 1"
 													>赠品</text
 												>
 											</view>
 											<view class="pros-product clearfix">
-												<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+												<view class="producttitle tui-skeleton-fillet">{{
+													pros.name
+												}}</view>
 												<view
 													class="productspec tui-skeleton-fillet"
 													v-if="pros.productCategory != 2"
@@ -187,7 +186,8 @@
 																:¥{{
 																	pros.productPromotion == null
 																		? '0.00'
-																		: pros.productPromotion.touchPrice | NumFormat
+																		: pros.productPromotion.touchPrice
+																		  | NumFormat
 																}}
 															</text>
 														</view>
@@ -208,63 +208,63 @@
 											</view>
 										</view>
 									</view>
-								</block>
-								<view class="order-footer">
-									<view class="order-footer-top" v-if="order.discountFee != 0"
-										>经理折扣:¥{{ order.discountFee | NumFormat }}</view
-									>
-									<view class="order-footer-bot">
-										<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
-										<view
-											class="money tui-skeleton-fillet"
-											v-if="order.status == 31 || order.status == 32 || order.status == 33"
-										>
-											已支付:<label style="color:#f94b4b ;"
-												>¥{{ order.receiptAmount | NumFormat }}</label
+									<view class="order-footer">
+										<!-- <view class="order-footer-top" v-if="order.discountFee != 0"
+											>经理折扣:¥{{ order.discountFee | NumFormat }}</view
+										> -->
+										<view class="order-footer-bot">
+											<view class="count tui-skeleton-fillet"
+												>共{{ order.itemCount }}件商品</view
 											>
-										</view>
-										<view class="money tui-skeleton-fillet" v-else
-											>待付总额:<label style="color:#f94b4b ;">
-												¥{{ order.pendingPayments | NumFormat }}</label
+											<view
+												class="money tui-skeleton-fillet"
+												v-if="order.status == 31 || order.status == 32 || order.status == 33"
 											>
+												已支付:<label style="color:#f94b4b ;"
+													>¥{{ order.receiptAmount | NumFormat }}</label
+												>
+											</view>
+											<view class="money tui-skeleton-fillet" v-else
+												>待付总额:<label style="color:#f94b4b ;">
+													¥{{ order.obligation | NumFormat }}</label
+												>
+											</view>
 										</view>
 									</view>
+									<!-- 底部button -->
+									<cm-list-button
+										ref="orderButton"
+										v-if="screenTab != 3"
+										:status="order.status"
+										:order="order"
+										:shopOrderId="order.shopOrderId"
+										:rechargeGoods="order.rechargeGoods"
+										:userId="order.userId"
+										:secondHandOrderFlag="order.secondHandOrderFlag"
+										@buttonConfirm="handButtonConfirm"
+									/>
 								</view>
-								<!-- 底部button -->
-								<order-button
-									ref="orderButton"
-									v-if="screenTab != 3"
-									:status="order.status"
-									:order="order"
-									:orderId="order.orderId"
-									:rechargeGoods="order.rechargeGoods"
-									:userId="order.userId"
-									:secondHandOrderFlag="order.secondHandOrderFlag"
-									@buttonConfirm="handButtonConfirm"
-								>
-								</order-button>
+								<!--加载loadding-->
+								<tui-loadmore :visible="loadding" :index="3" type="black"/>
+								<tui-nomore
+									:visible="!pullUpOn"
+									:backgroundColor="'#ffffff'"
+									:text="nomoreText"
+								/>
+								<!--加载loadding-->
 							</view>
-							<!--加载loadding-->
-							<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-							<tui-nomore
-								:visible="!pullUpOn"
-								:backgroundColor="'#ffffff'"
-								:text="nomoreText"
-							></tui-nomore>
-							<!--加载loadding-->
 						</view>
-					</view>
-				</scroll-view>
-			</swiper-item>
-		</swiper>
+					</scroll-view>
+				</swiper-item>
+			</swiper>
+		</template>
 		<!-- 分享弹窗 -->
-		<share-alert
-			v-if="isShareModal"
-			:orderId="btnoRderID"
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
 			:shareType="isShareType"
+			v-if="isShareModal"
 			@shareConfirm="onShareAppMessage"
-		>
-		</share-alert>
+		/>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModalLayer"></modal-layer>
 		<view class="aganBj" v-show="showAgan">
@@ -277,8 +277,8 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
@@ -288,8 +288,18 @@
 			v-if="rightDrawer"
 			:rightDrawer="rightDrawer"
 			@handSearchConfirm="handSearchConfirmData"
-		>
-		</cm-orderDrawer>
+		/>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
 	</view>
 </template>
 
@@ -297,24 +307,22 @@
 import { mapState, mapMutations } from 'vuex'
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义顶部导航
 import btSearch from '@/components/uni-search/bt-search.vue' //搜索
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' //操作按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
+import cmListButton from './components/cm-list-button' //操作按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
 import cmOrderDrawer from '../components/cm-order-drawer' //筛选抽屉
+import orderMixins from './mixins/orderMixins.js'
 
 export default {
+	mixins: [orderMixins],
 	components: {
 		headerBack,
 		empty,
 		btSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		modalLayer,
-		shareAlert,
+		cmListButton,
+		cmSharePopup,
 		cmOrderDrawer
 	},
 	data() {
@@ -345,20 +353,20 @@ export default {
 			currentTab: 0, //预设当前项的值
 			screenTab: 0, //筛选预设当前项的值
 			scrollLeft: 0, //tab标题的滚动条位置
-			serviceProviderId: 0, //协销用户ID
 			orderData: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
-			pageNum: 1, //页数
-			pageSize: 10, //条数
-			groupServiceId: 0,
+			listQuery: {
+				pageNum: 1, //页数
+				pageSize: 10, //条数
+				groupServiceId: 0,
+				serviceProviderId: 0, //协销用户ID
+				listType: 0,
+				orderSubmitType: 0
+			},
 			scrollTop: 0,
-			deteleType: '',
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
 			isShareType: 2,
-			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
 			pullUpOn: true,
@@ -369,32 +377,19 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0, // 再来一单商品id
 			userId: 0,
 			manager: 0,
-			rightDrawer: false //控制筛选抽屉
+			rightDrawer: false ,//控制筛选抽屉
+			
 		}
 	},
 	onLoad(option) {
-		let self = this
 		if (option.type === 'detele') {
-			self.isDelete = true
-		}
-		self.currentTab = option.listType
-		self.getHeaderTopHeight() //设置自定义导航高度
-		//  高度自适应
-		uni.getSystemInfo({
-			success: function(res) {
-				let calc = res.windowHeight
-				self.winHeight = calc - self.CustomBar - 82
-			}
-		})
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
+			this.isDelete = true
 		}
+		this.currentTab = option.listType
+		this.getHeaderTopHeight() //设置自定义导航高度
+		this.initGetStotage()
 	},
 	computed: {
 		...mapState(['isManage'])
@@ -404,6 +399,7 @@ export default {
 			const userInfo = await this.$api.getStorage()
 			this.userId = userInfo.userId ? userInfo.userId : 0
 			this.manager = userInfo.manager ? userInfo.manager : 0
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId
 			this.getOrderDatainit(this.currentTab)
 		},
 		// 滚动切换标签样式
@@ -416,8 +412,8 @@ export default {
 			}
 			this.isClickChange = false
 			this.currentTab = index
+			this.listQuery.listType = index
 			this.checkCor()
-			this.pageNum = 1
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -431,7 +427,7 @@ export default {
 			} else {
 				this.isClickChange = true
 				this.currentTab = tabIndex
-				this.pageNum = 1
+				this.listQuery.listType = tabIndex
 				this.pullUpOn = true //切换时隐藏
 				this.loadding = false //切换时隐藏
 				this.getOrderDatainit(this.currentTab)
@@ -439,7 +435,7 @@ export default {
 		},
 		onClickScreenTab(index) {
 			this.screenTab = index
-			this.pageNum = 1
+			this.listQuery.orderSubmitType = index
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -454,94 +450,101 @@ export default {
 				this.scrollLeft = 0
 			}
 		},
-		getOrderDatainit(index, source) {
-			setTimeout(() => {
-				this.skeletonShow = false
-			}, 1500)
-			let orderItem = this.orderTabBar[index]
-			let listType = orderItem.listType
-			if (source === 'tabChange' && orderItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return
-			}
-			setTimeout(() => {
-				this.$api.getStorage().then(resolve => {
-					this.serviceProviderId = resolve.serviceProviderId
-					this.SellerService.GetSellerOrderList({
-						listType: index,
-						orderSubmitType: this.screenTab,
-						serviceProviderId: this.serviceProviderId,
-						pageNum: 1,
-						pageSize: this.pageSize,
-						groupServiceId: this.groupServiceId
+		async getOrderDatainit(index, source) {
+			try {
+				this.listQuery.pageNum = 1
+				let orderItem = this.orderTabBar[index]
+				if (source === 'tabChange' && orderItem.loaded === true) {
+					//tab切换只有第一次需要加载数据
+					return
+				}
+				//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
+				const res = await this.SellerService.GetSellerOrderList(this.listQuery) 
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					orderItem.orderList = []
+					data.list.forEach(item => { 
+						orderItem.orderList.push(item)
 					})
-						.then(response => {
-							let data = response.data
-							if (data.list && data.list.length > 0) {
-								let orderList = data.list.filter(item => {
-									//添加不同状态下订单的表现形式
-									item = Object.assign(item, this.StateExpFormat(item.listType))
-									return item
-								})
-								orderItem.orderList = []
-								orderList.forEach(item => { 
-									orderItem.orderList.push(item)
-								})
-								//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
-								this.$set(orderItem, 'loaded', true)
-								this.hasNextPage = data.hasNextPage
-								if (this.hasNextPage) {
-									this.pullUpOn = false
-									this.nomoreText = '上拉显示更多'
-								} else {
-									if (orderItem.orderList.length < 2) {
-										this.pullUpOn = true
-									} else {
-										this.pullUpOn = false
-										this.nomoreText = '已至底部'
-									}
-								}
-							}else{
-								orderItem.orderList = []
-							}
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-				})
-			}, 600)
-		},
-		getOnReachBottomData(index) {
-			//上拉加载
-			this.SellerService.GetSellerOrderList({
-				listType: index,
-				orderSubmitType: this.screenTab,
-				serviceProviderId: this.serviceProviderId,
-				pageNum: (this.pageNum += 1),
-				pageSize: this.pageSize,
-				groupServiceId: this.groupServiceId
-			})
-				.then(response => {
-					let orderItem = this.orderTabBar[index]
-					let data = response.data
 					this.hasNextPage = data.hasNextPage
-					orderItem.orderList = orderItem.orderList.concat(data.list)
-					this.pullFlag = false // 防上拉暴滑
-					setTimeout(() => {
-						this.pullFlag = true
-					}, 500)
 					if (this.hasNextPage) {
 						this.pullUpOn = false
 						this.nomoreText = '上拉显示更多'
 					} else {
-						this.loadding = false
-						this.pullUpOn = false
-						this.nomoreText = '已至底部'
+						if (orderItem.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+				} else {
+					this.$set(orderItem, 'loaded', true)
+					orderItem.orderList = []
+				}
+				this.skeletonShow = false
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//上拉加载
+		async getOnReachBottomData(index) {
+			try {
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.GetSellerOrderList(this.listQuery)
+				const data = res.data
+				const orderItem = this.orderTabBar[index]
+				orderItem.orderList = orderItem.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				this.pullFlag = false // 防上拉暴滑
+				setTimeout(() => {
+					this.pullFlag = true
+				}, 500)
+				if (this.hasNextPage) {
+					this.pullUpOn = false
+					this.nomoreText = '上拉显示更多'
+				} else {
+					this.loadding = false
+					this.pullUpOn = false
+					this.nomoreText = '已至底部'
+				}
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//获取点击
+		handButtonConfirm(data) {
+			console.log('data',data)
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
+		},
+		//确定筛选
+		handSearchConfirmData(data) {
+			this.listQuery.groupServiceId = data.serviceProviderId
+			this.getOrderDatainit(this.currentTab)
 		},
 		scrolltolower() {
 			if (this.hasNextPage) {
@@ -553,161 +556,24 @@ export default {
 		detail(order) {
 			//订单详情跳转
 			this.isModalLayer = true
-			if(this.screenTab === 3){
+			if (this.screenTab === 3) {
 				this.$api.navigateTo(
-					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-						order.userId
-					}`
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&shopOrderId=${
+						order.shopOrderId
+					}&userId=${order.userId}`
 				)
-			}else{
+			} else {
 				this.$api.navigateTo(
-					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-						order.userId
-					}`
+					`/pages/seller/order/order-details?listType=${this.currentTab}&shopOrderId=${
+						order.shopOrderId
+					}&userId=${order.userId}`
 				)
 			}
 		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			console.log(data)
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(orderId) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handOrderDetele(orderId) {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm(orderId) {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: orderId ,userIdentity : 1 })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handSearchConfirmData(data) {
-			//确定筛选
-			this.groupServiceId = data.serviceProviderId
-			this.getOrderDatainit(this.currentTab)
-		},
 		handlSearchPath() {
 			this.$api.navigateTo('/pages/seller/order/search-order')
 		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-				// console.log(res.target)
-			}
-			return {
-				title: '您有新的订单,请点击查看~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.btnoRderID}&userId=${
-					this.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
+		
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -719,41 +585,9 @@ export default {
 			}
 			return false
 		},
-		//订单状态文字和颜色
-		StateExpFormat(state) {
-			let stateText = '',
-				stateTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(key => {
-				if (key == state) {
-					stateText = stateTextObject[key]
-				}
-			})
-			return stateText
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
-		},
 		getHeaderTopHeight() {
 			// 状态栏高度
+			let self = this
 			let statusBarHeight = this.systeminfo.statusBarHeight
 			let headerPosi = this.headerBtnPosi
 			let btnPosi = {
@@ -768,6 +602,13 @@ export default {
 				right: this.systeminfo.screenWidth - headerPosi.right
 			}
 			this.navbarHeight = headerPosi.bottom + btnPosi.bottom // 原胶囊bottom + 现胶囊bottom
+			//  高度自适应
+			uni.getSystemInfo({
+				success: function(res) {
+					let calc = res.windowHeight
+					self.winHeight = calc - self.CustomBar - 82
+				}
+			})
 		},
 		setHeaderBtnPosi() {
 			// 获得胶囊按钮位置信息
@@ -790,7 +631,6 @@ export default {
 	},
 	onShow() {
 		this.isModalLayer = false
-		this.initGetStotage()
 	}
 }
 </script>
@@ -946,69 +786,34 @@ page {
 			height: 50rpx;
 			display: block;
 			position: absolute;
-			right: 0;
-			top: 9rpx;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.bage-buss {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
-		}
-		.bage-auto {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
-		}
-		.Rebate {
+		.bage{
 			display: inline-block;
 			width: 72rpx;
 			height: 32rpx;
-			background: #ff7a51;
-			border-radius: 6rpx;
+			margin: 19rpx 10rpx 0 10rpx;
+			border-radius: 4rpx;
 			line-height: 32rpx;
+			font-size: $font-size-22;
 			text-align: center;
 			color: #ffffff;
-			margin-top: 10rpx;
-			font-size: $font-size-22;
-			margin-right: 20rpx;
-		}
-		.bage-text {
-			display: inline-block;
-			font-size: $font-size-28;
-			line-height: 68rpx;
-			text-align: left;
-			color: $text-color;
-			margin-left: 10rpx;
-		}
-	}
-	.order-title-b {
-		width: 100%;
-		height: 40rpx;
-		float: left;
-		margin-top: 8rpx;
-		.order-title-btxt {
-			float: left;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			color: #999999;
-			text-align: lef;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
+			&.ebate{
+				background: #ff7a51;
+			}
 		}
 		.order-title-tip {
-			float: right;
+			float: left;
 			font-size: $font-size-28;
-			line-height: 40rpx;
+			line-height: 68rpx;
 			text-align: right;
 			color: #ff2a2a;
 		}

+ 249 - 436
pages/seller/order/search-order.vue

@@ -1,6 +1,5 @@
 <template>
 	<view class="search-container">
-		<!-- <or-search :theme="themeClass" @getSearchText="getSearchText"></or-search> -->
 		<view class="search-main">
 			<view class="search">
 				<view class="search-input">
@@ -64,13 +63,16 @@
 									<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
 								</view>
 								<view class="order-title-t">
+									<view class="order-title-tip tui-skeleton-fillet">
+										{{ order.status | statusFilters }}
+									</view>
 									<text
-										class="bage-buss tui-skeleton-fillet"
+										class="bage buss tui-skeleton-fillet"
 										v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
 										>协销</text
 									>
 									<text
-										class="bage-auto tui-skeleton-fillet"
+										class="bage auto tui-skeleton-fillet"
 										v-if="
 											order.orderSubmitType == 0 ||
 												order.orderSubmitType == 1 ||
@@ -79,9 +81,6 @@
 									>
 										自主
 									</text>
-									<text class="bage-text tui-skeleton-fillet">
-										订单号:{{ order.orderNo }}({{ order.orderId }})
-									</text>
 									<image
 										class="bage-icon"
 										src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
@@ -90,102 +89,92 @@
 									>
 									</image>
 								</view>
-								<view class="order-title-b">
-									<view class="order-title-btxt tui-skeleton-fillet"
-										>下单时间:{{ order.orderTime }}</view
-									>
-									<view class="order-title-tip tui-skeleton-fillet">{{
-										StateExpFormat(order.status)
-									}}</view>
+							</view>
+							<view class="goods-title">
+								<view v-if="order.shopPromotion" class="floor-item-act">
+									<view class="floor-tags">{{ order.shopPromotion.name }}</view>
 								</view>
+								<view class="title-text tui-skeleton-fillet">{{ order.shopName }}</view>
 							</view>
-							<block v-for="(shop, index) in order.shopOrderList" :key="index">
-								<view class="goods-title">
-									<view v-if="shop.shopPromotion" class="floor-item-act">
-										<view class="floor-tags">{{ shop.shopPromotion.name }}</view>
+							<view
+								class="goods-item"
+								v-for="(pros, prosIndex) in order.orderProductList"
+								:key="prosIndex"
+							>
+								<view class="goods-pros-t">
+									<view class="pros-img tui-skeleton-fillet">
+										<image :src="pros.image" alt="" />
+										<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1"
+											>赠品</text
+										>
 									</view>
-									<view class="title-text tui-skeleton-fillet">{{ shop.shopName }}</view>
-								</view>
-								<view
-									class="goods-item"
-									v-for="(pros, prosIndex) in shop.orderProductList"
-									:key="prosIndex"
-								>
-									<view class="goods-pros-t">
-										<view class="pros-img tui-skeleton-fillet">
-											<image :src="pros.image" alt="" />
-											<text class="tips" v-if="pros.productType == 2 || pros.productType == 1"
-												>赠品</text
-											>
-										</view>
-										<view class="pros-product clearfix">
-											<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+									<view class="pros-product clearfix">
+										<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+										<view
+											class="productspec tui-skeleton-fillet"
+											v-if="pros.productCategory != 2"
+											>规格:{{ pros.productUnit }}</view
+										>
+										<view class="productprice">
 											<view
-												class="productspec tui-skeleton-fillet"
-												v-if="pros.productCategory != 2"
-												>规格:{{ pros.productUnit }}</view
+												class="price tui-skeleton-fillet"
+												:class="
+													pros.svipPriceFlag == 1 ||
+													PromotionsFormat(pros.productPromotion)
+														? 'none'
+														: ''
+												"
 											>
-											<view class="productprice">
+												<text>¥{{ pros.price | NumFormat }}</text>
+											</view>
+											<view class="count tui-skeleton-fillet">
+												<text class="small">x</text>{{ pros.num }}
+											</view>
+										</view>
+										<view class="floor-item-act">
+											<template v-if="pros.productPromotion">
 												<view
-													class="price tui-skeleton-fillet"
-													:class="
-														pros.svipPriceFlag == 1 ||
-														PromotionsFormat(pros.productPromotion)
-															? 'none'
-															: ''
-													"
+													v-if="PromotionsFormat(pros.productPromotion)"
+													class="floor-tags"
+													@click.stop="clickPopupShow(pros.productPromotion)"
 												>
-													<text>¥{{ pros.price | NumFormat }}</text>
+													{{ pros.productPromotion.name }}
+													<text
+														v-if="
+															pros.productPromotion != null &&
+																pros.productPromotion.type != 3
+														"
+													>
+														:¥{{
+															pros.productPromotion == null
+																? '0.00'
+																: pros.productPromotion.touchPrice | NumFormat
+														}}
+													</text>
 												</view>
-												<view class="count tui-skeleton-fillet">
-													<text class="small">x</text>{{ pros.num }}
+												<view
+													v-else-if="pros.productPromotion.type != 3"
+													class="floor-tags"
+													@click.stop="clickPopupShow(pros.productPromotion)"
+													>{{ pros.productPromotion.name }}</view
+												>
+											</template>
+											<template v-if="pros.svipPriceFlag == 1">
+												<view class="svip-tags">
+													<view class="tags">SVIP</view>
+													<view class="price">{{ pros.svipPriceTag }}</view>
 												</view>
-											</view>
-											<view class="floor-item-act">
-												<template v-if="pros.productPromotion">
-													<view
-														v-if="PromotionsFormat(pros.productPromotion)"
-														class="floor-tags"
-														@click.stop="clickPopupShow(pros.productPromotion)"
-													>
-														{{ pros.productPromotion.name }}
-														<text
-															v-if="
-																pros.productPromotion != null &&
-																	pros.productPromotion.type != 3
-															"
-														>
-															:¥{{
-																pros.productPromotion == null
-																	? '0.00'
-																	: pros.productPromotion.touchPrice | NumFormat
-															}}
-														</text>
-													</view>
-													<view
-														v-else-if="pros.productPromotion.type != 3"
-														class="floor-tags"
-														@click.stop="clickPopupShow(pros.productPromotion)"
-														>{{ pros.productPromotion.name }}</view
-													>
-												</template>
-												<template v-if="pros.svipPriceFlag == 1">
-													<view class="svip-tags">
-														<view class="tags">SVIP</view>
-														<view class="price">{{ pros.svipPriceTag }}</view>
-													</view>
-												</template>
-											</view>
+											</template>
 										</view>
 									</view>
 								</view>
-							</block>
+							</view>
 							<view class="order-footer">
-								<view class="order-footer-top" v-if="order.discountFee != 0"
+								<!-- <view class="order-footer-top" v-if="order.discountFee != 0"
 									>经理折扣:¥{{ order.discountFee | NumFormat }}</view
-								>
+								> -->
 								<view class="order-footer-bot">
-									<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
+									<view class="count tui-skeleton-fillet">共{{ order.itemCount }}件商品</view>
 									<view
 										class="money tui-skeleton-fillet"
 										v-if="order.status == 31 || order.status == 32 || order.status == 33"
@@ -196,35 +185,38 @@
 									</view>
 									<view class="money tui-skeleton-fillet" v-else>
 										待付总额:<label style="color:#f94b4b ;"
-											>¥{{ order.pendingPayments | NumFormat }}</label
+											>¥{{ order.obligation | NumFormat }}</label
 										>
 									</view>
 								</view>
 							</view>
 							<!-- 底部button -->
-							<order-button
+							<cm-list-button
 								ref="orderButton"
+								:order="order"
 								:status="order.status"
-								:rechargeGoods="order.rechargeGoods"
-								:orderId="order.orderId"
 								:userId="order.userId"
+								:shopOrderId="order.shopOrderId"
+								:rechargeGoods="order.rechargeGoods"
 								:secondHandOrderFlag="order.secondHandOrderFlag"
 								@buttonConfirm="handButtonConfirm"
-							>
-							</order-button>
+							/>
 						</view>
 						<!--加载loadding-->
-						<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-						<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"></tui-nomore>
+						<tui-loadmore :visible="loadding" :index="3" type="black"/>
+						<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"/>
 						<!--加载loadding-->
 					</view>
 				</view>
 			</scroll-view>
 		</view>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
-		<!-- 透明模态层 -->
-		<modal-layer v-if="isModalLayer"></modal-layer>
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 再来一单弹窗 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -236,23 +228,34 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
+		<!-- 透明模态层 -->
+		<modal-layer v-if="isModalLayer"></modal-layer>
 	</view>
 </template>
 
 <script>
-import orSearch from '@/components/uni-search/or-search.vue'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' //按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import authorize from '@/common/config/authorize.js'
+import cmListButton from './components/cm-list-button' //操作按钮 
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import orderMixins from './mixins/orderMixins.js'
+
 const defaultListQuery = {
 	pageNum: 1, // 页码
 	pageSize: 10, // 每页条数
@@ -260,13 +263,11 @@ const defaultListQuery = {
 	searchWord: '' // 搜索关键词
 }
 export default {
+	mixins: [orderMixins],
 	components: {
-		orSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		empty,
-		shareAlert
+		cmListButton,
+		cmSharePopup,
 	},
 	data() {
 		return {
@@ -282,8 +283,6 @@ export default {
 			showSkeleton: true,
 			userId: 0,
 			orderList: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
 			scrollTop: 0,
 			deteleType: '',
 			skeletonShow: true,
@@ -291,6 +290,7 @@ export default {
 			isCenceModal: false, //控制取消订单弹窗
 			isShowDelModal: false, //控制删除订单弹窗
 			isModalLayer: false,
+			isShareType: 2,
 			loadding: false,
 			pullUpOn: true,
 			hasNextPage: false,
@@ -300,19 +300,12 @@ export default {
 			scrollHeight: '',
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
-			promptitle: '',
-			aganOrderId: 0
+			promptitle: ''
 		}
 	},
 	onLoad() {
 		this.initGetSerachRecord()
 	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
 	methods: {
 		subMitSearch() {
 			if (this.listQuery.searchWord == '') {
@@ -323,21 +316,127 @@ export default {
 			}
 		},
 		async initGetSerachRecord() {
-			const userInfo = await this.$api.getStorage()
-			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-			this.userId = userInfo.userId ? userInfo.userId : 0
-			this.OrderService.SearchOrderHistory({ userId: this.userId })
-				.then(response => {
-					this.serachRecordList = response.data
-					if (this.serachRecordList.length > 0) {
-						this.isSearchHistory = true
+			try{
+				const userInfo = await this.$api.getStorage()
+				this.listQuery.serviceProviderId = userInfo.serviceProviderId
+				this.userId = userInfo.userId
+				const res = await this.OrderService.SearchOrderHistory({ userId: this.userId })
+				const data = res.data
+				this.serachRecordList = data
+				if (this.serachRecordList.length > 0) {
+					this.isSearchHistory = true
+				} else {
+					this.isSearchHistory = false
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//清空历史记录
+		async confirmDetele() {
+			try{
+				const res = await this.OrderService.ClearOrderHistory({ userId: this.userId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				this.serachRecordList = []
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		// 搜索订单列表
+		async getOrderDatainit() {
+			try{
+				const res = await this.SellerService.getSellerSearchOrderList(this.listQuery)
+				const data = res.data
+				if (data && data.list.length > 0) {
+					this.orderList = data.list
+					this.hasNextPage = data
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
 					} else {
-						this.isSearchHistory = false
+						if (this.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+					this.isShowWrapper = true
+					this.showSkeleton = true
+					this.isShowEmpty = false
+				} else {
+					this.isShowEmpty = true
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//上拉加载
+		async getOnReachBottomData() {
+			try{
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.getSellerSearchOrderList(this.listQuery)
+				const data = res.data
+				this.orderList = this.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				this.pullFlag = false // 防上拉暴滑
+				setTimeout(() => {
+					this.pullFlag = true
+				}, 500)
+				if (this.hasNextPage) {
+					this.pullUpOn = false
+					this.nomoreText = '上拉显示更多'
+				} else {
+					this.loadding = false
+					this.pullUpOn = false
+					this.nomoreText = '已至底部'
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//获取点击
+		handButtonConfirm(data) {
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
+		},
+		scrolltolower() {
+			if (this.hasNextPage) {
+				this.loadding = true
+				this.pullUpOn = true
+				this.showSkeleton = false
+				this.getOnReachBottomData()
+			}
+		},
+		detail(order) {
+			//订单详情跳转
+			this.isModalLayer = true
+			this.$api.navigateTo(
+				`/pages/seller/order/order-details?type=seacrch&shopOrderId=${order.shopOrderId}&userId=${order.userId}`
+			)
 		},
 		onShowClose() {
 			//输入框失去焦点时触发
@@ -362,19 +461,6 @@ export default {
 			this.isShowClose = true
 			this.subMitSearch()
 		},
-		confirmDetele() {
-			//清空历史记录
-			this.$util.modal('提示', '确定删除历史记录?', '确定', '取消', true, () => {
-				this.OrderService.ClearOrderHistory({ userId: this.userId })
-					.then(response => {
-						this.$util.msg('删除记录成功', 2000, true, 'success')
-						this.serachRecordList = []
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
 		inputEmpty(val) {
 			this.isShowWrapper = false
 			if (val != '') {
@@ -383,223 +469,7 @@ export default {
 				this.isShowClose = false
 			}
 		},
-		getOrderDatainit(index, source) {
-			/**
-			 * @订单初始化加载  仅加载第一页码
-			 * @param:searchWord(关键词)
-			 * @param:serviceProviderId(用户ID)
-			 * @param:pageNum(页码数)
-			 * @param:listQuery.pageSize(每页条数)
-			 * @param:organizeID(全局变量组织ID)
-			 */
-
-			this.SellerService.getSellerOrderList(this.listQuery)
-				.then(response => {
-					this.isShowWrapper = true
-					this.showSkeleton = true
-					let data = response.data
-					if (data.list && data.list.length > 0) {
-						let filrerData = data.list.filter(item => {
-							//添加不同状态下订单的表现形式
-							item = Object.assign(item, this.StateExpFormat(item.state))
-							return item
-						})
-						this.orderList = []
-						filrerData.forEach(item => {
-							this.orderList.push(item)
-						})
-						this.hasNextPage = data.hasNextPage
-						if (this.hasNextPage) {
-							this.pullUpOn = false
-							this.nomoreText = '上拉显示更多'
-						} else {
-							if (this.orderList.length < 2) {
-								this.pullUpOn = true
-							} else {
-								this.pullUpOn = false
-								this.nomoreText = '已至底部'
-							}
-						}
-						this.isShowEmpty = false
-					} else {
-						this.isShowEmpty = true
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		getOnReachBottomData(index) {
-			//上拉加载
-			this.listQuery.pageNum += 1
-			this.SellerService.getSellerOrderList(this.listQuery)
-				.then(response => {
-					let data = response.data
-					this.hasNextPage = data.hasNextPage
-					this.orderList = this.orderList.concat(data.list)
-					this.pullFlag = false // 防上拉暴滑
-					setTimeout(() => {
-						this.pullFlag = true
-					}, 500)
-					if (this.hasNextPage) {
-						this.pullUpOn = false
-						this.nomoreText = '上拉显示更多'
-					} else {
-						this.loadding = false
-						this.pullUpOn = false
-						this.nomoreText = '已至底部'
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		scrolltolower() {
-			if (this.hasNextPage) {
-				this.loadding = true
-				this.pullUpOn = true
-				this.showSkeleton = false
-				this.getOnReachBottomData()
-			}
-		},
-		detail(order) {
-			//订单详情跳转
-			this.isModalLayer = true
-			this.$api.navigateTo(
-				`/pages/seller/order/order-details?type=seacrch&orderId=${order.orderId}&userId=${order.userId}`
-			)
-		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderID=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-			}
-		},
-		handOrderAgain(orderId) {
-			// 再来一单
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.listQuery.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.againBuyProductIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.listQuery.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(orderId) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit()
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handOrderDetele(orderId) {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit()
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm(orderId) {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: orderId , userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit()
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-			}
-			return {
-				title: '您有新的分享订单,快来查看吧~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.btnoRderID}&userId=${
-					this.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
+		
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -611,38 +481,6 @@ export default {
 			}
 			return false
 		},
-		//订单状态文字和颜色
-		StateExpFormat(state) {
-			let stateText = '',
-				stateTextObject = {
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(key => {
-				if (key == state) {
-					stateText = stateTextObject[key]
-				}
-			})
-			return stateText
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
-		},
 		setScrollHeight() {
 			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
 			this.windowHeight = windowHeight - 1
@@ -914,56 +752,31 @@ page {
 			height: 50rpx;
 			display: block;
 			position: absolute;
-			right: 0;
-			top: 9rpx;
-		}
-		.bage-buss {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.bage-auto {
+		.bage{
 			display: inline-block;
 			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			height: 32rpx;
+			margin: 19rpx 10rpx 0 10rpx;
 			border-radius: 4rpx;
-			line-height: 30rpx;
+			line-height: 32rpx;
 			font-size: $font-size-22;
 			text-align: center;
 			color: #ffffff;
-		}
-		.bage-text {
-			display: inline-block;
-			font-size: $font-size-28;
-			line-height: 68rpx;
-			text-align: left;
-			color: $color-system;
-			margin-left: 10rpx;
-		}
-	}
-	.order-title-b {
-		width: 100%;
-		height: 40rpx;
-		float: left;
-		margin-top: 8rpx;
-		.order-title-btxt {
-			float: left;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			color: #999999;
-			text-align: lef;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
 		}
 		.order-title-tip {
-			float: right;
+			float: left;
 			font-size: $font-size-28;
-			line-height: 40rpx;
+			line-height: 68rpx;
 			text-align: right;
 			color: #ff2a2a;
 		}

+ 2 - 2
pages/seller/remarks/list.vue

@@ -11,7 +11,7 @@
 						v-model="listQuery.keyWord"
 						@input="onShowClose"
 						@confirm="getUserClubRemarksList"
-						placeholder="搜索关键词 / 咨询人 / 机构名称"
+						placeholder="搜索关键词/咨询人/机构名称/手机号"
 						maxlength="16"
 					/>
 					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
@@ -107,7 +107,7 @@
 							{{ label.label }}
 						</text>
 					</view>
-					<view class="tui-remarks-button" v-if="remark.serviceProviderId === listQuery.serviceProviderId">
+					<view class="tui-remarks-button" v-if="remark.createServiceProviderId === listQuery.serviceProviderId">
 						<view class="btn edit" @click.stop="handEditRemark(remark.remarksId)">修改</view>
 						<view class="btn del" @click.stop="deleteRemark(remark.remarksId)">删除</view>
 					</view>

+ 1 - 1
pages/seller/remarks/record-list.vue

@@ -97,7 +97,7 @@
 								{{ label.label }}
 							</text>
 						</view>
-						<view class="tui-remarks-button" v-if="remark.serviceProviderId === listQuery.serviceProviderId">
+						<view class="tui-remarks-button" v-if="remark.createServiceProviderId === listQuery.serviceProviderId">
 							<view class="btn edit" @click.stop="handEditRemark(remark.remarksId)">修改</view>
 							<view class="btn del" @click.stop="deleteRemark(remark.remarksId)">删除</view>
 						</view>

+ 1 - 1
pages/seller/remarks/relation-consult-list.vue

@@ -94,7 +94,7 @@
 							{{ label.label }}
 						</text>
 					</view>
-					<view class="tui-remarks-button" v-if="remark.serviceProviderId === listQuery.serviceProviderId">
+					<view class="tui-remarks-button" v-if="remark.createServiceProviderId === listQuery.serviceProviderId">
 						<view class="btn edit" @click.stop="cancelReport(remark.remarksId)">取消关联</view>
 					</view>
 				</view>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels