Procházet zdrojové kódy

commit -m 咨询记录

zhengjinyi před 1 rokem
rodič
revize
0f27603322

+ 1 - 1
pages/seller/club/club-detail.vue

@@ -6,7 +6,7 @@
 			borderRadius="10rpx"
 			:isLoading="true"
 			:loadingType="5"
-		></tui-skeleton>
+		/>
 		<template v-else>
 			<view class="info-content clearfix">
 				<view class="info-main border">

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

@@ -7,7 +7,7 @@
 		</view>
 		<view class="echart-main clearfix" @click="handleClubInfo">
 			<view class="echart-text">
-				<text class="label">机构ID:</text>{{ data.linkMan ? data.linkMan :'无' }}
+				<text class="label">机构ID:</text>{{ data.clubId ? data.clubId :'' }}
 			</view>
 			<view class="echart-text">
 				<text class="label">联系人:</text>{{ data.linkMan ? data.linkMan :'无' }}

+ 335 - 144
pages/seller/remarks/add-record.vue

@@ -6,9 +6,82 @@
 			</view>
 			<view class="remarks-input">{{ questionMan }}</view>
 			<view class="list-view-title">
-				<view class="list-view-h1"><text>*</text>咨询类别:</view>
+				<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"  @change="checkboxChange" style="margin-top: 10rpx;">
+					<label class="label" v-for="item in checkboItems" :key="item.value">
+						<checkbox :value="item.value" :checked="item.checked" style="transform:scale(0.7)" color="#FF5B00" />
+						{{item.name}}
+					</label>
+				</checkbox-group>
+			</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="customerAge" 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" v-if="current === 0">
+				<view class="list-view-h1"><text>*</text>咨询类别:</view>
+			</view>
+			<view class="remarks-category" v-if="current === 0">
 				<view
 					class="checkbox-list"
 					:class="category.isChecked ? 'checked' : ''"
