Przeglądaj źródła

协销咨询记录

zhengjinyi 1 rok temu
rodzic
commit
12a967e124

+ 67 - 3
components/cm-module/cm-ross/cm-ross-popup.vue

@@ -5,6 +5,23 @@
 			<view class="tui-popup-close" @click.stop="hidePopup">
 				<text class="iconfont icon-iconfontguanbi"></text>
 			</view>
+			<view class="tui-popup-mssg">
+				<view class="tui-popup-mssg-img">
+					<image src="https://img.caimei365.com/group1/M00/00/55/rB-lF2MMhUWAC7vAAAGQFrJJQrw679.jpg">
+				</view>
+				<view class="tui-popup-mssg-text">
+					<view class="tui-popup-mssg-text-t">
+						<view class="text">对西班牙Ross品牌感兴趣?</view>
+						<view class="text">西班牙Ross商品</view>
+					</view>
+					<view class="tui-popup-mssg-text-b">
+						<view class="text">
+							<text class="iconfont icon-xiangxia1"></text>
+						</view>
+						<view class="text">请留下您的姓名和手机号,采美会安排咨询顾问联系您!</view>
+					</view>
+				</view>
+			</view>
 			<view class="tui-popup-main" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
 				<view class="tui-popup-from">
 					<input
@@ -15,6 +32,7 @@
 						placeholder="请输入名字"
 						placeholder-style="color:#FFFFFF;"
 						maxlength="10"
+						cursor-spacing="40"
 					/>
 				</view>
 				<view class="tui-popup-from none">
@@ -26,6 +44,7 @@
 						placeholder="请输入手机号"
 						placeholder-style="color:#FFFFFF;"
 						maxlength="11"
+						cursor-spacing="40"
 					/>
 				</view>
 			</view>
