소스 검색

协销机构列表

zhengjinyi 1 년 전
부모
커밋
4f54ca88f1

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

@@ -32,7 +32,7 @@
 					<text class="iconfont icon-zhengpin"><text class="sm">正品保证</text></text>
 				</view>
 				<view class="item ce">
-					<text class="iconfont icon-jigou"><text class="sm">8000+机构</text></text>
+					<text class="iconfont icon-jigou"><text class="sm">12000+机构</text></text>
 				</view>
 				<view class="item ri">
 					<text class="iconfont icon-gongyingshang"><text class="sm">100+供应商</text></text>

+ 27 - 2
pages.json

@@ -281,7 +281,8 @@
                     "style": {
                         "navigationBarTitleText": "美业参谋"
                     }
-                }, {
+                },
+				{
                     "path": "supplier_more",
                     "style": {
                         "navigationBarTitleText": "美业参谋-更多"
@@ -775,6 +776,24 @@
 						"navigationBarTitleText": "资料详情"
 					}
 				},
+				{
+					"path": "club/club-board",
+					"style": {
+						"navigationBarTitleText": "机构看板"
+					}
+				},
+				{
+					"path": "club/club-active-details",
+					"style": {
+						"navigationBarTitleText": "机构活跃详情"
+					}
+				},
+				{
+					"path": "club/club-consult-details",
+					"style": {
+						"navigationBarTitleText": "机构填写咨询记录详情"
+					}
+				},
 				{
 					"path": "login/register",
 					"style": {
@@ -867,6 +886,12 @@
 						"navigationBarTitleText": "未注册客户咨询记录"
 					}
 				},