@@ -20,7 +93,9 @@
 					{{ 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"
@@ -30,7 +105,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">
@@ -52,13 +127,29 @@
 				</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">标签记录:</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-label-list">
+					<text class="list-label" 
+						  :class="item.isChecked ? 'active' : ''"
+						  v-for="(item, index) in labelsList" 
+						  :key="index"
+						  @click="handleCheckedLabel(item,index)"
+					>
+						  {{ item.label }}
+					</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"
@@ -66,17 +157,17 @@
 							v-model="item.label"
 							placeholder="请输入标签,不超过10个汉字"
 							maxlength="10"
-							@focus="hideAssAction(item, $event)"
-							@blur="hideAssAction(item, $event)"
-							@input="bindRemarkAction(index, $event)"
+							@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 assActionList"
+									v-for="(ass, assIndex) in staticLabelsActionList"
 									:key="assIndex"
-									@click="SelectAssociationFn(ass.label,item)"
+									@click="handleSelectStaticLabels(ass.label, item)"
 									>{{ ass.label }}</view
 								>
 							</scroll-view>
@@ -85,13 +176,56 @@
 					<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="staticLabelsList.length < 9 && index === staticLabelsList.length - 1"
+							@click="handleAddStaticLabels(item, index)"
 						></text>
 						<text
 							class="iconfont icon-shanchu4"
-							v-if="remarksList.length > 1 && index != remarksList.length - 1"
-							@click="deleteLogistItemFn(item, index)"
+							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 trendsLabelsList" :key="index">
+					<view class="list-view-input">
+						<input
+							class="input"
+							type="text"
+							v-model="item.label"
+							placeholder="请输入标签,不超过10个汉字"
+							maxlength="10"
+							@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 trendsLabelsActionList"
+									:key="assIndex"
+									@click="handleSelectTrendsLabels(ass.label, item)"
+									>{{ ass.label }}</view
+								>
+							</scroll-view>
+						</view>
+					</view>
+					<view class="list-view-btn">
+						<text
+							class="iconfont icon-zengjia"
+							v-if="trendsLabelsList.length < 9 && index === trendsLabelsList.length - 1"
+							@click="handleAddTrendsLabels(item, index)"
+						></text>
+						<text
+							class="iconfont icon-shanchu4"
+							v-if="trendsLabelsList.length > 1 && index != trendsLabelsList.length - 1"
+							@click="handleDelTrendsLabels(item, index)"
 						></text>
 					</view>
 				</view>
@@ -113,10 +247,10 @@
 				/>
 				<text class="iconfont icon-xiangyou"></text>
 			</view>
-			<view class="list-view-title">
+			<view class="list-view-title" v-if="current === 0">
 				<view class="list-view-h1"><text>*</text>价格敏感度:</view>
 			</view>
-			<view class="list-view-radio">
+			<view class="list-view-radio" v-if="current === 0">
 				<picker @change="bindPickerChange(1, $event)" :value="index" :range="priceActions" range-key="name">
 					<input
 						class="input"
@@ -129,10 +263,10 @@
 					<text class="iconfont icon-xiangyou"></text>
 				</picker>
 			</view>
-			<view class="list-view-title">
+			<view class="list-view-title" v-if="current === 0">
 				<view class="list-view-h1"><text>*</text>意向程度:</view>
 			</view>
-			<view class="list-view-radio">
+			<view class="list-view-radio" v-if="current === 0">
 				<picker @change="bindPickerChange(2, $event)" :value="index" :range="intenActions" range-key="name">
 					<input
 						class="input"
@@ -145,10 +279,10 @@
 					<text class="iconfont icon-xiangyou"></text>
 				</picker>
 			</view>
-			<view class="list-view-title">
+			<view class="list-view-title" v-if="current === 0">
 				<view class="list-view-h1"><text>*</text>跟进状态:</view>
 			</view>
-			<view class="list-view-radio">
+			<view class="list-view-radio" v-if="current === 0">
 				<picker @change="bindPickerChange(3, $event)" :value="index" :range="stateActions" range-key="name">
 					<input
 						class="input"
@@ -239,9 +373,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
@@ -254,7 +390,6 @@ export default {
 			productActions: [],
 			remarksParams: {
 				clubType:'', //机构类型
-				remarks:[], // 关键词
 				extra: '',//额外说明
 				fileList: [],
 				imageList: [],
@@ -265,6 +400,15 @@ export default {
 				pinceSensitve:0,//价格敏感度
 				satisfied:0,// 意向程度
 				followup:0,// 跟进状态
+				communicationSituation:'', // 沟通情况 0 已沟通 1联系不上
+				communicationMethods:'',  //沟通方式  1:电话 2:微信
+				customerSource:'',//客户来源 0 网址 1 小程序 2 公众号 3 小红书 4 微博 5 搜狐 6 其他
+				customerGender:'',// 客户性别 0 男 1 女
+				customerAge:'',// 客户年龄
+				groupAddition:''   ,// 加群情况 0 以加群 1 未加群
+				remarks: null, // 关键词
+				trendsKeyword:null,// 动态标签
+				stateKeyword:null  // 静态标签
 			},
 			min: 0,
 			max: 200,
@@ -274,29 +418,7 @@ export default {
 			userInfo:{},
 			checkedCategorysList:[],
 			categorys:[],
-			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: '',
-					isAssociation:false
-				}
-			],
 			checkRemarkIndex:0,
 			assActionList: [],
 			isGoodspopup:false,
@@ -313,6 +435,7 @@ export default {
 		console.log(option)
 		if (option.type == 'edit') {
 			this.handleType = option.type
+			this.getPriorKeyword()
 			this.getUserClubConsults()
 			this.getUserRemarksVisitDetail(option.remarksId)
 			uni.setNavigationBarTitle({title:'修改记录'})
@@ -323,6 +446,7 @@ export default {
 			this.reportInfo.questionMan = option.questionMan
 			this.reportInfo.questionManId = option.questionManId
 			this.initGetStotage(option)
+			this.getPriorKeyword()
 			this.getUserClubConsults()
 		}
 	},
@@ -342,15 +466,29 @@ export default {
 				this.reportInfo.questionMan = data.questionMan
 				this.reportInfo.questionManId = data.questionManId
 				this.questionMan = data.questionMan
-				this.remarksList = data.remarks.map((el, index) => {
-					el.isAssociation = false
-					return el
-				})
 				this.remarksParams.questionManId = data.questionManId
+				this.remarksParams.communicationSituation = this.current = data.communicationSituation
+				this.remarksParams.communicationMethods = data.communicationMethods
+				if(data.communicationMethods === '1,2' || data.communicationMethods === '2,1'){
+					this.checkboItems = this.checkboItems.map(el => {
+						el.checked = true
+						return el
+					})
+				}else{
+					this.checkboItems = this.checkboItems.map(el => {
+						if (el.value*1 === data.communicationMethods*1) {
+						   el.checked = true
+						}
+						return el
+					})
+				}
 				this.remarksParams.remarksId = data.remarksId
 				this.remarksParams.extra = data.extra
 				this.remarksParams.clubType = data.clubType
 				this.remarksParams.pinceSensitve = data.pinceSensitve
+				this.remarksParams.customerSource = data.customerSource
+				this.remarksParams.customerGender = data.customerGender
+				this.remarksParams.customerAge = this.customerAge = data.customerAge
 				this.remarksParams.satisfied = data.satisfied
 				this.remarksParams.followup = data.followup
 				this.remarksParams.fileList = data.fileList
@@ -378,118 +516,116 @@ export default {
 					}
 					this.handleGoods.push(pro)
 				}
+				const remarks = data.remarks.map((el, index) => {
+					if (!this.contains(this.labelsList, el.label)) {
+						el.isChecked = true
+					}
+					return el
+				})
+				this.firstLabelList = data.remarks.map((el, index) => {
+					return el.label
+				})
+				console.log('=========>firstLabelList',this.firstLabelList)
+				this.labelsList = [...remarks ,...this.labelsList]
+				console.log('=========>labelsList',this.labelsList)
+				this.staticLabelsList = data.stateKeyword.map((el, index) => {
+					el.isAssociation = false
+					return el
+				})
+				this.trendsLabelsList = data.trendsKeyword.map((el, index) => {
+					el.isAssociation = false
+					return el
+				})
 				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.sourceStateText = this.sourceActionsFilters(data.customerSource)
+				this.genderText = this.genderActionsFilters(data.customerGender)
+				this.additiveText = this.additiveActionsFilters(data.groupAddition)
 				this.initGetStotage()
 			})
 			.catch(error => {
 				this.$util.msg(error.msg, 2000)
 			})
 		},
-		getUserClubConsults() {
-			//查询咨询类别
-			this.UserService.getUserClubConsults()
-				.then(response => {
-					this.categorys = response.data.map((el, index) => {
-						el.isChecked = false
-						return el
-					})
-				})
-				.catch(error => {
-					console.log('=========>获取咨询类别列表失败')
-				})
-		},
-		bindRemarkAction(index, event) {
-			this.checkRemarkIndex = index
-			this.assActionList = []
-			if (event.detail.value != '') {
-				this.UserService.getCmremarkslist({remarks : event.detail.value,type:0}).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('=========>获取关键词联想失败')
+		async getPriorKeyword() {
+			//查询优先展示标签
+			try{
+				const res = await this.UserService.getPriorKeyword()
+				const data = res.data
+				this.labelsList = data.map((el, index) => {
+					el.isChecked = false
+					return el
 				})
-			} 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) {
-				case 1:
-					this.priceFlagText = this.priceActions[e.target.value].name
-					this.remarksParams.pinceSensitve = this.priceActions[e.target.value].value
-					break
-				case 2:
-					this.intenFlagText = this.intenActions[e.target.value].name
-					this.remarksParams.satisfied = this.intenActions[e.target.value].value
-					break
-				case 3:
-					this.followStateText = this.stateActions[e.target.value].name
-					this.remarksParams.followup = this.stateActions[e.target.value].value
-					break
+		async getUserClubConsults() {
+			//查询咨询类别
+			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('=========>获取咨询类别列表失败')
 			}
 		},
 		editButtonConfim() {
-			//保存资料备注
-			if (this.remarksParams.consult == '') {
-				this.$util.msg('请选择咨询类别', 2000)
-				return
-			}
-			//统一处理关键词
-			let remarksList = []
-			for (const el of this.remarksList) {
-				if(el.label!=''){
-					remarksList.push(el.label)
+			if(this.current === 0){
+				if (this.remarksParams.consult == '') {
+					this.$util.msg('请选择咨询类别', 2000)
+					return
+				}
+				if (!this.remarksParams.pinceSensitve) {
+					this.$util.msg('请选择价格敏感度', 2000)
+					return
+				}
+				if (!this.remarksParams.satisfied) {
+					this.$util.msg('请选择意向程度', 2000)
+					return
+				}
+				if (!this.remarksParams.followup) {
+					this.$util.msg('请选择跟进状态', 2000)
+					return
 				}
 			}
-			if (remarksList.length == 0) {
-				this.$util.msg('请输入关键词记录', 2000)
-				return
-			}
-			if (!this.remarksParams.pinceSensitve) {
-				this.$util.msg('请选择价格敏感度', 2000)
-				return
+			//统一处理静态标签
+			let staticLabelsList = []
+			this.staticLabelsList.forEach( el =>{
+				if(el.label !== ''){
+					staticLabelsList.push(el.label)
+				}
+			})
+			console.log('staticLabelsList', staticLabelsList)
+			//统一处理动态标签
+			let trendsLabelsList = []
+			this.trendsLabelsList.forEach( (el) =>{
+				if(el.label !== ''){
+					trendsLabelsList.push(el.label)
+				}
+			})
+			console.log('trendsLabelsList', trendsLabelsList)
+			if(this.firstLabelList.length > 0){
+				this.remarksParams.remarks = JSON.stringify(this.firstLabelList)
 			}
-			if (!this.remarksParams.satisfied) {
-				this.$util.msg('请选择意向程度', 2000)
-				return
+			if(trendsLabelsList.length > 0){
+				this.remarksParams.trendsKeyword = JSON.stringify(trendsLabelsList)
 			}
-			if (!this.remarksParams.followup) {
-				this.$util.msg('请选择跟进状态', 2000)
-				return
+			if(staticLabelsList.length > 0){
+				this.remarksParams.stateKeyword = JSON.stringify(staticLabelsList)
 			}
-			this.remarksParams.remarks = JSON.stringify(remarksList)
 			console.log('remarksParams',this.remarksParams)
-			this.UserService.getUserClubVisitorSaveAdd({
-				params: JSON.stringify(this.remarksParams)
-			})
-			.then(response => {
+			this.getUserClubVisitorSaveAdd({ params: JSON.stringify(this.remarksParams) })
+		},
+		// 调用保存
+		async getUserClubVisitorSaveAdd(params){
+			try{
+				await this.UserService.getUserClubVisitorSaveAdd(params)
 				this.$util.msg('保存成功', 2000, true, 'success')
 				let VisitorInfo = {
 						questionManId: this.remarksParams.questionManId,
@@ -500,11 +636,10 @@ export default {
 					uni.navigateBack({
 						delta: 1
 					})
-				}, 2000)
-			})
-			.catch(error => {
+				},2000)	
+			}catch(error){
 				this.$util.msg(error.msg, 2000)
-			})
+			}
 		},
 		choiceCategorys(category,index){
 			// 选择类别
@@ -634,6 +769,36 @@ export default {
 				4: '随便看看'
 			}
 		 return map[value]
+		},
+		sourceActionsFilters(value) {
+			// 客户来源
+			const map = {
+				0: '网站',
+				1: '小程序',
+				2: '公众号',
+				3: '小红书',
+				4: '微博',
+				5: '搜狐',
+				6: '其他'
+				
+			}
+			return map[value]
+		},
+		genderActionsFilters(value) {
+			// 客户性别
+			const map = {
+				0: '男',
+				1: '女'
+			}
+			return map[value]
+		},
+		additiveActionsFilters(value) {
+			// 加群情况
+			const map = {
+				0: '已加群',
+				1: '未加群'
+			}
+			return map[value]
 		}
 	},
 	onShow() {}
@@ -827,6 +992,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;
@@ -900,6 +1086,11 @@ page {
 	.remarks-category{
 		width: 100%;
 		float: left;
+		.label {
+			color: #666666;
+			font-size: 28rpx;
+			margin-right: 50rpx;
+		}
 		.checkbox-list {
 			height: 60rpx;
 			font-size: $font-size-28;

+ 27 - 14
pages/seller/remarks/add.vue

@@ -432,9 +432,9 @@ export default {
 				customerGender:'',// 客户性别 0 男 1 女
 				customerAge:'',// 客户年龄
 				groupAddition:''   ,// 加群情况 0 以加群 1 未加群
-				remarks: [], // 关键词
-				trendsKeyword:[],// 动态标签
-				stateKeyword:[]  // 静态标签
+				remarks: null, // 关键词
+				trendsKeyword:null,// 动态标签
+				stateKeyword:null  // 静态标签
 				
 			},
 			min: 0,
@@ -463,10 +463,10 @@ export default {
 	onLoad(option) {
 		console.log(option)
 		if (option.type == 'edit') {
+			this.handleType = option.type
 			this.getPriorKeyword()
 			this.getUserClubConsults()
 			this.getUserClubRemarksDetail(option.remarksId)
-			this.handleType = option.type
 			uni.setNavigationBarTitle({ title: '修改记录' })
 		} else {
 			this.clubUserId = option.userId
@@ -506,14 +506,14 @@ export default {
 				this.remarksParams.remarksId = data.remarksId
 				this.remarksParams.communicationSituation = this.current = data.communicationSituation
 				this.remarksParams.communicationMethods = data.communicationMethods
-				if(data.communicationMethods === '1,2'){
+				if(data.communicationMethods === '1,2' || data.communicationMethods === '2,1'){
 					this.checkboItems = this.checkboItems.map(el => {
 						el.checked = true
 						return el
 					})
 				}else{
 					this.checkboItems = this.checkboItems.map(el => {
-						if (el.value*1 === data.communicationMethods) {
+						if (el.value*1 === data.communicationMethods*1) {
 						   el.checked = true
 						}
 						return el
@@ -562,7 +562,6 @@ export default {
 					}
 					return el
 				})
-				console.log('=========>remarks',remarks)
 				this.firstLabelList = data.remarks.map((el, index) => {
 					return el.label
 				})
@@ -663,16 +662,30 @@ export default {
 				}
 			}
 			//统一处理静态标签
-			let staticLabelsList = this.staticLabelsList.map( (el) =>{
-				return el.label
+			let staticLabelsList = []
+			this.staticLabelsList.forEach( el =>{
+				if(el.label !== ''){
+					staticLabelsList.push(el.label)
+				}
 			})
+			console.log('staticLabelsList', staticLabelsList)
 			//统一处理动态标签
-			let trendsLabelsList = this.trendsLabelsList.map( (el) =>{
-				return el.label
+			let trendsLabelsList = []
+			this.trendsLabelsList.forEach( (el) =>{
+				if(el.label !== ''){
+					trendsLabelsList.push(el.label)
+				}
 			})
-			this.remarksParams.remarks = JSON.stringify(this.firstLabelList)
-			this.remarksParams.trendsKeyword = JSON.stringify(trendsLabelsList)
-			this.remarksParams.stateKeyword = JSON.stringify(staticLabelsList)
+			console.log('trendsLabelsList', trendsLabelsList)
+			if(this.firstLabelList.length > 0){
+				this.remarksParams.remarks = JSON.stringify(this.firstLabelList)
+			}
+			if(trendsLabelsList.length > 0){
+				this.remarksParams.trendsKeyword = JSON.stringify(trendsLabelsList)
+			}
+			if(staticLabelsList.length > 0){
+				this.remarksParams.stateKeyword = JSON.stringify(staticLabelsList)
+			}
 			console.log('remarksParams', this.remarksParams)
 			this.isConfirmLoding = true
 			this.getUserClubRemarksSave({ params: JSON.stringify(this.remarksParams) })

+ 16 - 19
pages/seller/remarks/details.vue

@@ -255,27 +255,24 @@ export default {
 	},
 	methods: {
 		...mapMutations(['login']),
-		getUserClubRemarksDetail() {
-			//资料详情
-			this.UserService.getUserClubRemarksDetail({
-				remarksId: this.remarksId
-			})
-				.then(response => {
-					this.remarksParams = response.data
-					this.labelsList = [...this.remarksParams.remarks,...this.remarksParams.stateKeyword,...this.remarksParams.trendsKeyword]
-					this.clubUserId = response.data.userId
-					this.getCulbInfo()
-					setTimeout(()=>{
-						this.skeletonShow = false
-					},500)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+		async getUserClubRemarksDetail() {
+			//备注详情
+			try{
+				const res = await this.UserService.getUserClubRemarksDetail({ remarksId: this.remarksId })
+				this.remarksParams = res.data
+				this.labelsList = [...this.remarksParams.remarks,...this.remarksParams.stateKeyword,...this.remarksParams.trendsKeyword]
+				this.clubUserId = res.data.userId
+				this.getCulbInfo(res.data.userId)
+				setTimeout(()=>{
+					this.skeletonShow = false
+				},500)
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		getCulbInfo() {
+		getCulbInfo(userId) {
 			// 查询机构信息
-			this.UserService.OrganizationUpdateModifyInfo({ userId: this.clubUserId })
+			this.UserService.OrganizationUpdateModifyInfo({ userId: userId })
 				.then(response => {
 					this.clubInfo = response.data.club
 					this.userInfo = response.data.user

+ 79 - 20
pages/seller/remarks/record-details.vue

@@ -1,6 +1,15 @@
 <template>
 	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
 		<view class="remarks-content">
+			<view class="list-view-title">
+				<view class="list-view-h1">
+					沟通情况:
+					<text> {{ remarksParams.communicationSituation === 0 ? '已沟通' : '联系不上' }} </text>
+					<text v-if="remarksParams.communicationMethods === 1"> (电话) </text>
+					<text v-if="remarksParams.communicationMethods === 2"> (微信) </text>
+					<text v-if="remarksParams.communicationMethods ==='1,2'"> (电话,微信) </text>
+				</view>
+			</view>
 			<view class="list-view-title">
 				<view class="list-view-h1"
 					>咨询人:<text>{{ remarksParams.questionMan }}</text></view
@@ -11,9 +20,28 @@
 					>咨询类别:{{ remarksParams.consultBack ? remarksParams.consultBack : '无' }}</view
 				>
 			</view>
-			<view class="list-view-title">
+			<view class="list-view-title" v-if="remarksParams.customerSource">
+				<view class="list-view-h1">
+					客户来源:
+					<text>{{ remarksParams.customerSource | sourceActionsFilters }}</text>
+				</view>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.customerGender">
 				<view class="list-view-h1">
-					机构类型:<text>{{ remarksParams.clubType ? remarksParams.clubType : '无' }}</text>
+					客户性别:
+					<text>{{ remarksParams.customerGender | genderActionsFilters }}</text>
+				</view>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.customerAge">
+				<view class="list-view-h1">
+					客户年龄:
+					<text>{{ remarksParams.customerAge }}</text>
+				</view>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.groupAddition">
+				<view class="list-view-h1">
+					加群情况:
+					<text>{{ remarksParams.groupAddition | additiveActionsFilters }}</text>
 				</view>
 			</view>
 			<view class="list-view-title" v-if="remarksParams.productName"> <view class="list-view-h1">咨询商品:</view> </view>
@@ -26,12 +54,14 @@
 					</view>
 				</view>
 			</view>
-			<view class="list-view-title"> <view class="list-view-h1">标签记录:</view> </view>
-			<view class="tui-remarks-content">
-				<text class="tui-remarks-span" v-for="(label, labelIndex) in remarksParams.remarks" :key="labelIndex">
-					{{ label.label }}
-				</text>
-			</view>
+			<template v-if="labelsList.length>0">
+				<view class="list-view-title"> <view class="list-view-h1">标签记录:</view> </view>
+				<view class="tui-remarks-content">
+					<text class="tui-remarks-span" v-for="(label, labelIndex) in labelsList" :key="labelIndex">
+						{{ label.label }}
+					</text>
+				</view>
+			</template>
 			<view class="list-view-title" v-if="remarksParams.status">
 				<view class="list-view-h1"
 					>关联报备:<text>{{ remarksParams.reportText }}</text></view
@@ -115,7 +145,8 @@ export default {
 			productActions: [],
 			remarksParams: {},
 			remarksId: 0,
-			categorys: '产品,二手,耗材'
+			categorys: '产品,二手,耗材',
+			labelsList:[]
 		}
 	},
 	onLoad(option) {
@@ -161,21 +192,49 @@ export default {
 				4: '随便看看'
 			}
 		 return map[value]
+		},
+		sourceActionsFilters(value) {
+			// 客户来源
+			const map = {
+				0: '网站',
+				1: '小程序',
+				2: '公众号',
+				3: '小红书',
+				4: '微博',
+				5: '搜狐',
+				6: '其他'
+				
+			}
+			return map[value]
+		},
+		genderActionsFilters(value) {
+			// 客户性别
+			const map = {
+				0: '男',
+				1: '女'
+			}
+			return map[value]
+		},
+		additiveActionsFilters(value) {
+			// 加群情况
+			const map = {
+				0: '已加群',
+				1: '未加群'
+			}
+			return map[value]
 		}
 	},
 	methods: {
 		...mapMutations(['login']),
-		getUserRemarksVisitDetail() {
-			//资料详情
-			this.UserService.getUserRemarksVisitDetail({
-				remarksId: this.remarksId
-			})
-				.then(response => {
-					this.remarksParams = response.data
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+		async getUserRemarksVisitDetail() {
+			//备注详情
+			try{
+				const res = await this.UserService.getUserRemarksVisitDetail({ remarksId: this.remarksId })
+				this.remarksParams = res.data
+				this.labelsList = [...this.remarksParams.remarks,...this.remarksParams.stateKeyword,...this.remarksParams.trendsKeyword]
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
 		previewImg(image, index) {
 			//顶部商品图片预览

+ 157 - 142
pages/seller/remarks/record-list.vue

@@ -18,8 +18,7 @@
 						<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
 					</view>
 					<view class="search-screen" @click="showScreenDrawer">
-						<text class="iconfont icon-gengduo1"></text>
-						筛选
+						<text class="iconfont icon-gengduo1"></text> 筛选
 					</view>
 				</view>
 			</view>
@@ -31,7 +30,7 @@
 					<view class="top-right-btn" @click="handlerGoReportList">查看报备记录</view>
 				</view>
 			</view>
-		</view>	
+		</view>
 		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '220rpx' : '148rpx' }">
 			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
 				<!-- 空白页 -->
@@ -45,30 +44,41 @@
 						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}"
+						: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-bot">
 								<view class="tui-remarks-text-view">
-									<view class="tui-remarks-text h"><text class="iconfont icon-bianji"></text>记录人:{{ remark.recordName }}</view>
+									<view class="tui-remarks-text h"
+										><text class="iconfont icon-bianji"></text>记录人:{{ remark.recordName }}</view
+									>
 									<view class="tui-remarks-text y" v-if="remark.followup">
-										<text :class="{orange:remark.followup==1,blue:remark.followup==2,grey:remark.followup==3}">
+										<text
+											:class="{
+												orange: remark.followup == 1,
+												blue: remark.followup == 2,
+												grey: remark.followup == 3
+											}"
+										>
 											{{ remark.followup | followupFilters }}
 										</text>
 									</view>
 								</view>
 								<view class="tui-remarks-text-view">
 									<view class="tui-remarks-text h" v-if="listQuery.manager >= 0">
-										<text class="iconfont icon-guanliyuan"></text>管理员:{{ remark.leaderName ? remark.leaderName : '' }}
+										<text class="iconfont icon-guanliyuan"></text>管理员:{{
+											remark.leaderName ? remark.leaderName : ''
+										}}
 									</view>
-									<view class="tui-remarks-text y">
-										{{ remark.addDate }}
-									</view
-									>
+									<view class="tui-remarks-text y"> {{ remark.addDate }} </view>
 								</view>
 							</view>
-						</view> 
+						</view>
 						<view class="tui-remarks-name">
 							<view class="tui-remarks-name-text h">
 								咨询人:{{ remark.questionMan ? remark.questionMan : '' }}
@@ -79,7 +89,7 @@
 						</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> 
+								意向程度:<text class="red">{{ remark.satisfied | intenActionsFilters }}</text>
 							</view>
 							<view class="tui-remarks-name-text y" v-if="remark.status">
 								报备状态:<text
@@ -93,11 +103,18 @@
 							</view>
 						</view>
 						<view class="tui-remarks-content">
-							<text class="tui-remarks-span" v-for="(label, labelIndex) in remark.remarks" :key="labelIndex">
+							<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="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>
@@ -114,9 +131,7 @@
 			<view class="tui-popup-box clearfix">
 				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
 					<view class="tui-flex-1">
-						<view class="tui-button cancel" @click="handleShowFereepopup"
-							>添加记录</view
-						>
+						<view class="tui-button cancel" @click="handleShowFereepopup">添加记录</view>
 						<view class="tui-button confirm" @click="handleAddRecord">新增咨询人</view>
 					</view>
 					<view class="tui-flex-1">
@@ -126,20 +141,19 @@
 			</view>
 		</tui-bottom-popup>
 		<!-- 筛选抽屉 -->
-		<cm-screenDrawer ref="screendrawer"
-						:popupType="2"
-						:rightDrawer="isScreenDrawer"
-						@handSearchConfirm="handSearchConfirmData">
-		</cm-screenDrawer>
-		</cm-clubpopup>
+		<cm-screenDrawer
+			ref="screendrawer"
+			:popupType="2"
+			:rightDrawer="isScreenDrawer"
+			@handSearchConfirm="handSearchConfirmData"
+		/>
 		<!-- 咨询人列表弹窗 -->
 		<cm-refereepopup
 			ref="cmrefereepopup"
 			v-if="isClubConsultShow"
 			:show="isClubConsultShow"
 			@handleChoiceaConsult="handleChoiceaConsultData"
-		>
-		</cm-refereepopup>
+		/>
 		<!-- 弹窗提示 -->
 		<tui-modal
 			:show="modal"
@@ -151,8 +165,8 @@
 			:size="32"
 			shape="circle"
 			:maskClosable="false"
-		>
-		</tui-modal>
+		/>
+
 		<!-- 操作弹窗 -->
 		<cm-clubmodal
 			ref="clubModal"
@@ -160,8 +174,7 @@
 			:show="isClubModalShow"
 			:modalType="2"
 			@handleChoiceaText="handleChoiceaTextData"
-		>
-		</cm-clubmodal>
+		/>
 	</view>
 </template>
 <script>
@@ -171,15 +184,15 @@ import cmClubmodal from '../components/cm-clubmodal'
 import cmScreenDrawer from '../components/cm-screen-drawer'
 
 const defaultListQuery = {
-	startAddTime:'',
-	endAddTime:'',
-	consult:'',
+	startAddTime: '',
+	endAddTime: '',
+	consult: '',
 	pinceSensitve: 0, //价格敏感度
 	satisfied: 0, // 意向程度
 	followup: 0, // 跟进状态
-	leaderId:0,
-	groupId:0,
-	manager:0,
+	leaderId: 0,
+	groupId: 0,
+	manager: 0,
 	serviceProviderId: 0,
 	pageNum: 1,
 	pageSize: 10
@@ -227,14 +240,12 @@ export default {
 			questionMan: '',
 			questionManId: '',
 			handleRemarksId: 0,
-			isClubConsultShow:false,
+			isClubConsultShow: false,
 			isClubModalShow: false,
-			isScreenDrawer:false,
+			isScreenDrawer: false
 		}
 	},
-	onLoad(option) {
-		
-	},
+	onLoad(option) {},
 	filters: {
 		statusFilters(value) {
 			// 订单来源
@@ -251,28 +262,30 @@ export default {
 			let number = Number(value).toFixed(2)
 			return number
 		},
-		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 ''
-		    }
+		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'])
@@ -357,11 +370,11 @@ export default {
 		},
 		handEditRemark(remarksId) {
 			//跳转修改画像
-			this.$api.navigateTo(`/pages/seller/remarks/add-record?type=edit&remarksId=${remarksId}&questionMan=${
-					this.questionMan
-				}`)
+			this.$api.navigateTo(
+				`/pages/seller/remarks/add-record?type=edit&remarksId=${remarksId}&questionMan=${this.questionMan}`
+			)
 		},
-		handSearchConfirmData(data){
+		handSearchConfirmData(data) {
 			//确定筛选
 			this.listQuery.startAddTime = data.startAddTime
 			this.listQuery.endAddTime = data.endAddTime
@@ -379,26 +392,32 @@ export default {
 			//跳转选择咨询人
 			this.$api.navigateTo('/pages/seller/remarks/customer-list')
 		},
-		handleChoiceaConsultData(data){// 选择咨询人添加记录
+		handleChoiceaConsultData(data) {
+			// 选择咨询人添加记录
 			//跳转添加记录
-			this.$api.navigateTo(`/pages/seller/remarks/add-record?type=add&questionManId=${data.questionManId}&questionMan=${
+			this.$api.navigateTo(
+				`/pages/seller/remarks/add-record?type=add&questionManId=${data.questionManId}&questionMan=${
 					data.questionMan
-				}`)
+				}`
+			)
 		},
-		handleAddRecord() {// 新增咨询人显示弹框
+		handleAddRecord() {
+			// 新增咨询人显示弹框
 			this.isClubModalShow = true
 		},
-		handleShowFereepopup(){// 显示咨询人弹窗
+		handleShowFereepopup() {
+			// 显示咨询人弹窗
 			this.isClubConsultShow = true
 		},
-		handleChoiceaTextData(data) {// 新增咨询人监听时间
-			console.log('data',data)
+		handleChoiceaTextData(data) {
+			// 新增咨询人监听时间
+			console.log('data', data)
 			this.handleSaveVisitor(data)
 		},
 		async handleSaveVisitor(name) {
 			// 添加咨询人
-			try{
-				let params = { name: name,serviceProviderId: this.listQuery.serviceProviderId }
+			try {
+				let params = { name: name, serviceProviderId: this.listQuery.serviceProviderId }
 				const res = await this.UserService.getUserClubVisitorSave(params)
 				const data = res.data
 				setTimeout(() => {
@@ -408,19 +427,15 @@ export default {
 						}&remarksId=${data.remarksId}`
 					)
 				}, 1000)
-			}catch(error){
+			} catch (error) {
 				console.log('=======>添加咨询人失败~')
 			}
 			this.UserService.getUserClubVisitorSave({
 				name: data,
 				serviceProviderId: this.listQuery.serviceProviderId
 			})
-				.then(response => {
-					
-				})
-				.catch(error => {
-					
-				})
+				.then(response => {})
+				.catch(error => {})
 		},
 		handleClick(e) {
 			//取消收藏
@@ -444,7 +459,7 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
-		showScreenDrawer(){
+		showScreenDrawer() {
 			//显示筛选抽屉
 			this.isScreenDrawer = true
 		},
@@ -471,7 +486,7 @@ export default {
 		details(remarksId) {
 			this.$api.navigateTo(`/pages/seller/remarks/record-details?remarksId=${remarksId}`)
 		},
-		handlerGoReportList(){
+		handlerGoReportList() {
 			this.$api.navigateTo(`/pages/seller/remarks/report-visitor-list`)
 		}
 	},
@@ -491,7 +506,7 @@ export default {
 			uni.stopPullDownRefresh()
 		}, 200)
 	},
-	
+
 	onShow() {
 		this.init()
 	}
@@ -506,10 +521,10 @@ page {
 .empty-container {
 	z-index: 99;
 }
-.container-fiexd-top{
+.container-fiexd-top {
 	width: 100%;
 	height: 208rpx;
-	background: #F5F5F5;
+	background: #f5f5f5;
 	box-sizing: border-box;
 	position: fixed;
 	top: 0;
@@ -577,31 +592,31 @@ page {
 			}
 		}
 	}
-	.fiexd-top-title{
+	.fiexd-top-title {
 		width: 100%;
 		height: 96rpx;
 		box-sizing: border-box;
 		padding: 24rpx;
-		.top-left{
+		.top-left {
 			float: left;
 			line-height: 48rpx;
 			font-size: 26rpx;
 			color: #666666;
-			text{
-				color: #FF5B00;
+			text {
+				color: #ff5b00;
 			}
 		}
-		.top-right{
+		.top-right {
 			float: right;
-			.top-right-btn{
+			.top-right-btn {
 				height: 48rpx;
 				padding: 0 20rpx;
 				box-sizing: border-box;
-				border: 1px solid #FF5B00;
+				border: 1px solid #ff5b00;
 				font-size: 26rpx;
 				text-align: center;
 				line-height: 48rpx;
-				color: #FF5B00;
+				color: #ff5b00;
 				border-radius: 24rpx;
 			}
 		}
@@ -624,17 +639,17 @@ page {
 		width: 100%;
 		border-radius: 16rpx;
 		margin-bottom: 24rpx;
-		background: #FFFFFF;
+		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%);
+		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%);
+		&.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%);
+		&.grey {
+			background: #ffffff linear-gradient(180deg, #ececec 0%, rgba(255, 255, 255, 0) 50%);
 			color: #999999;
 		}
 		.tui-remarks-title {
@@ -668,33 +683,33 @@ page {
 						font-size: $font-size-26;
 						color: #999999;
 						text-align: right;
-						.orange{
+						.orange {
 							display: inline-block;
 							padding: 0 15rpx;
 							border-radius: 24rpx;
 							line-height: 48rpx;
 							font-size: 24rpx;
-							background-color: #FF5B00;
-							color: #FFFFFF;
+							background-color: #ff5b00;
+							color: #ffffff;
 							text-align: center;
 						}
-						.blue{
+						.blue {
 							display: inline-block;
 							padding: 0 15rpx;
 							border-radius: 24rpx;
 							line-height: 48rpx;
 							font-size: 24rpx;
-							background-color: #1890F9;
-							color: #FFFFFF;
+							background-color: #1890f9;
+							color: #ffffff;
 							text-align: center;
 						}
-						.grey{
+						.grey {
 							display: inline-block;
 							padding: 0 15rpx;
 							border-radius: 24rpx;
 							line-height: 48rpx;
 							font-size: 24rpx;
-							background-color: #E1E1E1;
+							background-color: #e1e1e1;
 							color: #999999;
 							text-align: center;
 						}
@@ -704,7 +719,7 @@ page {
 			.tui-remarks-title-bot {
 				width: 100%;
 				height: auto;
-				.tui-remarks-text-view{
+				.tui-remarks-text-view {
 					width: 100%;
 					height: 48rpx;
 					.tui-remarks-text {
@@ -722,39 +737,39 @@ page {
 						-webkit-line-clamp: 1;
 						line-clamp: 1;
 						-webkit-box-orient: vertical;
-						&.a{
+						&.a {
 							width: 100%;
 						}
 						&.y {
 							text-align: right;
-							.orange{
+							.orange {
 								display: inline-block;
 								padding: 0 15rpx;
 								border-radius: 24rpx;
 								line-height: 48rpx;
 								font-size: 24rpx;
-								background-color: #FF5B00;
-								color: #FFFFFF;
+								background-color: #ff5b00;
+								color: #ffffff;
 								text-align: center;
 							}
-							.blue{
+							.blue {
 								display: inline-block;
 								padding: 0 15rpx;
 								border-radius: 24rpx;
 								line-height: 48rpx;
 								font-size: 24rpx;
-								background-color: #1890F9;
-								color: #FFFFFF;
+								background-color: #1890f9;
+								color: #ffffff;
 								text-align: center;
 							}
-							.grey{
+							.grey {
 								display: inline-block;
 								padding: 0 15rpx;
 								border-radius: 24rpx;
 								line-height: 48rpx;
 								font-size: 24rpx;
-								background-color: #E1E1E1;
-								color: #FFFFFF;
+								background-color: #e1e1e1;
+								color: #ffffff;
 								text-align: center;
 							}
 						}
@@ -772,7 +787,7 @@ page {
 			margin-bottom: 10rpx;
 			margin-top: 20rpx;
 			float: left;
-			&.none{
+			&.none {
 				margin-top: 0;
 				margin-bottom: 20rpx;
 			}
@@ -789,10 +804,10 @@ page {
 				-webkit-line-clamp: 1;
 				line-clamp: 1;
 				-webkit-box-orient: vertical;
-				.red{
-					color: #F94B4B;
+				.red {
+					color: #f94b4b;
 				}
-				&.a{
+				&.a {
 					width: 100%;
 				}
 				&.h {
@@ -802,14 +817,14 @@ page {
 				&.y {
 					width: 60%;
 					padding-left: 24rpx;
-					.reviewed{
-						color: #FF5B00;
+					.reviewed {
+						color: #ff5b00;
 					}
-					.approved{
-						color: #0DB26D;
+					.approved {
+						color: #0db26d;
 					}
-					.failed{
-						color: #F94B4B;
+					.failed {
+						color: #f94b4b;
 					}
 				}
 			}
@@ -822,7 +837,7 @@ page {
 				line-height: 48rpx;
 				text-align: center;
 				padding: 0 20rpx;
-				background-color: #F7F7F7;
+				background-color: #f7f7f7;
 				font-size: $font-size-26;
 				color: #666666;
 				border-radius: 25rpx;
@@ -837,7 +852,7 @@ page {
 		.tui-remarks-button {
 			width: 100%;
 			height: 68rpx;
-			border-top: 1px solid #E1E1E1;
+			border-top: 1px solid #e1e1e1;
 			padding-top: 20rpx;
 			.btn {
 				width: 50%;
@@ -847,12 +862,12 @@ page {
 				font-size: $font-size-34;
 				float: left;
 				font-weight: bold;
-				&.edit{
-					color: #1890F9;
-					border-right: 1px solid #E1E1E1;
+				&.edit {
+					color: #1890f9;
+					border-right: 1px solid #e1e1e1;
 				}
-				&.del{
-					color: #F94B4B;
+				&.del {
+					color: #f94b4b;
 				}
 			}
 		}
@@ -888,7 +903,7 @@ page {
 			box-sizing: border-box;
 			&.cancel {
 				background: #ffe6dc;
-				color: #FF5B00;
+				color: #ff5b00;
 			}
 			&.disabled {
 				background: #e1e1e1;
@@ -899,12 +914,12 @@ page {
 				color: #ffffff;
 			}
 		}
-		.tui-button-text{
+		.tui-button-text {
 			width: 600rpx;
 			height: 48rpx;
 			line-height: 48rpx;
 			text-align: center;
-			color: #FF5B00;
+			color: #ff5b00;
 			font-size: $font-size-26;
 			margin: 0 auto;
 			margin-top: 15rpx;