Browse Source

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

# Conflicts:
#	services/order.service.js
#	services/user.service.js
zhengjinyi 3 years ago
parent
commit
ef0c7a9899

+ 11 - 0
common/config/caimeiApi.js

@@ -138,6 +138,16 @@ const caimeiApi = {
             })
         })
     },
+    removeStorage:function(key){// 获取本地userInfo
+        return new Promise(function(resolve,reject) {
+            uni.removeStorage({
+                key: key,
+                success: function (res) {
+                    console.log('success')
+                }
+            })
+        })
+    },
     getStorageAddressKey:function(){// 获取本地地址信息
         return new Promise(function(resolve,reject) {
             uni.getStorage({
@@ -403,6 +413,7 @@ module.exports = {
     loginStatus: caimeiApi.loginStatus,
     setStorage: caimeiApi.setStorage,
     getStorage: caimeiApi.getStorage,
+    removeStorage: caimeiApi.removeStorage,
     getComStorage: caimeiApi.getComStorage,
     navToListPage: caimeiApi.navToListPage,
     navigateToGoods: caimeiApi.navigateToGoods,

+ 328 - 0
components/cm-module/cm-seller/cm-clubmodal.vue

@@ -0,0 +1,328 @@
+<template name="coupon">
+	<view class="tui-modal-content">
+		<!-- 弹窗提示 -->
+		<tui-modal :show="show" @cancel="handleClick" :custom="true" fadeIn >
+			<view class="tui-modal-custom">
+				<input v-if="modalType==1"  placeholder="请输入新的姓名" class="tui-modal-input" v-model="inputData" maxlength="10"/>
+				<input v-if="modalType==2"  placeholder="请输入添加的咨询人姓名" class="tui-modal-input" v-model="inputData" maxlength="10"/>
+				<view class="tui-modal-flex">
+					<view class="tui-modal-button cancel" @click="handleClick">取消</view>
+					<view class="tui-modal-button confirm" @click="handleconfirm">确定</view>
+				</view>
+			</view>
+		</tui-modal>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'coupon',
+	props: {
+		show: {
+			type: Boolean,
+			default: false
+		},
+		modalType:{
+			type: Number,
+			default:0
+		}
+	},
+	data() {
+		return {
+			inputData:''
+		}
+	},
+	created() {
+		
+	},
+	methods: {
+		handleClick(){
+			this.$parent.isClubModalShow = false
+		},
+		handleconfirm() {
+			let msgText =''
+			if(this.modalType == 1){
+				msgText = '请输入新的姓名'
+			}else{
+				msgText = '请输入咨询人姓名'
+			}
+			if(this.inputData == ''){
+				this.$util.msg(msgText, 2000)
+				return
+			}
+			this.$emit('handleChoiceaText', this.inputData)
+			this.$parent.isClubModalShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.coupon-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.coupon-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.text-coupon {
+			display: inline-block;
+			float: right;
+			padding-right: 30rpx;
+			line-height: 88rpx;
+			font-size: 28rpx;
+			color: #f94b4b;
+		}
+		.iconfont {
+			width: 50rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			color: #999999;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 0;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 32rpx 0 32rpx;
+	.title {
+		font-size: $font-size-32;
+		color: $text-color;
+		line-height: 68rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 68rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+	}
+	.title-search {
+		width: 100%;
+		height: 66rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		float: left;
+		.search-from {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			border-radius: 32rpx;
+			float: left;
+			position: relative;
+			.input {
+				width: 500rpx;
+				height: 64rpx;
+				float: left;
+				line-height: 64rpx;
+				color: $text-color;
+				font-size: $font-size-24;
+			}
+			.icon-iconfonticonfontsousuo1 {
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.icon-shanchu1 {
+				font-size: $font-size-32;
+				color: #999999;
+				position: absolute;
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				top: 0;
+				right: 0;
+				z-index: 10;
+			}
+		}
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		padding-top: 10rpx;
+		.tui-popup-scroll {
+			width: 100%;
+			height: 600rpx;
+			.list {
+				width: 100%;
+				height: 176rpx;
+				box-sizing: border-box;
+				padding: 24rpx 0;
+				background-size: cover;
+				.list-cell-le {
+					width: 128rpx;
+					height: 100%;
+					box-sizing: border-box;
+					float: left;
+					border: 1px dashed #e1e1e1;
+					.logo {
+						width: 126rpx;
+						height: 126rpx;
+						border-radius: 8rpx;
+					}
+				}
+				.list-cell-ri {
+					width: 470rpx;
+					height: 100%;
+					box-sizing: border-box;
+					float: left;
+					margin-left: 24rpx;
+					.list-name {
+						width: 100%;
+						height: 40rpx;
+						float: left;
+						line-height: 40rpx;
+						text-align: left;
+						font-size: $font-size-26;
+						color: #333333;
+						margin-bottom: 24rpx;
+						.tags {
+							display: inline-block;
+							width: 60rpx;
+							height: 32rpx;
+							border-radius: 8rpx;
+							background: #f0cb72;
+							font-size: $font-size-22;
+							color: #4e4539;
+							text-align: center;
+							line-height: 32rpx;
+							margin-left: 20rpx;
+							&.sv {
+								background: #333333;
+								color: #f0cb72;
+							}
+						}
+					}
+					.list-ntel {
+						width: 100%;
+						height: 50rpx;
+						float: left;
+						line-height: 50rpx;
+						text-align: left;
+						font-size: $font-size-24;
+						color: #666666;
+						.list-link {
+							display: inline-block;
+							float: left;
+							margin-right: 40rpx;
+						}
+						.list-texl {
+							display: inline-block;
+							float: left;
+						}
+					}
+				}
+				.list-cell-btn {
+					width: 40rpx;
+					height: 100%;
+					float: right;
+					.checkbox {
+						width: 40rpx;
+						line-height: 128rpx;
+						float: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+						&.icon-weixuanze {
+							color: #b2b2b2;
+						}
+						&.icon-yixuanze {
+							color: #e15616;
+						}
+					}
+				}
+			}
+		}
+		.tui-popup-coupon {
+			width: 100%;
+			height: 500rpx;
+			box-sizing: border-box;
+			padding: 30rpx 20rpx;
+			.tui-popup-h1 {
+				width: 100%;
+				height: 66rpx;
+				display: flex;
+				align-items: center;
+				.tui-popup-text {
+					flex: 1;
+					height: 66rpx;
+					line-height: 66rpx;
+					font-size: $font-size-30;
+					color: #333333;
+					&.red {
+						color: #f94b4b;
+					}
+					&.bold {
+						font-weight: bold;
+					}
+					&.left {
+						text-align: left;
+					}
+					&.right {
+						text-align: right;
+					}
+				}
+			}
+		}
+	}
+}
+.tui-modal-custom{
+	.tui-modal-input{
+		width: 480rpx;
+		height: 90rpx;
+		border-radius: 8rpx;
+		border: 1px solid #B2B2B2;
+		line-height: 90rpx;
+		padding: 0 20rpx;
+		color: #333333;
+		font-size: $font-size-30;
+	}
+	.tui-modal-flex{
+		width: 100%;
+		height: 72rpx;
+		margin-top: 40rpx;
+		display: flex;
+		.tui-modal-button{
+			flex: 1;
+			line-height: 72rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 38rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			border: 1px solid #B2B2B2;
+			&.cancel{
+				background: #FFFFFF;
+				color: #333333;
+			}
+			&.confirm{
+				border-color: #E15616;
+				background: $btn-confirm;
+				color: #FFFFFF;
+			}
+		}
+	}
+}
+</style>

+ 407 - 0
components/cm-module/cm-seller/cm-clubpopup.vue

@@ -0,0 +1,407 @@
+<template name="coupon">
+	<view class="coupon-template">
+		<!-- 选择机构 -->
+		<tui-bottom-popup :radius="true" :show="show" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="title">选择机构</view>
+				<view class="title-search">
+					<view class="search-from name">
+						<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+						<input
+							class="input"
+							type="text"
+							confirm-type="search"
+							v-model="listQuery.name"
+							@input="onShowClose"
+							@confirm="initclubList()"
+							placeholder="机构名称/联系人"
+							maxlength="16"
+						/>
+						<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+					</view>
+				</view>
+				<view class="tui-popup-main coupon">
+					<scroll-view class="tui-popup-scroll" scroll-y="true">
+						<view
+							v-for="(club, index) in dataList"
+							:key="index"
+							class="list"
+							@click.stop="checkedCoupon(index)"
+						>
+							<view class="list-cell-le">
+								<image
+									class="logo"
+									:src="
+										club.headpic
+											? club.headpic
+											: 'https://static.caimei365.com/app/img/icon/icon-club@3x.png'
+									"
+									mode=""
+								></image>
+							</view>
+							<view class="list-cell-ri">
+								<view class="list-name">
+									{{ club.userIdentity === 2 ? club.name : club.name }}
+									<text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2">VIP</text>
+									<text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
+								</view>
+								<view class="list-ntel">
+									<text class="list-link">{{ club.linkMan ? club.linkMan : '' }}</text>
+									<text class="list-texl">{{ club.contractMobile ? club.contractMobile : '' }}</text>
+								</view>
+							</view>
+							<view class="list-cell-btn">
+								<view
+									class="checkbox iconfont"
+									:class="[club.ischecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+								>
+								</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-flex-1"> <view class="tui-button" @click="hidePopup">确定</view> </view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'coupon',
+	props: {
+		show: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			checkedIndex: 0,
+			isShowClose: false,
+			listQuery: {
+				userIdentity: '',
+				name: '',
+				pageNum: 1,
+				pageSize: 200,
+				spId: this.serviceProviderId,
+				status: 66
+			},
+			dataList: []
+		}
+	},
+	created() {
+		this.initclubList()
+	},
+	methods: {
+		async initclubList() {
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.spId = userInfo.serviceProviderId
+			this.SellerService.GetSellerClubList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.list && data.list.length > 0) {
+						 this.dataList = data.list.map((el,index)=>{
+							el.ischecked = false
+							return el
+						})
+					}
+					
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		checkedCoupon(idx) {
+			// 选择优惠券
+			this.checkedIndex = idx
+			this.dataList.forEach((el, index) => {
+				if (this.checkedIndex == index) {
+					el.ischecked = !el.ischecked
+				} else {
+					el.ischecked = false
+				}
+			})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			if (this.listQuery.name != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+			}
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.name = ''
+			this.isShowClose = false
+		},
+		hidePopup() {
+			let clubInfo = null
+			let checkedData = false
+			this.dataList.forEach((el, index) => {
+				if (el.ischecked) {
+					clubInfo = el
+					checkedData = true
+				}
+			})
+			if (checkedData) {
+				this.$emit('handleChoiceaClub', clubInfo)
+			}
+			this.$parent.isClubpopupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.coupon-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.coupon-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.text-coupon {
+			display: inline-block;
+			float: right;
+			padding-right: 30rpx;
+			line-height: 88rpx;
+			font-size: 28rpx;
+			color: #f94b4b;
+		}
+		.iconfont {
+			width: 50rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			color: #999999;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 0;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 32rpx 0 32rpx;
+	.title {
+		font-size: $font-size-32;
+		color: $text-color;
+		line-height: 68rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 68rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+	}
+	.title-search {
+		width: 100%;
+		height: 66rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		float: left;
+		.search-from {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			border-radius: 32rpx;
+			float: left;
+			position: relative;
+			.input {
+				width: 500rpx;
+				height: 64rpx;
+				float: left;
+				line-height: 64rpx;
+				color: $text-color;
+				font-size: $font-size-24;
+			}
+			.icon-iconfonticonfontsousuo1 {
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.icon-shanchu1 {
+				font-size: $font-size-32;
+				color: #999999;
+				position: absolute;
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				top: 0;
+				right: 0;
+				z-index: 10;
+			}
+		}
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		padding-top: 10rpx;
+		.tui-popup-scroll {
+			width: 100%;
+			height: 800rpx;
+			.list {
+				width: 100%;
+				height: 176rpx;
+				box-sizing: border-box;
+				padding: 24rpx 0;
+				background-size: cover;
+				.list-cell-le {
+					width: 128rpx;
+					height: 100%;
+					box-sizing: border-box;
+					float: left;
+					border: 1px dashed #e1e1e1;
+					.logo {
+						width: 125rpx;
+						height: 125rpx;
+						border-radius: 8rpx;
+					}
+				}
+				.list-cell-ri {
+					width: 470rpx;
+					height: 100%;
+					box-sizing: border-box;
+					float: left;
+					margin-left: 24rpx;
+					.list-name {
+						width: 100%;
+						height: 40rpx;
+						float: left;
+						line-height: 40rpx;
+						text-align: left;
+						font-size: $font-size-26;
+						color: #333333;
+						margin-bottom: 24rpx;
+						.tags {
+							display: inline-block;
+							width: 60rpx;
+							height: 32rpx;
+							border-radius: 8rpx;
+							background: #f0cb72;
+							font-size: $font-size-22;
+							color: #4e4539;
+							text-align: center;
+							line-height: 32rpx;
+							margin-left: 20rpx;
+							&.sv {
+								background: #333333;
+								color: #f0cb72;
+							}
+						}
+					}
+					.list-ntel {
+						width: 100%;
+						height: 50rpx;
+						float: left;
+						line-height: 50rpx;
+						text-align: left;
+						font-size: $font-size-24;
+						color: #666666;
+						.list-link {
+							display: inline-block;
+							float: left;
+							margin-right: 40rpx;
+						}
+						.list-texl {
+							display: inline-block;
+							float: left;
+						}
+					}
+				}
+				.list-cell-btn {
+					width: 40rpx;
+					height: 100%;
+					float: right;
+					.checkbox {
+						width: 40rpx;
+						line-height: 128rpx;
+						float: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+						font-size: $font-size-34;
+						&.icon-weixuanze {
+							color: #b2b2b2;
+						}
+						&.icon-yixuanze {
+							color: #e15616;
+						}
+					}
+				}
+			}
+		}
+		.tui-popup-coupon {
+			width: 100%;
+			height: 500rpx;
+			box-sizing: border-box;
+			padding: 30rpx 20rpx;
+			.tui-popup-h1 {
+				width: 100%;
+				height: 66rpx;
+				display: flex;
+				align-items: center;
+				.tui-popup-text {
+					flex: 1;
+					height: 66rpx;
+					line-height: 66rpx;
+					font-size: $font-size-30;
+					color: #333333;
+					&.red {
+						color: #f94b4b;
+					}
+					&.bold {
+						font-weight: bold;
+					}
+					&.left {
+						text-align: left;
+					}
+					&.right {
+						text-align: right;
+					}
+				}
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button {
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #ffffff;
+			font-size: $font-size-28;
+			border-radius: 44rpx;
+		}
+	}
+}
+</style>

+ 5 - 0
components/cm-module/cm-seller/user.vue

@@ -175,6 +175,11 @@
 						name:'发布二手商品',
 						path:'/pages/second/form/form-seller',
 						icon:'https://static.caimei365.com/app/img/icon/icon_seller_6@2x.png',
+					},
+					{
+						name:'客户画像',
+						path:'/pages/seller/remarks/list',
+						icon:'https://static.caimei365.com/app/img/icon/icon_seller_7@2x.png',
 					}
 				]
 			}

+ 27 - 3
pages.json

@@ -600,19 +600,43 @@
                 {
                     "path": "remarks/list",
                     "style": {
-                        "navigationBarTitleText": "资料备注"
+                        "navigationBarTitleText": "客户画像"
                     }
                 },
                 {
                     "path": "remarks/add",
                     "style": {
-                        "navigationBarTitleText": "添加备注"
+                        "navigationBarTitleText": "添加画像"
                     }
                 },
                 {
                     "path": "remarks/details",
                     "style": {
-                        "navigationBarTitleText": "备注详情"
+                        "navigationBarTitleText": "画像详情"
+                    }
+                },
+                {
+                    "path": "remarks/customer-list",
+                    "style": {
+                        "navigationBarTitleText": "潜在客户"
+                    }
+                },
+                {
+                    "path": "remarks/record-list",
+                    "style": {
+                        "navigationBarTitleText": "画像记录"
+                    }
+                },
+                {
+                    "path": "remarks/add-record",
+                    "style": {
+                        "navigationBarTitleText": "添加画像"
+                    }
+                },
+                {
+                    "path": "remarks/record-details",
+                    "style": {
+                        "navigationBarTitleText": "画像详情"
                     }
                 }
             ]

+ 22 - 16
pages/goods/product.vue

@@ -250,18 +250,13 @@
 					<view class="product-details product-details0">
 						<view class="title"> <view class="title-tab">商品详情</view> </view>
 						<view class="content tui-banner product-rich-text tui-skeleton-rect">
-							<template v-if="hasLogin && userIdentity !=4">
-								<template v-if="!goodsData.isNoneDisabled && product.productDetail.detailInfo">
-									<parser
-										:html="html"
-										:img-mode="widthFix"
-									></parser>
-								</template>
-								<view class="product-rich-text-none" v-else>暂无商品信息</view>
-							</template>
-							<template v-else>
-								<view class="product-rich-text-none">若要查看更多产品信息,请注册机构会员,如有疑问请联系客服。</view>
+							<template v-if="!goodsData.isNoneDisabled && product.productDetail.detailInfo">
+								<parser
+									:html="html"
+									:img-mode="widthFix"
+								></parser>
 							</template>
+							<view class="product-rich-text-none" v-else>暂无商品信息</view>
 						</view>
 					</view>
 					<!-- 服务项目 -->
@@ -606,7 +601,7 @@ export default {
 		return {
 			StaticUrl: this.$Static, //静态图片路径
 			clickPath: '/pages/search/search',
-			html: '<div style="text-align: center;color:#333333;">暂无内容</div>',
+			html: '',
 			productNoneImage: 'https://static.caimei365.com/app/img/icon/icon-pnone.png',
 			mode: 'round',
 			iconClass: 'icon-aixin',
@@ -805,10 +800,7 @@ export default {
 						}
 					}
 					this.ladderPriceFlag = this.product.ladderPriceFlag
-					this.html =
-						this.product.productDetail == null
-							? this.html
-							: this.$api.adaptRichTextImg(this.product.productDetail.detailInfo)
+					this.html = this.adaptRichTextImg(this.product)
 					this.stock = this.product.stock
 					this.buyRetailPriceStep = this.product.step
 					this.number = this.product.minBuyNumber
@@ -881,6 +873,20 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		adaptRichTextImg(product){// 商品详情
+			let defaulHtml = '<div style="text-align: center;color:#333333;">暂无内容</div>'
+			let html = ''
+			if(product.productDetailChose == 1){// 同资质机构显示商品详情
+				html = product.productDetail ? this.$api.adaptRichTextImg(product.productDetail.detailInfo) : defaulHtml
+			}else{
+				if(this.hasLogin && this.userIdentity !=4){
+					html = product.productDetail ? this.$api.adaptRichTextImg(product.productDetail.detailInfo) : defaulHtml
+				}else{
+					html = product.productDetail ? this.$api.adaptRichTextImg(product.productDetail.commonDetailInfo) : defaulHtml
+				}
+			}
+			return html
+		},
 		getCommodityCombinationList() {
 			// 初始化商品详情配套商品
 			this.ProductService.getCommodityCombinationList({

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

@@ -131,12 +131,12 @@ export default {
 		},
 		initclubList() {
 			let params = {
-				userIdentity: '',
-				name: this.searchInputVal,
-				pageNum: 1,
-				pageSize: this.pageSize,
-				spId: this.serviceProviderId,
-				status: this.status
+					userIdentity: '',
+					name: this.searchInputVal,
+					pageNum: 1,
+					pageSize: this.pageSize,
+					spId: this.serviceProviderId,
+					status: this.status
 			}
 			this.SellerService.GetSellerClubList(params)
 				.then(response => {

+ 0 - 6
pages/seller/club/list.vue

@@ -75,7 +75,6 @@
 										{{ showBadge(club.orderNum) }}
 									</text>
 								</view>
-								<view class="btn doc" @click.stop="clubRemaks(club)"> 资料备注 </view>
 							</view>
 						</view>
 					</view>
@@ -288,11 +287,6 @@ export default {
 			this.$api.setStorage('orderUserInfo', club)
 			this.$api.navigateTo(`/pages/seller/order/order-historylist?clubId=${club.clubId}&listType=0`)
 		},
-		clubRemaks(club){
-			//跳转机构资料备注
-			this.$api.setStorage('orderUserInfo', club)
-			this.$api.navigateTo(`/pages/seller/remarks/list?clubId=${club.clubId}`)
-		},
 		onShowClose() {
 			//输入框失去焦点时触发
 			if (this.searchInputVal != '') {

+ 416 - 0
pages/seller/remarks/add-record.vue

@@ -0,0 +1,416 @@
+<template>
+	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
+		<view class="remarks-content">
+			<view class="list-view-title">
+				<view class="list-view-h1">咨询人:</view>
+			</view>
+			<view class="remarks-input">{{ questionMan }}</view>
+			<view class="list-view-title">
+				<view class="list-view-h1"><text>*</text>关键词记录:</view>
+			</view>
+			<view class="remarks-textarea">
+				<textarea
+					class="textarea"
+					v-model="remarksParams.remarks"
+					value=""
+					placeholder="请总结你和客户的聊天内容,以关键词形式填入框内,关键词之间用中文逗号隔开"
+					maxlength="500"
+					@input="conInput"
+				/>
+				<text class="limit-text">{{ min }}/{{ max }}</text>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1">上传图片</view>
+				<view class="list-view-p">(可上传与客户的聊天截图或其他重要图片资料,最多10张)</view>
+			</view>
+			<view class="list-view-upload clearfix">
+				<view class="photo-item" v-for="(image, imageIndex) in remarksParams.imageList" :key="imageIndex">
+					<image
+						:src="image"
+						mode="aspectFill"
+						@click.stop="previewImg(remarksParams.imageList, imageIndex)"
+					></image>
+					<text
+						class="iconfont icon-iconfontguanbi"
+						@click.stop="deletePhotoFn(remarksParams.imageList, imageIndex)"
+					></text>
+				</view>
+				<view
+					class="photo-item add"
+					@click.stop="uploadPhotoFn(remarksParams.imageList)"
+					v-if="remarksParams.imageList.length < 10 || remarksParams.imageList.length == 0"
+				>
+					<text class="iconfont icon-jiahao"></text>
+				</view>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1">上传文件</view>
+				<view class="list-view-p">(可上传与客户相关的文件资料,最多10份,支持word,excel,ppt和pdf格式文件)</view>
+			</view>
+			<view class="list-view" v-for="(file, fileIndex) in remarksParams.fileList" :key="fileIndex">
+				<view class="list-view-text">
+					<view class="input">{{ file.fileName }}</view>
+					<view class="delbtn" @click.stop="deleteFileFn(remarksParams.fileList, fileIndex)">删除</view>
+				</view>
+			</view>
+			<view class="list-view">
+				<view class="list-view-file" @click="uploadFile(remarksParams.fileList)">选择文件</view>
+			</view>
+		</view>
+		<view class="remarks-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+			<view class="edit-button" @click="editButtonConfim">确定</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import { uploadFileImage, uploadFilePdfDocDocxXlsx } from '@/services/public.js'
+
+var isPreviewImg
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			shopOrderId: 0,
+			logisticsBatchId: 0,
+			productActions: [],
+			remarksParams: {
+				remarks: '',
+				fileList: [],
+				imageList: [],
+				questionManId: 0,
+				serviceProviderId: 0
+			},
+			min: 0,
+			max: 500,
+			handleType:'',
+			questionMan:'',
+			clubUserId:0,
+			clubInfo:{},
+			userInfo:{}
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		if (option.type == 'edit') {
+			this.questionMan = option.questionMan
+			this.handleType = option.type
+			this.getUserRemarksVisitDetail(option.remarksId)
+			uni.setNavigationBarTitle({title:'修改画像'})
+		} else {
+			this.questionMan = option.questionMan
+			this.remarksParams.questionManId = option.questionManId
+			this.initGetStotage(option)
+		}
+	},
+	methods: {
+		...mapMutations(['login']),
+		async initGetStotage(option) {
+			const userInfo = await this.$api.getStorage()
+			this.remarksParams.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+		},
+		getUserRemarksVisitDetail(remarksId) {
+			//修改回显资料备注信息
+			this.UserService.getUserRemarksVisitDetail({
+				remarksId : remarksId
+			})
+			.then(response => {
+				let data = response.data
+				this.remarksParams.questionManId = data.questionManId
+				this.remarksParams.remarks = data.remarks.join(',')
+				this.remarksParams.remarksId = data.remarksId
+				this.remarksParams.fileList = data.fileList
+				this.remarksParams.imageList = data.imageList
+				this.initGetStotage()
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
+		},
+		editButtonConfim() {
+			//保存资料备注
+			if (this.remarksParams.remarks == '') {
+				this.$util.msg('请输入关键词记录', 2000)
+				return
+			}
+			this.UserService.getUserClubVisitorSaveAdd({
+				params: JSON.stringify(this.remarksParams)
+			})
+			.then(response => {
+				this.$util.msg('添加成功', 2000, true, 'success')
+				let VisitorInfo = {
+						questionManId: this.remarksParams.questionManId,
+						questionMan: this.questionMan
+					}
+				this.$api.setStorage('VisitorInfo', VisitorInfo)
+				setTimeout(() => {
+					this.$api.redirectTo('/pages/seller/remarks/record-list')
+				}, 2000)
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
+		},
+		uploadFile(array) {
+			//上传资质文件
+			console.log(array)
+			uploadFilePdfDocDocxXlsx().then(res => {
+				let data = JSON.parse(res.data).data
+				let obj = {
+					fileName: uni.getStorageSync('fileName'),
+					ossName: data.ossName
+				}
+				array.push(obj)
+				console.log('array', array)
+			}).catch(err=>{
+                console.log(err)
+            })
+		},
+		uploadPhotoFn(array) {
+			//添加图片
+			uploadFileImage().then(res => {
+				array.push(JSON.parse(res.data).data)
+			})
+		},
+		deleteFileFn(array, index) {
+			console.log(array)
+			//删除文件
+			this.UploadService.PostFileDelete({
+				ossName: array[index].ossName
+			})
+				.then(res => {
+					array.splice(index, 1)
+				})
+				.catch(error => {
+					console.log('删除文件异常提示===>', error.msg)
+				})
+		},
+		deletePhotoFn(array, index) {
+			//删除图片
+			array.splice(index, 1)
+		},
+		previewImg(image, index) {
+			//顶部商品图片预览
+			isPreviewImg = true
+			let previewUrls = image
+			uni.previewImage({
+				current: index, //图片索引
+				urls: previewUrls, //必须是http图片,本地图片无效
+				longPressActions: ''
+			})
+		},
+		conInput(e) {
+			//备注文字字数限制
+			let value = e.detail.value
+			let len = parseInt(value.length)
+			if (len > this.max) return
+			this.min = len
+			if (this.min == 200) {
+				this.$util.msg('您输入的字数已达上限', 2000)
+			}
+		},
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto;
+	background: #ffffff;
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	padding-bottom: 160rpx;
+	.list-view-title {
+		width: 100%;
+		height: auto;
+		margin-bottom: 16rpx;
+		margin-top: 20rpx;
+		.list-view-h1 {
+			line-height: 40rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			text-align: left;
+			text {
+				color: #ff2a2a;
+			}
+		}
+		.list-view-p {
+			line-height: 30rpx;
+			color: #fea785;
+			font-size: $font-size-20;
+		}
+	}
+	.remarks-input{
+		width: 100%;
+		height: 48rpx;
+		padding:0 16rpx;
+		margin: 20rpx 0 0 0;
+		position: relative;
+		box-sizing: border-box;
+		line-height: 48rpx;
+		font-size: $font-size-26;
+		color: $text-color;
+	}
+	.remarks-textarea {
+		width: 100%;
+		height: 340rpx;
+		padding: 16rpx;
+		margin: 20rpx 0 0 0;
+		border-radius: 6rpx;
+		position: relative;
+		border: 1px solid #b2b2b2;
+		box-sizing: border-box;
+		.textarea {
+			width: 100%;
+			height: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			z-index: 1;
+		}
+		.limit-text {
+			position: absolute;
+			right: 20rpx;
+			bottom: 16rpx;
+			line-height: 44rpx;
+			font-size: $font-size-24;
+			color: #b2b2b2;
+		}
+	}
+	.list-view {
+		width: 100%;
+		height: 40rpx;
+		margin-top: 20rpx;
+		.list-view-file {
+			width: 132rpx;
+			height: 44rpx;
+			line-height: 44rpx;
+			font-size: $font-size-20;
+			text-align: center;
+			color: #ffffff;
+			background-color: $color-system;
+			border-radius: 8rpx;
+			float: left;
+			margin-top: 10rpx;
+		}
+		.list-view-text {
+			width: 100%;
+			float: left;
+			.input {
+				width: 560rpx;
+				height: 44rpx;
+				box-sizing: border-box;
+				line-height: 44rpx;
+				color: #333333;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				float: left;
+			}
+			.delbtn {
+				width: 96rpx;
+				height: 44rpx;
+				border-radius: 8rpx;
+				background-color: #fff2ec;
+				font-size: $font-size-24;
+				color: #e15616;
+				line-height: 44rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+	}
+	.list-view-upload {
+		width: 100%;
+		height: auto;
+		.photo-item {
+			display: inline-block;
+			width: 112rpx;
+			height: 112rpx;
+			margin: 10rpx 0;
+			margin-right: 25rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f5f5f5;
+			position: relative;
+			float: left;
+			&.add {
+				width: 112rpx;
+				height: 112rpx;
+				border-color: #b2b2b2;
+				text-align: center;
+				line-height: 112rpx;
+				margin-right: 0rpx;
+				.icon-jiahao {
+					font-size: $font-size-44;
+					color: #b2b2b2;
+					font-weight: bold;
+				}
+			}
+			.icon-iconfontguanbi {
+				width: 30rpx;
+				height: 30rpx;
+				border-radius: 50%;
+				display: block;
+				position: absolute;
+				right: -10rpx;
+				top: -10rpx;
+				background: #f94b4b;
+				text-align: center;
+				line-height: 30rpx;
+				color: #ffffff;
+				font-size: $font-size-22;
+			}
+			image {
+				width: 112rpx;
+				height: 112rpx;
+				border-radius: 10rpx;
+			}
+		}
+		.photo-list {
+			width: 100%;
+			height: 116rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			display: flex;
+			align-items: flex-start;
+		}
+	}
+}
+.remarks-btn {
+	width: 100%;
+	padding-top: 20rpx;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background-color: #ffffff;
+	.edit-button-canel {
+		width: 100%;
+		height: 88rpx;
+		line-height: 88rpx;
+		text-align: center;
+		color: #e15616;
+		font-size: $font-size-24;
+	}
+	.edit-button {
+		width: 600rpx;
+		height: 90rpx;
+		background: $btn-confirm;
+		line-height: 90rpx;
+		text-align: center;
+		color: #ffffff;
+		font-size: $font-size-30;
+		margin: 0 auto;
+		border-radius: 45rpx;
+	}
+}
+</style>

+ 140 - 26
pages/seller/remarks/add.vue

@@ -1,15 +1,44 @@
 <template>
 	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
+		<view class="remarks-content-club" @click="handleClickClunInfo">
+			<view class="content-club-le">
+				<view class="club-le-text">
+					<text class="label">机构名称:</text> <text class="text">{{ clubInfo.name }}</text>
+				</view>
+				<view class="club-le-text">
+					<text class="label">联系人:</text> <text class="text">{{ clubInfo.linkMan }}</text>
+					<text class="label phone">手机号:</text> <text class="text">{{ clubInfo.contractMobile }}</text>
+				</view>
+				<view class="club-le-text">
+					<text class="label">地址:</text>
+					<text class="text" v-if="clubInfo.provincialAddress">{{ clubInfo.provincialAddress }}{{ clubInfo.address }}</text>
+				</view>
+			</view>
+			<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 class="list-view-h1"><text>*</text>咨询人:</view>
+			</view>
+			<view class="remarks-input">
+				<input
+					class="input"
+					type="text"
+					v-model="remarksParams.questionMan"
+					value=""
+					placeholder="请输入和你聊天的客户姓名"
+					maxlength="15"
+				/>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1"><text>*</text>关键词记录:</view>
 			</view>
 			<view class="remarks-textarea">
 				<textarea
 					class="textarea"
 					v-model="remarksParams.remarks"
 					value=""
-					placeholder="文字备注,500字以内"
+					placeholder="请总结你和客户的聊天内容,以关键词形式填入框内,关键词之间用中文逗号隔开"
 					maxlength="500"
 					@input="conInput"
 				/>
@@ -74,6 +103,7 @@ export default {
 			productActions: [],
 			remarksParams: {
 				clubId: 0,
+				questionMan: '',
 				remarks: '',
 				fileList: [],
 				imageList: [],
@@ -81,7 +111,10 @@ export default {
 			},
 			min: 0,
 			max: 500,
-			handleType:''
+			handleType: '',
+			clubUserId: 0,
+			clubInfo: {},
+			userInfo: {}
 		}
 	},
 	onLoad(option) {
@@ -89,48 +122,69 @@ export default {
 		if (option.type == 'edit') {
 			this.getUserClubRemarksDetail(option.remarksId)
 			this.handleType = option.type
+			uni.setNavigationBarTitle({ title: '修改画像' })
 		} else {
-			this.initGetStotage()
+			this.clubUserId = option.userId
+			this.getCulbInfo()
 		}
 	},
 	methods: {
 		...mapMutations(['login']),
-		async initGetStotage() {
-			const clubInfo = await this.$api.getComStorage('orderUserInfo')
-			const userInfo = await this.$api.getStorage()
-			this.remarksParams.clubId = clubInfo.clubId ? clubInfo.clubId : 0
-			this.remarksParams.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+		getCulbInfo() {
+			// 查询机构信息
+			this.UserService.OrganizationUpdateModifyInfo({ userId: this.clubUserId })
+				.then(response => {
+					this.clubInfo = response.data.club
+					this.userInfo = response.data.user
+					this.remarksParams.clubId = this.clubInfo.clubId
+					if(this.handleType != 'edit'){
+						this.remarksParams.questionMan = this.clubInfo.linkMan
+					}
+				})
+				.catch(error => {
+					console.log('=============>', error.msg)
+				})
 		},
 		getUserClubRemarksDetail(remarksId) {
 			//修改回显资料备注信息
 			this.UserService.getUserClubRemarksDetail({
-				remarksId : remarksId
+				remarksId: remarksId
 			})
 				.then(response => {
 					let data = response.data
-					this.remarksParams.remarks = data.remarks
+					this.clubUserId = data.userId
+					this.remarksParams.remarks = data.remarks.join(',')
 					this.remarksParams.remarksId = data.remarksId
 					this.remarksParams.fileList = data.fileList
 					this.remarksParams.imageList = data.imageList
-					this.initGetStotage()
+					if(this.handleType == 'edit'){
+						this.remarksParams.questionMan = data.questionMan
+					}
+					this.getCulbInfo()
 				})
 				.catch(error => {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
-		editButtonConfim() {
+		async editButtonConfim() {
 			//保存资料备注
+			const userInfo = await this.$api.getStorage()
+			if (this.remarksParams.questionMan == '') {
+				this.$util.msg('请输入咨询人姓名', 2000)
+				return
+			}
 			if (this.remarksParams.remarks == '') {
-				this.$util.msg('请输入文字备注', 2000)
+				this.$util.msg('请输入关键词记录', 2000)
 				return
 			}
+			this.remarksParams.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
 			this.UserService.getUserClubRemarksSave({
 				params: JSON.stringify(this.remarksParams)
 			})
 				.then(response => {
 					this.$util.msg('添加成功', 3000, true, 'success')
 					setTimeout(() => {
-						uni.navigateBack({delta: 1})
+						uni.navigateBack({ delta: 1 })
 					}, 1000)
 				})
 				.catch(error => {
@@ -140,17 +194,19 @@ export default {
 		uploadFile(array) {
 			//上传资质文件
 			console.log(array)
-			uploadFilePdfDocDocxXlsx().then(res => {
-				let data = JSON.parse(res.data).data
-				let obj = {
-					fileName: uni.getStorageSync('fileName'),
-					ossName: data.ossName
-				}
-				array.push(obj)
-				console.log('array', array)
-			}).catch(err=>{
-                console.log(err)
-            })
+			uploadFilePdfDocDocxXlsx()
+				.then(res => {
+					let data = JSON.parse(res.data).data
+					let obj = {
+						fileName: uni.getStorageSync('fileName'),
+						ossName: data.ossName
+					}
+					array.push(obj)
+					console.log('array', array)
+				})
+				.catch(err => {
+					console.log(err)
+				})
 		},
 		uploadPhotoFn(array) {
 			//添加图片
@@ -194,6 +250,14 @@ export default {
 			if (this.min == 200) {
 				this.$util.msg('您输入的字数已达上限', 2000)
 			}
+		},
+		handleClickClunInfo() {
+			//修改机构资料
+			if (this.userInfo.userIdentity === 2) {
+				this.$api.navigateTo(`/pages/seller/login/apply?userID=${this.userInfo.userId}`)
+			} else if (this.userInfo.userIdentity === 4) {
+				this.$api.navigateTo(`/pages/seller/login/information?userID=${this.userInfo.userId}`)
+			}
 		}
 	},
 	onShow() {}
@@ -205,6 +269,38 @@ page {
 	height: auto;
 	background: #ffffff;
 }
+.remarks-content-club {
+	width: 100%;
+	height: 252rpx;
+	padding: 24rpx;
+	box-sizing: border-box;
+	border-bottom: 20rpx solid #f7f7f7;
+	.content-club-le {
+		width: 660rpx;
+		float: left;
+		.club-le-text {
+			width: 100%;
+			height: 60rpx;
+			line-height: 60rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			.label {
+				color: #999999;
+				&.phone {
+					margin-left: 48rpx;
+				}
+			}
+		}
+	}
+	.content-club-ri {
+		width: 40rpx;
+		height: 160rpx;
+		float: right;
+		line-height: 160rpx;
+		text-align: center;
+		color: #b2b2b2;
+	}
+}
 .remarks-content {
 	width: 100%;
 	height: auto;
@@ -231,6 +327,24 @@ page {
 			font-size: $font-size-20;
 		}
 	}
+	.remarks-input {
+		width: 100%;
+		height: 90rpx;
+		padding: 0 16rpx;
+		margin: 20rpx 0 0 0;
+		border-radius: 6rpx;
+		position: relative;
+		border: 1px solid #b2b2b2;
+		box-sizing: border-box;
+		.input {
+			width: 100%;
+			height: 90rpx;
+			line-height: 90rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			z-index: 1;
+		}
+	}
 	.remarks-textarea {
 		width: 100%;
 		height: 340rpx;

+ 447 - 0
pages/seller/remarks/customer-list.vue

@@ -0,0 +1,447 @@
+<template>
+	<view class="container product clearfix">
+		<view class="club-search clearfix">
+			<view class="search-from name">
+				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				<input
+					class="input"
+					type="text"
+					confirm-type="search"
+					v-model="listQuery.keyWord"
+					@input="onShowClose"
+					@confirm="GetProductListInfo"
+					placeholder="搜索咨询人"
+					maxlength="16"
+				/>
+				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+			</view>
+		</view>
+		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '216rpx' : '168rpx' }">
+			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
+				<!-- 空白页 -->
+				<view class="empty-container" v-if="isEmpty">
+					<image class="empty-container-image" :src="StaticUrl + '/icon/icon-remarks-empty@2x.png'"></image>
+					<text class="error-text">暂无任何数据~</text>
+				</view>
+				<template v-else>
+					<!-- 列表 -->
+					<view class="tui-remarks-cell  tui-mtop" v-for="(list, index) in remarksList" :key="index">
+						<view class="tui-remarks-name" @click.stop="details(list)">
+							<view class="tui-remarks-name-le">咨询人:{{ list.questionMan }}</view>
+							<view class="tui-remarks-name-ri"><text class="iconfont icon-xiayibu"></text></view>
+						</view>
+						<view class="tui-remarks-button" @click.stop="handleShowClubpopup(1, list)"> 修改姓名 </view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
+					<!--加载loadding-->
+				</template>
+			</view>
+		</view>
+		<!-- 取消收藏操作 -->
+		<tui-bottom-popup :radius="false" :mask="false" :show="popupShow">
+			<view class="tui-popup-box clearfix">
+				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-flex-1">
+						<view class="tui-button" @click="handleShowClubpopup(2)">添加咨询人</view>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+		<!-- 操作弹窗 -->
+		<cm-clubmodal
+			ref="clubModal"
+			v-if="isClubModalShow"
+			:show="isClubModalShow"
+			:modalType="modalType"
+			@handleChoiceaText="handleChoiceaTextData"
+		>
+		</cm-clubmodal>
+	</view>
+</template>
+<script>
+import cmClubmodal from '@/components/cm-module/cm-seller/cm-clubmodal'
+
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	serviceProviderId: 0,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	components: {
+		cmClubmodal
+	},
+	data() {
+		return {
+			StaticUrl: this.$Static,
+			isIphoneX: this.$store.state.isIphoneX,
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确认',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+					},
+					plain: false
+				}
+			],
+			totalRecord: 0,
+			popupShow: true,
+			popupShow1: false,
+			listQuery: Object.assign({}, defaultListQuery),
+			remarksList: [],
+			scrollTop: 0,
+			isEmpty: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			hasNextPage: false,
+			navbarHeight: '',
+			nomoreText: '上拉显示更多',
+			handleUpdataVisitorId: 0,
+			modalType: 0,
+			isClubModalShow: false
+		}
+	},
+	onLoad() {},
+	filters: {
+		NumFormat: function(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value).toFixed(2)
+			return number
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo'])
+	},
+	methods: {
+		...mapMutations(['login', 'logout']),
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.GetProductListInfo()
+		},
+		GetProductListInfo() {
+			this.remarksList = []
+			this.listQuery.pageNum = 1
+			this.UserService.getUserClubVisitorList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.isEmpty = false
+						this.hasNextPage = data.hasNextPage
+						this.totalRecord = data.totalRecord
+						this.remarksList = data.results
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							if (this.remarksList.length < 8) {
+								this.pullUpOn = true
+							} else {
+								this.pullUpOn = false
+								this.loadding = false
+								this.nomoreText = '已至底部'
+							}
+						}
+					} else {
+						this.isEmpty = true
+					}
+					this.isRequest = true
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		GetOnReachBottomData(index) {
+			//上拉加载
+			this.listQuery.pageNum += 1
+			this.UserService.getUserClubVisitorList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.hasNextPage = data.hasNextPage
+						this.remarksList = this.remarksList.concat(data.results)
+						this.pullFlag = false // 防上拉暴滑
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		handleShowClubpopup(type, el) {
+			// 点击操作
+			this.modalType = type
+			if (this.modalType == 1) {
+				this.handleUpdataVisitorId = el.questionManId
+				this.isClubModalShow = true
+			} else {
+				this.isClubModalShow = true
+			}
+		},
+		handleChoiceaTextData(data) {
+			// 监听获取
+			console.log(data)
+			if (this.modalType == 1) {
+				this.handleUpdateVisitor(data)
+			} else {
+				this.handleSaveVisitor(data)
+			}
+		},
+		handleUpdateVisitor(data) {
+			// 修改咨询人姓名
+			this.UserService.getUserClubVisitorUpdate({
+				questionMan: data,
+				questionManId: this.handleUpdataVisitorId,
+				serviceProviderId: this.listQuery.serviceProviderId
+			})
+				.then(response => {
+					this.$util.msg('修改成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.GetProductListInfo()
+					}, 2000)
+				})
+				.catch(error => {
+					console.log('=======>修改咨询姓名失败~')
+				})
+		},
+		handleSaveVisitor(data) {
+			// 添加咨询人
+			this.UserService.getUserClubVisitorSave({
+				name: data,
+				serviceProviderId: this.listQuery.serviceProviderId
+			})
+				.then(response => {
+					let VisitorInfo = {
+						questionManId: response.data.questionManId,
+						questionMan: response.data.questionMan
+					}
+					this.$api.setStorage('VisitorInfo', VisitorInfo)
+					setTimeout(() => {
+						this.$api.navigateTo('/pages/seller/remarks/record-list')
+					}, 1000)
+				})
+				.catch(error => {
+					console.log('=======>添加咨询人失败~')
+				})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			if (this.listQuery.keyWord != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+				this.listQuery.pageNum = 1
+				this.GetProductListInfo()
+			}
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.keyWord = ''
+			this.isShowClose = false
+			this.listQuery.pageNum = 1
+			this.GetProductListInfo()
+		},
+		details(list) {
+			let VisitorInfo = {
+				questionManId: list.questionManId,
+				questionMan: list.questionMan
+			}
+			this.$api.setStorage('VisitorInfo', VisitorInfo)
+			this.$api.navigateTo('/pages/seller/remarks/record-list')
+		}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.GetOnReachBottomData()
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.listQuery.pageNum = 1
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onShow() {
+		this.initGetStotage()
+	}
+}
+</script>
+
+<style lang="scss">
+@import '@/uni.scss';
+page {
+	background: #f7f7f7;
+}
+.empty-container {
+	z-index: 99;
+}
+.club-search {
+	width: 100%;
+	height: 112rpx;
+	padding: 24rpx;
+	background: #ffffff;
+	box-sizing: border-box;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 20;
+	.search-from {
+		width: 100%;
+		height: 100%;
+		background: #f7f7f7;
+		border-radius: 32rpx;
+		float: left;
+		position: relative;
+		.input {
+			width: 500rpx;
+			height: 64rpx;
+			float: left;
+			line-height: 64rpx;
+			color: $text-color;
+			font-size: $font-size-24;
+		}
+		.icon-iconfonticonfontsousuo1 {
+			width: 64rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			text-align: center;
+			display: block;
+			font-size: $font-size-38;
+			float: left;
+			color: #999999;
+		}
+		.icon-shanchu1 {
+			font-size: $font-size-32;
+			color: #999999;
+			position: absolute;
+			width: 64rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			text-align: center;
+			top: 0;
+			right: 0;
+			z-index: 10;
+		}
+	}
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	position: relative;
+	padding: 0;
+	box-sizing: border-box;
+	padding: 24rpx;
+	padding-top: 136rpx;
+	.empty-container-image {
+		width: 260rpx;
+		height: 260rpx;
+		margin-top: -300rpx;
+	}
+	.tui-remarks-cell {
+		width: 100%;
+		height: 200rpx;
+		border-radius: 16rpx;
+		background: #ffffff;
+		margin-bottom: 24rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		.tui-remarks-name {
+			width: 100%;
+			height: 100rpx;
+			border-bottom: 1px solid #e1e1e1;
+			.tui-remarks-name-le {
+				float: left;
+				line-height: 100rpx;
+				font-size: $font-size-28;
+				color: #333333;
+				text-align: left;
+				font-weight: bold;
+			}
+			.tui-remarks-name-ri {
+				width: 40rpx;
+				float: right;
+				line-height: 100rpx;
+				font-size: $font-size-44;
+				color: #b2b2b2;
+				text-align: center;
+			}
+		}
+		.tui-remarks-button {
+			width: 100%;
+			height: 100rpx;
+			line-height: 100rpx;
+			box-sizing: border-box;
+			text-align: center;
+			font-size: $font-size-30;
+			float: left;
+			font-weight: bold;
+			color: #1890f9;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 100rpx;
+	padding: 6rpx 24rpx;
+	.tui-popup-content {
+		padding-top: 30rpx;
+	}
+}
+.tui-popup-btn {
+	width: 100%;
+	height: auto;
+	float: left;
+	box-sizing: border-box;
+	margin-top: 30rpx;
+	.tui-button {
+		width: 600rpx;
+		height: 88rpx;
+		background: $btn-confirm;
+		line-height: 88rpx;
+		text-align: center;
+		color: #ffffff;
+		font-size: $font-size-28;
+		border-radius: 44rpx;
+		margin: 0 auto;
+	}
+	.tui-button-text {
+		width: 600rpx;
+		height: 48rpx;
+		line-height: 48rpx;
+		text-align: center;
+		color: #e15616;
+		font-size: $font-size-26;
+		margin: 0 auto;
+	}
+}
+</style>

+ 188 - 71
pages/seller/remarks/details.vue

@@ -1,10 +1,34 @@
 <template>
 	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
-		<view class="remarks-content">
-			<view class="list-view-title"> <view class="list-view-h1">文字备注</view> </view>
-			<view class="remarks-textarea"> {{ remarksParams.remarks }} </view>
-			<view class="list-view-title" v-if="remarksParams.imageList.length>0"> <view class="list-view-h1">图片</view> </view>
-			<view class="list-view-upload clearfix" v-if="remarksParams.imageList.length>0">
+		<view class="remarks-content-club" @click="handleClickClunInfo">
+			<view class="content-club-le">
+				<view class="club-le-text">
+					<text class="label">机构名称:</text> <text class="text">{{ clubInfo.name }}</text>
+				</view>
+				<view class="club-le-text">
+					<text class="label">联系人:</text> <text class="text">{{ clubInfo.linkMan }}</text>
+					<text class="label phone">手机号:</text> <text class="text">{{ clubInfo.contractMobile }}</text>
+				</view>
+				<view class="club-le-text">
+					<text class="label">地址:</text>
+					<text class="text" v-if="clubInfo.provincialAddress">{{ clubInfo.provincialAddress }}{{ clubInfo.address }}</text>
+				</view>
+			</view>
+			<view class="content-club-ri"> <text class="iconfont icon-xiayibu"></text> </view>
+		</view>
+		<view class="remarks-content clearfix">
+			<view class="list-view-title"> <view class="list-view-h1">咨询人:{{ remarksParams.questionMan }}</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 }}
+				</text>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.imageList.length > 0">
+				<view class="list-view-h1">图片</view>
+			</view>
+			<view class="list-view-upload clearfix" v-if="remarksParams.imageList.length > 0">
 				<view class="photo-item" v-for="(image, imageIndex) in remarksParams.imageList" :key="imageIndex">
 					<image
 						:src="image"
@@ -13,11 +37,19 @@
 					></image>
 				</view>
 			</view>
-			<view class="list-view-title" v-if="remarksParams.fileList.length>0"> <view class="list-view-h1">文件</view> </view>
-			<view class="list-view" v-for="(file, fileIndex) in remarksParams.fileList" :key="fileIndex" v-if="remarksParams.fileList.length>0">
+			<view class="list-view-title" v-if="remarksParams.fileList.length > 0">
+				<view class="list-view-h1">文件</view>
+			</view>
+			<view
+				class="list-view"
+				v-for="(file, fileIndex) in remarksParams.fileList"
+				:key="fileIndex"
+				v-if="remarksParams.fileList.length > 0"
+			>
 				<view class="list-view-text">
 					<view class="input">{{ file.fileName }}</view>
 					<view class="delbtn" @click.stop="previewFile(file)">预览</view>
+					<!-- <view class="delbtn down" @click.stop="downloadFile(file)">下载</view> -->
 				</view>
 			</view>
 		</view>
@@ -36,7 +68,10 @@ export default {
 			isIphoneX: this.$store.state.isIphoneX,
 			productActions: [],
 			remarksParams: {},
-			remarksId:0
+			remarksId: 0,
+			clubUserId: 0,
+			clubInfo: {},
+			userInfo: {}
 		}
 	},
 	onLoad(option) {
@@ -53,11 +88,24 @@ export default {
 			})
 				.then(response => {
 					this.remarksParams = response.data
+					this.clubUserId = response.data.userId
+					this.getCulbInfo()
 				})
 				.catch(error => {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		getCulbInfo() {
+			// 查询机构信息
+			this.UserService.OrganizationUpdateModifyInfo({ userId: this.clubUserId })
+				.then(response => {
+					this.clubInfo = response.data.club
+					this.userInfo = response.data.user
+				})
+				.catch(error => {
+					console.log('=============>', error.msg)
+				})
+		},
 		previewImg(image, index) {
 			//顶部商品图片预览
 			isPreviewImg = true
@@ -68,55 +116,84 @@ export default {
 				longPressActions: ''
 			})
 		},
-		previewFile(file){//预览文件
+		previewFile(file) {
+			//预览文件
 			this.openDocument(file)
 		},
-		openDocument(file) {// 打开文档
-		    uni.showLoading({
-		        title:'加载中'
-		    })
-		    // 获取文件后缀
-		    const index = file.fileName.lastIndexOf('.')
-		    const suffix = file.fileName.substring(index + 1)
-		    // 下载文件
-		    uni.downloadFile({
-		        url: file.fileUrl,
-		        success(res) {
-		            const filePath = res.tempFilePath
-		            console.log(filePath) 
-		            // 打开文件
-		            uni.openDocument({
-		                filePath: filePath,
-		                fileType: suffix,
-		                success(res) {
-		                    uni.showToast({
-		                        icon:'success',
-		                        title:'打开成功',
-		                        duration: 1200
-		                    })
-		                    uni.hideLoading()
-		                },
-		                fail(err) {
-		                    if(err.errMsg.indexOf('fail filetype not supported')){
-		                        uni.showModal({
-		                            content: '不支持的文件预览',
-		                            cancelColor: '#666',
-		                            confirmColor: '#E15616'
-		                        })
-		                    }
-		                    uni.hideLoading()
-		                }
-		            })
-		        },
-		        fail(err){
-		            uni.showToast({
-		                title: JSON.stringify(err),
-		                icon:'none',
-		                duration: 5000
-		            })
-		            uni.hideLoading()
-		        },
-		    })
+		openDocument(file) {
+			// 打开文档
+			uni.showLoading({title: '加载中'})
+			// 获取文件后缀
+			const index = file.fileName.lastIndexOf('.')
+			const suffix = file.fileName.substring(index + 1)
+			// 下载文件
+			uni.downloadFile({
+				url: file.fileUrl,
+				success(res) {
+					const filePath = res.tempFilePath
+					// 打开文件
+					uni.openDocument({
+						filePath: filePath,
+						fileType: suffix,
+						success(res) {
+							uni.showToast({
+								icon: 'success',
+								title: '打开成功',
+								duration: 1200
+							})
+							uni.hideLoading()
+						},
+						fail(err) {
+							if (err.errMsg.indexOf('fail filetype not supported')) {
+								uni.showModal({
+									content: '不支持的文件预览',
+									cancelColor: '#666',
+									confirmColor: '#E15616'
+								})
+							}
+							uni.hideLoading()
+						}
+					})
+		 	},
+				fail(err) {
+					uni.showToast({
+						title: JSON.stringify(err),
+						icon: 'none',
+						duration: 5000
+					})
+					uni.hideLoading()
+				}
+			})
+		},
+		downloadFile(file) {
+			let self = this
+			// 下载文件
+			wx.downloadFile({
+			    url: file.fileUrl,
+			    success (res) {
+					console.log('保存文件路勁============>',res.tempFilePath)
+			        wx.saveFile({
+			            tempFilePath: res.tempFilePath,
+			            success (res) {
+							self.$util.msg('下载成功', 2000)
+							setTimeout(()=>{
+								self.openDocument(file)
+							},2000)
+			            },
+			            fail(error){
+			                self.$util.msg('下载失败', 2000)
+			            }
+			        })
+			    }
+			})
+		},
+		handleClickClunInfo() {
+			//修改机构资料
+			if (this.userInfo.userIdentity === 2) {
+				this.$api.navigateTo(`/pages/seller/login/apply?userID=${this.userInfo.userId}`)
+			} else if (this.userInfo.userIdentity === 4) {
+				this.$api.navigateTo(`/pages/seller/login/information?userID=${this.userInfo.userId}`)
+			}
 		}
 	},
 	onShow() {}
@@ -128,6 +205,38 @@ page {
 	height: auto;
 	background: #ffffff;
 }
+.remarks-content-club {
+	width: 100%;
+	height: 252rpx;
+	padding: 24rpx;
+	box-sizing: border-box;
+	border-bottom: 20rpx solid #f7f7f7;
+	.content-club-le {
+		width: 660rpx;
+		float: left;
+		.club-le-text {
+			width: 100%;
+			height: 60rpx;
+			line-height: 60rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			.label {
+				color: #999999;
+				&.phone {
+					margin-left: 48rpx;
+				}
+			}
+		}
+	}
+	.content-club-ri {
+		width: 40rpx;
+		height: 160rpx;
+		float: right;
+		line-height: 160rpx;
+		text-align: center;
+		color: #b2b2b2;
+	}
+}
 .remarks-content {
 	width: 100%;
 	height: auto;
@@ -146,19 +255,26 @@ page {
 			text-align: left;
 		}
 	}
-	.remarks-textarea {
+	.tui-remarks-content {
 		width: 100%;
-		height: 340rpx;
-		padding: 16rpx;
-		margin: 20rpx 0 0 0;
-		border-radius: 6rpx;
-		position: relative;
-		border: 1px solid #b2b2b2;
-		box-sizing: border-box;
-		overflow-y: scroll;
-		line-height: 38rpx;
-		font-size: $font-size-26;
-		color: #333333;
+		height: auto;
+		margin-bottom: 24rpx;
+		.tui-remarks-span{
+			height: 48rpx;
+			line-height: 48rpx;
+			text-align: center;
+			padding: 0 20rpx;
+			background-color: #FEF6F3;
+			font-size: $font-size-26;
+			color: #E15616;
+			border-radius: 25rpx;
+			display: inline-block;
+			margin-right:24rpx;
+			margin-bottom: 24rpx;
+			&:nth-child(4n){
+				margin-right: none;
+			}
+		}
 	}
 	.list-view {
 		width: 100%;
@@ -168,7 +284,7 @@ page {
 			width: 100%;
 			float: left;
 			.input {
-				width: 560rpx;
+				width: 500rpx;
 				height: 50rpx;
 				box-sizing: border-box;
 				line-height: 50rpx;
@@ -182,16 +298,17 @@ page {
 				float: left;
 				font-size: 26rpx;
 			}
-			.delbtn{
+			.delbtn {
 				width: 96rpx;
 				height: 44rpx;
-				border-radius: 8rpx;
-				background-color: #fff2ec;
 				font-size: $font-size-24;
 				color: #e15616;
 				line-height: 44rpx;
 				text-align: center;
 				float: left;
+				&.down {
+					color: #1890f9;
+				}
 			}
 		}
 	}

+ 197 - 46
pages/seller/remarks/list.vue

@@ -1,24 +1,46 @@
 <template>
 	<view class="container product clearfix">
-		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '168rpx' : '0' }">
+		<view class="club-search clearfix">
+			<view class="search-from name">
+				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				<input class="input" 
+					   type="text" 
+					   confirm-type="search" 
+					   v-model="listQuery.keyWord" 
+					   @input="onShowClose" 
+					   @confirm="GetProductListInfo" 
+					   placeholder="搜索关键词"
+					   maxlength="16"/>
+				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+			</view>
+		</view>
+		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '216rpx' : '168rpx' }">
 			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
 				<!-- 空白页 -->
 				<view class="empty-container" v-if="isEmpty">
 					<image class="empty-container-image" :src="StaticUrl + '/icon/icon-remarks-empty@2x.png'"></image>
-					<text class="error-text">暂无任何资料备注~</text>
+					<text class="error-text">暂无任何数据~</text>
 				</view>
 				<!-- 列表 -->
 				<view class="tui-remarks-cell  tui-mtop" v-for="(remark, index) in remarksList" :key="index" @click.stop="details(remark.remarksId)">
-					<view class="tui-remarks-time">{{ remark.addTime }}</view>
-					<view class="tui-remarks-content">{{ remark.remarks }}</view>
+					<view class="tui-remarks-title">
+						<view class="tui-remarks-time tt">{{ remark.clubName }}</view>
+						<view class="tui-remarks-time sm">{{ remark.addTime }}</view>
+					</view>
+					<view class="tui-remarks-name">咨询人:{{ remark.questionMan ? remark.questionMan : '' }}</view>
+					<view class="tui-remarks-content">
+						<text class="tui-remarks-span" v-for="(label, labelIndex) in remark.remarks" :key="labelIndex">
+							{{ label }}
+						</text>
+					</view>
 					<view class="tui-remarks-button">
-						<view class="btn"  @click.stop="handEditRemark(remark.remarksId)">修改</view> 
-						<view class="btn" @click.stop="deleteRemark(remark.remarksId)">删除</view>
+						<view class="btn edit"  @click.stop="handEditRemark(remark.remarksId)">修改</view> 
+						<view class="btn del" @click.stop="deleteRemark(remark.remarksId)">删除</view>
 					</view>
 				</view>
 				<!--加载loadding-->
 				<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"></tui-nomore>
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
 				<!--加载loadding-->
 			</view>
 		</view>
@@ -27,11 +49,20 @@
 			<view class="tui-popup-box clearfix">
 				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
 					<view class="tui-flex-1">
-						<view class="tui-button" @click="handleAllUnder">添加资料备注</view>
+						<view class="tui-button" @click="handleShowClubpopup">添加画像</view>
+					</view>
+					<view class="tui-flex-1">
+						<view class="tui-button-text" @click="handleAllUnder">潜在客户信息 ></view>
 					</view>
 				</view>
 			</view>
 		</tui-bottom-popup>
+		<!-- 添加记录 -->
+		<cm-clubpopup ref="clubpopup" 
+				v-if="isClubpopupShow"
+				:show="isClubpopupShow"
+				@handleChoiceaClub="handleChoiceaClubData">
+		</cm-clubpopup>
 		<!-- 弹窗提示 -->
 		<tui-modal
 			:show="modal"
@@ -48,19 +79,18 @@
 	</view>
 </template>
 <script>
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
+import cmClubpopup from '@/components/cm-module/cm-seller/cm-clubpopup'
+
 
 import { mapState, mapMutations } from 'vuex'
 const defaultListQuery = {
-	clubId: 0,
+	serviceProviderId: 0,
 	pageNum: 1,
 	pageSize: 10
 }
 export default {
 	components: {
-		tuiLoadmore,
-		tuiNomore
+		cmClubpopup
 	},
 	data() {
 		return {
@@ -96,7 +126,8 @@ export default {
 			nomoreText: '上拉显示更多',
 			contentModalText: '', //操作文字提示语句
 			modal: false,
-			handleRemarksId:0
+			handleRemarksId:0,
+			isClubpopupShow:false
 		}
 	},
 	onLoad() {
@@ -116,8 +147,8 @@ export default {
 	methods: {
 		...mapMutations(['login', 'logout']),
 		async initGetStotage() {
-			const clubInfo = await this.$api.getComStorage('orderUserInfo')
-			this.listQuery.clubId = clubInfo.clubId ? clubInfo.clubId : 0
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
 			this.GetProductListInfo()
 		},
 		GetProductListInfo() {
@@ -186,18 +217,25 @@ export default {
 		deleteRemark(remarksId) {
 			this.handleRemarksId = remarksId
 			this.modal = true
-			this.contentModalText = '确定删除这条备注信息吗?'
+			this.contentModalText = '确定删除这条记录吗?'
 		},
 		handEditRemark(remarksId){
-			//跳转修改资料备注
+			//跳转修改客户画像
 			this.$api.navigateTo(`/pages/seller/remarks/add?type=edit&remarksId=${remarksId}`)
 		},
 		handleAllUnder() {
-			//跳转添加资料备注
-			this.$api.navigateTo('/pages/seller/remarks/add')
+			//跳转潛在客戶頁
+			this.$api.navigateTo('/pages/seller/remarks/customer-list')
+		},
+		handleShowClubpopup(){ 
+			this.isClubpopupShow = true
+		},
+		handleChoiceaClubData(data){
+			console.log(data)
+			this.$api.navigateTo(`/pages/seller/remarks/add?userId=${data.userId}`)
 		},
 		handleClick(e) {
-			//取消收藏
+			//确认删除
 			if (e.index == 1) {
 				this.handleDeleteUserLike()
 			}
@@ -209,7 +247,7 @@ export default {
 				remarksId: this.handleRemarksId
 			})
 				.then(response => {
-					this.$util.msg('删除成功', 2000, true, 'success')
+					this.$util.msg('删除', 2000, true, 'success')
 					setTimeout(() => {
 						this.GetProductListInfo()
 					}, 2000)
@@ -218,6 +256,21 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		onShowClose () {//输入框失去焦点时触发
+			if(this.listQuery.keyWord != ''){
+				this.isShowClose = true
+			}else{					
+				this.isShowClose = false
+				this.listQuery.pageNum=1
+				this.GetProductListInfo()
+			}
+		},
+		delInputText(){//清除输入框内容
+			this.listQuery.keyWord = ''
+			this.isShowClose = false
+			this.listQuery.pageNum=1
+			this.GetProductListInfo()
+		},
 		hideMobel() {
 			this.modal = false
 		},
@@ -255,6 +308,55 @@ page {
 .empty-container {
 	z-index: 99;
 }
+.club-search{
+	width: 100%;
+	height: 112rpx;
+	padding: 24rpx;
+	background: #FFFFFF;
+	box-sizing: border-box;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 20;
+	.search-from{
+		width: 100%;
+		height: 100%;
+		background: #F7F7F7;
+		border-radius: 32rpx;
+		float: left;
+		position: relative;
+		.input{
+			width: 500rpx;
+			height: 64rpx;
+			float: left;
+			line-height: 64rpx;
+			color: $text-color;
+			font-size: $font-size-24;
+		}
+		.icon-iconfonticonfontsousuo1{
+			width: 64rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			text-align: center;
+			display: block;
+			font-size: $font-size-38;
+			float: left;
+			color: #999999;
+		}
+		.icon-shanchu1{
+			font-size: $font-size-32;
+			color: #999999;
+			position: absolute;
+			width: 64rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			text-align: center;
+			top: 0;
+			right: 0;
+			z-index: 10;
+		}
+	}
+}
 .remarks-content {
 	width: 100%;
 	height: auto;
@@ -262,6 +364,7 @@ page {
 	padding: 0;
 	box-sizing: border-box;
 	padding: 24rpx;
+	padding-top: 136rpx;
 	.empty-container-image {
 		width: 260rpx;
 		height: 260rpx;
@@ -269,49 +372,87 @@ page {
 	}
 	.tui-remarks-cell {
 		width: 100%;
-		height: 316rpx;
 		border-radius: 16rpx;
 		background: #ffffff;
 		margin-bottom: 24rpx;
 		box-sizing: border-box;
-		padding: 25rpx 32rpx;
-		.tui-remarks-time {
+		padding: 24rpx;
+		.tui-remarks-title{
 			width: 100%;
-			height: 37rpx;
-			line-height: 37rpx;
-			text-align: left;
+			height: 48rpx;
+			line-height: 48rpx;
+			.tui-remarks-time {
+				float: left;
+				&.tt{
+					width: 60%;
+					font-size: $font-size-32;
+					color: #333333;
+					text-align: left;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					display: -webkit-box;
+					-webkit-line-clamp: 1;
+					line-clamp: 1;
+					-webkit-box-orient: vertical;
+					font-weight: bold;
+				}
+				&.sm{
+					width: 40%;
+					font-size: $font-size-26;
+					color: #999999;
+					text-align: right;
+				}
+			}
+		}
+		.tui-remarks-name{
+			width: 100%;
+			height: 48rpx;
+			line-height: 48rpx;
 			font-size: $font-size-26;
 			color: #666666;
-			margin-bottom: 24rpx;
+			text-align: left;
+			margin-bottom: 20rpx;
 		}
 		.tui-remarks-content {
 			width: 100%;
-			line-height: 44rpx;
-			text-align: justify;
-			font-size: $font-size-26;
-			color: #333333;
-			text-overflow: ellipsis;
-			overflow: hidden;
-			display: -webkit-box;
-			-webkit-line-clamp: 3;
-			line-clamp: 3;
-			-webkit-box-orient: vertical;
+			height: auto;
+			border-bottom: 1px solid #E1E1E1;
 			margin-bottom: 24rpx;
+			.tui-remarks-span{
+				height: 48rpx;
+				line-height: 48rpx;
+				text-align: center;
+				padding: 0 20rpx;
+				background-color: #FEF6F3;
+				font-size: $font-size-26;
+				color: #E15616;
+				border-radius: 25rpx;
+				display: inline-block;
+				margin-right:24rpx;
+				margin-bottom: 24rpx;
+				&:nth-child(4n){
+					margin-right: none;
+				}
+			}
 		}
 		.tui-remarks-button {
 			width: 100%;
 			height: 48rpx;
 			.btn {
-				width: 104rpx;
+				width: 50%;
 				line-height: 48rpx;
 				box-sizing: border-box;
-				border: 1px solid #707070;
 				text-align: center;
-				border-radius: 30rpx;
-				color: #666666;
-				font-size: $font-size-24;
-				float: right;
-				margin-left: 24rpx;
+				font-size: $font-size-34;
+				float: left;
+				font-weight: bold;
+				&.edit{
+					color: #1890F9;
+					border-right: 1px solid #E1E1E1;
+				}
+				&.del{
+					color: #F94B4B;
+				}
 			}
 		}
 	}
@@ -342,5 +483,15 @@ page {
 		border-radius: 44rpx;
 		margin: 0 auto;
 	}
+	.tui-button-text{
+		width: 600rpx;
+		height: 48rpx;
+		line-height: 48rpx;
+		text-align: center;
+		color: #E15616;
+		font-size: $font-size-26;
+		margin: 0 auto;
+		margin-top: 15rpx;
+	}
 }
 </style>

+ 245 - 0
pages/seller/remarks/record-details.vue

@@ -0,0 +1,245 @@
+<template>
+	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
+		<view class="remarks-content">
+			<view class="list-view-title">
+				<view class="list-view-h1">咨询人</view>
+			</view>
+			<view class="remarks-input">{{ remarksParams.questionMan }}</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 }}
+				</text>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.imageList.length>0"> <view class="list-view-h1">图片</view> </view>
+			<view class="list-view-upload clearfix" v-if="remarksParams.imageList.length>0">
+				<view class="photo-item" v-for="(image, imageIndex) in remarksParams.imageList" :key="imageIndex">
+					<image
+						:src="image"
+						mode="aspectFill"
+						@click.stop="previewImg(remarksParams.imageList, imageIndex)"
+					></image>
+				</view>
+			</view>
+			<view class="list-view-title" v-if="remarksParams.fileList.length>0"> <view class="list-view-h1">文件</view> </view>
+			<view class="list-view" v-for="(file, fileIndex) in remarksParams.fileList" :key="fileIndex" v-if="remarksParams.fileList.length>0">
+				<view class="list-view-text">
+					<view class="input">{{ file.fileName }}</view>
+					<view class="delbtn" @click.stop="previewFile(file)">预览</view>
+					<!-- <view class="delbtn down" @click.stop="previewFile(file)">下载</view> -->
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import { uploadFileImage, uploadFilePdfDocDocx } from '@/services/public.js'
+
+var isPreviewImg
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			productActions: [],
+			remarksParams: {},
+			remarksId:0
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		this.remarksId = option.remarksId
+		this.getUserRemarksVisitDetail()
+	},
+	methods: {
+		...mapMutations(['login']),
+		getUserRemarksVisitDetail() {
+			//资料详情
+			this.UserService.getUserRemarksVisitDetail({
+				remarksId: this.remarksId
+			})
+				.then(response => {
+					this.remarksParams = response.data
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		previewImg(image, index) {
+			//顶部商品图片预览
+			isPreviewImg = true
+			let previewUrls = image
+			uni.previewImage({
+				current: index, //图片索引
+				urls: previewUrls, //必须是http图片,本地图片无效
+				longPressActions: ''
+			})
+		},
+		previewFile(file){//预览文件
+			this.openDocument(file)
+		},
+		openDocument(file) {// 打开文档
+		    uni.showLoading({
+		        title:'加载中'
+		    })
+		    // 获取文件后缀
+		    const index = file.fileName.lastIndexOf('.')
+		    const suffix = file.fileName.substring(index + 1)
+		    // 下载文件
+		    uni.downloadFile({
+		        url: file.fileUrl,
+		        success(res) {
+		            const filePath = res.tempFilePath
+		            console.log(filePath) 
+		            // 打开文件
+		            uni.openDocument({
+		                filePath: filePath,
+		                fileType: suffix,
+		                success(res) {
+		                    uni.showToast({
+		                        icon:'success',
+		                        title:'打开成功',
+		                        duration: 1200
+		                    })
+		                    uni.hideLoading()
+		                },
+		                fail(err) {
+		                    if(err.errMsg.indexOf('fail filetype not supported')){
+		                        uni.showModal({
+		                            content: '不支持的文件预览',
+		                            cancelColor: '#666',
+		                            confirmColor: '#E15616'
+		                        })
+		                    }
+		                    uni.hideLoading()
+		                }
+		            })
+		        },
+		        fail(err){
+		            uni.showToast({
+		                title: JSON.stringify(err),
+		                icon:'none',
+		                duration: 5000
+		            })
+		            uni.hideLoading()
+		        },
+		    })
+		},
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto;
+	background: #ffffff;
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	padding-bottom: 80rpx;
+	.list-view-title {
+		width: 100%;
+		height: auto;
+		margin-bottom: 16rpx;
+		margin-top: 40rpx;
+		.list-view-h1 {
+			line-height: 40rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			text-align: left;
+		}
+	}
+	.tui-remarks-content {
+		width: 100%;
+		height: auto;
+		margin-bottom: 24rpx;
+		.tui-remarks-span{
+			height: 48rpx;
+			line-height: 48rpx;
+			text-align: center;
+			padding: 0 20rpx;
+			background-color: #FEF6F3;
+			font-size: $font-size-26;
+			color: #E15616;
+			border-radius: 25rpx;
+			display: inline-block;
+			margin-right:24rpx;
+			margin-bottom: 24rpx;
+			&:nth-child(4n){
+				margin-right: none;
+			}
+		}
+	}
+	.list-view {
+		width: 100%;
+		height: auto;
+		margin-top: 20rpx;
+		.list-view-text {
+			width: 100%;
+			float: left;
+			.input {
+				width: 500rpx;
+				height: 50rpx;
+				box-sizing: border-box;
+				line-height: 50rpx;
+				color: #333333;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				float: left;
+				font-size: 26rpx;
+			}
+			.delbtn{
+				width: 96rpx;
+				height: 44rpx;
+				border-radius: 8rpx;
+				font-size: $font-size-24;
+				color: #e15616;
+				line-height: 44rpx;
+				text-align: center;
+				float: left;
+				&.down{
+					color: #1890F9;
+				}
+			}
+		}
+	}
+	.list-view-upload {
+		width: 100%;
+		height: auto;
+		.photo-item {
+			display: inline-block;
+			width: 112rpx;
+			height: 112rpx;
+			margin: 10rpx 0;
+			margin-right: 25rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f5f5f5;
+			position: relative;
+			float: left;
+			image {
+				width: 112rpx;
+				height: 112rpx;
+				border-radius: 10rpx;
+			}
+		}
+		.photo-list {
+			width: 100%;
+			height: 116rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			display: flex;
+			align-items: flex-start;
+		}
+	}
+}
+</style>

+ 554 - 0
pages/seller/remarks/record-list.vue

@@ -0,0 +1,554 @@
+<template>
+	<view class="container product clearfix">
+		<view class="club-search clearfix">
+			<view class="club-search-form">
+				<view class="search-from name">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input
+						class="input"
+						type="text"
+						confirm-type="search"
+						v-model="listQuery.keyWord"
+						@input="onShowClose"
+						@confirm="GetProductListInfo"
+						placeholder="搜索关键词"
+						maxlength="16"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+				</view>
+			</view>
+			<view class="search-from-title"> 咨询人:{{ questionMan }} </view>
+		</view>
+		<view class="remarks-content" :style="{ paddingBottom: isIphoneX ? '182rpx' : '148rpx' }">
+			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
+				<!-- 空白页 -->
+				<view class="empty-container" v-if="isEmpty">
+					<text class="error-text">点击下方添加按钮开始记录吧~</text>
+				</view>
+				<template v-else>
+					<!-- 列表 -->
+					<view
+						class="tui-remarks-cell  tui-mtop"
+						v-for="(remark, index) in remarksList"
+						:key="index"
+						@click.stop="details(remark.remarksId)"
+					>
+						<view class="tui-remarks-title">{{ remark.addDate }}</view>
+						<view class="tui-remarks-content">
+							<text
+								class="tui-remarks-span"
+								v-for="(label, labelIndex) in remark.remarks"
+								:key="labelIndex"
+							>
+								{{ label }}
+							</text>
+						</view>
+						<view class="tui-remarks-button">
+							<view class="btn edit" @click.stop="handEditRemark(remark.remarksId)">修改</view>
+							<view class="btn del" @click.stop="deleteRemark(remark.remarksId)">删除</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
+					<!--加载loadding-->
+				</template>
+			</view>
+		</view>
+		<!-- 取消收藏操作 -->
+		<tui-bottom-popup :radius="false" :mask="false" :show="popupShow">
+			<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" :class="isEmpty ? 'disabled' : 'cancel'" @click="handleShowClubpopup"
+							>同步至机构</view
+						>
+						<view class="tui-button confirm" @click="handleAddRecord">添加画像</view>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+		<!-- 添加记录 -->
+		<cm-clubpopup
+			ref="clubpopup"
+			v-if="isClubpopupShow"
+			:show="isClubpopupShow"
+			@handleChoiceaClub="handleChoiceaClubData"
+		>
+		</cm-clubpopup>
+		<!-- 弹窗提示 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			@cancel="hideMobel"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		>
+		</tui-modal>
+	</view>
+</template>
+<script>
+import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
+import tuiNomore from '@/components/tui-components/nomore/nomore'
+import cmClubpopup from '@/components/cm-module/cm-seller/cm-clubpopup'
+
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	questionManId: 0,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	components: {
+		tuiLoadmore,
+		tuiNomore,
+		cmClubpopup
+	},
+	data() {
+		return {
+			StaticUrl: this.$Static,
+			isIphoneX: this.$store.state.isIphoneX,
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确认',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+					},
+					plain: false
+				}
+			],
+			totalRecord: 0,
+			popupShow: true,
+			popupShow1: false,
+			listQuery: Object.assign({}, defaultListQuery),
+			remarksList: [],
+			scrollTop: 0,
+			isEmpty: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			hasNextPage: false,
+			navbarHeight: '',
+			nomoreText: '上拉显示更多',
+			contentModalText: '', //操作文字提示语句
+			modal: false,
+			questionMan: '',
+			questionManId: '',
+			handleRemarksId: 0,
+			isClubpopupShow: false
+		}
+	},
+	onLoad(option) {
+		
+	},
+	filters: {
+		NumFormat: function(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value).toFixed(2)
+			return number
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo'])
+	},
+	methods: {
+		...mapMutations(['login', 'logout']),
+		async init() {
+			const VisitorInfo = await this.$api.getComStorage('VisitorInfo')
+			this.questionMan = VisitorInfo.questionMan
+			this.listQuery.questionManId = VisitorInfo.questionManId
+			this.GetProductListInfo()
+			this.$api.removeStorage('VisitorInfo')
+		},
+		GetProductListInfo() {
+			this.remarksList = []
+			this.listQuery.pageNum = 1
+			this.UserService.getUserClubVisitorRecordlist(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.isEmpty = false
+						this.hasNextPage = data.hasNextPage
+						this.totalRecord = data.totalRecord
+						this.remarksList = data.results
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							if (this.remarksList.length < 8) {
+								this.pullUpOn = true
+							} else {
+								this.pullUpOn = false
+								this.loadding = false
+								this.nomoreText = '已至底部'
+							}
+						}
+					} else {
+						this.isEmpty = true
+					}
+					this.isRequest = true
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		GetOnReachBottomData(index) {
+			//上拉加载
+			this.listQuery.pageNum += 1
+			this.UserService.getUserClubVisitorRecordlist(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.hasNextPage = data.hasNextPage
+						this.remarksList = this.remarksList.concat(data.results)
+						this.pullFlag = false // 防上拉暴滑
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		deleteRemark(remarksId) {
+			this.handleRemarksId = remarksId
+			this.modal = true
+			this.contentModalText = '确定删除这条记录吗?'
+		},
+		handEditRemark(remarksId) {
+			//跳转修改画像
+			this.$api.redirectTo(`/pages/seller/remarks/add-record?type=edit&remarksId=${remarksId}&questionMan=${
+					this.questionMan
+				}`)
+		},
+		handleAllUnder() {
+			//跳转添加资料备注
+			this.$api.navigateTo('/pages/seller/remarks/customer-list')
+		},
+		handleShowClubpopup() {
+			if (this.isEmpty) {
+				return
+			}
+			this.isClubpopupShow = true
+		},
+		handleChoiceaClubData(data) {// 同步至机构
+			console.log(data)
+			this.UserService.getUserRemarksConcactVisit(
+				{
+					clubId: data.clubId,
+					questionManId:this.listQuery.questionManId
+				}
+			)
+			.then(response => {
+				this.$util.msg('同步成功', 2000, true, 'success')
+				setTimeout(() => {
+					this.$api.redirectTo('/pages/seller/remarks/list')
+				}, 2000)
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
+		},
+		handleAddRecord() {
+			this.$api.redirectTo(
+				`/pages/seller/remarks/add-record?questionManId=${this.listQuery.questionManId}&questionMan=${
+					this.questionMan
+				}`
+			)
+		},
+		handleClick(e) {
+			//取消收藏
+			if (e.index == 1) {
+				this.handleDeleteUserLike()
+			}
+			this.modal = false
+		},
+		handleDeleteUserLike() {
+			//操作删除资料备注
+			this.UserService.getUserRemarksVisitDelete({
+				remarksId: this.handleRemarksId
+			})
+				.then(response => {
+					this.$util.msg('已删除', 2000, true, 'success')
+					setTimeout(() => {
+						this.GetProductListInfo()
+					}, 2000)
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			if (this.listQuery.keyWord != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+				this.listQuery.pageNum = 1
+				this.GetProductListInfo()
+			}
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.keyWord = ''
+			this.isShowClose = false
+			this.listQuery.pageNum = 1
+			this.GetProductListInfo()
+		},
+		hideMobel() {
+			this.modal = false
+		},
+		details(remarksId) {
+			this.$api.navigateTo(`/pages/seller/remarks/record-details?remarksId=${remarksId}`)
+		}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.GetOnReachBottomData()
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.listQuery.pageNum = 1
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	
+	onShow() {
+		this.init()
+	}
+}
+</script>
+
+<style lang="scss">
+@import '@/uni.scss';
+page {
+	background: #f7f7f7;
+}
+.empty-container {
+	z-index: 99;
+}
+.club-search {
+	width: 100%;
+	height: 192rpx;
+	background: #ffffff;
+	box-sizing: border-box;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 100;
+	.search-from-title {
+		width: 100%;
+		height: 80rpx;
+		line-height: 80rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		font-size: $font-size-34;
+		float: left;
+		color: #1890f9;
+		background-color: #f2f9ff;
+		font-weight: normal;
+	}
+	.club-search-form {
+		width: 100%;
+		height: 112rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		padding: 24rpx;
+		float: left;
+		.search-from {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			border-radius: 32rpx;
+			float: left;
+			position: relative;
+			.input {
+				width: 500rpx;
+				height: 64rpx;
+				float: left;
+				line-height: 64rpx;
+				color: $text-color;
+				font-size: $font-size-24;
+			}
+			.icon-iconfonticonfontsousuo1 {
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.icon-shanchu1 {
+				font-size: $font-size-32;
+				color: #999999;
+				position: absolute;
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				top: 0;
+				right: 0;
+				z-index: 10;
+			}
+		}
+	}
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	position: relative;
+	padding: 0;
+	box-sizing: border-box;
+	padding: 24rpx;
+	padding-top: 212rpx;
+	.empty-container-image {
+		width: 260rpx;
+		height: 260rpx;
+		margin-top: -300rpx;
+	}
+	.tui-remarks-cell {
+		width: 100%;
+		border-radius: 16rpx;
+		background: #ffffff;
+		margin-bottom: 24rpx;
+		box-sizing: border-box;
+		padding: 24rpx;
+		.tui-remarks-title {
+			width: 100%;
+			height: 66rpx;
+			line-height: 66rpx;
+			font-size: $font-size-26;
+			color: #333333;
+			border-bottom: 1px solid #e1e1e1;
+			box-sizing: border-box;
+		}
+		.tui-remarks-name {
+			width: 100%;
+			height: 37rpx;
+			line-height: 37rpx;
+			font-size: $font-size-26;
+			color: #666666;
+			text-align: left;
+			margin-bottom: 24rpx;
+		}
+		.tui-remarks-content {
+			width: 100%;
+			height: auto;
+			border-bottom: 1px solid #e1e1e1;
+			margin-bottom: 24rpx;
+			padding-top: 20rpx;
+			.tui-remarks-span {
+				height: 48rpx;
+				line-height: 48rpx;
+				text-align: center;
+				padding: 0 20rpx;
+				background-color: #fef6f3;
+				font-size: $font-size-26;
+				color: #e15616;
+				border-radius: 25rpx;
+				display: inline-block;
+				margin-right: 24rpx;
+				margin-bottom: 24rpx;
+				&:nth-child(4n) {
+					margin-right: none;
+				}
+			}
+		}
+		.tui-remarks-button {
+			width: 100%;
+			height: 48rpx;
+			.btn {
+				width: 50%;
+				line-height: 48rpx;
+				box-sizing: border-box;
+				text-align: center;
+				font-size: $font-size-34;
+				float: left;
+				font-weight: bold;
+				&.edit {
+					color: #1890f9;
+					border-right: 1px solid #e1e1e1;
+				}
+				&.del {
+					color: #f94b4b;
+				}
+			}
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 100rpx;
+	padding: 6rpx 24rpx;
+	.tui-popup-content {
+		padding-top: 30rpx;
+	}
+}
+.tui-popup-btn {
+	width: 100%;
+	height: auto;
+	float: left;
+	box-sizing: border-box;
+	margin-top: 30rpx;
+	.tui-flex-1 {
+		width: 100%;
+		height: 84rpx;
+		display: flex;
+		.tui-button {
+			flex: 1;
+			line-height: 84rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 42rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			&.cancel {
+				background: #ffe6dc;
+				color: #e15616;
+			}
+			&.disabled {
+				background: #e1e1e1;
+				color: #ffffff;
+			}
+			&.confirm {
+				background: $btn-confirm;
+				color: #ffffff;
+			}
+		}
+	}
+}
+</style>

+ 1 - 1
services/ajax.service.js

@@ -29,7 +29,7 @@ class AjaxService {
         url = requestUrl + url
         let { isLoading = true } = options
         if (isLoading) {
-            uni.showLoading({ title: '加载中' })
+            uni.showLoading({ title: options.loadText ? options.loadText : '加载中' })
         }
         const requestPromise = new Promise((resolve, reject) => {
             uni.request({

+ 2 - 2
services/beautyArchive.service.js

@@ -13,7 +13,7 @@ export default class BeautyArchiveService {
             url: '/commodity/product/archive',
             data,
             isLoading: true,
-            isHost: true
+              
         })
     }
 
@@ -23,7 +23,7 @@ export default class BeautyArchiveService {
             url: '/commodity/product/archive/detail',
             data,
             isLoading: true,
-            isHost: true
+              
         })
     }
 

+ 8 - 8
services/common.service.js

@@ -28,7 +28,7 @@ export default class CommonService {
 			url: '/commodity/home/floor',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 首页楼层查看更多数据 */
@@ -37,7 +37,7 @@ export default class CommonService {
 			url: '/commodity/page/floor/details',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 二级页楼层查看更多数据 */
@@ -46,7 +46,7 @@ export default class CommonService {
 			url: '/commodity/page/floor/centre',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 首页顶部三个模块数据 */
@@ -78,7 +78,7 @@ export default class CommonService {
 			url: '/commodity/home/init',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 首页金刚区二级分类 */
@@ -119,7 +119,7 @@ export default class CommonService {
 			url: '/commodity/classify/product',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 一级分类 */
@@ -128,7 +128,7 @@ export default class CommonService {
 			url: '/commodity/classify',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/* 根据一级分类获取二、三级分类 */
@@ -145,7 +145,7 @@ export default class CommonService {
 			url: '/commodity/type/id',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 	/*活动页面获取楼层*/
@@ -154,7 +154,7 @@ export default class CommonService {
 			url: '/commodity/page/beauty',
 			data,
 			isLoading: false,
-			isHost: true
+			  
 		})
 	}
 }