Kaynağa Gözat

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

zhengjinyi 2 yıl önce
ebeveyn
işleme
a4265d9028

+ 21 - 7
components/cm-module/headerNavbar/header-back.vue

@@ -12,6 +12,7 @@
 		<view class="navbar-icon" v-if="navbarData.showSearch == 1 ? true : false"
 			  :style="{top:navbarBtn.top + statusBarHeight+'px;',right:(navbarBtn.width)+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}">
 			  <text @click.stop="_goSearchPath" class="iconfont icon-iconfonticonfontsousuo1"></text>
+			  <text v-if="screenTab === 3" @click.stop="_showRightDrawer" class="iconfont icon-shaixuan"></text>
 	  	</view>
 	</view>
 </template>
@@ -38,6 +39,9 @@
 			},
 			isUsertype:{
 				type:Number
+			},
+			screenTab:{
+				type:Number
 			}
 		},
 		data() {
@@ -96,11 +100,14 @@
 		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
 		    this.navbarBtn=btnPosi
 		},
-		onLoad(){
-			
+		watch: {
+		  screenTab(newVal, oldVal){
+		    // newVal是新值,oldVal是旧值
+		    this.screenTab = newVal
+		  }
 		},
 		methods:{
-			_goBack: function () {
+			_goBack() {
 				if(this.isShare){
 					this._goHome()
 				}else if(this.isDelete){
@@ -111,19 +118,23 @@
 			      	})
 				}
 		    },
-		    _goHome: function () {
+		    _goHome() {
 		      	uni.switchTab({
 		        	url: '/pages/tabBar/home/index'
 		      	})
 		    },
-		    _goUser: function () {
+		    _goUser() {
 		      	uni.switchTab({
 		        	url: '/pages/tabBar/user/user'
 		      	})
 		    },
-			_goSearchPath:function () {
+			_goSearchPath() {
 				this.$emit('goSearchPath')
-			}
+			},
+			_showRightDrawer() {
+				//显示筛选抽屉
+				this.$parent.rightDrawer = true
+			},
 		},
 		onShow(){
 	
@@ -167,6 +178,9 @@
 	.navbar-icon .icon-iconfonticonfontsousuo1 {
 		color: #000000;
 	}
+	.navbar-icon .icon-shaixuan {
+		color: #000000;
+	}
 	.navbar-icon view {
 		 height: 18px;
 		 border-left: 0.5px solid rgba(0,0,0, 0.3);

+ 2 - 1
components/cm-module/orderDetails/orderAddress.vue

@@ -27,6 +27,7 @@
 </template>
 
 <script>
+	import { mapState, mapMutations } from 'vuex'	
 	export default{
 		name:"address",
 		props:{
@@ -43,7 +44,7 @@
 			this.initData = this.addressData;
 		},
 		computed: {
-
+			...mapState(['isManage'])
 		},
 		methods:{
 			

+ 0 - 1
components/cm-module/pageTemplate/templateL.vue

@@ -84,7 +84,6 @@ export default {
 			const userInfo = await this.$api.getStorage()
 			this.shopId = userInfo.shopId ? userInfo.shopId : 0
 			this.productList = data.floorImageList4
-			console.log('==========',this.productList)
 			// if (this.productCount > 0) {
 			// 	this.productList.splice(0, this.productList.length)
 			// 	for (var i = 0, j = data.floorImageList4.length; i < j; i += this.pageSize) {

+ 9 - 1
pages.json

@@ -628,6 +628,13 @@
 						"navigationStyle": "custom"
 					}
 				},
+				{
+					"path": "order/order-club-details",
+					"style": {
+						"navigationBarTitleText": "订单详情",
+						"navigationStyle": "custom"
+					}
+				},
 				{
 					"path": "order/order-list",
 					"style": {
@@ -638,7 +645,8 @@
 				{
 					"path": "club/list",
 					"style": {
-						"navigationBarTitleText": "机构列表"
+						"navigationBarTitleText": "机构列表",
+						"navigationStyle": "custom"
 					}
 				},
 				{

+ 161 - 20
pages/seller/club/club-info.vue

@@ -17,7 +17,7 @@
 				<view class="info-title">
 					<view class="info-title-left">
 						<view
-							>机构资料:<text>{{ clubInfo.userIdentity === 2 ? '资质机构' : '普通机构' }}</text></view
+							>机构资料:<text>{{ clubInfo.userIdentity === 2 ? '资质机构' : '个人机构' }}</text></view
 						>
 					</view>
 					<view class="info-title-right">
@@ -34,8 +34,20 @@
 						>手机号:<text>{{ clubInfo.contractMobile }}</text></view
 					>
 				</view>
-				<view class="info-main" v-if="clubInfo.userIdentity === 2">
-					<view class="info-h1">升级信息</view>
+				<view class="info-main" v-if="clubInfo.userIdentity === 2 || (clubInfo.userIdentity === 4 && (clubInfo.status == 1 || clubInfo.status == 92))">
+					<view class="info-h1"
+						>升级信息
+						<text
+							class="info-h1-tag"
+							:class="{
+								orange: clubInfo.status == 1,
+								grey: clubInfo.status == 90,
+								warn: clubInfo.status == 92
+							}"
+						>
+							{{ clubInfo.status | statusFilters }}
+						</text>
+					</view>
 					<view class="info-p"
 						>机构名称:<text>{{ clubInfo.name }}</text></view
 					>
@@ -53,52 +65,87 @@
 					>
 					<view class="info-p">营业执照:</view>
 					<view class="info-img"><image :src="clubInfo.businessLicense" alt=""/></view>
-					<view class="info-p">门头照:</view>
-					<view class="info-img"><image :src="clubInfo.shopPhoto" alt=""/></view>
+					<view class="info-p" v-if="clubInfo.shopPhoto">门头照:</view>
+					<view class="info-img" v-if="clubInfo.shopPhoto"><image :src="clubInfo.shopPhoto" alt=""/></view>
 					<view class="info-p"
 						>机构类型:<text>{{ clubInfo.firstClubType | FirstFormat }}</text></view
 					>
-					<view class="info-p">医疗许可证:</view>
-					<view class="info-img"><image :src="clubInfo.medicalPracticeLicense" alt=""/></view>
-					<view class="info-p"
+					<view class="info-p" v-if="clubInfo.medicalPracticeLicense">医疗许可证:</view>
+					<view class="info-img" v-if="clubInfo.medicalPracticeLicense"><image :src="clubInfo.medicalPracticeLicense" alt=""/></view>
+					<view class="info-p" v-if="clubInfo.secondClubType" 
 						>科室:<text>{{ clubInfo.secondClubType | TwoFormat }}</text></view
 					>
 					<view class="info-p"
 						>主营内容:<text>{{ clubInfo.mainProduct }}</text></view
 					>
 				</view>
-				<view class="info-main">
+				<view class="info-main" v-if="clubInfo.contractPhone || clubInfo.fax || clubInfo.profile">
 					<view class="info-h1">其他信息</view>
-					<view class="info-p"
+					<view class="info-p" v-if="clubInfo.contractPhone"
 						>固定电话:<text>{{ clubInfo.contractPhone ? clubInfo.contractPhone : '无' }}</text></view
 					>
-					<view class="info-p"
+					<view class="info-p" v-if="clubInfo.fax"
 						>传真:<text>{{ clubInfo.fax ? clubInfo.fax : '无' }}</text></view
 					>
-					<view class="info-p"
+					<view class="info-p" v-if="clubInfo.profile"
 						>公司介绍:<text>{{ clubInfo.profile ? clubInfo.profile : '无' }}</text></view
 					>
 				</view>
 			</view>
 		</template>
+		<!-- 按钮 -->
+		<template v-if="clubInfo.spType === 0 && isManage">
+			<tui-bottom-popup :radius="false" :mask="false" :show="true">
+				<view class="tui-popup-box clearfix">
+					<view
+						class="tui-right-flex tui-popup-btn"
+						:style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }"
+					>
+						<view class="tui-flex-1">
+							<view class="tui-button" @click="handleShowSellerpopup">分配销售</view>
+						</view>
+					</view>
+				</view>
+			</tui-bottom-popup>
+		</template>
+		<!-- 选择弹窗 -->
+		<cm-seller-popup
+			ref="cmresellerpopup"
+			v-if="isSellerpopup"
+			:show="isSellerpopup"
+			@handleChoiceaSeller="handleChoiceaSellerData"
+		>
+		</cm-seller-popup>
 	</view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+import cmSellerPopup from '../components/cm-seller-popup'
+
 export default {
+	components: {
+		cmSellerPopup
+	},
 	data() {
 		return {
 			skeletonShow: true,
-			clubId: 0,
 			saleName: '',
-			clubInfo:{}
+			clubInfo: {},
+			isSellerpopup: false,
+			isIphoneX: this.$store.state.isIphoneX,
+			salesParams: {
+				clubId: 0,
+				spId: 0
+			}
 		}
 	},
-	filters: {},
 	onLoad(option) {
-		this.clubId = option.clubId
-		this.userClubRecordLinkage(this.clubId)
+		wxLogin.wxLoginAuthorize()
+		this.salesParams.clubId = option.clubId
+		this.userClubRecordLinkage({ clubId: this.salesParams.clubId })
 	},
 	filters: {
 		FirstFormat: function(type) {
@@ -138,13 +185,24 @@ export default {
 					break
 			}
 			return text
+		},
+		statusFilters(value) {
+			// 状态
+			const map = {
+				1: '待审核',
+				90: '审核通过',
+				92: '审核未通过'
+			}
+			return map[value]
 		}
 	},
+	computed: {
+		...mapState(['isManage'])
+	},
 	methods: {
-		userClubRecordLinkage() {
+		async userClubRecordLinkage(param) {
 			//查询机构信息
-			console.log('=========<查询机构信息>===========')
-			this.SellerService.userClubRecordLinkage({ clubId: this.clubId })
+			this.SellerService.userClubRecordLinkage(param)
 				.then(response => {
 					this.clubInfo = response.data.club
 					this.saleName = response.data.saleName
@@ -155,6 +213,28 @@ export default {
 				.catch(error => {
 					this.isInvalid = true
 				})
+		},
+		userClubChoseSales(param) {
+			//分配或更换协销
+			this.SellerService.userClubChoseSales(param)
+				.then(response => {
+					this.$util.msg('分配成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.userClubRecordLinkage({ clubId: this.salesParams.clubId })
+					}, 1000)
+				})
+				.catch(error => {
+					console.log('分配协销异常')
+				})
+		},
+		handleChoiceaSellerData(data) {
+			// 确定搜索
+			this.salesParams.spId = data.serviceProviderId
+			this.userClubChoseSales(this.salesParams)
+		},
+		handleShowSellerpopup() {
+			//显示选择协销弹窗
+			this.isSellerpopup = true
 		}
 	},
 	onShow() {}
@@ -195,6 +275,7 @@ page {
 		box-sizing: border-box;
 		padding: 0 24rpx;
 		background-color: #ffffff;
+		padding-bottom: 240rpx;
 		.info-title {
 			width: 100%;
 			height: 68rpx;
@@ -228,6 +309,12 @@ page {
 				font-size: 24rpx;
 				color: #999999;
 				text-align: right;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
 			}
 		}
 		.info-main {
@@ -250,6 +337,27 @@ page {
 					left: 0;
 					top: 30rpx;
 				}
+				.info-h1-tag {
+					display: inline-block;
+					padding: 0 16rpx;
+					line-height: 40rpx; 
+					background-color: #fff2d5;
+					font-size: 24rpx;
+					border-radius: 20rpx;
+					color: #ffffff;
+					text-align: center;
+					margin-left: 16rpx;
+					&.orange{
+						background-color: #FFF2D5;
+						color: #E4AA43;
+					}
+					&.grey{
+						background-color: #0DB26D;
+					}
+					&.warn{
+						background-color: #F94B4B;
+					}
+				}
 			}
 			.info-p {
 				width: 100%;
@@ -277,4 +385,37 @@ page {
 		}
 	}
 }
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 100rpx;
+	padding: 6rpx 24rpx;
+	.tui-popup-content {
+		padding-top: 30rpx;
+	}
+}
+.tui-popup-btn {
+	width: 100%;
+	height: auto;
+	float: left;
+	box-sizing: border-box;
+	margin-top: 30rpx;
+	.tui-flex-1 {
+		width: 100%;
+		height: 84rpx;
+		display: flex;
+		.tui-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;
+		}
+	}
+}
 </style>

+ 41 - 62
pages/seller/club/club-list.vue

@@ -7,9 +7,9 @@
 					class="input"
 					type="text"
 					confirm-type="search"
-					v-model="searchInputVal"
+					v-model="listQuery.name"
 					@input="onShowClose"
-					@confirm="initclubList()"
+					@confirm="GetSellerClubList()"
 					placeholder="机构名称/联系人"
 					maxlength="12"
 				/>
@@ -47,25 +47,27 @@
 							<view class="list-item">
 								<view class="list-title">
 									<text class="list-name">{{ club.name }}</text>
-									<text class="list-hist" @click.stop="_goOperation(5,club)"
+									<text class="list-hist" @click.stop="_goOperation(5, club)"
 										><text class="iconfont icon-dingdanxuanzhong"></text>订单列表</text
 									>
 								</view>
 								<view class="list-opea">
-									<text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2 ">VIP</text>
+									<text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2">VIP</text>
 									<text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
 								</view>
 							</view>
 						</view>
 						<view class="club-list-bot">
 							<view class="list-opea">
-								<view class="btn org" @click.stop="_goOperation(1,club)"> <text>立即下单</text> </view>
-								<view class="btn gre" @click.stop="_goOperation(2,club)"> <text>二手下单</text> </view>
-								<view class="btn yel" @click.stop="_goOperation(3,club)"> <text>再次购买</text> </view>
-								<view class="btn yeo" @click.stop="_goOperation(4,club)">
+								<view class="btn org" @click.stop="_goOperation(1, club)"> <text>立即下单</text> </view>
+								<view class="btn gre" @click.stop="_goOperation(2, club)"> <text>二手下单</text> </view>
+								<view class="btn yel" @click.stop="_goOperation(3, club)"> <text>再次购买</text> </view>
+								<view class="btn yeo" @click.stop="_goOperation(4, club)">
 									<text>充值/下订金</text>
 								</view>
-								<view class="btn yel" @click.stop="_goOperation(6,club)"> <text>购买优惠券</text> </view>
+								<view class="btn yel" @click.stop="_goOperation(6, club)">
+									<text>购买优惠券</text>
+								</view>
 							</view>
 						</view>
 					</view>
@@ -83,6 +85,16 @@
 import authorize from '@/common/config/authorize.js'
 import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
 import tuiNomore from '@/components/tui-components/nomore/nomore'
+const defaultListQuery = {
+	userIdentity: '',
+	name: '',
+	pageNum: 1,
+	pageSize: 10,
+	spId: 0,
+	status: 66,
+	type: 1,
+	groupServiceId: 0
+}
 export default {
 	components: {
 		tuiLoadmore,
@@ -90,14 +102,9 @@ export default {
 	},
 	data() {
 		return {
-			serviceProviderId: '',
 			isShowClose: false,
-			searchInputVal: '',
 			isEmpty: false,
 			nomoreText: '上拉显示更多',
-			status: 66,
-			pageNum: 1,
-			pageSize: 10,
 			hasNextPage: false,
 			loadding: false,
 			pullUpOn: true,
@@ -105,41 +112,25 @@ export default {
 			scrollHeight: '',
 			currPage: '', //当前页面
 			prevPage: '', //上一个页面
-			clubList: []
+			clubList: [],
+			listQuery: Object.assign({}, defaultListQuery)
 		}
 	},
-	onLoad() {
-		this.setScrollHeight()
-	},
+	onLoad() {},
 	methods: {
-		setScrollHeight() {
-			// 窗口高度 - 底部距离
-			setTimeout(() => {
-				const query = wx.createSelectorQuery().in(this)
-				query.selectAll('.add-btn').boundingClientRect()
-				query.exec(res => {
-					if (res[0][0]) {
-						let winHeight = this.$api.getWindowHeight(),
-							eleTop = res[0][0].top - 1
-						this.scrollHeight = eleTop
-					}
-				})
-			}, 500)
+		async initGetStotage() {
+			// 初始化
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.spId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.GetSellerClubList()
 		},
 		searchClubList() {
-			this.pageNum = 1
-			this.initclubList()
+			// 搜索
+			this.GetSellerClubList()
 		},
-		initclubList() {
-			let params = {
-					userIdentity: '',
-					name: this.searchInputVal,
-					pageNum: 1,
-					pageSize: this.pageSize,
-					spId: this.serviceProviderId,
-					status: this.status
-			}
-			this.SellerService.GetSellerClubList(params)
+		GetSellerClubList() {
+			this.listQuery.pageNum = 1
+			this.SellerService.GetSellerClubList(this.listQuery)
 				.then(response => {
 					let data = response.data
 					if (data.list && data.list.length > 0) {
@@ -167,16 +158,8 @@ export default {
 				})
 		},
 		getOnReachBottomData() {
-			this.pageNum += 1
-			let params = {
-				userIdentity: '',
-				name: this.searchInputVal,
-				pageNum: this.pageNum,
-				pageSize: this.pageSize,
-				spId: this.serviceProviderId,
-				status: this.status
-			}
-			this.SellerService.GetSellerClubList(params)
+			this.listQuery.pageNum += 1
+			this.SellerService.GetSellerClubList(this.listQuery)
 				.then(response => {
 					let data = response.data
 					if (data.list && data.list.length > 0) {
@@ -202,7 +185,7 @@ export default {
 		},
 		onShowClose() {
 			//输入框失去焦点时触发
-			if (this.searchInputVal != '') {
+			if (this.listQuery.name != '') {
 				this.isShowClose = true
 			} else {
 				this.isShowClose = false
@@ -210,12 +193,12 @@ export default {
 		},
 		delInputText() {
 			//清除输入框内容
-			this.searchInputVal = ''
+			this.listQuery.name = ''
 			this.isShowClose = false
 		},
-		_goOperation(type,club){
+		_goOperation(type, club) {
 			this.$api.setStorage('orderUserInfo', club)
-			switch(type){
+			switch (type) {
 				case 1:
 					this.$api.navigateTo('/pages/seller/cart/immediately')
 					break
@@ -245,11 +228,7 @@ export default {
 		}
 	},
 	onShow() {
-		this.$api.getStorage().then(response => {
-			this.serviceProviderId = response.serviceProviderId
-			this.pageNum = 1
-			this.initclubList()
-		})
+		this.initGetStotage()
 	}
 }
 </script>

+ 355 - 221
pages/seller/club/list.vue

@@ -1,23 +1,53 @@
 <template>
 	<view class="container club clearfix" :style="{ paddingBottom: isIphoneX ? '140rpx' : '98rpx' }">
-		<view class="club-search clearfix">
-			<view class="search-top">
-				<view class="search-from name">
-					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+		<view class="club-search clearfix" :style="{ paddingTop: StatusBar + 'px' }">
+			<view class="search-top" :style="{ height: CustomBar - StatusBar + 'px' }">
+				<view
+					class="search-icon"
+					:style="{
+						width: CustomBar - StatusBar + 'px',
+						height: CustomBar - StatusBar + 'px',
+						lineHeight: CustomBar - StatusBar + 'px;'
+					}"
+				>
+					<text @click="handleNavigateBack" class="iconfont icon-fanhui"></text>
+				</view>
+				<view
+					class="search-from name"
+					:style="{ height: capsule.height + 'px', borderRadius: capsule.height / 2 + 'px' }"
+				>
+					<text
+						:style="{
+							width: capsule.height + 'px',
+							height: capsule.height + 'px',
+							lineHeight: capsule.height + 'px;'
+						}"
+						class="iconfont icon-iconfonticonfontsousuo1"
+					></text>
 					<input
 						class="input"
 						type="text"
 						confirm-type="search"
-						v-model="searchInputVal"
+						v-model="listQuery.name"
 						@input="onShowClose"
-						@confirm="initclubList()"
+						@confirm="GetSellerClubList()"
 						placeholder="机构名称/联系人"
 						maxlength="16"
+						:style="{ lineHeight: capsule.height + 'px' }"
 					/>
 					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
 				</view>
-				<view class="search-btn">
-					<button class="search-btn" type="default" @click.stop="searchClubList">搜索</button>
+				<view
+					class="search-btn"
+					:style="{
+						width: CustomBar - StatusBar + 'px',
+						height: capsule.height + 'px',
+						lineHeight: capsule.height + 'px;'
+					}"
+					v-if="isManage && tabSmallCurrentIndex == 1"
+					@click="showRightDrawer"
+				>
+					<text class="iconfont icon-shaixuan"></text>
 				</view>
 			</view>
 			<view class="search-tab">
@@ -31,8 +61,19 @@
 					<text class="item-text">{{ item.name }}<text class="line"></text></text>
 				</view>
 			</view>
+			<view class="search-smalltab" v-if="isManage">
+				<view
+					class="tab-item"
+					v-for="(item, index) in listItemTab"
+					:key="index"
+					:class="{ current: tabSmallCurrentIndex === index }"
+					@click="tabSmallCurrentClick(index)"
+				>
+					<text class="item-text">{{ item.name }}</text>
+				</view>
+			</view>
 		</view>
-		<view class="club-main">
+		<view class="club-main" :style="{ paddingTop: isManage ? '374rpx' : '254rpx' }">
 			<view v-if="isEmpty" class="empty-container">
 				<image
 					class="club-empty-image"
@@ -44,41 +85,49 @@
 			<view v-else class="club-list">
 				<scroll-view scroll-y="true">
 					<view class="list" v-for="(club, index) in clubList" :key="index">
-						<view class="list-logo">
-							<image
-								:src="
-									club.headpic
-										? club.headpic
-										: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
-								"
-								mode=""
-							></image>
-						</view>
-						<view class="list-content">
-							<view class="list-name">
-								{{ club.userIdentity === 2 ? club.name : club.linkMan }}
-								<text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2 ">VIP</text>
-								<text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
-								<text class="tags xf" v-if="club.newDeal === 1">新分配</text>
+						<view class="list-cell-top">
+							<view class="list-logo">
+								<image
+									:src="
+										club.headpic
+											? club.headpic
+											: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
+									"
+									mode=""
+								></image>
 							</view>
-							<view class="list-ntel">
-								<text class="list-link">{{ club.linkMan ? club.linkMan : '' }}</text>
-								<text class="list-texl">{{ club.contractMobile ? club.contractMobile : '' }}</text>
-							</view>
-							<view class="list-opera">
-								<button class="btn org" @click.stop="checkData(club)">修改资料</button>
-								<view class="btn gre" @click.stop="orderHistory(club)">
-									历史订单
-									<text
-										v-if="club.orderNum > 0"
-										class="opea-badge uni-badge uni-badge-error uni-small uni-badge--small icon-num"
-									>
-										{{ showBadge(club.orderNum) }}
-									</text>
+							<view class="list-content">
+								<view class="list-name">
+									{{ club.userIdentity === 2 ? club.name : club.linkMan }}
+									<text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2">VIP</text>
+									<text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
+									<text class="tags xf" v-if="club.newDeal === 1">新分配</text>
+								</view>
+								<view class="list-ntel" v-if="tabSmallCurrentIndex === 1">
+									<text class="list-link">销售:{{ club.serviceName ? club.serviceName : '' }}</text>
+								</view>
+								<view class="list-ntel" v-else>
+									<text class="list-link">{{ club.linkMan ? club.linkMan : '' }}</text>
+									<text class="list-texl">{{ club.contractMobile ? club.contractMobile : '' }}</text>
 								</view>
-								<view class="btn org" @click.stop="handleClubinfo(club)" v-if="club.recordCount === 1">注册行为记录</view>
 							</view>
 						</view>
+						<view class="list-cell-btn">
+							<view class="btn" @click.stop="checkData(club)">修改资料</view>
+							<view class="btn" @click.stop="orderHistory(club)">
+								历史订单
+								<text
+									v-if="club.orderNum > 0"
+									class="opea-badge uni-badge uni-badge-error uni-small uni-badge--small icon-num"
+								>
+									{{ showBadge(club.orderNum) }}
+								</text>
+							</view>
+							<view class="btn" v-if="isManage && club.serviceProviderId != 1342" @click.stop="handleReplaceClub(club)">更换协销</view>
+							<view class="btn" @click.stop="handleClubinfo(club)" v-if="club.recordCount === 1"
+								>注册行为记录</view
+							>
+						</view>
 					</view>
 					<!--加载loadding-->
 					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
@@ -99,86 +148,96 @@
 				</view>
 			</view>
 		</view>
-		<!-- 分享弹窗 -->
-		<shareModel v-if="isShareModal" :orderID="shareClubUseId" @shareConfirm="onShareAppMessage"></shareModel>
+		<!-- 筛选抽屉 -->
+		<cm-clubDrawer
+			ref="screendrawer"
+			v-if="rightDrawer"
+			:rightDrawer="rightDrawer"
+			@handSearchConfirm="handSearchConfirmData"
+		>
+		</cm-clubDrawer>
+		<!-- 选择弹窗 -->
+		<cm-seller-popup
+			ref="cmresellerpopup"
+			v-if="isSellerpopup"
+			:show="isSellerpopup"
+			@handleChoiceaSeller="handleChoiceaSellerData"
+		>
+		</cm-seller-popup>
 	</view>
 </template>
 
 <script>
+import { mapState, mapMutations } from 'vuex'	
 import authorize from '@/common/config/authorize.js'
 import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
 import tuiNomore from '@/components/tui-components/nomore/nomore'
-import shareModel from '@/components/cm-module/modelAlert/shareModel.vue' //分享弹窗
+import cmClubDrawer from '../components/cm-club-drawer'
+import cmSellerPopup from '../components/cm-seller-popup'
 
+const defaultListQuery = {
+	userIdentity: 4,
+	name: '',
+	pageNum: 1,
+	pageSize: 10,
+	spId: 0,
+	status: 90,
+	type:1,
+	groupServiceId:0
+	
+}
 export default {
 	components: {
 		tuiLoadmore,
 		tuiNomore,
-		shareModel
+		cmClubDrawer,
+		cmSellerPopup
 	},
 	data() {
 		return {
 			listTab: [{ name: '个人机构' }, { name: '资质机构' }],
-			serviceProviderId: '',
-			shareClubUseId: 0,
-			shareIdentity: 0,
+			listItemTab: [{ name: '我的机构' }, { name: '组员机构' }, { name: '待分配机构' }],
+			listQuery: Object.assign({}, defaultListQuery),
 			isShowClose: false,
-			searchInputVal: '',
 			isEmpty: false,
-			isShareModal: false,
 			nomoreText: '上拉显示更多',
-			userIdentity: 4,
 			pageNum: 1,
 			pageSize: 10,
 			hasNextPage: false,
 			loadding: false,
 			pullUpOn: true,
 			pullFlag: true,
-			allowDataStatus: true,
-			wrapperHeight: '100%',
-			scrollHeight: '',
-			deleteAddressId: '',
-			currPage: '', //当前页面
-			prevPage: '', //上一个页面
 			tabCurrentNum: 0,
 			tabCurrentIndex: 0,
-			listStatus: 90,
+			tabSmallCurrentIndex:0,
 			clubList: [],
 			isIphoneX: this.$store.state.isIphoneX,
-			show_index: 0 //控制显示那个组件
+			CustomBar: this.CustomBar,
+			StatusBar: this.StatusBar,
+			capsule: this.capsule,
+			show_index: 0 ,//控制显示那个组件
+			rightDrawer:false,
+			isSellerpopup:false,
+			salesParams: {
+				clubId: 0,
+				spId: 0
+			},
 		}
 	},
 	onLoad() {
-		this.setScrollHeight()
+		
+	},
+	computed: {
+		...mapState(['isManage'])
 	},
 	methods: {
-		setScrollHeight() {
-			// 窗口高度 - 底部距离
-			setTimeout(() => {
-				const query = wx.createSelectorQuery().in(this)
-				query.selectAll('.add-btn').boundingClientRect()
-				query.exec(res => {
-					if (res[0][0]) {
-						let winHeight = this.$api.getWindowHeight(),
-							eleTop = res[0][0].top - 1
-						this.scrollHeight = eleTop
-					}
-				})
-			}, 500)
-		},
-		searchClubList() {
-			this.pageNum = 1
-			this.initclubList()
+		async initGetStotage() {// 初始化
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.spId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.GetSellerClubList()
 		},
-		initclubList() {
-			this.SellerService.GetSellerClubList({
-				userIdentity: this.userIdentity,
-				name: this.searchInputVal,
-				pageNum: 1,
-				pageSize: this.pageSize,
-				spId: this.serviceProviderId,
-				status: this.listStatus
-			})
+		GetSellerClubList() {
+			this.SellerService.GetSellerClubList(this.listQuery)
 				.then(response => {
 					let data = response.data
 					if (data.list && data.list.length > 0) {
@@ -206,15 +265,8 @@ export default {
 				})
 		},
 		getOnReachBottomData() {
-			this.pageNum += 1
-			this.SellerService.GetSellerClubList({
-				userIdentity: this.userIdentity,
-				name: this.searchInputVal,
-				pageNum: this.pageNum,
-				pageSize: this.pageSize,
-				spId: this.serviceProviderId,
-				status: this.listStatus
-			})
+			this.listQuery.pageNum += 1
+			this.SellerService.GetSellerClubList(this.listQuery)
 				.then(response => {
 					let data = response.data
 					if (data.list && data.list.length > 0) {
@@ -238,21 +290,34 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		userClubChoseSales(param) {
+			//分配或更换协销
+			this.SellerService.userClubChoseSales(param)
+				.then(response => {
+					this.$util.msg('操作成功~', 2000, true, 'success')
+					setTimeout(() => {
+						this.GetSellerClubList()
+					}, 1000)
+				})
+				.catch(error => {
+					console.log('分配协销异常')
+				})
+		},
 		tabClick(index) {
 			//tab切换
 			this.tabCurrentIndex = index
 			switch (index) {
 				case 0:
-					this.listStatus = 90
+					this.listQuery.status = 90
 					break
 				case 1:
-					this.listStatus = 1
+					this.listQuery.status = 1
 					break
 				case 2:
-					this.listStatus = 92
+					this.listQuery.status = 92
 					break
 			}
-			this.initclubList()
+			this.GetSellerClubList()
 		},
 		tabCurrentClick(index) {
 			//商品详情&&供应商信息tab切换
@@ -260,19 +325,67 @@ export default {
 			switch (index) {
 				case 0:
 					this.tabCurrentIndex = 0
-					this.userIdentity = 4
-					this.listStatus = 90
-                    this.pageNum = 1
-					this.initclubList()
+					this.listQuery.userIdentity = 4
+					this.listQuery.status = 90
+					this.listQuery.pageNum = 1
+					this.GetSellerClubList()
+					break
+				case 1:
+					this.listQuery.pageNum = 1
+					this.listQuery.userIdentity = 2
+					this.listQuery.status = 90
+					this.GetSellerClubList()
+					break
+			}
+		},
+		tabSmallCurrentClick(index){
+			//商品详情&&供应商信息tab切换
+			this.tabSmallCurrentIndex = index
+			switch (index) {
+				case 0:
+					this.tabCurrentIndex = 0
+					this.listQuery.type = 1
+					this.listQuery.status = 90
+					this.listQuery.pageNum = 1
+					this.listQuery.groupServiceId = 0
+					this.GetSellerClubList()
 					break
 				case 1:
-                    this.pageNum = 1
-					this.userIdentity = 2
-					this.listStatus = 90
-					this.initclubList()
+					this.listQuery.type = 2
+					this.listQuery.status = 90
+					this.listQuery.pageNum = 1
+					this.listQuery.groupServiceId = 0
+					this.GetSellerClubList()
+					break
+				case 2:
+					this.listQuery.type = 3
+					this.listQuery.status = 90
+					this.listQuery.pageNum = 1
+					this.listQuery.groupServiceId = 0
+					this.GetSellerClubList()
 					break
 			}
 		},
+		handSearchConfirmData(data) {
+			console.log('确定筛选', data)
+			//确定筛选
+			this.listQuery.groupServiceId = data.serviceProviderId
+			this.GetSellerClubList()
+		},
+		handleChoiceaSellerData(data) {
+			// 确定搜索
+			this.salesParams.spId = data.serviceProviderId
+			this.userClubChoseSales(this.salesParams)
+		},
+		handleReplaceClub(club){
+			//更换协销
+			this.salesParams.clubId = club.clubId
+			this.isSellerpopup = true
+		},
+		showRightDrawer() {
+			//显示筛选抽屉
+			this.rightDrawer = true
+		},
 		checkData(club) {
 			//修改机构资料
 			switch (this.tabCurrentNum) {
@@ -287,15 +400,19 @@ export default {
 		orderHistory(club) {
 			//跳转机构历史订单
 			this.$api.setStorage('orderUserInfo', club)
-			this.$api.navigateTo(`/pages/seller/order/order-historylist?clubId=${club.clubId}&listType=0`)
+			if(this.tabSmallCurrentIndex === 1 || this.tabSmallCurrentIndex === 2){// 查看组员机构历史订单
+				this.$api.navigateTo(`/pages/seller/order/order-historylist?clubId=${club.clubId}&listType=0&authType=${this.tabSmallCurrentIndex}`)
+			}else{
+				this.$api.navigateTo(`/pages/seller/order/order-historylist?clubId=${club.clubId}&listType=0`)
+			}
 		},
-		handleClubinfo(club){
+		handleClubinfo(club) {
 			//跳转机构信息
 			this.$api.navigateTo(`/pages/seller/club/club-info?clubId=${club.clubId}`)
 		},
 		onShowClose() {
 			//输入框失去焦点时触发
-			if (this.searchInputVal != '') {
+			if (this.listQuery.name != '') {
 				this.isShowClose = true
 			} else {
 				this.isShowClose = false
@@ -303,7 +420,7 @@ export default {
 		},
 		delInputText() {
 			//清除输入框内容
-			this.searchInputVal = ''
+			this.listQuery.name = ''
 			this.isShowClose = false
 		},
 		showBadge(n) {
@@ -314,6 +431,9 @@ export default {
 				num = n
 			}
 			return num
+		},
+		handleNavigateBack() {
+			this.$api.navigateBack(1)
 		}
 	},
 	onReachBottom() {
@@ -324,11 +444,7 @@ export default {
 		}
 	},
 	onShow() {
-		this.$api.getStorage().then(response => {
-			this.serviceProviderId = response.serviceProviderId
-			this.pageNum = 1
-			this.initclubList()
-		})
+		this.initGetStotage()
 	}
 }
 </script>
@@ -348,38 +464,39 @@ page,
 .club-search {
 	height: auto;
 	width: 100%;
-	padding: 24rpx 0 0 0;
 	background: #ffffff;
 	display: flex;
 	flex-direction: column;
 	position: fixed;
 	top: 0;
 	left: 0;
-	z-index: 999;
+	z-index: 99;
 	.search-top {
 		flex: 1;
 		display: flex;
 		align-items: center;
-		padding: 24rpx;
+		box-sizing: border-box;
+		.search-icon {
+			text-align: center;
+			float: left;
+			.icon-fanhui {
+				font-size: 44rpx;
+				color: #333333;
+			}
+		}
 		.search-from {
-			width: 582rpx;
-			height: 64rpx;
+			width: 382rpx;
 			background: #f7f7f7;
-			border-radius: 32rpx;
 			float: left;
 			position: relative;
 			.input {
-				width: 500rpx;
-				height: 64rpx;
+				width: 300rpx;
+				height: 100%;
 				float: left;
-				line-height: 64rpx;
 				color: $text-color;
 				font-size: $font-size-24;
 			}
 			.icon-iconfonticonfontsousuo1 {
-				width: 64rpx;
-				height: 64rpx;
-				line-height: 64rpx;
 				text-align: center;
 				display: block;
 				font-size: $font-size-38;
@@ -400,13 +517,15 @@ page,
 			}
 		}
 		.search-btn {
-			width: 120rpx;
-			line-height: 64rpx;
 			text-align: center;
 			font-size: $font-size-28;
 			color: $color-system;
 			float: left;
 			background: #ffffff;
+			.icon-shaixuan {
+				font-size: 44rpx;
+				color: #333333;
+			}
 		}
 	}
 	.search-tab {
@@ -443,118 +562,133 @@ page,
 			}
 		}
 	}
+	.search-smalltab{
+		width: 100%;
+		height: 104rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		padding:20rpx 10rpx;
+		.tab-item {
+			width: 180rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			text-align: center;
+			color: $text-color;
+			font-size: $font-size-28;
+			float: left;
+			&.current {
+				background-color: $color-system;
+				color: #fff;
+				border-radius: 32rpx;
+			}
+		}
+	}
 }
 .club-main {
-	padding-top: 224rpx;
 	.list {
 		width: 100%;
-		height: 228rpx;
+		height: 268rpx;
 		padding: 24rpx;
 		box-sizing: border-box;
 		background: #ffffff;
 		position: relative;
 		border-bottom: 1px solid #ebebeb;
-		.list-logo {
-			width: 180rpx;
-			height: 180rpx;
-			float: left;
-			image {
-				width: 180rpx;
-				height: 180rpx;
-				border-radius: 8rpx;
-			}
-		}
-		.list-content {
-			width: 498rpx;
-			height: 180rpx;
-			float: right;
-			.list-name {
-				width: 100%;
-				height: 50rpx;
+		.list-cell-top{
+			width: 100%;
+			height: 140rpx;
+			box-sizing: border-box;
+			.list-logo {
+				width: 140rpx;
+				height: 140rpx;
 				float: left;
-				line-height: 50rpx;
-				text-align: left;
-				font-size: $font-size-26;
-				color: #333333;
-				.tags {
-					display: inline-block;
-					height: 36rpx;
-					box-sizing: border-box;
-					padding: 0 15rpx;
+				image {
+					width: 140rpx;
+					height: 140rpx;
 					border-radius: 8rpx;
-					background: #f0cb72;
-					font-size: $font-size-22;
-					color: #4e4539;
-					text-align: center;
-					line-height: 36rpx;
-					margin-left: 20rpx;
-					margin-top: 7rpx;
-					&.sv {
-						background: #333333;
-						color: #f0cb72;
-					}
-					&.xf {
-						background-color: #F94B4B;
-						color: #ffffff;
-					}
 				}
 			}
-			.list-ntel {
-				width: 100%;
-				height: 50rpx;
+			.list-content {
+				width: 498rpx;
+				height: 140rpx;
 				float: left;
-				line-height: 50rpx;
-				text-align: left;
-				font-size: $font-size-24;
-				color: #666666;
-				.list-link {
-					display: inline-block;
+				padding-left: 30rpx;
+				.list-name {
+					width: 100%;
+					height: 50rpx;
 					float: left;
-					margin-right: 40rpx;
+					line-height: 50rpx;
+					text-align: left;
+					font-size: $font-size-26;
+					color: #333333;
+					.tags {
+						display: inline-block;
+						height: 36rpx;
+						box-sizing: border-box;
+						padding: 0 15rpx;
+						border-radius: 8rpx;
+						background: #f0cb72;
+						font-size: $font-size-22;
+						color: #4e4539;
+						text-align: center;
+						line-height: 36rpx;
+						margin-left: 20rpx;
+						margin-top: 7rpx;
+						&.sv {
+							background: #333333;
+							color: #f0cb72;
+						}
+						&.xf {
+							background-color: #f94b4b;
+							color: #ffffff;
+						}
+					}
 				}
-				.list-texl {
-					display: inline-block;
+				.list-ntel {
+					width: 100%;
+					height: 50rpx;
 					float: left;
-				}
-			}
-			.list-opera {
-				width: 100%;
-				height: 60rpx;
-				display: flex;
-				color: #166ce1;
-				flex-direction: row;
-				align-items: center;
-				float: left;
-				margin-top: 20rpx;
-				.btn {
-					height: 60rpx;
-					box-sizing: border-box;
-					padding: 0 15rpx;
-					line-height: 60rpx;
-					border-radius: 30rpx;
+					line-height: 50rpx;
+					text-align: left;
 					font-size: $font-size-24;
-					color: $text-color;
-					text-align: center;
-					margin: 0 20rpx 0 0;
-					position: relative;
-					.opea-badge {
-						position: absolute;
-						right: -10rpx;
-						top: -20rpx;
-					}
-					&.org {
-						border: 1px solid #2769d5;
-						color: #2769d5;
-					}
-					&.gre {
-						border: 1px solid #e15616;
-						color: #e15616;
+					color: #666666;
+					.list-link {
+						display: inline-block;
+						float: left;
+						margin-right: 40rpx;
 					}
-					&.doc {
-						border: 1px solid #627386;
-						color: #627386;
+					.list-texl {
+						display: inline-block;
+						float: left;
 					}
 				}
+			}	
+		}
+		.list-cell-btn{
+			width: 100%;
+			height: 60rpx;
+			display: flex;
+			color: #166ce1;
+			flex-direction: row;
+			align-items: center;
+			float: left;
+			margin-top: 20rpx;
+			.btn {
+				height: 60rpx;
+				box-sizing: border-box;
+				padding: 0 20rpx;
+				line-height: 60rpx;
+				border-radius: 30rpx;
+				font-size: $font-size-24;
+				color: $text-color;
+				text-align: center;
+				margin: 0 20rpx 0 0;
+				position: relative;
+				border: 1px solid #999999;
+				.opea-badge {
+					position: absolute;
+					right: -10rpx;
+					top: -20rpx;
+				}
 			}
 		}
 	}
@@ -568,7 +702,7 @@ page,
 	bottom: 0px;
 	left: 0px;
 	right: 0px;
-    z-index: 99;
+	z-index: 99;
 	display: flex;
 	align-items: center;
 	justify-content: center;

+ 242 - 0
pages/seller/components/cm-club-drawer.vue

@@ -0,0 +1,242 @@
+<template>
+	<view class="drawer-content">
+		<!--右抽屉-->
+		<tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
+			<view
+				class="drawer-container clearfix"
+				scroll-y
+				:style="{
+					paddingTop: CustomBar - StatusBar + 8 + 'px',
+					paddingBottom: isIphoneX ? '180rpx' : '146rpx'
+				}"
+			>
+				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
+					<view class="drawer-title">更多筛选</view>
+					<view class="drawer-main">
+						<view class="drawer-main-name">组员:</view>
+						<view class="drawer-main-radiov">
+							<view class="drawer-main-radio">
+								<picker
+									@change="bindPickerChange(1, $event)"
+									:value="index"
+									:range="sellerActions"
+									range-key="name"
+								>
+									<input
+										class="input"
+										type="text"
+										disabled="false"
+										v-model="actionsText"
+										value=""
+										placeholder="请选择"
+									/>
+									<text class="iconfont icon-xiangyou"></text>
+								</picker>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="drawer-btn clear" @click="closeDrawer">取消</view>
+					<view class="drawer-btn comfrim" @click="handSearchConfirm">确定</view>
+				</view>
+			</view>
+		</tui-drawer>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'rightDrawer',
+	props: {
+		rightDrawer: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			StatusBar: this.StatusBar,
+			isIphoneX: this.$store.state.isIphoneX,
+			height: 0,
+			drawerH: 0, // 抽屉内部scrollview高度
+			categorys: [],
+			checkedCategorysList: [],
+			actionsText: '',
+			queryData: {
+				serviceProviderId: 0,
+			},
+			sellerActions: []
+		}
+	},
+	created() {
+		this.SetScrollHeight()
+		this.userSellerServiceTeam()
+	},
+	computed: {},
+	methods: {
+		async userSellerServiceTeam() {
+			//获取组员协销列表
+			const userInfo = await this.$api.getStorage()
+			this.SellerService.userSellerServiceTeam({ spId: userInfo.serviceProviderId })
+				.then(response => {
+					this.sellerActions = response.data
+				})
+				.catch(error => {
+					console.log('=========>获取组员协销列表异常')
+				})
+		},
+		bindPickerChange(type, e) {
+			//选择筛选条件
+			switch (type) {
+				case 1:
+					this.actionsText = this.sellerActions[e.target.value].name
+					this.queryData.serviceProviderId = this.sellerActions[e.target.value].serviceProviderId
+					break
+			}
+		},
+		closeDrawer() {
+			this.$parent.rightDrawer = false
+		},
+		handSearchConfirm() {
+			//确定筛选
+			this.$emit('handSearchConfirm', this.queryData)
+			this.$parent.rightDrawer = false
+		},
+		SetScrollHeight() {
+			let obj = {}
+			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			uni.getSystemInfo({
+				success: res => {
+					this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44
+					this.drawerH = res.windowHeight - uni.upx2px(180) - this.height
+				}
+			})
+			this.windowHeight = windowHeight - 1
+			this.scrollHeight = windowHeight - 1
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+/*screen*/
+.drawer-container {
+	width: 580rpx;
+	height: 100%;
+	padding: 80rpx 0;
+	overflow: hidden;
+	box-sizing: border-box;
+	background-color: #ffffff;
+	.drawer-title {
+		width: 100%;
+		height: 72rpx;
+		line-height: 72rpx;
+		box-sizing: border-box;
+		padding: 0 30rpx;
+		float: left;
+		background-color: #f7f7f7;
+		font-size: $font-size-26;
+		color: #333333;
+		font-weight: bold;
+		text-align: left;
+	}
+	.drawer-main {
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		float: left;
+		.drawer-main-name {
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			text-align: left;
+			font-size: $font-size-26;
+			color: #333333;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			font-weight: bold;
+		}
+		.drawer-main-radiov {
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			.drawer-main-radio {
+				width: 100%;
+				height: 80rpx;
+				box-sizing: border-box;
+				padding: 0 10rpx;
+				border: 1px solid rgba(0, 0, 0, 0.2);
+				border-radius: 6rpx;
+				margin-bottom: 30rpx;
+				position: relative;
+				&.btn {
+					border: none;
+					margin-top: 40rpx;
+				}
+				.input {
+					width: 100%;
+					height: 80rpx;
+					line-height: 80rpx;
+					float: left;
+					box-sizing: border-box;
+					font-size: $font-size-24;
+					color: #333333;
+					padding: 0 10rpx;
+					padding-right: 68rpx;
+				}
+				.iconfont {
+					width: 50rpx;
+					height: 80rpx;
+					display: block;
+					line-height: 80rpx;
+					text-align: center;
+					font-size: 30rpx;
+					color: #999999;
+					position: absolute;
+					right: 0;
+					top: 0;
+				}
+			}
+		}
+	}
+	.drawer-input {
+		width: 100%;
+		float: left;
+		box-sizing: border-box;
+		padding: 24rpx 10rpx 0 10rpx;
+		border: 1px solid rgba(0, 0, 0, 0.2);
+		border-radius: 4rpx;
+		position: relative;
+		background-color: #ffffff;
+		&.btn {
+			border: none;
+			display: flex;
+			position: fixed;
+			left: 0;
+			bottom: 0;
+		}
+		.drawer-btn {
+			width: 210rpx;
+			height: 84rpx;
+			border-radius: 42rpx;
+			background: $btn-confirm;
+			line-height: 84rpx;
+			text-align: center;
+			font-size: $font-size-26;
+			color: #ffffff;
+			flex: 1;
+			margin: 0 10rpx;
+			&.comfrim {
+				background: $btn-confirm;
+			}
+			&.clear {
+				background: #ffe6dc;
+				color: $color-system;
+			}
+		}
+	}
+}
+</style>

+ 244 - 0
pages/seller/components/cm-order-drawer.vue

@@ -0,0 +1,244 @@
+<template>
+	<view class="drawer-content">
+		<!--右抽屉-->
+		<tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
+			<view
+				class="drawer-container clearfix"
+				scroll-y
+				:style="{
+					paddingTop: CustomBar - StatusBar + 8 + 'px',
+					paddingBottom: isIphoneX ? '180rpx' : '146rpx'
+				}"
+			>
+				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
+					<view class="drawer-title">更多筛选</view>
+					<view class="drawer-main">
+						<view class="drawer-main-name">组员:</view>
+						<view class="drawer-main-radiov">
+							<view class="drawer-main-radio">
+								<picker
+									@change="bindPickerChange(1, $event)"
+									:value="index"
+									:range="sellerActions"
+									range-key="name"
+								>
+									<input
+										class="input"
+										type="text"
+										disabled="false"
+										v-model="actionsText"
+										value=""
+										placeholder="请选择"
+									/>
+									<text class="iconfont icon-xiangyou"></text>
+								</picker>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="drawer-btn clear" @click="closeDrawer">取消</view>
+					<view class="drawer-btn comfrim" @click="handSearchConfirm">确定</view>
+				</view>
+			</view>
+		</tui-drawer>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'rightDrawer',
+	props: {
+		rightDrawer: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			StatusBar: this.StatusBar,
+			isIphoneX: this.$store.state.isIphoneX,
+			manager: 0,
+			leaderId: 0,
+			height: 0,
+			drawerH: 0, // 抽屉内部scrollview高度
+			categorys: [],
+			checkedCategorysList: [],
+			actionsText: '',
+			queryData: {
+				serviceProviderId: 0
+			},
+			sellerActions: []
+		}
+	},
+	created() {
+		this.SetScrollHeight()
+		this.userSellerServiceTeam()
+	},
+	computed: {},
+	methods: {
+		async userSellerServiceTeam() {
+			//获取组员协销列表
+			const userInfo = await this.$api.getStorage()
+			this.SellerService.userSellerServiceTeam({ spId: userInfo.serviceProviderId })
+				.then(response => {
+					this.sellerActions = response.data
+				})
+				.catch(error => {
+					console.log('=========>获取组员协销列表异常')
+				})
+		},
+		bindPickerChange(type, e) {
+			//选择筛选条件
+			switch (type) {
+				case 1:
+					this.actionsText = this.sellerActions[e.target.value].name
+					this.queryData.serviceProviderId = this.sellerActions[e.target.value].serviceProviderId
+					break
+			}
+		},
+		closeDrawer() {
+			this.$parent.rightDrawer = false
+		},
+		handSearchConfirm() {
+			//确定筛选
+			this.$emit('handSearchConfirm', this.queryData)
+			this.$parent.rightDrawer = false
+		},
+		SetScrollHeight() {
+			let obj = {}
+			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			uni.getSystemInfo({
+				success: res => {
+					this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44
+					this.drawerH = res.windowHeight - uni.upx2px(180) - this.height
+				}
+			})
+			this.windowHeight = windowHeight - 1
+			this.scrollHeight = windowHeight - 1
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+/*screen*/
+.drawer-container {
+	width: 580rpx;
+	height: 100%;
+	padding: 80rpx 0;
+	overflow: hidden;
+	box-sizing: border-box;
+	background-color: #ffffff;
+	.drawer-title {
+		width: 100%;
+		height: 72rpx;
+		line-height: 72rpx;
+		box-sizing: border-box;
+		padding: 0 30rpx;
+		float: left;
+		background-color: #f7f7f7;
+		font-size: $font-size-26;
+		color: #333333;
+		font-weight: bold;
+		text-align: left;
+	}
+	.drawer-main {
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		float: left;
+		.drawer-main-name {
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			text-align: left;
+			font-size: $font-size-26;
+			color: #333333;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			font-weight: bold;
+		}
+		.drawer-main-radiov {
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			.drawer-main-radio {
+				width: 100%;
+				height: 80rpx;
+				box-sizing: border-box;
+				padding: 0 10rpx;
+				border: 1px solid rgba(0, 0, 0, 0.2);
+				border-radius: 6rpx;
+				margin-bottom: 30rpx;
+				position: relative;
+				&.btn {
+					border: none;
+					margin-top: 40rpx;
+				}
+				.input {
+					width: 100%;
+					height: 80rpx;
+					line-height: 80rpx;
+					float: left;
+					box-sizing: border-box;
+					font-size: $font-size-24;
+					color: #333333;
+					padding: 0 10rpx;
+					padding-right: 68rpx;
+				}
+				.iconfont {
+					width: 50rpx;
+					height: 80rpx;
+					display: block;
+					line-height: 80rpx;
+					text-align: center;
+					font-size: 30rpx;
+					color: #999999;
+					position: absolute;
+					right: 0;
+					top: 0;
+				}
+			}
+		}
+	}
+	.drawer-input {
+		width: 100%;
+		float: left;
+		box-sizing: border-box;
+		padding: 24rpx 10rpx 0 10rpx;
+		border: 1px solid rgba(0, 0, 0, 0.2);
+		border-radius: 4rpx;
+		position: relative;
+		background-color: #ffffff;
+		&.btn {
+			border: none;
+			display: flex;
+			position: fixed;
+			left: 0;
+			bottom: 0;
+		}
+		.drawer-btn {
+			width: 210rpx;
+			height: 84rpx;
+			border-radius: 42rpx;
+			background: $btn-confirm;
+			line-height: 84rpx;
+			text-align: center;
+			font-size: $font-size-26;
+			color: #ffffff;
+			flex: 1;
+			margin: 0 10rpx;
+			&.comfrim {
+				background: $btn-confirm;
+			}
+			&.clear {
+				background: #ffe6dc;
+				color: $color-system;
+			}
+		}
+	}
+}
+</style>

+ 164 - 0
pages/seller/components/cm-seller-address.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="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  src="../../../static/temp/line@3x.png" mode=""></image>
+	</view>
+</template>
+
+<script>
+	import { mapState, mapMutations } from 'vuex'	
+	export default{
+		name:"address",
+		props:{
+			addressData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				initData:''
+			}
+		},
+		created(){
+			this.initData = this.addressData;
+		},
+		computed: {
+			...mapState(['isManage'])
+		},
+		methods:{
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	.address-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		// border-top: 1px solid #F8F8F8;
+		image{
+			float: left;
+			width: 100%;
+			height: 6rpx;
+		}
+	}
+	.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: 46rpx;
+			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;
+		}
+		.a-bg {
+			position: absolute;
+			left: 0;
+			bottom: 0;
+			display: block;
+			width: 100%;
+			height: 5rpx;
+		}
+	}
+</style>

+ 269 - 0
pages/seller/components/cm-seller-popup.vue

@@ -0,0 +1,269 @@
+<template name="coupon">
+	<view class="coupon-template">
+		<!-- 选择机构 -->
+		<tui-bottom-popup :radius="true" :show="show" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="title">分配销售</view>
+				<view class="title-text">请选择一个销售人员进行分配</view>
+				<view class="tui-popup-main coupon">
+					<scroll-view class="tui-popup-scroll" scroll-y="true">
+						<view
+							v-for="(seller, index) in dataList"
+							:key="index"
+							class="list"
+							@click.stop="checkedSeller(index)"
+						>
+							<view class="list-cell-le">
+								{{ seller.name  }}
+							</view>
+							<view class="list-cell-btn">
+								<view
+									class="checkbox iconfont"
+									:class="[seller.ischecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+								>
+								</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-flex-1"> <view class="tui-button" @click="confirmSeller">确定</view> </view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'cm-goods-popup',
+	props: {
+		show: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			checkedIndex: 0,
+			isShowClose: false,
+			dataList: []
+		}
+	},
+	created() {
+		this.userClubChoseList()
+	},
+	methods: {
+		async userClubChoseList() {
+			const userInfo = await this.$api.getStorage()
+			this.SellerService.userClubChoseList({ spId : userInfo.serviceProviderId })
+				.then(response => {
+					let data = response.data
+					if (data && data.length > 0) {
+						 this.dataList = data.map((el,index)=>{
+							el.ischecked = false
+							return el
+						})
+					}
+					
+				})
+				.catch(error => {
+					console.log('获取可分配协销列表异常')
+				})
+		},
+		checkedSeller(idx) {
+			// 选择协销
+			this.checkedIndex = idx
+			this.dataList.forEach((el, index) => {
+				if (this.checkedIndex == index) {
+					el.ischecked = !el.ischecked
+				} else {
+					el.ischecked = false
+				}
+			})
+		},
+		hidePopup(){
+			this.$parent.isSellerpopup = false
+		},
+		confirmSeller() {
+			let sellerData = null
+			let checkedData = false
+			this.dataList.forEach((el, index) => {
+				if (el.ischecked) {
+					sellerData = el
+					checkedData = true
+				}
+			})
+			if(!checkedData){
+				this.$util.msg('请选择一个协销进行分配~', 2000)
+				return
+			}
+			this.$emit('handleChoiceaSeller', sellerData)
+			this.$parent.isSellerpopup = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.coupon-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.coupon-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.text-coupon {
+			display: inline-block;
+			float: right;
+			padding-right: 30rpx;
+			line-height: 88rpx;
+			font-size: 28rpx;
+			color: #f94b4b;
+		}
+		.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 32rpx 0 32rpx;
+	.title {
+		font-size: $font-size-32;
+		color: $text-color;
+		line-height: 68rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 68rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+	}
+	.title-text {
+		width: 100%;
+		height: 66rpx;
+		line-height: 66rpx;
+		padding: 0 15rpx;
+		background: #FEF6F1;
+		box-sizing: border-box;
+		float: left;
+		font-size: 26rpx;
+		color: #e15616;
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		padding-top: 10rpx;
+		.tui-popup-scroll {
+			width: 100%;
+			height: 660rpx;
+			.list {
+				width: 100%;
+				height: 100rpx;
+				box-sizing: border-box;
+				background-size: cover;
+				border-bottom: 1px solid #e1e1e1;
+				.list-cell-le {
+					height: 100%;
+					line-height: 100rpx;
+					box-sizing: border-box;
+					float: left;
+					text-align: left;
+					font-size: $font-size-26;
+					color: #333333;
+				}
+				.list-cell-btn {
+					width: 40rpx;
+					height: 100rpx;
+					line-height: 100rpx;
+					float: right;
+					.checkbox {
+						width: 40rpx;
+						line-height: 128rpx;
+						float: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+						font-size: $font-size-34;
+						&.icon-weixuanze {
+							color: #b2b2b2;
+						}
+						&.icon-yixuanze {
+							color: #e15616;
+						}
+					}
+				}
+			}
+		}
+		.tui-popup-coupon {
+			width: 100%;
+			height: 500rpx;
+			box-sizing: border-box;
+			padding: 30rpx 20rpx;
+			.tui-popup-h1 {
+				width: 100%;
+				height: 66rpx;
+				display: flex;
+				align-items: center;
+				.tui-popup-text {
+					flex: 1;
+					height: 66rpx;
+					line-height: 66rpx;
+					font-size: $font-size-30;
+					color: #333333;
+					&.red {
+						color: #f94b4b;
+					}
+					&.bold {
+						font-weight: bold;
+					}
+					&.left {
+						text-align: left;
+					}
+					&.right {
+						text-align: right;
+					}
+				}
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button {
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #ffffff;
+			font-size: $font-size-28;
+			border-radius: 44rpx;
+		}
+	}
+}
+</style>

+ 733 - 0
pages/seller/order/order-club-details.vue

@@ -0,0 +1,733 @@
+<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>
+		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
+			<view class="status-text">
+				<view class="view-type">{{ information.status | TextFormat }}</view>
+				<view class="status-visible"> {{ information.orderSeen == 2 ? '订单对机构不可见' : '订单对机构可见' }} </view>
+				<view class="Rebate " v-if="information.rebateFlag == 1">返佣</view>
+				<text class="bage-name" v-if="information.serviceName">【{{ information.serviceName ? information.serviceName : '' }}】</text>
+				<text class="bage-buss btn" v-if="information.orderSubmitType == 3 || information.orderSubmitType == 4"
+					>协销</text
+				>
+				<text
+					class="bage-auto btn"
+					v-if="
+						information.orderSubmitType == 0 ||
+							information.orderSubmitType == 1 ||
+							information.orderSubmitType == 2
+					"
+					>自主</text
+				>
+			</view>
+			<!-- 地址选择 -->
+			<order-address
+				ref="orderAddress"
+				v-if="isRequest && !rechargeGoods"
+				:addressData="addressData"
+			></order-address>
+			<!-- 商品 -->
+			<goods-list
+				ref="goods"
+				v-if="isRequest"
+				:shopOrderData="shopOrderData"
+				:information="information"
+				@popupClick="hanldePopupFn"
+			></goods-list>
+			<!-- 订单信息 -->
+			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<!-- 发票信息 -->
+			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<!-- 支付记录 -->
+			<payment-record
+				ref="payment"
+				v-if="isRequest"
+				:discernReceiptList="discernReceiptList"
+				:receiptAmount="receiptAmount"
+			></payment-record>
+			<!-- 退款记录 -->
+			<refund-record
+				ref="refund"
+				v-if="!isManage"
+				:returnedPurchaseList="returnedPurchaseList"
+				:returnedPurchaseFee="returnedPurchaseFee"
+			></refund-record>
+			<view
+				class="clause"
+				v-if="information.secondHandOrderFlag != 1"
+				@click="openclauseConten(clauseData.id)"
+				:class="clauseData.name == '无条款' ? 'noclick' : ''"
+			>
+				售后条款:<label class="text" :class="clauseData.name == '无条款' ? 'color-bg' : ''">{{
+					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>
+		<!-- 促销活动弹窗 -->
+		<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>
+	</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/cm-module/modelAlert/sellerShareAlert.vue' //分享弹窗
+import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
+import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+
+export default {
+	components: {
+		headerBack,
+		orderInformation,
+		orderAddress,
+		invoiceTent,
+		goodsList,
+		paymentRecord,
+		refundRecord,
+		orderButton,
+		shareAlert,
+		orderModel,
+		activiPopup
+	},
+	data() {
+		return {
+			nvabarData: {
+				//顶部自定义导航
+				showCapsule: 1, // 是否显示左上角图标   1表示显示    0表示不显示
+				title: '订单详情' // 导航栏 中间的标题
+			},
+			state: 0,
+			userId: '',
+			orderId: '',
+			clubUserId: 0,
+			serviceProviderId: '', //协销ID
+			shareCode: '', //分享码
+			shareType: '', //分享登录页过来记录的状态
+			cellPhone: '', //客服电话
+			payStatus: 0,
+			btnStatus: 0, //按钮组件状态
+			isRequest: false, //是否加载完成渲染子组件
+			isOrderShare: false,
+			isShareModal: false,
+			isShareType:2,
+			isPayModel: false,
+			modelType: 0,
+			ableUserMoney: '', //机构余额
+			payModelData: {},
+			addressData: {}, //地址信息初始化
+			information: {}, //订单信息初始化
+			shopOrderData: {}, //商品信息初始化
+			orderInvoice: {}, //发票信息初始化
+			returnedPurchaseList: {}, //退款信息初始化
+			discernReceiptList: {}, //支付信息初始化
+			receiptAmount: 0, //支付金额
+			returnedPurchaseFee: 0, //退款金额
+			navbarHeight: '',
+			rechargeGoods: false,
+			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+			systeminfo: this.setSysteminfo(), //获取设备信息
+			isIphoneX: this.$store.state.isIphoneX,
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			popupShow: false,
+			handlerPros: {},
+			clauseData: {},
+			showAgan: false,
+			failList: [], // 再来一单可购买商品
+			promptitle: '',
+			aganOrderId: 0 // 再来一单商品id
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		this.shareType = option.type
+		this.orderId = option.orderId
+		this.clubUserId = option.userId
+		if (this.shareType === 'share') {
+			this.listType = 0
+			this.isOrderShare = true
+		} else if (option.type === 'confim' || option.type === 'search' || option.type === 'cash') {
+			this.listType = 0
+		} else {
+			this.listType = option.listType
+		}
+		this.getHeaderTopHeight()
+		this.initOrderDetaileData()
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		},
+		TextFormat(status) {
+			//处理金额
+			let HtmlText,
+				typeTextObject = {
+					0: '待确认',
+					4: '交易完成',
+					5: '订单完成',
+					6: '已关闭',
+					7: '交易全退',
+					77: '交易全退',
+					11: '待付款待发货',
+					12: '待付款部分发货',
+					13: '待付款已发货',
+					21: '部分付款待发货',
+					22: '部分付款部分发货',
+					23: '部分付款已发货',
+					31: '已付款待发货',
+					32: '已付款部分发货',
+					33: '已付款已发货',
+					111: '待付款待发货'
+				}
+
+			Object.keys(typeTextObject).forEach(key => {
+				if (key == status) {
+					HtmlText = typeTextObject[key]
+				}
+			})
+			return HtmlText
+		}
+	},
+	computed: {
+		...mapState(['isManage'])
+	},
+	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) + '...'
+					}
+				})
+				.catch(error => {
+					this.$util.modal('提示', '订单查询失败,请稍后重试~', '确定', '', false, () => {
+						this.$api.switchTabTo('/pages/seller/index/index')
+					})
+				})
+		},
+		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 })
+					.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
+			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
+			let btnPosi = {
+				// 胶囊实际位置,坐标信息不是左上角原点
+				height: headerPosi.height,
+				width: headerPosi.width,
+				// 胶囊top - 状态栏高度
+				top: headerPosi.top - statusBarHeight,
+				// 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+				bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+				// 屏幕宽度 - 胶囊right
+				right: this.systeminfo.screenWidth - headerPosi.right
+			}
+			this.navbarHeight = headerPosi.bottom + btnPosi.bottom // 原胶囊bottom + 现胶囊bottom
+		},
+		setHeaderBtnPosi() {
+			// 获得胶囊按钮位置信息
+			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+			return headerBtnPosi
+		},
+		setSysteminfo() {
+			let systeminfo
+			uni.getSystemInfo({
+				// 获取设备信息
+				success: res => {
+					systeminfo = res
+				}
+			})
+			return systeminfo
+		}
+	},
+	onShow() {
+		this.$api.getStorage().then(resolve => {
+			this.serviceProviderId = resolve.serviceProviderId ? resolve.serviceProviderId : 0
+		})
+	}
+}
+</script>
+
+<style lang="scss">
+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-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 {
+			float: left;
+			font-weight: bold;
+		}
+		.balabce-t-ri {
+			float: right;
+			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;
+				}
+			}
+		}
+	}
+	.balabce-b {
+		width: 100%;
+		float: left;
+		overflow: hidden;
+		.balabce-b-text {
+			width: 100%;
+			line-height: 58rpx;
+			font-size: $font-size-24;
+			color: #ff2a2a;
+			text-align: right;
+			float: right;
+		}
+		&.balabce-b--hide {
+			padding: 0 0;
+			height: 0px;
+			line-height: 0px;
+		}
+	}
+}
+.clause {
+	float: right;
+	font-size: 24rpx;
+	color: #999999;
+	margin-top: 60rpx;
+	margin-right: 24rpx;
+	&.noclick {
+		pointer-events: none;
+	}
+	.text {
+		color: #1890f9;
+		&.color-bg {
+			color: #333333;
+		}
+	}
+}
+.status-text {
+	overflow: hidden;
+	padding: 24rpx;
+	background: #fff;
+	font-size: $font-size-26;
+	.view-type {
+		float: left;
+		color: #ff2a2a;
+	}
+	.status-visible{
+		float: left;
+		color: #999999;
+		margin-left: 20rpx;
+	}
+	.bage-buss {
+		display: inline-block;
+		width: 72rpx;
+		height: 32rpx;
+		background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+		border-radius: 6rpx;
+		line-height: 32rpx;
+		text-align: center;
+		color: #ffffff;
+		float: right;
+		font-size: $font-size-24;
+	}
+	.bage-auto {
+		display: inline-block;
+		width: 72rpx;
+		height: 32rpx;
+		background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+		border-radius: 6rpx;
+		line-height: 32rpx;
+		text-align: center;
+		color: #ffffff;
+		float: right;
+		font-size: $font-size-24;
+	}
+	.bage-name{
+		line-height: 32rpx;
+		display: inline-block;
+		color: #999999;
+		float: right;
+		font-size: $font-size-24;
+	}
+	.Rebate {
+		display: inline-block;
+		width: 72rpx;
+		height: 32rpx;
+		background: #ff7a51;
+		border-radius: 6rpx;
+		line-height: 32rpx;
+		text-align: center;
+		color: #ffffff;
+		float: right;
+		font-size: $font-size-24;
+		margin-left: 20rpx;
+	}
+}
+.aganBj {
+	position: fixed;
+	left: 0;
+	top: 0;
+	bottom: 0;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(0, 0, 0, 0.5);
+	z-index: 999999;
+	.alertAgan {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+		width: 580rpx;
+		background-color: #fff;
+		border-radius: 16rpx;
+		.title {
+			font-size: 30rpx;
+			color: #333333;
+			line-height: 42rpx;
+			padding: 30rpx;
+			display: block;
+		}
+		.goods {
+			padding: 0 30rpx;
+			.list {
+				padding: 10px 0;
+				border-bottom: 1rpx solid #e1e1e1;
+				margin: 10rpx 0;
+				.image-left {
+					width: 86rpx;
+					height: 86rpx;
+					border: 2rpx solid #e1e1e1;
+					border-radius: 6rpx;
+					display: inline-block;
+					vertical-align: middle;
+				}
+				.name-right {
+					display: inline-block;
+					width: 416rpx;
+					margin-left: 15rpx;
+					font-size: 26rpx;
+					color: #666666;
+					vertical-align: middle;
+					word-break: break-all;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					display: -webkit-inline-box;
+					-webkit-line-clamp: 2;
+					-webkit-box-orient: vertical;
+				}
+			}
+		}
+		.BtnAll {
+			margin-top: 30rpx;
+			.btn {
+				display: inline-block;
+				width: 290rpx;
+				height: 90rpx;
+				line-height: 90rpx;
+				text-align: center;
+				&.closebtn {
+					border-radius: 0px 0px 0px 10px;
+					color: #999999;
+					background: #efefef;
+				}
+				&.cancel {
+					border-radius: 0px 0px 8px 0px;
+					background: $btn-confirm;
+					color: #fff;
+				}
+			}
+		}
+	}
+}
+</style>

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

@@ -628,6 +628,13 @@ page {
 		float: right;
 		font-size: $font-size-24;
 	}
+	.bage-name{
+		line-height: 32rpx;
+		display: inline-block;
+		color: #999999;
+		float: right;
+		font-size: $font-size-24;
+	}
 	.Rebate {
 		display: inline-block;
 		width: 72rpx;

+ 22 - 7
pages/seller/order/order-historylist.vue

@@ -210,6 +210,7 @@
 								<!-- 底部button -->
 								<order-button
 									ref="orderButton"
+									v-if="clubSpId === serviceProviderId"
 									:status="order.status"
 									:order = "order"
 									:rechargeGoods="order.rechargeGoods"
@@ -257,6 +258,7 @@
 </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 tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
@@ -291,7 +293,7 @@ export default {
 			],
 			screenTabBar: [
 				{ type: 0, text: '全部订单' },
-				{ type: 1, text: '机构自主订单' },
+				{ type: 1, text: '自主订单' },
 				{ type: 2, text: '协销订单' }
 			],
 			winHeight: '', //窗口高度
@@ -300,6 +302,7 @@ export default {
 			currentTab: 0, //预设当前项的值
 			screenTab: 0, //筛选预设当前项的值
 			scrollLeft: 0, //tab标题的滚动条位置
+			clubSpId:0, // 机构协销Id
 			serviceProviderId: 0, //协销用户ID
 			orderData: [],
 			btnClubUserID: 0,
@@ -323,12 +326,14 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0
+			aganOrderId: 0,
+			authType:0,
 		}
 	},
 	onLoad(option) {
 		let self = this
 		this.currentTab = option.listType
+		this.authType = option.authType
 		this.initDataInfo()
 		uni.getSystemInfo({
 			//  高度自适应
@@ -350,6 +355,7 @@ export default {
 			const userInfo = await this.$api.getStorage()
 			this.clubId = clubInfo.clubId ? clubInfo.clubId : 0
 			this.userId = clubInfo.userId ? clubInfo.userId : 0
+			this.clubSpId = clubInfo.serviceProviderId
 			this.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
 			this.getOrderDatainit(this.currentTab)
 		},
@@ -495,11 +501,20 @@ export default {
 		detail(order) {
 			//订单详情跳转
 			this.isModalLayer = true
-			this.$api.navigateTo(
-				`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-					order.userId
-				}`
-			)
+			if(this.authType === '1' || this.authType === '2'){
+				this.$api.navigateTo(
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+						order.userId
+					}`
+				)
+			}else{
+				this.$api.navigateTo(
+					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+						order.userId
+					}`
+				)
+			}
+			
 		},
 		handButtonConfirm(data) {
 			//获取点击

+ 94 - 38
pages/seller/order/order-list.vue

@@ -7,6 +7,7 @@
 			:headerBtnPosi="headerBtnPosi"
 			:isDelete="isDelete"
 			:isUsertype="1"
+			:screenTab="screenTab"
 			@goSearchPath="handlSearchPath"
 		>
 		</header-back>
@@ -23,7 +24,7 @@
 					<text class="tab-bar-title">{{ item.text }}</text>
 				</view>
 			</scroll-view>
-			<view class="tab-screen">
+			<scroll-view scroll-x scroll-with-animation class="tab-screen" :scroll-left="scrollLeft">
 				<view
 					v-for="(item, index) in screenTabBar"
 					:key="index"
@@ -33,7 +34,15 @@
 					@tap.stop="onClickScreenTab(index)"
 					>{{ item.text }}</view
 				>
-			</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"
@@ -74,8 +83,11 @@
 								<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" 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>
@@ -221,6 +233,7 @@
 								<!-- 底部button -->
 								<order-button
 									ref="orderButton"
+									v-if="screenTab != 3"
 									:status="order.status"
 									:order="order"
 									:orderId="order.orderId"
@@ -245,10 +258,12 @@
 			</swiper-item>
 		</swiper>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" 
-					:orderId="btnoRderID" 
-					:shareType="isShareType"
-					@shareConfirm="onShareAppMessage">
+		<share-alert
+			v-if="isShareModal"
+			:orderId="btnoRderID"
+			:shareType="isShareType"
+			@shareConfirm="onShareAppMessage"
+		>
 		</share-alert>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModalLayer"></modal-layer>
@@ -267,10 +282,19 @@
 				</view>
 			</view>
 		</view>
+		<!-- 筛选抽屉 -->
+		<cm-orderDrawer
+			ref="screendrawer"
+			v-if="rightDrawer"
+			:rightDrawer="rightDrawer"
+			@handSearchConfirm="handSearchConfirmData"
+		>
+		</cm-orderDrawer>
 	</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 tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
@@ -280,6 +304,7 @@ import orderButton from './components/sellerOrderButton' //操作按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
 import shareAlert from '@/components/cm-module/modelAlert/sellerShareAlert' //分享弹窗
+import cmOrderDrawer from '../components/cm-order-drawer' //筛选抽屉
 
 export default {
 	components: {
@@ -291,7 +316,8 @@ export default {
 		orderButton,
 		tuiSkeleton,
 		modalLayer,
-		shareAlert
+		shareAlert,
+		cmOrderDrawer
 	},
 	data() {
 		return {
@@ -304,9 +330,9 @@ export default {
 				{ listType: 5, text: '退货/款', orderList: [] }
 			],
 			screenTabBar: [
-				{ type: 0, text: '全部订单' },
-				{ type: 1, text: '机构自主订单' },
-				{ type: 2, text: '协销订单' }
+				{ type: 0, text: '全部订单(我的)' },
+				{ type: 1, text: '自主订单(我的)' },
+				{ type: 2, text: '协销订单(我的)' }
 			],
 			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
 			systeminfo: this.setSysteminfo(), //获取设备信息
@@ -314,7 +340,7 @@ export default {
 				//顶部自定义导航
 				showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 				showSearch: 1,
-				title: '我的订单 ' // 导航栏中间的标题
+				title: ' ' // 导航栏中间的标题
 			},
 			CustomBar: this.CustomBar, // 顶部导航栏高度
 			winHeight: '', //窗口高度
@@ -327,12 +353,13 @@ export default {
 			btnoRderID: 0, //点击按钮传入的的订单ID
 			pageNum: 1, //页数
 			pageSize: 10, //条数
+			groupServiceId: 0,
 			scrollTop: 0,
 			deteleType: '',
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
-			isShareType:2,
+			isShareType: 2,
 			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
@@ -345,7 +372,9 @@ export default {
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
 			aganOrderId: 0, // 再来一单商品id
-			userId: 0
+			userId: 0,
+			manager: 0,
+			rightDrawer: false //控制筛选抽屉
 		}
 	},
 	onLoad(option) {
@@ -362,9 +391,6 @@ export default {
 				self.winHeight = calc - self.CustomBar - 82
 			}
 		})
-		this.$api.getStorage().then(resolve => {
-			this.userId = resolve.userId ? resolve.userId : 0
-		})
 	},
 	filters: {
 		NumFormat(value) {
@@ -372,7 +398,15 @@ export default {
 			return Number(value).toFixed(2)
 		}
 	},
+	computed: {
+		...mapState(['isManage'])
+	},
 	methods: {
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.manager = userInfo.manager ? userInfo.manager : 0
+			this.getOrderDatainit(this.currentTab)
+		},
 		// 滚动切换标签样式
 		onChange(e) {
 			let index = e.target.current || e.detail.current
@@ -439,7 +473,8 @@ export default {
 						orderSubmitType: this.screenTab,
 						serviceProviderId: this.serviceProviderId,
 						pageNum: 1,
-						pageSize: this.pageSize
+						pageSize: this.pageSize,
+						groupServiceId: this.groupServiceId
 					})
 						.then(response => {
 							let data = response.data
@@ -450,7 +485,7 @@ export default {
 									return item
 								})
 								orderItem.orderList = []
-								orderList.forEach(item => {
+								orderList.forEach(item => { 
 									orderItem.orderList.push(item)
 								})
 								//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
@@ -467,6 +502,8 @@ export default {
 										this.nomoreText = '已至底部'
 									}
 								}
+							}else{
+								orderItem.orderList = []
 							}
 						})
 						.catch(error => {
@@ -482,7 +519,8 @@ export default {
 				orderSubmitType: this.screenTab,
 				serviceProviderId: this.serviceProviderId,
 				pageNum: (this.pageNum += 1),
-				pageSize: this.pageSize
+				pageSize: this.pageSize,
+				groupServiceId: this.groupServiceId
 			})
 				.then(response => {
 					let orderItem = this.orderTabBar[index]
@@ -516,11 +554,19 @@ export default {
 		detail(order) {
 			//订单详情跳转
 			this.isModalLayer = true
-			this.$api.navigateTo(
-				`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-					order.userId
-				}`
-			)
+			if(this.screenTab === 3){
+				this.$api.navigateTo(
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+						order.userId
+					}`
+				)
+			}else{
+				this.$api.navigateTo(
+					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+						order.userId
+					}`
+				)
+			}
 		},
 		handButtonConfirm(data) {
 			//获取点击
@@ -640,6 +686,11 @@ export default {
 					})
 			})
 		},
+		handSearchConfirmData(data) {
+			//确定筛选
+			this.groupServiceId = data.serviceProviderId
+			this.getOrderDatainit(this.currentTab)
+		},
 		handlSearchPath() {
 			this.$api.navigateTo('/pages/seller/order/search-order')
 		},
@@ -740,7 +791,7 @@ export default {
 	},
 	onShow() {
 		this.isModalLayer = false
-		this.getOrderDatainit(this.currentTab)
+		this.initGetStotage()
 	}
 }
 </script>
@@ -763,30 +814,30 @@ page {
 	z-index: 99;
 	background: #ffffff;
 	.tab-screen {
-		height: 60rpx;
-		width: 702rpx;
-		padding: 10rpx 24rpx;
+		width: 100%;
+		box-sizing: border-box;
+		background: #fff;
+		white-space: nowrap;
+		height: 80rpx;
+		padding: 10rpx 0;
 		border-top: 1px solid #f7f7f7;
 		border-bottom: 1px solid #f7f7f7;
-		display: flex;
-		justify-content: center;
-		justify-items: center;
+		overflow: hidden;
 		.tab-screen-item {
-			flex: 1;
+			min-width: 100rpx;
 			height: 60rpx;
 			border-radius: 10rpx;
 			background: #f7f7f7;
-			margin-right: 22rpx;
-			line-height: 66rpx;
+			margin: 0 15rpx;
+			padding: 0 15rpx;
+			line-height: 60rpx;
 			font-size: $font-size-28;
 			color: #333333;
 			text-align: center;
+			display: inline-block;
 			&.active {
 				color: $color-system;
 			}
-			&:last-child {
-				margin-right: 0;
-			}
 		}
 	}
 }
@@ -879,6 +930,11 @@ page {
 				color: #f0cb72;
 			}
 		}
+		.name {
+			float: right;
+			font-size: 26rpx;
+			color: #999999;
+		}
 	}
 	.order-title-t {
 		width: 100%;

+ 37 - 2
services/sellse.service.js

@@ -114,7 +114,7 @@ export default class SellerService {
         return this.AjaxService.get({ 
             url:'/user/club/recordLinkage', 
             data, 
-            isLoading: true ,
+            isLoading: false ,
         })
     }
     /**
@@ -336,6 +336,41 @@ export default class SellerService {
     }
     // 协销购物车清空失效列表
     SellerCartdelete (data = {}) {
-        return this.AjaxService.post({ url:'/seller/deleteSellerCart', data, isLoading: true })
+        return this.AjaxService.post({ 
+            url:'/seller/deleteSellerCart', 
+            data, isLoading: true ,
+        })
+    }
+    /**
+	 *@获取可分配协销列表
+	 */
+    userClubChoseList (data = {}) {
+	    return this.AjaxService.get({ 
+	        url:'/user/club/chose/list', 
+	        data, 
+	        isLoading: false ,
+	    })
     }
+    /**
+	 *@获取组员协销列表
+	 */
+    userSellerServiceTeam (data = {}) {
+	    return this.AjaxService.get({ 
+	        url:'/user/seller/service/team', 
+	        data, 
+	        isLoading: false ,
+	    })
+    }
+    /**
+	 *@分配协销
+	 */
+    userClubChoseSales (data = {}) {
+	    return this.AjaxService.post({ 
+	        url:'/user/club/chose/sales', 
+	        data, 
+	        isLoading: true ,
+	           
+	    })
+    }
+	
 }

+ 9 - 1
store/index.js

@@ -20,7 +20,8 @@ const store = new Vuex.Store({
         isIphoneX: false,
         isActivity: false,
         isLoginType: 0,
-        isLoginProductId: 0
+        isLoginProductId: 0,
+        isManage: false,// 是否是管理员或者小组长
     },
     mutations: {
         login(state, provider) { //用户身份 1、协销 2、资质机构 3、供应商 4.个人机构
@@ -57,6 +58,13 @@ const store = new Vuex.Store({
             if (state.userInfo) {
                 state.clubType = provider.firstClubType
                 state.identity = provider.userIdentity
+                // 判断登录用户为协销 设置管理员组长权限
+                if(provider.userIdentity === 1){
+                    if(provider.manager>0 || provider.leaderId > 0){
+                        state.isManage = true
+                    }
+                }
+                // 判断以下公司账户设置部分权限
                 if (provider.userId == 5261 || provider.userId == 10947 || provider.userId == 11579) {
                     state.identity = 1
                 } else if (provider.firstClubType == 1) {