@@ -126,9 +145,8 @@ export default {
 .tui-popup-box {
 	width: 100%;
 	height: 852rpx;
-	background: url(https://static.caimei365.com/app/img/ross/ross-bg@3x.png) no-repeat;
-	background-size: cover;
-	padding: 330rpx 75rpx 0 75rpx;
+	background: linear-gradient(0deg, #FFA86E, #FF5B00);
+	padding:30rpx 30rpx 75rpx 30rpx;
 	box-sizing: border-box;
 	.tui-popup-close{
 		width: 80rpx;
@@ -143,6 +161,52 @@ export default {
 			font-size: 40rpx;
 		}
 	}
+	.tui-popup-mssg{
+		width: 100%;
+		height: 220rpx;
+		margin-bottom: 75rpx;
+		.tui-popup-mssg-img{
+			width: 220rpx;
+			height: 220rpx;
+			float: left;
+			image{
+				width: 220rpx;
+				height: 220rpx;
+				display: block;
+			}
+		}
+		.tui-popup-mssg-text{
+			width: 470rpx;
+			height: 100%;
+			box-sizing: border-box;
+			padding: 0 0 0 30rpx;
+			float: left;
+			.tui-popup-mssg-text-t{
+				width: 100%;
+				height: auto;
+				margin-bottom: 30rpx;
+				.text{
+					font-size: 30rpx;
+					height: 52rpx;
+					line-height: 52rpx;
+					color: #ffffff;
+				}
+			}
+			.tui-popup-mssg-text-b{
+				width: 100%;
+				height: auto;
+				.text{
+					font-size: 18rpx;
+					line-height: 40rpx;
+					color: #ffffff;
+					.icon-xiangxia1{
+						color: rgba(255, 255, 255, .7);
+						font-size: 36rpx;
+					}
+				}
+			}
+		}
+	}
 	.tui-popup-main{
 		width: 100%;
 		height: auto;

+ 135 - 127
components/cm-module/homeIndex/banner.vue

@@ -1,18 +1,28 @@
 <template>
 	<view class="banner">
 		<view class="swiper-banner-content">
-			<view class="swiper-banner-box" >
-				<swiper class="tui-banner-swiper tui-banner tui-skeleton-fillet" :autoplay="true" :interval="5000" :duration="500"  @change="swiperChange" :circular="true">
-					<swiper-item v-for="(item,index) in list" :key="index" @click.stop="NavToDetailPage(item)">
-						<image :src="item.image" class="tui-slide-image" mode="scaleToFill"/>
+			<view class="swiper-banner-box">
+				<swiper
+					class="tui-banner-swiper tui-banner tui-skeleton-fillet"
+					:autoplay="true"
+					:interval="5000"
+					:duration="500"
+					@change="swiperChange"
+					:circular="true"
+				>
+					<swiper-item v-for="(item, index) in list" :key="index" @click.stop="NavToDetailPage(item)">
+						<image :src="item.image" class="tui-slide-image" mode="scaleToFill" />
 					</swiper-item>
 				</swiper>
 				<view class="swiper__dots-box" v-if="list.length > 1">
-					<view v-for="(item,idx) in list" 
-						  :key="idx" 
-						  :class="[idx===current?'swiper__dots-long':'none']" 
-						  :data-index="current" class="swiper__dots-item">
-					</view>	  
+					<view
+						v-for="(item, idx) in list"
+						:key="idx"
+						:class="[idx === current ? 'swiper__dots-long' : 'none']"
+						:data-index="current"
+						class="swiper__dots-item"
+					>
+					</view>
 				</view>
 			</view>
 		</view>
@@ -33,142 +43,140 @@
 </template>
 
 <script>
-	import cmsMixins from '@/mixins/cmsMixins.js'
-	export default{
-		mixins: [cmsMixins],
-		name:'banner',
-		props:{
-			list:{
-				type:Array
-			}
-		},
-		data() {
-			return{
-				current:0,
-                StatusBar: this.StatusBar,
-			}
-		},
-		created(){
-			
-		},
-		computed: {
-	
+import cmsMixins from '@/mixins/cmsMixins.js'
+export default {
+	mixins: [cmsMixins],
+	name: 'banner',
+	props: {
+		list: {
+			type: Array
+		}
+	},
+	data() {
+		return {
+			current: 0,
+			StatusBar: this.StatusBar
+		}
+	},
+	created() {},
+	computed: {},
+	methods: {
+		swiperChange(e) {
+			//轮播图切换
+			const index = e.detail.current
+			this.current = index
 		},
-		methods:{
-			swiperChange(e) {//轮播图切换
-				const index = e.detail.current
-				this.current = index
-			},
-			NavToDetailPage(floor) {//跳转
-				this.cmsSysStatistics(1)
-				this.$api.FlooryNavigateTo(floor)
-			}
+		NavToDetailPage(floor) {
+			//跳转
+			this.cmsSysStatistics(1)
+			this.$api.FlooryNavigateTo(floor)
 		}
 	}
+}
 </script>
 
 <style lang="scss" scoped>
-    .banner {
-        background-color: #f7f7f7;
-    }
-	.swiper-banner-content{
-		width: 100%;
-		height: auto;
-		margin-top: 55px;
-        background: url(https://static.caimei365.com/app/img/bg/new_home_cumres@2x.png) no-repeat;
-		position: relative;
-		background-size: cover;
-        background-position-y: -170rpx;
+.banner {
+	background-color: #f7f7f7;
+}
+.swiper-banner-content {
+	width: 100%;
+	height: auto;
+	margin-top: 55px;
+	background: url(https://static.caimei365.com/app/img/bg/new_home_cumres@2x.png) no-repeat;
+	position: relative;
+	background-size: cover;
+	background-position-y: -170rpx;
+}
+.swiper-banner-box {
+	width: 100%;
+	height: 360rpx;
+	position: relative;
+	background-size: cover;
+	display: flex;
+}
+.tui-banner-swiper {
+	width: 700rpx;
+	margin: 0 auto;
+	height: 340rpx;
+	border-radius: 24rpx;
+	overflow: hidden;
+	transform: translateY(0);
+	box-shadow: 0px 3px 6px rgba(225, 86, 22, 0.08);
+	margin-top: 16rpx;
+	.banner-item {
+		border-radius: 24rpx;
 	}
-	.swiper-banner-box{
+	.tui-slide-image {
 		width: 100%;
-		height: 360rpx;
-		position: relative;
-		background-size: cover;
-        display: flex;
-	}	
-	.tui-banner-swiper {
-		width: 700rpx;
-		margin: 0 auto;
 		height: 340rpx;
-		border-radius: 24rpx;
-		overflow: hidden;
-		transform: translateY(0);
-		box-shadow:0px 3px 6px rgba(225,86,22,0.08);
-		margin-top: 16rpx;
-		.banner-item{
-			border-radius: 24rpx;
-		}
-		.tui-slide-image {
-			width: 100%;
-			height: 340rpx;
-			display: block;
-		}
+		display: block;
 	}
-	.swiper__dots-box{
-		position: absolute;
-		bottom: 30rpx;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		.swiper__dots-item{
-			width: 8rpx;
-			height: 8rpx;
-			border-radius: 100%;
-			margin-left: 6px;
-			background-color:rgba(255,255,255,.7);
-		}
-		.swiper__dots-long{
-			width: 35rpx;
-			height: 8rpx;
-			border-radius: 4rpx;
-			background-color: #ffff;
-			transition: all 0.4s;
-		}
+}
+.swiper__dots-box {
+	position: absolute;
+	bottom: 30rpx;
+	left: 0;
+	right: 0;
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex: 1;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	.swiper__dots-item {
+		width: 8rpx;
+		height: 8rpx;
+		border-radius: 100%;
+		margin-left: 6px;
+		background-color: rgba(255, 255, 255, 0.7);
+	}
+	.swiper__dots-long {
+		width: 35rpx;
+		height: 8rpx;
+		border-radius: 4rpx;
+		background-color: #ffff;
+		transition: all 0.4s;
 	}
-	.swiper-banner-msg{
+}
+.swiper-banner-msg {
+	width: 100%;
+	height: 54rpx;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	margin-top: 24rpx;
+	.content {
 		width: 100%;
 		height: 54rpx;
 		box-sizing: border-box;
-		padding: 0 24rpx;
-		margin-top: 24rpx;
-		.content{
-			width: 100%;
+		padding: 0 34rpx;
+		background-color: #fff0e9;
+		border-radius: 16rpx;
+		.item {
+			width: 33.33%;
 			height: 54rpx;
-			box-sizing: border-box;
-			padding: 0 34rpx;
-			background-color: #fff0e9;
-			border-radius: 16rpx;
-			.item{
-				width: 33.33%;
-				height: 54rpx;
-				line-height: 54rpx;
-				font-size: $font-size-24;
+			line-height: 54rpx;
+			font-size: $font-size-24;
+			color: $color-system;
+			float: left;
+			&.le {
+				text-align: left;
+			}
+			&.ce {
+				text-align: center;
+			}
+			&.ri {
+				text-align: right;
+			}
+			.iconfont {
 				color: $color-system;
-				float: left;
-				&.le{
-					text-align: left;
-				}
-				&.ce{
-					text-align: center;
-				}
-				&.ri{
-					text-align: right;
-				}
-				.iconfont{
-					color: $color-system;
-					font-size: $font-size-32;
-					.sm{
-						font-size: $font-size-26;
-					}
+				font-size: $font-size-32;
+				.sm {
+					font-size: $font-size-26;
 				}
 			}
 		}
 	}
+}
 </style>

+ 60 - 4
components/cm-module/homeIndex/pageSpecial.vue

@@ -3,9 +3,29 @@
 		<view class="container-pages clearfix">
 			<scroll-view scroll-x>
 				<view class="tui-goods__list">
-					<view class="tui-goods__item ross" v-if="isRossShow">
-						<view class="tui-goods__ross" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
-							<image class="ross-image" src="https://static.caimei365.com/app/img/ross/ross-image@3x.jpg" mode=""></image>
+					<view class="tui-goods__item ross" v-if="advertisement">
+						<swiper class="tui-goods__ross" 
+								circular 
+								@change="swiperChange"
+								:indicator-dots="false" 
+								:autoplay="true"
+								:interval="5000"
+								:duration="500"
+							>
+							<swiper-item v-for="(item, index) in advertisement" :key="item">
+								<view class="tui-goods__ross" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
+									<image class="ross-image" :src="item" mode=""></image>
+								</view>
+							</swiper-item>
+						</swiper>
+						<view class="swiper__dots-box">
+						    <view
+						        v-for="(item, idx) in advertisement"
+						        :key="idx"
+						        :class="[idx === current ? 'swiper__dots-long' : 'none']"
+						        :data-index="current"
+						        class="swiper__dots-item"
+						    ></view>
 						</view>
 					</view>
 					<view class="tui-goods__item" v-if="tempData.liveList != ''">
@@ -122,6 +142,12 @@ export default {
 	data() {
 		return {
 			tempData: {},
+			advertisement:[
+				'https://www.caimei365.com/img/ross/ross-image@1x.jpg',
+				'https://img.caimei365.com/group1/M00/00/A4/rB-lF2TxdE-AAOcgAAGPzubpUIU968.jpg',
+				'https://img.caimei365.com/group1/M00/04/92/rB-lGGT32GiAbNIMAANwZbKVhEE875.jpg'
+			],
+			current: 0 ,// 切换轮播
 			iconLive: 'https://static.caimei365.com/app/img/icon/icon-live.gif'
 		}
 	},
@@ -154,6 +180,9 @@ export default {
 		initData(data) {
 			this.tempData = data
 		},
+		swiperChange(e) {//轮播图切换
+			this.current = e.detail.current
+		},
 		NavArticlePath(LINK) {
 			// 友盟埋点首页文章模块点击
 			if (process.env.NODE_ENV != 'development') {
@@ -280,12 +309,39 @@ export default {
 		padding: 17rpx;
 		&.ross{
 			padding: 0;
+			position: relative;
+			.swiper__dots-box{
+				position: absolute;
+				bottom: 30rpx;
+				left: 0;
+				right: 0;
+				/* #ifndef APP-NVUE */
+				display: flex;
+				/* #endif */
+				flex: 1;
+				flex-direction: row;
+				justify-content: center;
+				align-items: center;
+				.swiper__dots-item{
+					width: 8rpx;
+					height: 8rpx;
+					border-radius: 100%;
+					margin-left: 6px;
+					background-color:rgba(255,255,255,.7);
+				}
+				.swiper__dots-long{
+					width: 35rpx;
+					height: 8rpx;
+					border-radius: 4rpx;
+					background-color: #ffff;
+					transition: all 0.4s;
+				}
+			}
 		}
 		.tui-goods__ross{
 			width: 307rpx;
 			height: 460rpx;
 			text-align: center;
-			background-color: #F3920D;
 			line-height: 460rpx;
 			color: #fff;
 			font-size: 40rpx;

+ 12 - 0
pages/seller/club/club-portrait.vue

@@ -24,6 +24,16 @@
 				<view class="charts-box charts-box0" id="charts-box0">
 					<echartInfo ref="echart-info" :clubInfo="clubInfo" :clubId="clubInfo.clubId" v-if="isRequest" />
 				</view>
+				<!-- 用户需求 -->
+				<view class="charts-box charts-box0" id="charts-box0">
+					<echartDemand
+						ref="echartDemand"
+						:clubId="clubInfo.clubId"
+						:totalAmount="totalData.orderTotalAmount"
+						:totalNum="totalData.orderTotal"
+						v-if="isRequest"
+					/>
+				</view>
 				<!-- 订单 -->
 				<view class="charts-box charts-box1" id="charts-box1">
 					<echartOrder
@@ -65,6 +75,7 @@
 import { mapState, mapMutations } from 'vuex'
 import { debounce } from '@/common/config/common.js'
 import echartInfo from './components/echart-info'
+import echartDemand from './components/echart-demand'
 import echartOrder from './components/echart-order'
 import echartKeyword from './components/echart-keyword'
 import echartContact from './components/echart-contact'
@@ -75,6 +86,7 @@ export default {
 	mixins: [chartMixin],
 	components: {
 		echartInfo,
+		echartDemand,
 		echartOrder,
 		echartKeyword,
 		echartContact,

+ 198 - 0
pages/seller/club/components/echart-demand.vue

@@ -0,0 +1,198 @@
+<template>
+	<view class="echart-content">
+		<view class="echart-title">
+			<view class="e-icon e4"><text class="iconfont icon-zixunjilu"></text></view>
+			<view class="e-name">用户需求</view>
+		</view>
+		<view class="echart-search">
+			<view class="echart-search-date">
+				<view class="echart-search-date-input">
+					<picker
+						mode="date"
+						:value="date"
+						:start="startDate"
+						:end="endDate"
+						@change="bindStartDateChange($event, 2)"
+					>
+						<text class="input-text">{{ contactData.startTime }}</text>
+					</picker>
+					<text class="iconfont icon-riqi"></text>
+				</view>
+				<view class="line">-</view>
+				<view class="echart-search-date-input">
+					<picker
+						mode="date"
+						:value="date"
+						:start="startDate"
+						:end="endDate"
+						@change="bindEndDateChange($event, 2)"
+					>
+						<text class="input-text">{{ contactData.endTime }}</text>
+					</picker>
+					<text class="iconfont icon-riqi"></text>
+				</view>
+			</view>
+			<view class="echart-search-time">
+				<view
+					class="time-tab"
+					v-for="(time, index) in timeList"
+					:class="{ current: current === index }"
+					:key="index"
+					@click="handleTimeClick(time.current, index, 2)"
+					>{{ time.label }}</view
+				>
+			</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="column" :opts="opts" :chartData="contactChartData" :animation="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
+		},
+		totalNum:{
+			type:Number,
+			default:0
+		}
+	},
+	data() {
+		return {
+			isEmpty:false,
+			current: 0,
+			remarksTotal:0,
+			contactChartData:null,
+			contactData:{
+			    startTime: '',
+			    endTime: '',
+			    remarksScopeNum:0
+			},
+			params:{
+			    clubId:0,//  机构id
+			    dateType:3,//   日期类别 0日 1月 2半年 3全年
+			    startTime:'',//   开始时间
+			    endTime:'',//   结束时间
+			    type:0	//  统计类别 0订单 1搜索关键词 2咨询记录 3访问记录 4初始状态
+			},
+			opts: {
+				legend: {
+					show: false
+				},
+				color: ['#81ecec'],
+				dataLabel: true,
+				padding: [15, 30, 0, 5],
+				enableScroll: false,
+				xAxis: {
+					disableGrid: true,
+					min: 0,
+					axisLine: false,
+					max: 40,
+					rotateLabel: true,
+					format: 'xAxisDemo3'
+				},
+				yAxis: {
+					fontSize: 12,
+					fontColor: '#CCCCCC',
+					axisLineColor: '#DCDCDC',
+					gridColor: '#DCDCDC',
+					boundaryGap: 'justify',
+					disabled: true,
+					axisLine: false,
+					min: 0,
+					max: 40
+				},
+				extra: {
+					column: {
+						type: 'group',
+						width: 20,
+						meterBorde: 1,
+						meterFillColor: '#FFFFFF',
+						activeBgColor: '#000000',
+						activeBgOpacity: 0.08,
+						seriesGap: 2,
+						categoryGap: 3,
+						barBorderCircle: false,
+						linearType: 'custom',
+						linearOpacity: 1,
+						customColor: ['#00cec9', '#81ecec'],
+						colorStop: 0
+					}
+				}
+			}
+		}
+	},
+	created() {
+		this.params.clubId = this.clubId
+		this.remarksTotal = this.totalNum
+		this.userClubPortrait(2)
+	},
+	methods: {
+		handleTimeClick(dateType,index,type) {
+		    //年月日点击
+		    console.log('dateType', dateType)
+		    this.current = index
+		    this.params.dateType = dateType
+			this.params.startTime = ''
+			this.params.endTime = ''
+		    this.userClubPortrait(type)
+		},
+		async userClubPortrait(type){
+			this.params.type = type
+			this.contactData.startTime = this.params.startTime
+			this.contactData.endTime = this.params.endTime
+			try {
+				const res = await this.UserService.userClubPortrait(this.params)
+				const data = res.data
+				this.contactData.remarksScopeNum = data.portrait.remarksScopeNum
+				this.contactData.startTime = this.params.startTime = data.portrait.startTime
+				this.contactData.endTime = this.params.endTime = data.portrait.endTime
+				if(data.remarks){
+					this.isEmpty = false  
+				    this.getSetContactData(data.remarks)
+				}else{
+					this.isEmpty = true  
+				}
+				console.log('contactData',this.contactData)
+			} catch (error) {
+			   this.$util.msg(error.msg, 2000)
+			}
+		},
+		getSetContactData(data) {
+			setTimeout(() => {
+				//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
+				let res = {
+					categories:data.name,
+					series: [
+						{
+							name: '',
+							data: data.value
+						}
+					]
+				}
+				this.contactChartData = JSON.parse(JSON.stringify(res))
+			}, 500)
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss"></style>

+ 36 - 3
pages/seller/club/components/echart-info.vue

@@ -6,24 +6,57 @@
 			<view class="e-start">{{ data.status | statusFilters }}</view>
 		</view>
 		<view class="echart-main clearfix" @click="handleClubInfo">
+			<view class="echart-text">
+				<text class="label">机构ID:</text>{{ data.linkMan ? data.linkMan :'无' }}
+			</view>
 			<view class="echart-text">
 				<text class="label">联系人:</text>{{ data.linkMan ? data.linkMan :'无' }}
 			</view>
+			<view class="echart-text">
+				<text class="label">性别:</text>{{ data.linkMan ? data.linkMan :'无' }}
+			</view>
+			<view class="echart-text">
+				<text class="label">年龄:</text>{{ data.linkMan ? data.linkMan :'无' }}
+			</view>
 			<view class="echart-text">
 				<text class="label">手机号:</text>{{ data.contractMobile }}
 			</view>
 			<view class="echart-text" v-if="data.linkManIdentity">
 				<text class="label">联系人身份:</text>{{ data.linkManIdentity | linkManFormat }}
 			</view>
+			<view class="echart-text" v-if="data.addTime">
+				<text class="label">注册时间:</text> {{ data.addTime }}
+			</view>
+			<view class="echart-text">
+				<text class="label">客户价值:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">活跃状态:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">资料完整度:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">客户来源:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">机构级别:</text>{{ data.contractMobile }}
+			</view>
 			<view class="echart-text" v-if="data.firstClubType">
 				<text class="label">机构类型:</text>{{ data.firstClubType | FirstFormat }}-{{ data.secondClubType | TwoFormat }}
 			</view>
+			<view class="echart-text">
+				<text class="label">入群状态:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">微信触达:</text>{{ data.contractMobile }}
+			</view>
+			<view class="echart-text">
+				<text class="label">电话触达:</text>{{ data.contractMobile }}
+			</view>
 			<view class="echart-text" v-if="data.provincialAddress">
 				<text class="label">地址:</text>{{ data.provincialAddress }}
 			</view>
-			<view class="echart-text" v-if="data.addTime">
-				<text class="label">注册时间:</text> {{ data.addTime }}
-			</view>
 			<view class="echart-next">详情></view>
 		</view>
 	</view>

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

@@ -28,7 +28,7 @@
 								:id="item.value"
 								:value="item.value"
 								:checked="item.checked"
-							></radio>
+							/>
 							<label :for="item.value" class="label">
 								<text>{{ item.name }}</text>
 							</label>

+ 279 - 158
pages/seller/remarks/add.vue

@@ -19,6 +19,32 @@
 			<view class="content-club-ri"> <text class="iconfont icon-xiayibu"></text> </view>
 		</view>
 		<view class="remarks-content">
+			<view class="list-view-title">
+				<view class="list-view-h1"><text>*</text>沟通情况:</view>
+			</view>
+			<view class="remarks-category">
+				<radio-group @change="radioChange">
+					<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value">
+						<radio
+							:value="item.value"
+							style="transform:scale(0.7)"
+							color="#FF5B00"
+							:checked="index === current"
+						/>
+						<label :for="item.value" class="label">
+							<text>{{ item.name }}</text>
+						</label>
+					</label>
+				</radio-group>
+				<checkbox-group v-if="current === 0" style="margin-top: 10rpx;">
+					<label class="label">
+						<checkbox value="cb" style="transform:scale(0.7)" color="#FF5B00" />电话
+					</label>
+					<label class="label">
+						<checkbox value="cb" style="transform:scale(0.7)" color="#FF5B00" />微信
+					</label>
+				</checkbox-group>
+			</view>
 			<view class="list-view-title">
 				<view class="list-view-h1"><text>*</text>咨询人:</view>
 			</view>
@@ -32,6 +58,55 @@
 					maxlength="15"
 				/>
 			</view>
+			<view class="list-view-title"> <view class="list-view-h1">客户来源:</view> </view>
+			<view class="list-view-radio">
+				<picker @change="bindPickerChange(4, $event)" :value="index" :range="sourceActions" range-key="name">
+					<input
+						class="input"
+						type="text"
+						disabled="false"
+						v-model="sourceStateText"
+						value=""
+						placeholder="请选择"
+					/>
+					<text class="iconfont icon-xiangyou"></text>
+				</picker>
+			</view>
+			<view class="list-view-title"> <view class="list-view-h1">客户性别:</view> </view>
+			<view class="list-view-radio">
+				<picker @change="bindPickerChange(5, $event)" :value="index" :range="genderActions" range-key="name">
+					<input
+						class="input"
+						type="text"
+						disabled="false"
+						v-model="genderText"
+						value=""
+						placeholder="请选择"
+					/>
+					<text class="iconfont icon-xiangyou"></text>
+				</picker>
+			</view>
+			<view class="list-view-title"> <view class="list-view-h1">客户年龄:</view> </view>
+			<view class="list-view-radio">
+				<picker @change="bindPickerChange(6, $event)" :value="index" :range="ageActions" range-key="name">
+					<input class="input" type="text" disabled="false" v-model="ageText" value="" placeholder="请选择" />
+					<text class="iconfont icon-xiangyou"></text>
+				</picker>
+			</view>
+			<view class="list-view-title"> <view class="list-view-h1">加群情况:</view> </view>
+			<view class="list-view-radio">
+				<picker @change="bindPickerChange(7, $event)" :value="index" :range="additiveActions" range-key="name">
+					<input
+						class="input"
+						type="text"
+						disabled="false"
+						v-model="additiveText"
+						value=""
+						placeholder="请选择"
+					/>
+					<text class="iconfont icon-xiangyou"></text>
+				</picker>
+			</view>
 			<view class="list-view-title">
 				<view class="list-view-h1"><text>*</text>咨询类别:</view>
 			</view>
@@ -47,7 +122,7 @@
 					{{ category.className }}
 				</view>
 			</view>
-			<view class="list-view-title"> <view class="list-view-h1">机构类型:</view> </view>
+			<!-- 			<view class="list-view-title"> <view class="list-view-h1">机构类型:</view> </view>
 			<view class="remarks-input">
 				<input
 					class="input"
@@ -57,7 +132,7 @@
 					placeholder="如美甲店,医院"
 					maxlength="15"
 				/>
-			</view>
+			</view> -->
 			<view class="list-view-title"> <view class="list-view-h1">咨询商品:</view> </view>
 			<view class="tui-remarks-content">
 				<view class="tui-remarks-goods-input" v-if="handleGoods.length === 0" @click="handleShowGoodPopup">
@@ -79,31 +154,90 @@
 				</view>
 			</view>
 			<view class="list-view-title">
-				<view class="list-view-h1"><text>*</text>关键词记录:</view>
-				<view class="list-view-p"
-					>(请总结客户的咨询内容,以商品或者服务的关键词形式填写,不需要填口语化的内容。)</view
-				>
+				<view class="list-view-h1"><text>*</text>标签记录:</view>
+				<view class="list-view-p">
+					请总结客户的个人画像和咨询内容,尽量使用简短的描述性词语,杜绝口语化的词语 (优先选择以下展示的标签)
+				</view>
+			</view>
+			<view class="list-view-list-main">
+				<view class="list-label-list">
+					<text class="list-label" 
+						  :class="item.isChecked ? 'active' : ''"
+						  v-for="(item, index) in labelsList" 
+						  :key="index"
+						  @click="handleCheckedLabel(item,index)"
+					>
+						  {{ item.name }}
+					</text>
+				</view>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1">机构静态标签:</view>
+				<view class="list-view-p"> (若你对客户的静态特点有更多维度进行描述,请手动填) </view>
+			</view>
+			<view class="list-view-list-main">
+				<view class="list-view-list" v-for="(item, index) in staticLabelsList" :key="index">
+					<view class="list-view-input">
+						<input
+							class="input"
+							type="text"
+							v-model="item.label"
+							placeholder="请输入标签,不超过10个汉字"
+							maxlength="10"
+							@focus="hideStaticLabelsAction(item, $event)"
+							@blur="hideStaticLabelsAction(item, $event)"
+							@input="handleStaticLabelsAction(index, $event)"
+						/>
+						<view class="list-view-assAction" v-if="item.isAssociation">
+							<scroll-view class="tui-popup-scroll train" scroll-y="true">
+								<view
+									class="ass-list"
+									v-for="(ass, assIndex) in staticLabelsActionList"
+									:key="assIndex"
+									@click="handleSelectStaticLabels(ass.remarks, item)"
+									>{{ ass.remarks }}</view
+								>
+							</scroll-view>
+						</view>
+					</view>
+					<view class="list-view-btn">
+						<text
+							class="iconfont icon-zengjia"
+							v-if="staticLabelsList.length < 9 && index === staticLabelsList.length - 1"
+							@click="handleAddStaticLabels(item, index)"
+						></text>
+						<text
+							class="iconfont icon-shanchu4"
+							v-if="staticLabelsList.length > 1 && index != staticLabelsList.length - 1"
+							@click="handleDelStaticLabels(item, index)"
+						></text>
+					</view>
+				</view>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1">机构动态标签:</view>
+				<view class="list-view-p"> (若你对客户的购买诉求有更多维度进行描述,请手动填) </view>
 			</view>
 			<view class="list-view-list-main">
-				<view class="list-view-list" v-for="(item, index) in remarksList" :key="index">
+				<view class="list-view-list" v-for="(item, index) in trendsLabelsList" :key="index">
 					<view class="list-view-input">
 						<input
 							class="input"
 							type="text"
 							v-model="item.label"
-							placeholder="请输入关键词,不超过10个汉字"
+							placeholder="请输入标签,不超过10个汉字"
 							maxlength="10"
-							@focus="hideAssAction(item, $event)"
-							@blur="hideAssAction(item, $event)"
-							@input="bindRemarkAction(index, $event)"
+							@focus="hideTrendsLabelsAction(item, $event)"
+							@blur="hideTrendsLabelsAction(item, $event)"
+							@input="handleTrendsLabelsAction(index, $event)"
 						/>
 						<view class="list-view-assAction" v-if="item.isAssociation">
 							<scroll-view class="tui-popup-scroll train" scroll-y="true">
 								<view
 									class="ass-list"
-									v-for="(ass, assIndex) in assActionList"
+									v-for="(ass, assIndex) in trendsLabelsActionList"
 									:key="assIndex"
-									@click="SelectAssociationFn(ass.remarks, item)"
+									@click="handleSelectTrendsLabels(ass.remarks, item)"
 									>{{ ass.remarks }}</view
 								>
 							</scroll-view>
@@ -112,13 +246,13 @@
 					<view class="list-view-btn">
 						<text
 							class="iconfont icon-zengjia"
-							v-if="remarksList.length < 9 && index === remarksList.length - 1"
-							@click="addListFn(item, index)"
+							v-if="trendsLabelsList.length < 9 && index === trendsLabelsList.length - 1"
+							@click="handleAddTrendsLabels(item, index)"
 						></text>
 						<text
 							class="iconfont icon-shanchu4"
-							v-if="remarksList.length > 1 && index != remarksList.length - 1"
-							@click="deleteLogistItemFn(item, index)"
+							v-if="trendsLabelsList.length > 1 && index != trendsLabelsList.length - 1"
+							@click="handleDelTrendsLabels(item, index)"
 						></text>
 					</view>
 				</view>
@@ -266,9 +400,11 @@ import authorize from '@/common/config/authorize.js'
 import { uploadFileImage, uploadFilePdfDocDocxXlsx } from '@/services/public.js'
 import cmGoodspopup from '../components/cm-goods-popup'
 import cmReportpopup from '../components/cm-report-popup'
+import addMixins from './mixins/addMixins.js'
 
 var isPreviewImg
 export default {
+	mixins: [addMixins],
 	components: {
 		cmGoodspopup,
 		cmReportpopup
@@ -305,23 +441,7 @@ export default {
 			checkedCategorysList: [],
 			categorys: [],
 			isConfirmLoding: false,
-			priceFlagText: '',
 			reportText: '',
-			intenFlagText: '',
-			followStateText: '',
-			priceActions: [
-				{ name: '敏感', value: 1 },
-				{ name: '适中', value: 2 },
-				{ name: '不敏感', value: 3 },
-				{ name: '不明确', value: 4 }
-			],
-			intenActions: [
-				{ name: '意向强烈', value: 1 },
-				{ name: '意向一般', value: 2 },
-				{ name: '意向平淡', value: 3 },
-				{ name: '随便看看', value: 4 }
-			],
-			stateActions: [{ name: '跟进中', value: 1 }, { name: '跟进完成', value: 2 }, { name: '已放弃', value: 3 }],
 			remarksList: [
 				{
 					label: '',
@@ -332,7 +452,7 @@ export default {
 			assActionList: [],
 			isGoodspopup: false,
 			isReportpopup: false,
-			isHashReport:false,
+			isHashReport: false,
 			handleGoods: [],
 			reportInfo: {
 				clubId: 0,
@@ -350,137 +470,95 @@ export default {
 			uni.setNavigationBarTitle({ title: '修改记录' })
 		} else {
 			this.clubUserId = option.userId
-			this.getCulbInfo()
+			this.getCulbInfo(option.userId)
 			this.getUserClubConsults()
 		}
 	},
 	methods: {
 		...mapMutations(['login']),
-		getCulbInfo() {
+		async getCulbInfo(userId) {
 			// 查询机构信息
-			this.UserService.OrganizationUpdateModifyInfo({ userId: this.clubUserId })
-				.then(response => {
-					this.clubInfo = response.data.club
-					this.userInfo = response.data.user
-					this.reportInfo.name = this.clubInfo.name
-					this.reportInfo.linkMan = this.clubInfo.linkMan
-					this.remarksParams.clubId = this.reportInfo.clubId = this.clubInfo.clubId
-					if (this.handleType != 'edit') {
-						this.remarksParams.questionMan = this.clubInfo.linkMan
-					}
-				})
-				.catch(error => {
-					console.log('=============>', error.msg)
-				})
+			try{
+				const res = await this.UserService.OrganizationUpdateModifyInfo({ userId: userId })
+				const data = res.data
+				this.clubInfo = data.club
+				this.userInfo = data.user
+				this.reportInfo.name = this.clubInfo.name
+				this.reportInfo.linkMan = this.clubInfo.linkMan
+				this.remarksParams.clubId = this.reportInfo.clubId = this.clubInfo.clubId
+				if (this.handleType != 'edit') {
+					this.remarksParams.questionMan = this.clubInfo.linkMan
+				}
+			}catch(error){
+				console.log('=============>', error.msg)
+			}
 		},
-		getUserClubRemarksDetail(remarksId) {
+		async getUserClubRemarksDetail(remarksId) {
 			//修改回显资料备注信息
-			this.UserService.getUserClubRemarksDetail({
-				remarksId: remarksId
-			})
-				.then(response => {
-					let data = response.data
-					this.clubUserId = data.userId
-					this.remarksList = data.remarks.map((el, index) => {
-						el.isAssociation = false
-						return el
-					})
-					this.remarksParams.remarksId = data.remarksId
-					this.remarksParams.extra = data.extra
-					this.remarksParams.clubType = data.clubType
-					this.remarksParams.pinceSensitve = data.pinceSensitve
-					this.remarksParams.satisfied = data.satisfied
-					this.remarksParams.followup = data.followup
-					this.remarksParams.fileList = data.fileList
-					this.remarksParams.imageList = data.imageList
-					this.remarksParams.productId = data.productId
-					if (this.handleType == 'edit') {
-						if(data.reportId){
-							this.isHashReport = true
-							this.remarksParams.reportId = data.reportId
-						}
-						this.remarksParams.questionMan = data.questionMan
-						this.remarksParams.consult = data.consult
-						this.checkedCategorysList = data.consult.split(',').map(i => parseInt(i, 0))
-						this.categorys = this.categorys.map((el, index) => {
-							if (data.consult.includes(el.id)) {
-								el.isChecked = true
-							} else {
-								el.isChecked = false
-							}
-							return el
-						})
+			try{
+				const res = await this.UserService.getUserClubRemarksDetail({ remarksId: remarksId })
+				const data = res.data
+				this.clubUserId = data.userId
+				this.remarksList = data.remarks.map((el, index) => {
+					el.isAssociation = false
+					return el
+				})
+				this.remarksParams.remarksId = data.remarksId
+				this.remarksParams.extra = data.extra
+				this.remarksParams.clubType = data.clubType
+				this.remarksParams.pinceSensitve = data.pinceSensitve
+				this.remarksParams.satisfied = data.satisfied
+				this.remarksParams.followup = data.followup
+				this.remarksParams.fileList = data.fileList
+				this.remarksParams.imageList = data.imageList
+				this.remarksParams.productId = data.productId
+				if (this.handleType == 'edit') {
+					if (data.reportId) {
+						this.isHashReport = true
+						this.remarksParams.reportId = data.reportId
 					}
-					if(data.productId){
-						let pro = {
-							image:data.mainImage,
-							name:data.productName,
-							shopName:data.shopName
+					this.remarksParams.questionMan = data.questionMan
+					this.remarksParams.consult = data.consult
+					this.checkedCategorysList = data.consult.split(',').map(i => parseInt(i, 0))
+					this.categorys = this.categorys.map((el, index) => {
+						if (data.consult.includes(el.id)) {
+							el.isChecked = true
+						} else {
+							el.isChecked = false
 						}
-						this.handleGoods.push(pro)
+						return el
+					})
+				}
+				if (data.productId) {
+					let pro = {
+						image: data.mainImage,
+						name: data.productName,
+						shopName: data.shopName
 					}
-					this.reportText = data.reportText ? data.reportText : ''
-					this.priceFlagText = this.pinceFilters(data.pinceSensitve)
-					this.intenFlagText = this.intenActionsFilters(data.satisfied)
-					this.followStateText = this.followupFilters(data.followup)
-					this.getCulbInfo()
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+					this.handleGoods.push(pro)
+				}
+				this.reportText = data.reportText ? data.reportText : ''
+				this.priceFlagText = this.pinceFilters(data.pinceSensitve)
+				this.intenFlagText = this.intenActionsFilters(data.satisfied)
+				this.followStateText = this.followupFilters(data.followup)
+				this.getCulbInfo(data.userId)
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		getUserClubConsults() {
+		async getUserClubConsults() {
 			//查询咨询类别
-			this.UserService.getUserClubConsults()
-				.then(response => {
-					this.categorys = response.data.map((el, index) => {
-						el.isChecked = false
-						return el
-					})
+			try{
+				const res = await this.UserService.getUserClubConsults()
+				const data = res.data
+				this.categorys = data.map((el, index) => {
+					el.isChecked = false
+					return el
 				})
-				.catch(error => {
-					console.log('=========>获取咨询类别列表失败')
-				})
-		},
-		bindRemarkAction(index, event) {
-			this.assActionList = []
-			this.checkRemarkIndex = index
-			if (event.detail.value != '') {
-				this.UserService.getCmremarkslist({ remarks: event.detail.value })
-					.then(response => {
-						if (response.data && response.data.length > 0) {
-							this.assActionList = response.data
-							this.remarksList[index].isAssociation = true
-						} else {
-							this.assActionList = []
-							this.remarksList[index].isAssociation = false
-						}
-					})
-					.catch(error => {
-						console.log('=========>获取关键词联想失败')
-					})
-			} else {
-				this.remarksList[index].isAssociation = false
+			}catch(error){
+				console.log('=========>获取咨询类别列表失败')
 			}
 		},
-		hideAssAction(item, event) {
-			//隐藏对应的联想弹窗
-			item.isAssociation = false
-		},
-		SelectAssociationFn(ass, item) {
-			//选择关键词
-			item.isAssociation = false
-			item.label = ass
-		},
-		addListFn(item, index) {
-			//添加
-			let obj = { label: '', isAssociation: false }
-			item.isAssociation = false
-			this.remarksList.push(obj)
-		},
-		deleteLogistItemFn(item, index) {
-			this.remarksList.splice(index, 1)
-		},
 		bindPickerChange(type, e) {
 			//选择筛选条件
 			switch (type) {
@@ -496,6 +574,22 @@ export default {
 					this.followStateText = this.stateActions[e.target.value].name
 					this.remarksParams.followup = this.stateActions[e.target.value].value
 					break
+				case 4: // 客户来源
+					this.sourceStateText = this.stateActions[e.target.value].name
+					this.remarksParams.followup = this.stateActions[e.target.value].value
+					break
+				case 5: // 客户性别
+					this.genderText = this.stateActions[e.target.value].name
+					this.remarksParams.followup = this.stateActions[e.target.value].value
+					break
+				case 6: // 客户年龄
+					this.ageText = this.stateActions[e.target.value].name
+					this.remarksParams.followup = this.stateActions[e.target.value].value
+					break
+				case 7: // 加群请假
+					this.additiveText = this.stateActions[e.target.value].name
+					this.remarksParams.followup = this.stateActions[e.target.value].value
+					break
 			}
 		},
 		async editButtonConfim() {
@@ -513,13 +607,13 @@ export default {
 				return
 			}
 			//统一处理关键词
-			let remarksList = []
-			for (const el of this.remarksList) {
+			let staticLabelsList = []
+			for (const el of this.staticLabelsList) {
 				if (el.label != '') {
-					remarksList.push(el.label)
+					staticLabelsList.push(el.label)
 				}
 			}
-			if (remarksList.length == 0) {
+			if (staticLabelsList.length == 0) {
 				this.$util.msg('请输入关键词记录', 2000)
 				return
 			}
@@ -535,7 +629,7 @@ export default {
 				this.$util.msg('请选择跟进状态', 2000)
 				return
 			}
-			this.remarksParams.remarks = JSON.stringify(remarksList)
+			this.remarksParams.remarks = JSON.stringify(staticLabelsList)
 			console.log('remarksParams', this.remarksParams)
 			this.remarksParams.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
 			this.isConfirmLoding = true
@@ -921,6 +1015,27 @@ page {
 		box-sizing: border-box;
 		margin-bottom: 30rpx;
 		position: relative;
+		.list-label-list{
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			.list-label{
+				display: inline-block;
+				padding: 0 20rpx;
+				height: 48rpx;
+				line-height: 48rpx;
+				background: #F7F7F7;
+				text-align: center;
+				margin-right: 20rpx;
+				margin-bottom: 20rpx;
+				font-size: 26rpx;
+				color: #666666;
+				&.active{
+					background: #FEF6F3;
+					color: #FF5B00;
+				}
+			}
+		}
 		.list-view-list {
 			width: 100%;
 			height: 90rpx;
@@ -985,7 +1100,7 @@ page {
 					font-size: $font-size-48;
 				}
 				.icon-shanchu4 {
-					color: #FF5B00;
+					color: #ff5b00;
 					font-size: $font-size-48;
 				}
 			}
@@ -994,6 +1109,12 @@ page {
 	.remarks-category {
 		width: 100%;
 		float: left;
+		margin-bottom: 20rpx;
+		.label {
+			color: #666666;
+			font-size: 28rpx;
+			margin-right: 50rpx;
+		}
 		.checkbox-list {
 			height: 60rpx;
 			font-size: $font-size-28;
@@ -1005,7 +1126,7 @@ page {
 			float: left;
 			.icon-yixuanze {
 				margin-right: 10rpx;
-				color: #FF5B00;
+				color: #ff5b00;
 			}
 			.icon-weixuanze {
 				margin-right: 10rpx;
@@ -1103,7 +1224,7 @@ page {
 				border-radius: 8rpx;
 				background-color: #fff2ec;
 				font-size: $font-size-24;
-				color: #FF5B00;
+				color: #ff5b00;
 				line-height: 44rpx;
 				text-align: center;
 				float: left;
@@ -1179,7 +1300,7 @@ page {
 		height: 88rpx;
 		line-height: 88rpx;
 		text-align: center;
-		color: #FF5B00;
+		color: #ff5b00;
 		font-size: $font-size-24;
 	}
 	.edit-button {

+ 194 - 0
pages/seller/remarks/mixins/addMixins.js

@@ -0,0 +1,194 @@
+import Vue from 'vue'
+const addMixins = {
+    data() {
+        return {
+            items: [
+                { value: '1',name: '已沟通',checked: false},
+                { value: '2',name: '联系不上',checked: false}
+            ],
+            current: '',
+            priceFlagText: '',
+            priceActions: [
+                { name: '敏感', value: 1 },
+                { name: '适中', value: 2 },
+                { name: '不敏感', value: 3 },
+                { name: '不明确', value: 4 }
+            ],
+            intenFlagText: '',
+            intenActions: [
+                { name: '意向强烈', value: 1 },
+                { name: '意向中等', value: 2 },
+                { name: '意向平淡', value: 3 },
+                { name: '随便看看', value: 4 }
+            ],
+            followStateText: '',
+            stateActions: [
+                { name: '跟进中', value: 1 },
+                { name: '跟进完成', value: 2 },
+                { name: '已放弃', value: 3 },
+            ],
+            sourceStateText: '', // 客户来源
+            sourceActions: [
+                { name: '网站', value: 1 },
+                { name: '小程序', value: 2 },
+                { name: '公众号', value: 3 },
+                { name: '小红书', value: 4 },
+                { name: '微博', value: 5 },
+                { name: '搜狐', value: 6 },
+                { name: '其他', value: 7 }
+            ],
+            genderText: '', // 客户性别
+            genderActions: [
+                { name: '男', value: 1 },
+                { name: '女', value: 2 }
+            ],
+            ageText: '', // 客户年龄
+            ageActions: [
+                { name: '20-30', value: 1 },
+                { name: '30-40', value: 2 },
+                { name: '40-50', value: 3 },
+                { name: '50-60', value: 4 },
+                { name: '60以上', value: 4 }
+            ],
+            additiveText: '', // 加群情况
+            additiveActions: [
+                { name: '已加群', value: 1 },
+                { name: '未加群', value: 2 }
+            ],
+            labelsList: [
+                { name: '国产品牌', value: 1, isChecked: false },
+                { name: '国产品牌', value: 1, isChecked: false },
+                { name: '国产品牌', value: 1, isChecked: false },
+                { name: '国产品牌', value: 1, isChecked: false },
+                { name: '国产品牌', value: 1, isChecked: false },
+                { name: '国产品牌', value: 1, isChecked: false },
+            ],
+            checkedLabelList: '',
+            staticLabelsList: [{ // 静态标签
+                label: '',
+                isAssociation: false
+            }],
+            checkStaticLabelsIndex: 0, // 静态标签索引
+            staticLabelsActionList: [],// 静态标签联动搜索列表
+            trendsLabelsList: [{ // 动态标签
+                label: '',
+                isAssociation: false
+            }],
+            checkTrendsLabelsIndex: 0, // 动态标签索引
+            trendsLabelsActionList: [],// 动态标签联动搜索列表
+        }
+    },
+    computed: {
+
+    },
+    methods: {
+        // 切换沟通情况
+        radioChange(evt) {
+            for (let i = 0; i < this.items.length; i++) {
+                if (this.items[i].value === evt.detail.value) {
+                    this.current = i
+                    break
+                }
+            }
+        },
+        handleCheckedLabel(label, index) {
+            // 选择标签
+            label.isChecked = !label.isChecked
+            if (label.isChecked) {
+                if (!this.contains(this.checkedLabelList, label.id)) {
+                    this.checkedLabelList.push(label.id)
+                }
+            } else {
+                this.checkedLabelList.splice(this.checkedLabelList.indexOf(label.id), 1)
+            }
+            this.remarksParams.labels = this.checkedLabelList.join(',')
+        },
+        // 标签联动搜索
+        async getCmremarkslist(index,value,type){
+            try{
+                const res = await this.UserService.getCmremarkslist({ remarks: value })
+                const data = res.data 
+                if(data && data.length > 0){
+                    if(type === 1){
+                        this.staticLabelsActionList = data
+                        this.staticLabelsList[index].isAssociation = true
+                    }else{
+                        this.trendsLabelsActionList = data
+                        this.trendsLabelsList[index].isAssociation = true
+                    }
+                }else{
+                    if(type === 1){
+                        this.staticLabelsActionList = []
+                        this.staticLabelsList[index].isAssociation = false
+                    }else{
+                        this.trendsLabelsActionList = []
+                        this.trendsLabelsList[index].isAssociation = false
+                    }
+                }
+            }catch(error){
+                console.log('=========>获取静态标签联想列表失败')
+            }
+        },
+        // 静态标签联想
+        handleStaticLabelsAction(index, event) {
+            this.staticLabelsActionList = []
+            this.checkStaticLabelsIndex = index
+            if (event.detail.value != '') {
+                this.getCmremarkslist(index,event.detail.value,1)
+            } else {
+                this.staticLabelsList[index].isAssociation = false
+            }
+        },
+		 //隐藏对应的联想弹窗
+        hideStaticLabelsAction(item, event) {
+            item.isAssociation = false
+        },
+        //选择静态标签
+        handleSelectStaticLabels(ass, item) {
+            item.isAssociation = false
+            item.label = ass
+        },
+        //添加静态标签
+        handleAddStaticLabels(item, index) {
+            let obj = { label: '', isAssociation: false }
+            item.isAssociation = false
+            this.staticLabelsList.push(obj)
+        },
+        //删除静态标签
+        handleDelStaticLabels(item, index) {
+            this.staticLabelsList.splice(index, 1)
+        },
+        // 动态标签联想
+        handleTrendsLabelsAction(index, event) {
+            this.trendsLabelsActionList = []
+            this.checkTrendsLabelsIndex = index
+            if (event.detail.value != '') {
+                this.getCmremarkslist(index,event.detail.value,2)
+            } else {
+                this.trendsLabelsList[index].isAssociation = false
+            }
+        },
+		 //隐藏对应的联想弹窗
+        hideTrendsLabelsAction(item, event) {
+            item.isAssociation = false
+        },
+        //选择动态标签
+        handleSelectTrendsLabels(ass, item) {
+            item.isAssociation = false
+            item.label = ass
+        },
+        //添加动态标签
+        handleAddTrendsLabels(item, index) {
+            let obj = { label: '', isAssociation: false }
+            item.isAssociation = false
+            this.trendsLabelsList.push(obj)
+        },
+        //删除动态标签
+        handleDelTrendsLabels(item, index) {
+            this.trendsLabelsList.splice(index, 1)
+        },
+		
+    }
+}
+
+export default addMixins