+				{
+					"path": "remarks/record-club-list",
+					"style": {
+						"navigationBarTitleText": "全部咨询记录"
+					}
+				},
 				{
 					"path": "remarks/add-record",
 					"style": {
@@ -936,7 +961,7 @@
                 {
                 	"path": "remarks/institutional-activity-analysis",
                 	"style": {
-                		"navigationBarTitleText": "机构活跃分析",
+                		"navigationBarTitleText": "机构活跃详情",
                         "enablePullDownRefresh": true,
                         "navigationStyle": "custom"
                 	}

+ 417 - 0
pages/seller/club/club-active-details.vue

@@ -0,0 +1,417 @@
+<template>
+	<view class="container club clearfix">
+		<view class="club-tabs">
+			<view class="btn edit" :class="tabCurrentIndex === 4 ? 'active': '' " @click.stop="handleClick(4)">活跃机构</view>
+			<view class="btn" :class="tabCurrentIndex === 5 ? 'active': '' " @click.stop="handleClick(5)">不活跃机构</view>
+		</view>
+		<view class="club-main">
+			<view v-if="isEmpty" class="club-main-empty">
+				<image
+					class="club-empty-image"
+					src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
+					mode="aspectFit"
+				></image>
+				<view class="txt">暂无机构数据</view>
+			</view>
+			<view v-else class="club-list">
+				<scroll-view scroll-y="true">
+					<view class="list" v-for="(club, index) in clubList" :key="index">
+						<view class="list-cell-top">
+							<view class="list-logo">
+								<image
+									:src="
+										club.headpic
+											? club.headpicx
+											: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
+									"
+									mode=""
+								></image>
+								<text class="list-id">编号:{{ club.newClubId }}</text>
+								<text class="list-tips">{{ club.userIdentity === 2 ? '资质机构' : '个人机构' }}</text>
+							</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>
+								<view class="list-tags">
+									<text
+										class="tags"
+										@click.stop="
+											this.$api.navigateTo('/pages/service/service?id=1041&title=标签说明')
+										"
+									>
+										{{ club.activeState }} <text class="iconfont icon-xiayibu"></text>
+									</text>
+									<text
+										class="tags"
+										@click.stop="
+											this.$api.navigateTo('/pages/service/service?id=1041&title=标签说明')
+										"
+									>
+										{{ club.customerValue }} <text class="iconfont icon-xiayibu"></text>
+									</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-if="tabSmallCurrentIndex !== 1">
+									<text class="list-link">{{ club.linkMan ? club.linkMan : '' }}</text>
+									<text class="list-texl" @click="handlePhone(club.contractMobile)">
+										{{ club.contractMobile ? club.contractMobile : '' }}
+									</text>
+								</view>
+								<view class="list-ntel" v-if="listQuery.type === 6">
+									<text class="list-link">分配时间:{{ club.providerTime | dateConversion }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black" />
+					<tui-nomore :visible="!pullUpOn" bgcolor="#f7f7f7" :text="nomoreText" />
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	spId: 0,
+	status: 90,
+	type: 4,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	data() {
+		return {
+			listQuery: Object.assign({}, defaultListQuery),
+			isEmpty: false,
+			nomoreText: '上拉显示更多',
+			hasNextPage: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			tabCurrentIndex: 4,
+			clubList: []
+		}
+	},
+	filters: {
+		dateConversion(val) {
+			const date = new Date(val)
+			const setZero = val => (val < 10 ? '0' + val : val)
+			return `${date.getFullYear()}-${setZero(date.getMonth() + 1)}-${setZero(date.getDate())} ${setZero(
+				date.getHours()
+			)}:${setZero(date.getMinutes())}:${setZero(date.getSeconds())}`
+		}
+	},
+	onLoad(option) {
+
+	},
+	computed: {
+		...mapState(['isManage'])
+	},
+	methods: {
+		async initGetStotage() {
+			// 初始化
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.spId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.getClubList()
+		},
+		async getClubList() {
+			try{
+				const res = await this.SellerService.getClubList(this.listQuery)
+				const data = res.data
+				const club = data.clubList
+				if (club.list && club.list.length > 0) {
+					this.hasNextPage = club.hasNextPage
+					this.clubList =club.list
+					this.isEmpty = false
+					this.pullFlag = false
+					setTimeout(() => {
+						this.pullFlag = true
+					}, 500)
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					} else {
+						this.pullUpOn = true
+						this.loadding = false
+						this.nomoreText = '已至底部'
+					}
+				} else {
+					this.isEmpty = true
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		async getOnReachBottomData() {
+			try{
+				const res = await this.SellerService.getClubList(this.listQuery)
+				const data = res.data
+				const club = data.clubList
+				this.hasNextPage = data.clubList.hasNextPage
+				this.clubList = this.clubList.concat(club.list)
+				this.pullFlag = false // 防上拉暴滑
+				setTimeout(() => {
+					this.pullFlag = true
+				}, 500)
+				if (this.hasNextPage) {
+					this.pullUpOn = false
+					this.nomoreText = '上拉显示更多'
+				} else {
+					this.pullUpOn = false
+					this.loadding = false
+					this.nomoreText = '已至底部'
+				}
+			}catch(error){
+				//TODO handle the exception
+				console.log('加载分页失败')
+			}
+		},
+		handleClick(index){
+			this.tabCurrentIndex = this.listQuery.type = index
+			this.getClubList()
+		},
+		// 拨打电话
+		handlePhone(phoneNumber) {
+			uni.makePhoneCall({
+				phoneNumber: phoneNumber //拨打电话
+			})
+		}
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.listQuery.pageNum++
+			this.getOnReachBottomData()
+		}
+	},
+	onShow() {
+		this.initGetStotage()
+	}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto;
+}
+page,
+.container {
+	/* padding-bottom: 120upx; */
+	width: 100%;
+	height: 100%;
+	background: #f7f7f7;
+}
+.club-tabs{
+	width: 100%;
+	height: 90rpx;
+	position: fixed;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	padding: 20rpx 0;
+	background-color: #ffffff;
+	.btn {
+		width: 50%;
+		line-height: 50rpx;
+		box-sizing: border-box;
+		text-align: center;
+		font-size: $font-size-34;
+		float: left;
+		color: #333333;
+		position: relative;
+		&::before{
+			content: '';
+			width: 100rpx;
+			height: 4rpx;
+			background-color: #ffffff;
+			position: absolute;
+			bottom: -20rpx;
+			left: 50%;
+			margin-left: -50rpx;
+		}
+		&.edit {
+			border-right: 1px solid #e1e1e1;
+		}
+		&.active{
+			color: #FF5B00;
+			&::before{
+				background-color: #FF5B00;
+			}
+		}
+	}
+}
+.club-main {
+	width: 100%;
+	height: 100%;
+	padding-top: 114rpx;
+	float: left;
+	.club-main-empty{
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		background-color: #ffffff;
+		.club-empty-image{
+			width: 300rpx;
+			height: 180rpx;
+			margin-bottom: 20rpx;
+		}
+		.txt{
+			font-size: 24rpx;
+			color: #666666;
+		}
+	}
+	.list {
+		width: 100%;
+		height: 200rpx;
+		padding: 24rpx;
+		box-sizing: border-box;
+		background: #ffffff;
+		position: relative;
+		border-bottom: 1px solid #ebebeb;
+		.list-cell-top {
+			width: 100%;
+			height: 140rpx;
+			box-sizing: border-box;
+			.list-logo {
+				width: 140rpx;
+				height: 140rpx;
+				float: left;
+				position: relative;
+				image {
+					width: 140rpx;
+					height: 140rpx;
+					border-radius: 8rpx;
+				}
+				.list-tips {
+					display: inline-block;
+					width: 100%;
+					height: 32rpx;
+					line-height: 32rpx;
+					background: rgba(0, 0, 0, 0.1);
+					color: #333;
+					position: absolute;
+					bottom: 0;
+					left: 0;
+					box-sizing: border-box;
+					text-align: left;
+					font-size: 20rpx;
+					padding-left: 4rpx;
+					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
+				}
+				.list-id {
+					display: inline-block;
+					width: 100%;
+					height: 32rpx;
+					line-height: 32rpx;
+					background: rgba(0, 0, 0, 0.1);
+					color: #333;
+					position: absolute;
+					top: 0;
+					left: 0;
+					box-sizing: border-box;
+					text-align: left;
+					font-size: 20rpx;
+					padding-left: 4rpx;
+					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
+				}
+			}
+			.list-content {
+				width: 560rpx;
+				height: 150rpx;
+				float: left;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+				.list-name {
+					width: 100%;
+					height: 50rpx;
+					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;
+						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-tags {
+					width: 100%;
+					height: 36rpx;
+					float: left;
+					line-height: 36rpx;
+					margin: 7rpx 0;
+					.tags {
+						display: inline-block;
+						height: 36rpx;
+						box-sizing: border-box;
+						padding: 0 8rpx 0 15rpx;
+						border-radius: 8rpx;
+						background: #faede5;
+						font-size: $font-size-22;
+						color: $color-system;
+						text-align: center;
+						line-height: 36rpx;
+						margin-right: 16rpx;
+						.icon-xiayibu {
+							font-size: 20rpx;
+							margin-left: 10rpx;
+						}
+					}
+				}
+				.list-ntel {
+					width: 100%;
+					height: 50rpx;
+					float: left;
+					line-height: 50rpx;
+					text-align: left;
+					font-size: $font-size-24;
+					color: #666666;
+					.list-link {
+						display: inline-block;
+						float: left;
+						margin-right: 12rpx;
+					}
+					.list-texl {
+						display: inline-block;
+						float: left;
+						text-decoration: underline;
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 305 - 0
pages/seller/club/club-board.vue

@@ -0,0 +1,305 @@
+<template>
+	<view class="container clearfix">
+		<tui-skeleton
+			v-if="skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="charts-content">
+				<!-- 机构活跃统计 -->
+				<view class="charts-box charts-box0" id="charts-box0">
+					<echart-active
+						ref="echart-active"
+						:clubId="clubInfo.clubId"
+						:totalAmount="totalData.orderTotalAmount"
+						:totalNum="totalData.orderTotal"
+						v-if="isRequest"
+					/>
+				</view>
+				<!-- 机构填写咨询记录统计 -->
+				<view class="charts-box charts-box1" id="charts-box1">
+					<echart-consult
+						ref="echart-consult"
+						:clubId="clubInfo.clubId"
+						:totalAmount="totalData.orderTotalAmount"
+						:totalNum="totalData.orderTotal"
+						v-if="isRequest"
+					/>
+				</view>
+			</view>
+		</template>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import { debounce } from '@/common/config/common.js'
+import echartActive from './components/echart-active'
+import echartConsult from './components/echart-consult'
+import chartMixin from './components/mixins/chart.mixin.js'
+const observers = {}
+export default {
+	mixins: [chartMixin],
+	components: {
+		echartActive,
+		echartConsult,
+	},
+	data() {
+		return {
+			skeletonShow: true,
+			isRequest: false,
+			clubInfo: {},
+			clubUserInfo: {},
+			tabCurrentIndex: 0,
+			anchorList: [], // 锚点元素节点信息
+			anchorStatus: [0, 0, 0, 0, 0], // 分别代表5个锚点区域的开关 0:关  1:开
+			totalData: {
+				orderTotalAmount: 0, // 订单总金额
+				orderTotal: 0, // 订单总量
+				remarksTotal: 0, // 所有咨询记录条数
+				totalKeywords: 0 // 所有关键词条数
+			}
+		}
+	},
+	onLoad(option) {
+		this.getClubInfo(option.userId)
+	},
+	onReady() {
+		console.log('onReady')
+		setTimeout(() => {
+			this.getAnchorSection()
+		}, 2000)
+	},
+	methods: {
+		async getClubInfo(userId) {
+			//获取机构信息
+			try {
+				const clubRes = await this.UserService.OrganizationUpdateModifyInfo({ userId: 666747 })
+				this.clubInfo =  clubRes.data.club
+				this.clubUserInfo =  clubRes.data.user
+				const tialRes = await this.UserService.userClubInitial({ clubId: this.clubInfo.clubId })
+				this.totalData.orderTotal = tialRes.data.orderTotal
+				this.totalData.orderTotalAmount = tialRes.data.orderTotalAmount
+				this.totalData.remarksTotal = tialRes.data.remarksTotal
+				this.totalData.totalKeywords = tialRes.data.totalKeywords
+				setTimeout(() => {
+					this.skeletonShow = false
+					this.isRequest = true
+				}, 1000)
+			} catch (error) {
+				console.log(error)
+			}
+		},
+		tabChange(index) {
+			this.tabCurrentIndex = index
+			this.scrollToAnchor()
+		},
+		// 获取锚点元素信息
+		getAnchorSection() {
+			const query = uni.createSelectorQuery().in(this)
+			query
+				.selectAll('.charts-box')
+				.boundingClientRect(data => {
+					if (data.length > 0) {
+						this.anchorList = data
+						this.anchorList.forEach((dom, index) => {
+							uni.createSelectorQuery()
+								.select('.charts-content')
+								.boundingClientRect(data => {
+									//目标节点、也可以是最外层的父级节点
+									uni.createSelectorQuery()
+										.select(`#${dom.id}`)
+										.boundingClientRect(res => {
+											//dom
+											dom.top = res.top - data.top + 8
+										})
+										.exec()
+								})
+								.exec()
+						})
+						console.log(this.anchorList)
+						this.observerAnchor(data)
+					}
+				})
+				.exec()
+		},
+		// 滚动到锚点
+		scrollToAnchor() {
+			let scrollTop = 0
+			const query = uni.createSelectorQuery().in(this)
+			if (this.tabCurrentIndex > 0) {
+				scrollTop = this.anchorList[this.tabCurrentIndex].top
+			}
+			uni.pageScrollTo({
+				scrollTop: scrollTop
+			})
+		},
+		// 为需要观测的区域创建观测者
+		observerAnchor(selectorList = []) {
+			const height = uni.getSystemInfoSync().windowHeight - 70
+			selectorList.forEach((selector, index) => {
+				observers[selector.id] = uni.createIntersectionObserver(this)
+				observers[selector.id].relativeToViewport({ bottom: -height }).observe(`#${selector.id}`, res => {
+					if (res.intersectionRatio > 0) {
+						this.anchorStatus[index] = 1
+						// console.log(index, `当前区域为${selector.id}标签选择器的区域...`)
+					} else {
+						this.anchorStatus[index] = 0
+						// console.log(index, `离开区域为${selector.id}标签选择器的区域...`)
+					}
+				})
+			})
+		}
+	},
+	onPageScroll(e) {
+		this.scrollTop = e.scrollTop
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	background-color: #f5f5f5 !important;
+}
+.container {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 24rpx;
+}
+.charts-navbar {
+	width: 100%;
+	height: 90rpx;
+	background-color: #ffffff;
+	box-sizing: border-box;
+	padding: 20rpx 0;
+	display: flex;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 9999999;
+	.nav-item {
+		display: flex;
+		flex: 1;
+		justify-content: center;
+		align-items: center;
+		height: 50rpx;
+		font-size: $font-size-28;
+		color: $text-color;
+		position: relative;
+		float: left;
+		position: relative;
+		.line {
+			width: 60rpx;
+			height: 2px;
+			border-radius: 1px;
+			background: #ffffff;
+			position: absolute;
+			bottom: 0;
+			left: 50%;
+			margin-left: -30rpx;
+		}
+		&.current {
+			color: $color-system;
+			.line {
+				background: $color-system;
+			}
+		}
+	}
+}
+.charts-content {
+	width: 100%;
+	height: auto;
+}
+.charts-box {
+	width: 100%;
+	min-height: 350rpx;
+	box-sizing: border-box;
+	padding: 34rpx 24rpx;
+	background-color: #fff;
+	margin-bottom: 32rpx;
+	border-radius: 16rpx;
+	float: left;
+	.echart-content {
+		width: 100%;
+		.echart-title {
+			width: 100%;
+			height: 96rpx;
+			float: left;
+			box-sizing: border-box;
+			.e-name {
+				float: left;
+				line-height: 56rpx;
+				font-size: 30rpx;
+				color: #333;
+			}
+			.e-more {
+				float: right;
+				line-height: 56rpx;
+				font-size: 28rpx;
+				color: #999999;
+			}
+		}
+		.echart-main {
+			width: 100%;
+			min-height: 200rpx;
+			box-sizing: border-box;
+			padding: 32rpx 40rpx;
+			position: relative;
+			float: left;
+			background-color: #f7f7f7;
+			.echart-text {
+				width: 100%;
+				line-height: 40rpx;
+				margin-bottom: 20rpx;
+				font-size: 28rpx;
+				color: #333;
+				float: left;
+				.label {
+					color: #999;
+					text-align-last: justify;
+				}
+			}
+			.echart-next {
+				width: 100rpx;
+				height: 100%;
+				position: absolute;
+				right: 10rpx;
+				top: 50%;
+				font-size: 28rpx;
+				color: #1890f9;
+			}
+		}
+		.echart-mains {
+			width: 100%;
+			min-height: 350rpx;
+			float: left;
+			&.demand{
+				min-height: 200rpx;
+			}
+			.echart-mains-none {
+				width: 100%;
+				height: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				flex-direction: column;
+				.none-image {
+					width: 220rpx;
+					height: 220rpx;
+					margin-bottom: 20rpx;
+				}
+				.none-text {
+					font-size: $font-size-28;
+					color: #999999;
+					line-height: 44rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 417 - 0
pages/seller/club/club-consult-details.vue

@@ -0,0 +1,417 @@
+<template>
+	<view class="container club clearfix">
+		<view class="club-tabs">
+			<view class="btn edit" :class="tabCurrentIndex === 4 ? 'active': '' " @click.stop="handleClick(4)">已填写</view>
+			<view class="btn" :class="tabCurrentIndex === 5 ? 'active': '' " @click.stop="handleClick(5)">未填写</view>
+		</view>
+		<view class="club-main">
+			<view v-if="isEmpty" class="club-main-empty">
+				<image
+					class="club-empty-image"
+					src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
+					mode="aspectFit"
+				></image>
+				<view class="txt">暂无机构数据</view>
+			</view>
+			<view v-else class="club-list">
+				<scroll-view scroll-y="true">
+					<view class="list" v-for="(club, index) in clubList" :key="index">
+						<view class="list-cell-top">
+							<view class="list-logo">
+								<image
+									:src="
+										club.headpic
+											? club.headpicx
+											: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
+									"
+									mode=""
+								></image>
+								<text class="list-id">编号:{{ club.newClubId }}</text>
+								<text class="list-tips">{{ club.userIdentity === 2 ? '资质机构' : '个人机构' }}</text>
+							</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>
+								<view class="list-tags">
+									<text
+										class="tags"
+										@click.stop="
+											this.$api.navigateTo('/pages/service/service?id=1041&title=标签说明')
+										"
+									>
+										{{ club.activeState }} <text class="iconfont icon-xiayibu"></text>
+									</text>
+									<text
+										class="tags"
+										@click.stop="
+											this.$api.navigateTo('/pages/service/service?id=1041&title=标签说明')
+										"
+									>
+										{{ club.customerValue }} <text class="iconfont icon-xiayibu"></text>
+									</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-if="tabSmallCurrentIndex !== 1">
+									<text class="list-link">{{ club.linkMan ? club.linkMan : '' }}</text>
+									<text class="list-texl" @click="handlePhone(club.contractMobile)">
+										{{ club.contractMobile ? club.contractMobile : '' }}
+									</text>
+								</view>
+								<view class="list-ntel">
+									<text class="list-link">最近填写时间:{{ club.providerTime | dateConversion }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black" />
+					<tui-nomore :visible="!pullUpOn" bgcolor="#f7f7f7" :text="nomoreText" />
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	spId: 0,
+	status: 90,
+	type: 4,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	data() {
+		return {
+			listQuery: Object.assign({}, defaultListQuery),
+			isEmpty: false,
+			nomoreText: '上拉显示更多',
+			hasNextPage: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			tabCurrentIndex: 4,
+			clubList: []
+		}
+	},
+	filters: {
+		dateConversion(val) {
+			const date = new Date(val)
+			const setZero = val => (val < 10 ? '0' + val : val)
+			return `${date.getFullYear()}-${setZero(date.getMonth() + 1)}-${setZero(date.getDate())} ${setZero(
+				date.getHours()
+			)}:${setZero(date.getMinutes())}:${setZero(date.getSeconds())}`
+		}
+	},
+	onLoad(option) {
+
+	},
+	computed: {
+		...mapState(['isManage'])
+	},
+	methods: {
+		async initGetStotage() {
+			// 初始化
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.spId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.getClubList()
+		},
+		async getClubList() {
+			try{
+				const res = await this.SellerService.getClubList(this.listQuery)
+				const data = res.data
+				const club = data.clubList
+				if (club.list && club.list.length > 0) {
+					this.hasNextPage = club.hasNextPage
+					this.clubList =club.list
+					this.isEmpty = false
+					this.pullFlag = false
+					setTimeout(() => {
+						this.pullFlag = true
+					}, 500)
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					} else {
+						this.pullUpOn = true
+						this.loadding = false
+						this.nomoreText = '已至底部'
+					}
+				} else {
+					this.isEmpty = true
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		async getOnReachBottomData() {
+			try{
+				const res = await this.SellerService.getClubList(this.listQuery)
+				const data = res.data
+				const club = data.clubList
+				this.hasNextPage = data.clubList.hasNextPage
+				this.clubList = this.clubList.concat(club.list)
+				this.pullFlag = false // 防上拉暴滑
+				setTimeout(() => {
+					this.pullFlag = true
+				}, 500)
+				if (this.hasNextPage) {
+					this.pullUpOn = false
+					this.nomoreText = '上拉显示更多'
+				} else {
+					this.pullUpOn = false
+					this.loadding = false
+					this.nomoreText = '已至底部'
+				}
+			}catch(error){
+				//TODO handle the exception
+				console.log('加载分页失败')
+			}
+		},
+		handleClick(index){
+			this.tabCurrentIndex = this.listQuery.type = index
+			this.getClubList()
+		},
+		// 拨打电话
+		handlePhone(phoneNumber) {
+			uni.makePhoneCall({
+				phoneNumber: phoneNumber //拨打电话
+			})
+		}
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.listQuery.pageNum++
+			this.getOnReachBottomData()
+		}
+	},
+	onShow() {
+		this.initGetStotage()
+	}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto;
+}
+page,
+.container {
+	/* padding-bottom: 120upx; */
+	width: 100%;
+	height: 100%;
+	background: #f7f7f7;
+}
+.club-tabs{
+	width: 100%;
+	height: 90rpx;
+	position: fixed;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	padding: 20rpx 0;
+	background-color: #ffffff;
+	.btn {
+		width: 50%;
+		line-height: 50rpx;
+		box-sizing: border-box;
+		text-align: center;
+		font-size: $font-size-34;
+		float: left;
+		color: #333333;
+		position: relative;
+		&::before{
+			content: '';
+			width: 100rpx;
+			height: 4rpx;
+			background-color: #ffffff;
+			position: absolute;
+			bottom: -20rpx;
+			left: 50%;
+			margin-left: -50rpx;
+		}
+		&.edit {
+			border-right: 1px solid #e1e1e1;
+		}
+		&.active{
+			color: #FF5B00;
+			&::before{
+				background-color: #FF5B00;
+			}
+		}
+	}
+}
+.club-main {
+	width: 100%;
+	height: 100%;
+	padding-top: 114rpx;
+	float: left;
+	.club-main-empty{
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		background-color: #ffffff;
+		.club-empty-image{
+			width: 300rpx;
+			height: 180rpx;
+			margin-bottom: 20rpx;
+		}
+		.txt{
+			font-size: 24rpx;
+			color: #666666;
+		}
+	}
+	.list {
+		width: 100%;
+		height: 240rpx;
+		padding: 24rpx;
+		box-sizing: border-box;
+		background: #ffffff;
+		position: relative;
+		border-bottom: 1px solid #ebebeb;
+		.list-cell-top {
+			width: 100%;
+			height: 140rpx;
+			box-sizing: border-box;
+			.list-logo {
+				width: 140rpx;
+				height: 140rpx;
+				float: left;
+				position: relative;
+				image {
+					width: 140rpx;
+					height: 140rpx;
+					border-radius: 8rpx;
+				}
+				.list-tips {
+					display: inline-block;
+					width: 100%;
+					height: 32rpx;
+					line-height: 32rpx;
+					background: rgba(0, 0, 0, 0.1);
+					color: #333;
+					position: absolute;
+					bottom: 0;
+					left: 0;
+					box-sizing: border-box;
+					text-align: left;
+					font-size: 20rpx;
+					padding-left: 4rpx;
+					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
+				}
+				.list-id {
+					display: inline-block;
+					width: 100%;
+					height: 32rpx;
+					line-height: 32rpx;
+					background: rgba(0, 0, 0, 0.1);
+					color: #333;
+					position: absolute;
+					top: 0;
+					left: 0;
+					box-sizing: border-box;
+					text-align: left;
+					font-size: 20rpx;
+					padding-left: 4rpx;
+					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
+				}
+			}
+			.list-content {
+				width: 560rpx;
+				height: 150rpx;
+				float: left;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+				.list-name {
+					width: 100%;
+					height: 50rpx;
+					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;
+						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-tags {
+					width: 100%;
+					height: 36rpx;
+					float: left;
+					line-height: 36rpx;
+					margin: 7rpx 0;
+					.tags {
+						display: inline-block;
+						height: 36rpx;
+						box-sizing: border-box;
+						padding: 0 8rpx 0 15rpx;
+						border-radius: 8rpx;
+						background: #faede5;
+						font-size: $font-size-22;
+						color: $color-system;
+						text-align: center;
+						line-height: 36rpx;
+						margin-right: 16rpx;
+						.icon-xiayibu {
+							font-size: 20rpx;
+							margin-left: 10rpx;
+						}
+					}
+				}
+				.list-ntel {
+					width: 100%;
+					height: 50rpx;
+					float: left;
+					line-height: 50rpx;
+					text-align: left;
+					font-size: $font-size-24;
+					color: #666666;
+					.list-link {
+						display: inline-block;
+						float: left;
+						margin-right: 12rpx;
+					}
+					.list-texl {
+						display: inline-block;
+						float: left;
+						text-decoration: underline;
+					}
+				}
+			}
+		}
+	}
+}
+</style>

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

@@ -53,6 +53,42 @@
 									<text class="iconfont icon-riqi"></text>
 								</view>
 							</view>
+							<view class="drawer-main-name">机构类型:</view>
+							<view class="drawer-main-radiov">
+								<view class="drawer-main-radio">
+									<picker @change="bindPickerChange(2,$event)" :value="index" :range="clubTypeActions" range-key="name">
+										<input class="input" type="text" disabled="false" v-model="clubTypeText" value="" placeholder="请选择"/>
+										<text class="iconfont icon-xiangyou"></text>
+									</picker>
+								</view>
+							</view>
+							<view class="drawer-main-name">升级状态<text class="small">(个人机构升级为资质机构)</text>:</view>
+							<view class="drawer-main-radiov">
+								<view class="drawer-main-radio">
+									<picker @change="bindPickerChange(3,$event)" :value="index" :range="clubStatusActions" range-key="name">
+										<input class="input" type="text" disabled="false" v-model="clubStatusText" value="" placeholder="请选择"/>
+										<text class="iconfont icon-xiangyou"></text>
+									</picker>
+								</view>
+							</view>
+							<view class="drawer-main-name">活跃状态:</view>
+							<view class="drawer-main-radiov">
+								<view class="drawer-main-radio">
+									<picker @change="bindPickerChange(4,$event)" :value="index" :range="clubActiveActions" range-key="name">
+										<input class="input" type="text" disabled="false" v-model="clubActiveText" value="" placeholder="请选择"/>
+										<text class="iconfont icon-xiangyou"></text>
+									</picker>
+								</view>
+							</view>
+							<view class="drawer-main-name">客户价值:</view>
+							<view class="drawer-main-radiov">
+								<view class="drawer-main-radio">
+									<picker @change="bindPickerChange(5,$event)" :value="index" :range="customerValueActions" range-key="name">
+										<input class="input" type="text" disabled="false" v-model="customerValueText" value="" placeholder="请选择"/>
+										<text class="iconfont icon-xiangyou"></text>
+									</picker>
+								</view>
+							</view>
 						</template>
 					</view>
 				</scroll-view>
@@ -94,6 +130,29 @@ export default {
 				endTime:'',
 				serviceProviderId: 0
 			},
+			clubTypeActions:[
+				{name:'个人机构',value:4},
+				{name:'资质机构',value:2}
+			],
+			clubStatusActions:[
+				{name:'待升级',value:90},
+				{name:'升级中',value:1},
+				{name:'升级失败',value:92}
+			],
+			clubActiveActions:[
+				{name:'活跃用户',value:90},
+				{name:'不活跃用户',value:1}
+			],
+			customerValueActions:[
+				{name:'高价值客户',value:90},
+				{name:'一般价值客户',value:1},
+				{name:'潜在价值客户',value:1},
+				{name:'低价值客户',value:1}
+			],
+			clubTypeText:'',
+			clubStatusText:'',
+			clubActiveText:'',
+			customerValueText:'',
 			sellerActions: []
 		}
 	},
@@ -130,6 +189,22 @@ export default {
 					this.actionsText = this.sellerActions[e.target.value].name
 					this.queryData.serviceProviderId = this.sellerActions[e.target.value].serviceProviderId
 					break
+				case 2:
+					this.clubTypeText = this.clubTypeActions[e.target.value].name
+					this.queryData.userIdentity = this.clubTypeActions[e.target.value].value
+					break
+				case 3:
+					this.clubStatusText = this.clubStatusActions[e.target.value].name
+					this.queryData.status = this.clubStatusActions[e.target.value].value
+					break
+				case 4:
+					this.clubActiveText = this.clubActiveActions[e.target.value].name
+					// this.queryData.status = this.clubActiveActions[e.target.value].value
+					break
+				case 5:
+					this.customerValueText = this.customerValueActions[e.target.value].name
+					// this.queryData.status = this.customerValueActions[e.target.value].value
+					break
 			}
 		},
 		bindStartDateChange(event){
@@ -219,6 +294,10 @@ export default {
 			box-sizing: border-box;
 			padding: 0 20rpx;
 			font-weight: bold;
+			.small{
+				font-weight: normal;
+				color: #999999;
+			}
 		}
 		.drawer-main-time{
 			width: 100%;

+ 209 - 0
pages/seller/club/components/echart-active.vue

@@ -0,0 +1,209 @@
+<template>
+	<view class="echart-content">
+		<view class="echart-title">
+			<view class="e-name">机构活跃统计</view>
+			<view class="e-more" @click="handClick">查看></view> 
+		</view>
+		<view class="echart-mains">
+			<view class="echart-mains-none" v-if="isEmpty">
+				<image
+					class="none-image"
+					src="https://static.caimei365.com/app/img/bg/icon_echart_none@2x.png"
+					mode=""
+				></image>
+				<view class="none-text">暂无数据</view>
+			</view>
+			<view class="echart-mains-data" v-else>
+				<qiun-data-charts type="pie" :opts="opts" :chartData="orderChartData" :errorShow="false" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import chartMixin from './mixins/chart.mixin.js'
+export default {
+	mixins: [chartMixin],
+	props:{
+		clubId:{
+			type:Number,
+			default:0
+		},
+		totalAmount:{
+			type:Number,
+			default:0
+		},
+		totalNum:{
+			type:Number,
+			default:0
+		}
+	},
+	data() {
+		return {
+			isEmpty:false,
+			current: 0,
+			orderChartData:null,
+			orderTotal:0,
+			orderTotalAmount:0, 
+			orderData:{
+			    startTime: '',
+			    endTime: '',
+			    orderScopeNum:0,
+				orderScopeTotalFee:0,
+			},
+			params:{
+			    clubId:0,//  机构id
+			    dateType:3,//   日期类别 0日 1月 2半年 3全年
+			    startTime:'',//   开始时间
+			    endTime:'',//   结束时间
+			    type:0	//  统计类别 0订单 1搜索关键词 2咨询记录 3访问记录 4初始状态
+			},
+			opts: {
+				timing: 'easeOut',
+				duration: 50,
+				rotate: false,
+				rotateLock: false,
+				color: [
+					'#1890FF',
+					'#91CB74',
+					'#FAC858',
+					'#EE6666',
+					'#73C0DE',
+					'#3CA272',
+					'#FC8452',
+					'#9A60B4',
+					'#ea7ccc'
+				],
+				padding: [5, 5, 5, 5],
+				fontSize: 13,
+				fontColor: '#666666',
+				dataLabel: true,
+				dataPointShape: true,
+				dataPointShapeType: 'solid',
+				touchMoveLimit: 60,
+				enableScroll: false,
+				enableMarkLine: false,
+				legend: {
+					show: false,
+					position: 'bottom',
+					lineHeight: 25,
+					float: 'bottom',
+					padding: 5,
+					margin: 5,
+					backgroundColor: 'rgba(0,0,0,0)',
+					borderColor: 'rgba(0,0,0,0)',
+					borderWidth: 0,
+					fontSize: 12,
+					fontColor: '#666666',
+					hiddenColor: '#CECECE',
+					itemGap: 10
+				},
+				title: {
+					name: '订单总量',
+					fontSize: 12,
+					color: '#666666',
+					offsetX: 0,
+					offsetY: 0
+				},
+				subtitle: {
+					name: '70%',
+					fontSize: 12,
+					color: '#7cb5ec',
+					offsetX: 0,
+					offsetY: 0
+				},
+				extra: {
+					pie:{
+						activeOpacity: 0.5,
+						activeRadius: 10,
+						offsetAngle: 0,
+						labelWidth: 15,
+						border: true,
+						borderWidth: 3,
+						borderColor: "#FFFFFF",
+						customRadius: 60,
+						linearType: "none"
+					},
+					tooltip: {
+						showBox: true,
+						showArrow: true,
+						showCategory: false,
+						borderWidth: 0,
+						borderRadius: 0,
+						borderColor: '#000000',
+						borderOpacity: 0.7,
+						bgColor: '#000000',
+						bgOpacity: 0.7,
+						gridType: 'solid',
+						dashLength: 4,
+						gridColor: '#CCCCCC',
+						boxPadding: 3,
+						fontSize: 12,
+						lineHeight: 20,
+						fontColor: '#FFFFFF',
+						legendShow: true,
+						legendShape: 'auto',
+						splitLine: true,
+						horizentalLine: false,
+						xAxisLabel: false,
+						yAxisLabel: false,
+						labelBgColor: '#FFFFFF',
+						labelBgOpacity: 0.7,
+						labelFontColor: '#666666'
+					}
+				}
+			}
+		}
+	},
+	created() {
+		this.params.clubId = this.clubId
+		console.log('orderTotal',this.orderTotal)
+		this.orderTotal = this.totalNum
+		this.orderTotalAmount = this.totalAmount
+		this.userClubPortrait(0)
+	},
+	methods: {
+		async userClubPortrait(type){
+			this.params.type = type
+			try {
+				const res = await this.UserService.userClubPortrait(this.params)
+				const data = res.data
+				this.orderData.orderScopeNum = data.portrait.orderScopeNum
+				this.orderData.orderScopeTotalFee = data.portrait.orderScopeTotalFee
+				this.orderData.startTime = this.params.startTime = data.portrait.startTime
+				this.orderData.endTime = this.params.endTime = data.portrait.endTime
+				if(data.order){
+					this.isEmpty = false
+				    this.getSetOrderData(data.order)
+				}else{
+					this.isEmpty = true  
+				}
+			} catch (error) {
+			   this.$util.msg(error.msg, 2000)
+			}
+		},
+		getSetOrderData(data) {
+			//模拟从服务器获取数据时的延时
+			setTimeout(() => {
+				//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+				let res = {
+					series: [
+						{
+							format: 'pieDemo1',
+							data: data.orderList
+						}
+					]
+				}
+				this.orderChartData = JSON.parse(JSON.stringify(res))
+			}, 500)
+		},
+		handClick(){
+			this.$api.navigateTo(`/pages/seller/club/club-active-details`)
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss"></style>

+ 209 - 0
pages/seller/club/components/echart-consult.vue

@@ -0,0 +1,209 @@
+<template>
+	<view class="echart-content">
+		<view class="echart-title">
+			<view class="e-name">机构填写咨询记录统计</view>
+			<view class="e-more" @click="handClick">查看></view> 
+		</view>
+		<view class="echart-mains">
+			<view class="echart-mains-none" v-if="isEmpty">
+				<image
+					class="none-image"
+					src="https://static.caimei365.com/app/img/bg/icon_echart_none@2x.png"
+					mode=""
+				></image>
+				<view class="none-text">暂无数据</view>
+			</view>
+			<view class="echart-mains-data" v-else>
+				<qiun-data-charts type="pie" :opts="opts" :chartData="orderChartData" :errorShow="false" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import chartMixin from './mixins/chart.mixin.js'
+export default {
+	mixins: [chartMixin],
+	props:{
+		clubId:{
+			type:Number,
+			default:0
+		},
+		totalAmount:{
+			type:Number,
+			default:0
+		},
+		totalNum:{
+			type:Number,
+			default:0
+		}
+	},
+	data() {
+		return {
+			isEmpty:false,
+			current: 0,
+			orderChartData:null,
+			orderTotal:0,
+			orderTotalAmount:0, 
+			orderData:{
+			    startTime: '',
+			    endTime: '',
+			    orderScopeNum:0,
+				orderScopeTotalFee:0,
+			},
+			params:{
+			    clubId:0,//  机构id
+			    dateType:3,//   日期类别 0日 1月 2半年 3全年
+			    startTime:'',//   开始时间
+			    endTime:'',//   结束时间
+			    type:0	//  统计类别 0订单 1搜索关键词 2咨询记录 3访问记录 4初始状态
+			},
+			opts: {
+				timing: 'easeOut',
+				duration: 50,
+				rotate: false,
+				rotateLock: false,
+				color: [
+					'#1890FF',
+					'#91CB74',
+					'#FAC858',
+					'#EE6666',
+					'#73C0DE',
+					'#3CA272',
+					'#FC8452',
+					'#9A60B4',
+					'#ea7ccc'
+				],
+				padding: [5, 5, 5, 5],
+				fontSize: 13,
+				fontColor: '#666666',
+				dataLabel: true,
+				dataPointShape: true,
+				dataPointShapeType: 'solid',
+				touchMoveLimit: 60,
+				enableScroll: false,
+				enableMarkLine: false,
+				legend: {
+					show: false,
+					position: 'bottom',
+					lineHeight: 25,
+					float: 'bottom',
+					padding: 5,
+					margin: 5,
+					backgroundColor: 'rgba(0,0,0,0)',
+					borderColor: 'rgba(0,0,0,0)',
+					borderWidth: 0,
+					fontSize: 12,
+					fontColor: '#666666',
+					hiddenColor: '#CECECE',
+					itemGap: 10
+				},
+				title: {
+					name: '订单总量',
+					fontSize: 12,
+					color: '#666666',
+					offsetX: 0,
+					offsetY: 0
+				},
+				subtitle: {
+					name: '70%',
+					fontSize: 12,
+					color: '#7cb5ec',
+					offsetX: 0,
+					offsetY: 0
+				},
+				extra: {
+					pie:{
+						activeOpacity: 0.5,
+						activeRadius: 10,
+						offsetAngle: 0,
+						labelWidth: 15,
+						border: true,
+						borderWidth: 3,
+						borderColor: "#FFFFFF",
+						customRadius: 60,
+						linearType: "none"
+					},
+					tooltip: {
+						showBox: true,
+						showArrow: true,
+						showCategory: false,
+						borderWidth: 0,
+						borderRadius: 0,
+						borderColor: '#000000',
+						borderOpacity: 0.7,
+						bgColor: '#000000',
+						bgOpacity: 0.7,
+						gridType: 'solid',
+						dashLength: 4,
+						gridColor: '#CCCCCC',
+						boxPadding: 3,
+						fontSize: 12,
+						lineHeight: 20,
+						fontColor: '#FFFFFF',
+						legendShow: true,
+						legendShape: 'auto',
+						splitLine: true,
+						horizentalLine: false,
+						xAxisLabel: false,
+						yAxisLabel: false,
+						labelBgColor: '#FFFFFF',
+						labelBgOpacity: 0.7,
+						labelFontColor: '#666666'
+					}
+				}
+			}
+		}
+	},
+	created() {
+		this.params.clubId = this.clubId
+		console.log('orderTotal',this.orderTotal)
+		this.orderTotal = this.totalNum
+		this.orderTotalAmount = this.totalAmount
+		this.userClubPortrait(0)
+	},
+	methods: {
+		async userClubPortrait(type){
+			this.params.type = type
+			try {
+				const res = await this.UserService.userClubPortrait(this.params)
+				const data = res.data
+				this.orderData.orderScopeNum = data.portrait.orderScopeNum
+				this.orderData.orderScopeTotalFee = data.portrait.orderScopeTotalFee
+				this.orderData.startTime = this.params.startTime = data.portrait.startTime
+				this.orderData.endTime = this.params.endTime = data.portrait.endTime
+				if(data.order){
+					this.isEmpty = false
+				    this.getSetOrderData(data.order)
+				}else{
+					this.isEmpty = true  
+				}
+			} catch (error) {
+			   this.$util.msg(error.msg, 2000)
+			}
+		},
+		getSetOrderData(data) {
+			//模拟从服务器获取数据时的延时
+			setTimeout(() => {
+				//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+				let res = {
+					series: [
+						{
+							format: 'pieDemo1',
+							data: data.orderList
+						}
+					]
+				}
+				this.orderChartData = JSON.parse(JSON.stringify(res))
+			}, 500)
+		},
+		handClick(){
+			this.$api.navigateTo(`/pages/seller/club/club-consult-details`)
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss"></style>

+ 102 - 88
pages/seller/club/list.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="container club clearfix" :style="{ paddingBottom: isIphoneX ? '140rpx' : '98rpx' }">
+	<view class="container club clearfix">
 		<view class="club-search clearfix" :style="{ paddingTop: StatusBar + 'px' }">
 			<view class="search-top" :style="{ height: CustomBar - StatusBar + 'px' }">
 				<view
@@ -15,19 +15,9 @@
 				</view>
 				<view class="title">机构列表</view>
 			</view>
-			<view style="display: flex;align-items: center;">
-				<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>
+			<view class="search-main">
+				<view class="search-from name">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
 					<input
 						class="input"
 						type="text"
@@ -41,32 +31,9 @@
 					/>
 					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
 				</view>
-				<view
-					class="search-btn"
-					:style="{
-						width: CustomBar - StatusBar + 'px',
-						height: capsule.height + 'px',
-						lineHeight: capsule.height + 'px;'
-					}"
-					v-if="isManage && tabSmallCurrentsIndex == 1"
-					@click="showRightDrawer"
-				>
-					<text class="iconfont icon-shaixuan"></text>
-				</view>
-				<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 class="search-btn" @click="showRightDrawer"> <text class="iconfont icon-shaixuan"></text> </view>
 			</view>
-			<view class="search-tab">
+			<!-- <view class="search-tab">
 				<view
 					class="tab-item"
 					v-for="(item, index) in listTab"
@@ -76,7 +43,7 @@
 				>
 					<text class="item-text"> {{ item.name }} <text class="line"></text> </text>
 				</view>
-			</view>
+			</view> -->
 			<view class="search-smalltab">
 				<view
 					class="tab-item"
@@ -89,7 +56,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="club-main" style="margin-top: 508rpx;">
+		<view class="club-main">
 			<view v-if="isEmpty" class="empty-container">
 				<image
 					class="club-empty-image"
@@ -106,12 +73,13 @@
 								<image
 									:src="
 										club.headpic
-											? club.headpic
+											? club.headpicx
 											: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
 									"
 									mode=""
 								></image>
 								<text class="list-id">编号:{{ club.newClubId }}</text>
+								<text class="list-tips">{{ club.userIdentity === 2 ? '资质机构' : '个人机构' }}</text>
 							</view>
 							<view class="list-content">
 								<view class="list-name">
@@ -181,14 +149,17 @@
 									<view
 										class="btn-bubble"
 										:style="{
-											height: isManage ? '160rpx' : '80rpx',
-											top: isManage ? '-154rpx' : '-76rpx'
+											height: isManage ? '180rpx' : '120rpx',
+											top: isManage ? '-180rpx' : '-120rpx'
 										}"
 										v-if="currentIndex === index && club.bubble"
 									>
 										<view class="btn-view border" @click.stop="handleClickOper(4, club)">
 											<text class="iconfont icon-xiugaiziliao"></text> 修改资料
 										</view>
+										<view class="btn-view border" @click.stop="handleClickOper(6, club)">
+											<text class="iconfont icon-tianxie"></text> 全部咨询记录
+										</view>
 										<view
 											class="btn-view"
 											v-if="isManage && club.serviceProviderId != 1342"
@@ -222,7 +193,7 @@
 				</scroll-view>
 			</view>
 		</view>
-		<view class="tabBar" :style="{ height: isIphoneX ? '140rpx' : '98rpx' }" v-if="tabCurrentNum === 0">
+		<!-- <view class="tabBar" :style="{ height: isIphoneX ? '140rpx' : '98rpx' }" v-if="tabCurrentNum === 0">
 			<view class="tabBar_list" :style="{ paddingBottom: isIphoneX ? '40rpx' : '' }">
 				<view class="tabBar_item" :class="{ current: tabCurrentIndex === 0 }" @click="tabClick(0)">
 					<text class="iconfont icon-shenhetongguo"></text> <view class="tabBar_name">待升级</view>
@@ -234,7 +205,7 @@
 					<text class="iconfont icon-shenhebutongguo"></text> <view class="tabBar_name">升级失败</view>
 				</view>
 			</view>
-		</view>
+		</view> -->
 		<!-- 筛选抽屉 -->
 		<cm-clubDrawer
 			ref="screendrawer"
@@ -472,7 +443,7 @@ export default {
 		handSearchConfirmData(data) {
 			console.log('确定筛选', data)
 			//确定筛选
-			this.listQuery = {...this.listQuery , ...data}
+			this.listQuery = { ...this.listQuery, ...data }
 			this.listQuery.pageNum = 1
 			this.GetSellerClubList()
 		},
@@ -508,6 +479,9 @@ export default {
 				case 5:
 					this.handleReplaceClub(club)
 					break
+				case 6:
+					this.$api.navigateTo(`/pages/seller/remarks/record-club-list?clubId=${club.clubId}`)
+					break
 			}
 		},
 		handleReplaceClub(club) {
@@ -637,49 +611,69 @@ page,
 			}
 		}
 	}
-	.search-from {
-		background: #f7f7f7;
-		position: relative;
-		width: 604rpx;
-		margin: 50rpx 20rpx 40rpx 24rpx;
-		.input {
-			width: 300rpx;
+	.search-main {
+		width: 100%;
+		height: 80rpx;
+		box-sizing: border-box;
+		padding: 10rpx 24rpx;
+		.search-from {
+			background: #f7f7f7;
+			position: relative;
+			width: 642rpx;
 			height: 100%;
+			padding-right: 60rpx;
+			box-sizing: border-box;
+			padding: 0 10rpx;
 			float: left;
-			color: $text-color;
-			font-size: $font-size-24;
+			border-radius: 30rpx;
+			.icon-iconfonticonfontsousuo1 {
+				width: 60rpx;
+				height: 60rpx;
+				line-height: 60rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.input {
+				width: 520rpx;
+				height: 100%;
+				float: left;
+				color: $text-color;
+				font-size: $font-size-24;
+				box-sizing: border-box;
+				padding-left: 10rpx;
+			}
+			.icon-shanchu1 {
+				font-size: $font-size-32;
+				color: #999999;
+				position: absolute;
+				width: 60rpx;
+				height: 60rpx;
+				line-height: 60rpx;
+				text-align: center;
+				top: 0;
+				right: 0;
+				z-index: 10;
+			}
 		}
-		.icon-iconfonticonfontsousuo1 {
+		.search-btn {
+			width: 60rpx;
+			height: 60rpx;
+			line-height: 60rpx;
 			text-align: center;
-			display: block;
-			font-size: $font-size-38;
+			font-size: $font-size-28;
+			color: $color-system;
 			float: left;
-			color: #999999;
-		}
-		.icon-shanchu1 {
-			font-size: $font-size-32;
-			color: #999999;
-			position: absolute;
-			width: 64rpx;
-			height: 64rpx;
-			line-height: 64rpx;
-			text-align: center;
-			top: 0;
-			right: 0;
-			z-index: 10;
-		}
-	}
-	.search-btn {
-		text-align: center;
-		font-size: $font-size-28;
-		color: $color-system;
-		float: left;
-		background: #ffffff;
-		.icon-shaixuan {
-			font-size: 44rpx;
-			color: #333333;
+			background: #ffffff;
+			.icon-shaixuan {
+				font-size: 44rpx;
+				color: #333333;
+			}
 		}
 	}
+
 	.search-tab {
 		height: 80rpx;
 		display: flex;
@@ -739,6 +733,8 @@ page,
 	}
 }
 .club-main {
+	width: 100%;
+	padding-top: 370rpx;
 	.list {
 		width: 100%;
 		height: 320rpx;
@@ -761,6 +757,23 @@ page,
 					height: 140rpx;
 					border-radius: 8rpx;
 				}
+				.list-tips {
+					display: inline-block;
+					width: 100%;
+					height: 32rpx;
+					line-height: 32rpx;
+					background: rgba(0, 0, 0, 0.1);
+					color: #333;
+					position: absolute;
+					bottom: 0;
+					left: 0;
+					box-sizing: border-box;
+					text-align: left;
+					font-size: 20rpx;
+					padding-left: 4rpx;
+					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
+				}
 				.list-id {
 					display: inline-block;
 					width: 100%;
@@ -776,11 +789,12 @@ page,
 					font-size: 20rpx;
 					padding-left: 4rpx;
 					border-radius: 8rpx 8rpx 0 0;
+					text-align: center;
 				}
 			}
 			.list-content {
 				width: 560rpx;
-				height: 190rpx;
+				height: 150rpx;
 				float: left;
 				padding-left: 20rpx;
 				box-sizing: border-box;
@@ -937,10 +951,10 @@ page,
 					}
 					.btn-bubble {
 						width: 200rpx;
-						height: 160rpx;
+						height: 120rpx;
 						background: rgba(51, 51, 51, 0.8);
 						position: absolute;
-						top: -154rpx;
+						top: -120rpx;
 						right: 0;
 						border-radius: 8rpx;
 						&:before {
@@ -955,9 +969,9 @@ page,
 						}
 						.btn-view {
 							width: 100%;
-							height: 80rpx;
+							height: 60rpx;
 							box-sizing: border-box;
-							line-height: 80rpx;
+							line-height: 60rpx;
 							font-size: $font-size-24;
 							color: #ffffff;
 							text-align: center;

+ 23 - 10
pages/seller/components/user.vue

@@ -124,12 +124,22 @@
 			</view>
 			<!-- 底部跳转 -->
 			<view class="foot-list">
-				<!-- <view class="list-cell-image" @click="navigator('/pages/user/coupon/coupon-activity')">
-					<view class="text">
-						<view class="h1">美博会</view>
-						<view class="p">大额好券等你来领~</view>
+				<view class="list-cell-item">
+					<view
+						class="list-cell"
+						v-for="(item, index) in threeList"
+						:key="index"
+						@click="navigator(item.path)"
+						hover-class="cell-hover"
+						:hover-stay-time="50"
+					>
+						<view class="cell-icon">
+							<image class="cell-icon-image" :src="item.icon" mode=""></image>
+						</view>
+						<text class="cell-tit">{{ item.name }}</text>
+						<text class="cell-more iconfont icon-xiayibu"></text>
 					</view>
-				</view> -->
+				</view>
 				<view class="list-cell-item">
 					<view
 						class="list-cell"
@@ -242,15 +252,18 @@ export default {
 					path: '/pages/seller/remarks/list',
 					icon: 'https://static.caimei365.com/app/img/icon/icon_seller_7@2x.png'
 				},
-                {
-                	name: '机构活跃分析',
-                	path: '/pages/seller/remarks/institutional-activity-analysis',
-                	icon: 'https://static.caimei365.com/app/img/icon/visits.png'
-                },
+
                 {
                 	name: '我的名片',
                 	path: '/pages/seller/remarks/business-card',
                 	icon: 'https://static.caimei365.com/app/img/icon/my-card.png'
+                }
+			],
+			threeList: [
+                {
+                	name: '机构看板',
+                	path: '/pages/seller/club/club-board',
+                	icon: 'https://static.caimei365.com/app/img/icon/visits.png'
                 }
 			]
 		}

+ 748 - 0
pages/seller/remarks/record-club-list.vue

@@ -0,0 +1,748 @@
+<template>
+	<view class="container product clearfix">
+		<view class="container-fiexd-top">
+			<view class="club-search clearfix">
+				<view class="search-from name">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input
+						class="input"
+						type="text"
+						confirm-type="search"
+						v-model="listQuery.keyWord"
+						@input="onShowClose"
+						@confirm="getUserClubRemarksList"
+						placeholder="搜索关键词/咨询人/机构名称/手机号"
+						maxlength="16"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+				</view>
+			</view>
+			<view class="fiexd-top-title">
+				<view class="top-left">
+					共 <text>{{ totalRecord }}</text> 条咨询记录
+				</view>
+			</view>
+		</view>
+		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '216rpx' : '168rpx' }">
+			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
+				<!-- 空白页 -->
+				<view class="empty-container" v-if="isEmpty">
+					<image class="empty-container-image" :src="StaticUrl + '/icon/icon-remarks-empty@2x.png'"></image>
+					<text class="error-text">暂无任何数据~</text>
+				</view>
+				<!-- 列表 -->
+				<view
+					class="tui-remarks-cell  tui-mtop clearfix"
+					v-for="(remark, index) in remarksList"
+					:key="index"
+					:class="{ orange: remark.followup == 1, blue: remark.followup == 2, grey: remark.followup == 3 }"
+					@click.stop="details(remark.remarksId)"
+				>
+					<view class="tui-remarks-title">
+						<view class="tui-remarks-title-top">
+							<view class="tui-remarks-time tt" :style="{ paddingLeft: remark.newDeal === 1 ? '90rpx' : '0rpx'  }"
+								>
+								<text class="tags" v-if="remark.newDeal === 1">新分配</text>
+								{{ remark.clubName }}
+								</view
+							>
+							<view class="tui-remarks-time sm" v-if="remark.followup">
+								<text
+									:class="{
+										orange: remark.followup == 1,
+										blue: remark.followup == 2,
+										grey: remark.followup == 3
+									}"
+									>{{ remark.followup | followupFilters }}</text
+								>
+							</view>
+						</view>
+						<view class="tui-remarks-title-bot">
+							<view class="tui-remarks-text-view">
+								<view class="tui-remarks-text h"
+									><text class="iconfont icon-bianji"></text>记录人:{{ remark.recordName }}</view
+								>
+							</view>
+							<view class="tui-remarks-text-view" v-if="listQuery.manager >= 0">
+								<view class="tui-remarks-text h"
+									><text class="iconfont icon-guanliyuan"></text>管理员:{{
+										remark.leaderName ? remark.leaderName : ''
+									}}</view
+								>
+								<view class="tui-remarks-text y">{{ remark.addTime }}</view>
+							</view>
+						</view>
+					</view>
+					<view class="tui-remarks-name">
+						<view class="tui-remarks-name-text h">
+							咨询人:{{ remark.questionMan ? remark.questionMan : '' }}
+						</view>
+						<view class="tui-remarks-name-text y">
+							咨询类别:{{ remark.consultBack ? remark.consultBack : '无' }}
+						</view>
+					</view>
+					<view class="tui-remarks-name none" v-if="remark.satisfied">
+						<view class="tui-remarks-name-text h">
+							意向程度:<text class="red">{{ remark.satisfied | intenActionsFilters }}</text>
+						</view>
+						<view class="tui-remarks-name-text y" v-if="remark.status">
+							报备状态:<text
+								:class="{
+									reviewed: remark.status == 1,
+									approved: remark.status == 2,
+									failed: remark.status == 3
+								}"
+								>{{ remark.status | statusFilters }}</text
+							>
+						</view>
+					</view>
+					<view class="tui-remarks-content">
+						<text class="tui-remarks-span" v-for="(label, labelIndex) in remark.remarks" :key="labelIndex">
+							{{ label.label }}
+						</text>
+					</view>
+					<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>
+				</view>
+				<!--加载loadding-->
+				<tui-loadmore :visible="loadding" :index="3" type="black" />
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText" />
+				<!--加载loadding-->
+			</view>
+		</view>
+		<!-- 弹窗提示 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			@cancel="hideMobel"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
+	</view>
+</template>
+<script>
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	startAddTime: '',
+	endAddTime: '',
+	consult: '',
+	pinceSensitve: 0, //价格敏感度
+	satisfied: 0, // 意向程度
+	followup: 0, // 跟进状态
+	leaderId: 0,
+	groupId: 0,
+	manager: 0,
+	newDeal: 0, // 新增分配机构
+	status: 0, // 报备状态
+	serviceProviderId: 0,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	data() {
+		return {
+			StaticUrl: this.$Static,
+			isIphoneX: this.$store.state.isIphoneX,
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确认',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
+					},
+					plain: false
+				}
+			],
+			totalRecord: 0,
+			popupShow: true,
+			popupShow1: false,
+			listQuery: Object.assign({}, defaultListQuery),
+			remarksList: [],
+			scrollTop: 0,
+			isEmpty: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			hasNextPage: false,
+			navbarHeight: '',
+			nomoreText: '上拉显示更多',
+			contentModalText: '', //操作文字提示语句
+			modal: false,
+			handleRemarksId: 0,
+		}
+	},
+	onLoad() {},
+	filters: {
+		statusFilters(value) {
+			// 订单来源
+			const map = {
+				1: '待审核',
+				2: '审核通过',
+				3: '审核未通过'
+			}
+			return map[value]
+		},
+		followupFilters(value) {
+			// 订单来源
+			const map = {
+				1: '跟进中',
+				2: '跟进完成',
+				3: '已放弃'
+			}
+			return map[value]
+		},
+		intenActionsFilters(value) {
+			// 意向
+			if (value) {
+				const map = {
+					1: '意向强烈',
+					2: '意向一般',
+					3: '意向平淡',
+					4: '随便看看'
+				}
+				return map[value]
+			} else {
+				return ''
+			}
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo'])
+	},
+	methods: {
+		...mapMutations(['login', 'logout']),
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.listQuery.manager = userInfo.manager ? userInfo.manager : 0
+			this.getUserClubRemarksList()
+		},
+		getUserClubRemarksList() {
+			this.remarksList = []
+			this.listQuery.pageNum = 1
+			this.UserService.getUserClubRemarksList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.isEmpty = false
+						this.hasNextPage = data.hasNextPage
+						this.totalRecord = data.totalRecord
+						this.remarksList = data.results
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							if (this.remarksList.length < 8) {
+								this.pullUpOn = true
+							} else {
+								this.pullUpOn = false
+								this.loadding = false
+								this.nomoreText = '已至底部'
+							}
+						}
+					} else {
+						this.isEmpty = true
+					}
+					this.isRequest = true
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		GetOnReachBottomData(index) {
+			//上拉加载
+			this.listQuery.pageNum += 1
+			this.UserService.getUserClubRemarksList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.hasNextPage = data.hasNextPage
+						this.remarksList = this.remarksList.concat(data.results)
+						this.pullFlag = false // 防上拉暴滑
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		deleteRemark(remarksId) {
+			this.handleRemarksId = remarksId
+			this.modal = true
+			this.contentModalText = '确定删除这条记录吗?'
+		},
+		handEditRemark(remarksId) {
+			//跳转修改客户咨询记录
+			this.$api.navigateTo(`/pages/seller/remarks/add?type=edit&remarksId=${remarksId}`)
+		},
+		handleChoiceaClubData(data) {
+			//跳转添加记录
+			this.$api.navigateTo(`/pages/seller/remarks/add?userId=${data.userId}`)
+		},
+		handleClick(e) {
+			//确认删除
+			if (e.index == 1) {
+				this.handleDeleteUserLike()
+			}
+			this.modal = false
+		},
+		handleDeleteUserLike() {
+			//操作删除资料备注
+			this.UserService.getUserClubRemarksDelete({
+				remarksId: this.handleRemarksId
+			})
+				.then(response => {
+					this.$util.msg('已删除', 2000, true, 'success')
+					setTimeout(() => {
+						this.getUserClubRemarksList()
+					}, 2000)
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			if (this.listQuery.keyWord != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+				this.listQuery.pageNum = 1
+				this.getUserClubRemarksList()
+			}
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.keyWord = ''
+			this.isShowClose = false
+			this.listQuery.pageNum = 1
+			this.getUserClubRemarksList()
+		},
+		hideMobel() {
+			this.modal = false
+		},
+		details(remarksId) {
+			this.$api.navigateTo(`/pages/seller/remarks/details?remarksId=${remarksId}`)
+		},
+		handlerGoReportList() {
+			this.$api.navigateTo(`/pages/seller/remarks/report-list`)
+		}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.GetOnReachBottomData()
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.listQuery.pageNum = 1
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onShow() {
+		this.initGetStotage()
+	}
+}
+</script>
+
+<style lang="scss">
+@import '@/uni.scss';
+page {
+	background: #f7f7f7;
+}
+.empty-container {
+	z-index: 99;
+}
+.container-fiexd-top {
+	width: 100%;
+	height: 208rpx;
+	background: #f5f5f5;
+	box-sizing: border-box;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 982;
+	.club-search {
+		width: 100%;
+		height: 112rpx;
+		padding: 24rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		.search-screen {
+			width: 152rpx;
+			height: 64rpx;
+			float: right;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			border: 1px solid #999999;
+			line-height: 64rpx;
+			border-radius: 32rpx;
+			color: #333333;
+			text-align: center;
+			font-size: 28rpx;
+			.icon-gengduo1 {
+				font-size: 30rpx;
+				margin-right: 10rpx;
+			}
+		}
+		.search-from {
+			width: 526rpx;
+			height: 100%;
+			background: #f7f7f7;
+			border-radius: 32rpx;
+			float: left;
+			position: relative;
+			.input {
+				width: 420rpx;
+				height: 64rpx;
+				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;
+				float: left;
+				color: #999999;
+			}
+			.icon-shanchu1 {
+				font-size: $font-size-32;
+				color: #999999;
+				position: absolute;
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				top: 0;
+				right: 0;
+				z-index: 10;
+			}
+		}
+	}
+	.fiexd-top-title {
+		width: 100%;
+		height: 96rpx;
+		box-sizing: border-box;
+		padding: 24rpx;
+		.top-left {
+			float: left;
+			line-height: 48rpx;
+			font-size: 26rpx;
+			color: #666666;
+			text {
+				color: #FF5B00;
+			}
+		}
+	}
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	position: relative;
+	padding: 0;
+	box-sizing: border-box;
+	padding: 24rpx;
+	padding-top: 232rpx;
+	.empty-container-image {
+		width: 260rpx;
+		height: 260rpx;
+		margin-top: -300rpx;
+	}
+	.tui-remarks-cell {
+		width: 100%;
+		border-radius: 16rpx;
+		margin-bottom: 24rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		padding: 0 24rpx 24rpx 24rpx;
+		&.orange {
+			background: #ffffff linear-gradient(180deg, #ffede5 0%, rgba(255, 255, 255, 0) 50%);
+		}
+		&.blue {
+			background: #ffffff linear-gradient(180deg, #deefff 0%, rgba(255, 255, 255, 0) 50%);
+		}
+		&.grey {
+			background: #ffffff linear-gradient(180deg, #ececec 0%, rgba(255, 255, 255, 0) 50%);
+		}
+		.tui-remarks-title {
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			padding: 20rpx 0;
+			border-bottom: 1px solid #e1e1e1;
+			float: left;
+			.tui-remarks-title-top {
+				width: 100%;
+				height: 56rpx;
+				line-height: 56rpx;
+				float: left;
+				.tui-remarks-time {
+					float: left;
+					box-sizing: border-box;
+					position: relative;
+					&.tt {
+						width: 58%;
+						font-size: $font-size-32;
+						color: #333333;
+						text-align: left;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						display: -webkit-box;
+						-webkit-line-clamp: 1;
+						line-clamp: 1;
+						-webkit-box-orient: vertical;
+						font-weight: bold;
+						.tags {
+							display: inline-block;
+							padding: 0 10rpx;
+							border-radius: 8rpx;
+							line-height: 36rpx;
+							font-size: 22rpx;
+							background-color: #f94b4b;
+							color: #ffffff;
+							text-align: center;
+							font-weight: normal;
+							position: absolute;
+							left: 0;
+							top: 10rpx;
+						}
+					}
+					&.sm {
+						width: 40%;
+						font-size: $font-size-26;
+						color: #999999;
+						text-align: right;
+						.orange {
+							display: inline-block;
+							padding: 0 15rpx;
+							border-radius: 24rpx;
+							line-height: 48rpx;
+							font-size: 24rpx;
+							background-color: #FF5B00;
+							color: #ffffff;
+							text-align: center;
+						}
+						.blue {
+							display: inline-block;
+							padding: 0 15rpx;
+							border-radius: 24rpx;
+							line-height: 48rpx;
+							font-size: 24rpx;
+							background-color: #1890f9;
+							color: #ffffff;
+							text-align: center;
+						}
+						.grey {
+							display: inline-block;
+							padding: 0 15rpx;
+							border-radius: 24rpx;
+							line-height: 48rpx;
+							font-size: 24rpx;
+							background-color: #e1e1e1;
+							color: #999999;
+							text-align: center;
+						}
+					}
+				}
+			}
+			.tui-remarks-title-bot {
+				width: 100%;
+				height: auto;
+				float: left;
+				.tui-remarks-text-view {
+					width: 100%;
+					height: 48rpx;
+					.tui-remarks-text {
+						width: 50%;
+						height: 48rpx;
+						line-height: 48rpx;
+						box-sizing: border-box;
+						text-align: left;
+						font-size: $font-size-26;
+						color: #999999;
+						float: left;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						display: -webkit-box;
+						-webkit-line-clamp: 1;
+						line-clamp: 1;
+						-webkit-box-orient: vertical;
+						&.a {
+							width: 100%;
+						}
+						&.y {
+							text-align: right;
+						}
+					}
+				}
+			}
+		}
+		.tui-remarks-name {
+			width: 100%;
+			height: 48rpx;
+			line-height: 48rpx;
+			font-size: $font-size-26;
+			color: #666666;
+			text-align: left;
+			margin-bottom: 10rpx;
+			margin-top: 20rpx;
+			float: left;
+			&.none {
+				margin-top: 0;
+				margin-bottom: 20rpx;
+			}
+			.tui-remarks-name-text {
+				height: 48rpx;
+				box-sizing: border-box;
+				text-align: left;
+				font-size: $font-size-26;
+				color: #333333;
+				float: left;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				.red {
+					color: #f94b4b;
+				}
+				&.a {
+					width: 100%;
+				}
+				&.h {
+					width: 40%;
+					padding-right: 24rpx;
+				}
+				&.y {
+					width: 60%;
+					padding-left: 24rpx;
+					.reviewed{
+						color: #FF5B00;
+					}
+					.approved{
+						color: #0DB26D;
+					}
+					.failed{
+						color: #F94B4B;
+					}
+				}
+			}
+		}
+		.tui-remarks-content {
+			width: 100%;
+			height: auto;
+			.tui-remarks-span {
+				height: 48rpx;
+				line-height: 48rpx;
+				text-align: center;
+				padding: 0 20rpx;
+				background-color: #f7f7f7;
+				font-size: $font-size-26;
+				color: #666666;
+				border-radius: 25rpx;
+				display: inline-block;
+				margin-right: 24rpx;
+				margin-bottom: 24rpx;
+				&:nth-child(4n) {
+					margin-right: none;
+				}
+			}
+		}
+		.tui-remarks-button {
+			width: 100%;
+			height: 68rpx;
+			border-top: 1px solid #e1e1e1;
+			padding-top: 20rpx;
+			.btn {
+				width: 50%;
+				line-height: 48rpx;
+				box-sizing: border-box;
+				text-align: center;
+				font-size: $font-size-34;
+				float: left;
+				font-weight: bold;
+				&.edit {
+					color: #1890f9;
+					border-right: 1px solid #e1e1e1;
+				}
+				&.del {
+					color: #f94b4b;
+				}
+			}
+		}
+	}
+}
+.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-button {
+		width: 600rpx;
+		height: 88rpx;
+		background: $btn-confirm;
+		line-height: 88rpx;
+		text-align: center;
+		color: #ffffff;
+		font-size: $font-size-28;
+		border-radius: 44rpx;
+		margin: 0 auto;
+	}
+	.tui-button-text {
+		width: 600rpx;
+		height: 48rpx;
+		line-height: 48rpx;
+		text-align: center;
+		color: #FF5B00;
+		font-size: $font-size-26;
+		margin: 0 auto;
+		margin-top: 15rpx;
+	}
+}
+</style>