huangmp 4 gadi atpakaļ
vecāks
revīzija
554721ec06

+ 1 - 1
assets/http/api.js

@@ -63,7 +63,7 @@ const memberRegister = p => http.post('/community-app-service/app/member/memberR
 const authentication = p => http.post('/community-app-service/app/member/authentication', p)
 //编辑家
 const editFamily = p => http.post('/community-app-service/app/houseuser/editUser', p)
-//编辑家人
+//绑定家人
 const bindRoom = (p,q) => http.post('/community-app-service/app/houseuser/bindRoom?memberId='+p, q)
 
 //删除家人

+ 134 - 0
comps/bindHome.vue

@@ -0,0 +1,134 @@
+<template>
+	<view class="">
+		<u-popup v-model="show" mode="center" width="80%" :border-radius="10" >
+			<view style="padding:30rpx 0rpx;display: flex;flex-direction: column;justify-content: space-between;">
+				<view class="center text-center padding-bottom-30">
+					<text>绑定房间</text>
+				</view>
+				<view class="flex-sub" style="margin: 20rpx 0;">
+					<u-checkbox-group>
+						<u-cell-group>
+							<u-cell-item @click="check(item)" v-for="(item,index) in roomList" :key="index"
+								:icon-style="item.checked?iconStyle:''" :icon="item.checked?'home-fill':'home'"
+								:arrow="false" icon-size="30" :title="item.address">
+								<u-checkbox slot="right-icon" v-model="item.checked" :name="item.id"></u-checkbox>
+							</u-cell-item>
+						</u-cell-group>
+					</u-checkbox-group>
+				</view>
+				<view style="display: flex;justify-content: center;padding-top: 50rpx;">
+					<u-button v-if="type==1" :customStyle="createStyle" @click="createRoom">创建新房间</u-button>
+					<u-button v-else :customStyle="cancelStyle" @click="cancel">暂不绑定</u-button>
+					<u-button :customStyle="confirmStyle" @click="confirm">确认绑定</u-button>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: '',
+		props:['type'],
+		data() {
+			return {
+				show: false,
+				roomList: [],
+				iconStyle: {
+					'color': '#2f7ff5'
+				},
+				createStyle:{
+					backgroundColor: '#ff9900',
+					height: '70rpx',
+					lineHeight: '70rpx',
+					width: '210rpx',
+					fontSize: '28rpx',
+					color: '#FFFFFF',
+					marginLeft: '15rpx',
+					borderRadius: '0'
+				},
+				cancelStyle: {
+					height: '70rpx',
+					lineHeight: '70rpx',
+					width: '210rpx',
+					fontSize: '28rpx',
+					border: '1rpx solid #afb0b3',
+					marginRight: '15rpx',
+					borderRadius: '0'
+				},
+				confirmStyle: {
+					backgroundColor: '#2f7ff5',
+					height: '70rpx',
+					lineHeight: '70rpx',
+					width: '210rpx',
+					fontSize: '28rpx',
+					color: '#FFFFFF',
+					marginLeft: '15rpx',
+					borderRadius: '0'
+				}
+			};
+		},
+		created() {
+			this.initData()
+		},
+		methods: {
+			check(item) {
+				item.checked = !item.checked
+				this.$forceUpdate()
+			},
+			async initData() {
+				let cancelBind=uni.getStorageSync('cancelBind') || false
+				if (cancelBind || this.$isEmpty(this.vuex_member)) {
+					return
+				}
+				let params = {
+					phone: this.vuex_member.phone,
+					name: this.vuex_member.name,
+				}
+				let list = (await this.$http.getHouseUserCondition(params)).data.data
+				this.roomList = list.filter(item => this.isEmpty(item.memberId))
+				this.roomList.forEach(item=>{
+					item.checked=false
+					item.address=item.residentialName+"-"+item.buildingName+"-"+item.unitName+"-"+item.roomName
+				})
+					if (this.$isNotEmpty(this.roomList)) {
+					this.show = true
+				}
+			},
+			isEmpty(data) {
+				if (this.$isEmpty(data) || data == -1) {
+					return true
+				}
+				return false
+			},
+			cancel(){
+				uni.setStorageSync('cancelBind',true)
+				this.show=false
+			},
+			confirm(){
+				let checkList=this.roomList.filter(item=>item.checked)
+				let ids= checkList.map(item=>item.id)
+				if (this.$isEmpty(ids)) {
+					this.$u.toast('至少选择一项')
+					return
+				}
+				let params={
+					memberId:this.vuex_member.id,
+					ids
+				}
+				this.$http.bindRoom(this.vuex_member.id,ids).then(res=>{
+					this.show=false
+					if (res.data.success) {
+						this.$u.toast('绑定成功')
+					}else{
+						this.$u.toast('操作失败')
+					}
+				})
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 23 - 7
pages/bindRoom/bindRoom.vue

@@ -6,7 +6,8 @@
 				<view class="card_list" @click="checked(item)">
 					<view class="card_list_left">
 						<u-icon name="home"></u-icon>
-						<text class="padding-left-10">{{item.residentialName}} | {{item.buildingName}} | {{item.unitName}} | {{item.roomName}}</text>
+						<text class="padding-left-10">{{item.residentialName}} | {{item.buildingName}} |
+							{{item.unitName}} | {{item.roomName}}</text>
 					</view>
 					<view class="card_list_right">
 						<u-checkbox style="float: right;" v-model="item.checked" :name="item.id"></u-checkbox>
@@ -14,15 +15,21 @@
 				</view>
 			</u-checkbox-group>
 		</view>
-		<u-empty v-else src="/static/common/empty.png" marginTop="300"></u-empty>
-		<view class="foot_box-wrap safe-area-inset-bottom">
+		<u-empty v-else src="/static/common/empty.png" icon-size="180" marginTop="300"></u-empty>
+
+		<view class="" style="position: fixed;bottom: 80rpx;left: 0;right: 0;margin: auto;width: 270rpx;">
+			<u-button size="medium" :customStyle="confirmStyle" type="primary" @click="confirm">确定绑定</u-button>
+			<u-button size="medium" :customStyle="cancelStyle" @click="confirm">创建新房间</u-button>
+		</view>
+
+		<!-- 		<view class="foot_box-wrap safe-area-inset-bottom">
 			<view class="foot_box u-flex u-row-between safe-area-inset-bottom" style="box-sizing: border-box;">
 				<button @click="auth" class="sync-wxaddress u-m-20 u-flex u-row-center u-col-center">
 					绑定新房间
 				</button>
 				<button class="u-m-20 add-btn" @click="confirm">确定绑定</button>
 			</view>
-		</view>
+		</view> -->
 	</view>
 </template>
 
@@ -31,7 +38,16 @@
 		components: {},
 		data() {
 			return {
-				houseList: []
+				houseList: [],
+				cancelStyle: {
+					marginTop: '20rpx', // 注意驼峰命名,并且值必须用引号包括,因为这是对象
+					border: '1rpx solid #d0d0d0',
+					color:'#171717',
+					width:'270rpx'
+				},
+				confirmStyle: {
+					width:'270rpx'
+				}
 			};
 		},
 		computed: {},
@@ -60,9 +76,9 @@
 				this.$http.bindRoom(memberId, ids).then(res => {
 					if (res.data.success) {
 						uni.removeStorageSync("houseList")
-						this.$dialog.showModal('绑定成功',false).then(()=>{
+						this.$dialog.showModal('绑定成功', false).then(() => {
 							uni.reLaunch({
-								url:"../index/index"
+								url: "../index/index"
 							})
 						})
 					}

+ 68 - 78
pages/demo/myfamily.vue

@@ -1,102 +1,92 @@
-<!-- 地址列表 -->
 <template>
-	<view class="address-wrap">
-		<u-checkbox-group :wrap="true" v-for="(item,index) in houseList" :key="index">
-			<view class="card_list" @click="checked(item)">
-				<view class="card_list_left">
-					<u-icon name="home"></u-icon>
-					<text class="padding-left-10">{{item.name}}</text>
+	<view class="">
+		<u-popup v-model="show" mode="center" width="80%" :border-radius="10" negative-top="200">
+			<view style="padding:30rpx 0rpx;display: flex;flex-direction: column;justify-content: space-between;">
+				<view class="center text-center padding-bottom-30">
+					<text>绑定房间</text>
 				</view>
-				<view class="card_list_right">
-					<u-checkbox style="float: right;" v-model="item.checked" :name="item.id"></u-checkbox>
+				<view class="flex-sub" style="margin: 20rpx 0;">
+					<u-checkbox-group>
+						<u-cell-group>
+							<u-cell-item @click="check(item)" v-for="(item,index) in roomList" :key="index"
+								:icon-style="item.checked?iconStyle:''" :icon="item.checked?'home-fill':'home'"
+								:arrow="false" icon-size="30" :title="item.roomName">
+								<u-checkbox slot="right-icon" v-model="item.checked" :name="item.id"></u-checkbox>
+							</u-cell-item>
+						</u-cell-group>
+					</u-checkbox-group>
+				</view>
+				<view style="display: flex;justify-content: center;padding-top: 50rpx;">
+					<u-button :customStyle="cancelStyle">暂不绑定</u-button>
+					<u-button :customStyle="confirmStyle">确认绑定</u-button>
 				</view>
 			</view>
-		</u-checkbox-group>
-
-		<view class="foot_box-wrap safe-area-inset-bottom">
-			<view class="foot_box u-flex u-row-between safe-area-inset-bottom" style="box-sizing: border-box;">
-				<button class="sync-wxaddress u-m-20 u-flex u-row-center u-col-center">
-					重新录入
-				</button>
-				<button class="u-m-20 add-btn" @click="confirm">确定绑定</button>
-			</view>
-		</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
 	export default {
-		components: {},
+		name: '',
 		data() {
 			return {
-				houseList: [{
-						name: '阅海万家|测试小区|1栋|1单元|204',
-						id: 1,
-						checked: false
-					},
-					{
-						name: '宁夏电信|测试小区3|2栋|3单元|208',
-						id: 2,
-						checked: false
-					}
-				]
+				show: true,
+				roomList: [{
+					checked: false,
+					roomName: '常春藤小区-4栋-1单元-101',
+					id: 1
+				}, {
+					checked: false,
+					roomName: '常春藤小区-4栋-1单元-102',
+					id: 2
+				}],
+				iconStyle: {
+					'color': '#2f7ff5'
+				},
+				cancelStyle: {
+					height: '70rpx',
+					lineHeight: '70rpx',
+					width: '210rpx',
+					fontSize: '28rpx',
+					border: '1rpx solid #afb0b3',
+					marginRight: '15rpx',
+					borderRadius: '0'
+				},
+				confirmStyle: {
+					backgroundColor: '#2f7ff5',
+					height: '70rpx',
+					lineHeight: '70rpx',
+					width: '210rpx',
+					fontSize: '28rpx',
+					color: '#FFFFFF',
+					marginLeft: '15rpx',
+					borderRadius: '0'
+				}
 			};
 		},
-		computed: {},
-		onLoad() {
-
+		created() {
+			this.initData()
 		},
 		methods: {
-			checked(item) {
+			check(item) {
 				item.checked = !item.checked
 			},
-			confirm() {
-				let checkedList = this.houseList.filter(item => item.checked)
-				console.log(checkedList);
-			}
+			initData(){
+				let params={
+					phone:this.vuex_member.phone,
+					name:this.vuex_member.name,
+				}
+				console.log(params);
+				return
+				this.$http.getHouseUserCondition(params).then(res=>{
+					let list=res.data.data
+					console.log(list);
+				})
+			},
 		}
 	};
 </script>
 
 <style lang="scss" scoped>
-	.card_list {
-		background-color: #FFFFFF;
-		padding: 30rpx 0rpx 30rpx 30rpx;
-		display: flex;
-		justify-content: space-between;
-		margin: 10rpx 0;
-
-		&_left {}
-	}
-
 
-
-	// 底部按钮
-	.foot_box-wrap {
-		height: 140rpx;
-		width: 100%;
-	}
-
-	.foot_box {
-		padding: 10rpx 20rpx;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		width: 100%;
-		// border-top: 1rpx solid rgba(#ccc, 0.2);
-		// background-color: #fff;
-
-		.sync-wxaddress {
-			flex: 1;
-			line-height: 80rpx;
-			background: #ff9900;
-		}
-
-		.add-btn {
-			line-height: 80rpx;
-			flex: 1;
-			background: $base;
-			color: rgba(255, 255, 255, 1);
-		}
-	}
 </style>

+ 3 - 0
pages/index/index.vue

@@ -100,10 +100,12 @@
 			<u-divider bgColor="#f1f1f1;" height="80">到底了</u-divider>
 		</view>
 		<login ref="login" @signIn="signIn"></login>
+		<bindHome v-if="vuex_member"></bindHome>
 	</view>
 </template>
 
 <script>
+	import bindHome from "@/comps/bindHome.vue"
 	import login from "@/comps/login.vue"
 	import loading from "@/comps/loading/loading.vue"
 	import hotConsult from "@/comps/hot-consult/hot-consult.vue"
@@ -112,6 +114,7 @@
 	let that;
 	export default {
 		components: {
+			bindHome,
 			login,
 			goods,
 			hotConsult,

+ 8 - 0
pages/myFamily/comps/item.vue

@@ -23,6 +23,11 @@
 			applyCard,
 			auditCard
 		},
+		provide() {
+			return {
+				reload: this.reload
+			}
+		},
 		props: {
 			//房间号
 			roomId: String,
@@ -73,6 +78,9 @@
 
 		},
 		methods: {
+			reload(){
+				this.mescroll.resetUpScroll()
+			},
 			/**
 			 * 删除用户
 			 */

+ 185 - 145
pages/myFamily/comps/user-card.vue

@@ -1,22 +1,27 @@
 <template>
 	<view class="">
-		<view class="data " v-for="(item, index) in list" :key="index" >
+		<view class="data " v-for="(item, index) in list" :key="index">
 			<view class="top">
 				<view class="left">
 					<u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
-					<view class="title">{{item.residentialName}}-{{item.buildingName}}-{{item.unitName}}-{{item.roomName}}</view>
+					<view class="title">
+						{{item.residentialName}}-{{item.buildingName}}-{{item.unitName}}-{{item.roomName}}</view>
+				</view>
+				<view class="right">
+					<text class="text-red" v-if="isEmpty(item.memberId)">未绑定</text>
 				</view>
 			</view>
 			<view class="item">
 				<view class="left">
-					<view  data-aid="undefined">
-					  <image v-if="!$isEmpty(item.faceUrl)" mode="aspectFill" :src="item.faceUrl"></image>
-					  <image v-else="" mode="aspectFill" src="https://szsq.nxzhsq.cn/community/miniofile/image/head.png"></image>
+					<view data-aid="undefined">
+						<image v-if="!$isEmpty(item.faceUrl)" mode="aspectFill" :src="item.faceUrl"></image>
+						<image v-else="" mode="aspectFill"
+							src="https://szsq.nxzhsq.cn/community/miniofile/image/head.png"></image>
 					</view>
 					<view class="content" data-aid="undefined">
-						<view >姓名:{{item.name}}</view>
-						<view >手机:{{item.phone}}</view>
-						<view >创建时间:{{item.createTime || '未知'}}</view>
+						<view>姓名:{{item.name}}</view>
+						<view>手机:{{item.phone}}</view>
+						<view>创建时间:{{item.createTime || '未知'}}</view>
 						<view v-if="item.type==0">身份:业主</view>
 						<view v-if="item.type==1">身份:家属</view>
 						<view v-if="item.type==2">身份:租户</view>
@@ -24,25 +29,30 @@
 					</view>
 				</view>
 			</view>
-			<view class="bottom" >
+			<view class="bottom">
 				<!-- 业主可以编辑所有人,其他只可以编辑自己 -->
-				<view v-if="showEdit(item)" @click.stop="edit(item)" class="cu-btn line-btn round sm margin-right-sm"  >
+				<view v-if="showEdit(item)" @click.stop="edit(item)" class="cu-btn line-btn round sm margin-right-sm">
 					编辑
 				</view>
+				<view v-if="isEmpty(item.memberId)&&vuex_member.name==item.name&&vuex_member.phone==item.phone"
+					@click.stop="bindRoom(item)" class="cu-btn line-btn round sm margin-right-sm">
+					绑定房间
+				</view>
 				<!-- 小程序审核时,不要出现人脸功能 -->
 				<!-- 业主可以激活所有人的人脸,其他只可以操作自己 -->
 				<!-- <navigator v-if="showActiveFace(item)" class="cu-btn line-btn round sm margin-right-sm"  @click.stop="activeFace(item)">
 					人脸激活
 				</navigator> -->
 				<!-- 自己不能删除自己,业主可以删除成员,但是也不能删除自己 -->
-				<view v-if="vuex_relationshipType==0&&item.type!=0" class="cu-btn bg-btn sm round" @click.stop="deleteUserById(item.id)">
+				<view v-if="vuex_relationshipType==0&&item.type!=0" class="cu-btn bg-btn sm round"
+					@click.stop="deleteUserById(item.id)">
 					删除
 				</view>
 			</view>
 		</view>
-		
+
 		<!-- 有自己房屋的人才可以显示添加家人的功能按钮 -->
-		<view v-if="vuex_relationshipType==0" @click="onTap('add/add')" class=" footer-fixed" >
+		<view v-if="vuex_relationshipType==0" @click="onTap('add/add')" class=" footer-fixed">
 			<view class="cu-btn  flex  text-lg bg-red-btn" style="padding: 46rpx 0;">
 				添加家人
 			</view>
@@ -52,157 +62,187 @@
 </template>
 
 <script>
-export default {
-	props:{
-		list:Array
-	},
-	data() {
-		return {
-			//小程序的审核状态
-			appletType:0
-		};
-	},
-	created() {
-		this.appletType=uni.getStorageSync("appletType")
-	},
-	computed:{
-		 showEdit() {
-			return item => {
-				if (this.vuex_relationshipType==0) {
-					return true
-				}else {
-					if (this.vuex_member.name==item.name || this.vuex_member.tel==item.phone) {
-						 return true
-					}else{
-						return false
-					}
-				}
+	export default {
+		props: {
+			list: Array
+		},
+		inject:['reload'],
+		data() {
+			return {
+				//小程序的审核状态
+				appletType: 0
 			};
 		},
-		showActiveFace(){
-			//小程序的审核状态为1才显示人脸模块,
-			return item => {
-				if (this.vuex_appletType==1) {
-					if (this.vuex_relationshipType==0) {
+		created() {
+			this.appletType = uni.getStorageSync("appletType")
+		},
+		computed: {
+			showEdit() {
+				return item => {
+					if (this.isEmpty(item.memberId)) {
+						return false
+					}
+					if (this.vuex_relationshipType == 0) {
 						return true
 					}
-					if (this.vuex_member.name==item.name || this.vuex_member.tel==item.tel) {
-						 return true
-					}else{
+					if (this.vuex_member.name == item.name || this.vuex_member.phone == item.phone) {
+						return true
+					} else {
 						return false
 					}
-				}
-				return false
-			};
-		}
-	},
-	methods:{
-		edit(item){
-			let params={
-				user_id:item.id,
-				name:item.name,
-				tel:item.phone,
-				room_name:item.roomName,
-				type:item.type,
-				id_card:item.idCard || '',
-				sex:item.sex,
-				nationality:item.nationality || '',
-				faceUrl:item.faceUrl || '',
-				passport_img_uri:item.passportImgUri || '',
-				entry_img_uri:item.entryImgUri || '',
-				operUserType:item.type
-			}
-			if (this.vuex_relationshipType==0) {
-				//业主身份操作
-				params['operUserType']=0
-			}else{
-				//不是业主身份操作
-				params['operUserType']=item.type
+				};
+			},
+			showActiveFace() {
+				//小程序的审核状态为1才显示人脸模块,
+				return item => {
+					if (this.vuex_appletType == 1) {
+						if (this.vuex_relationshipType == 0) {
+							return true
+						}
+						if (this.vuex_member.name == item.name || this.vuex_member.tel == item.tel) {
+							return true
+						} else {
+							return false
+						}
+					}
+					return false
+				};
 			}
-			uni.navigateTo({
-				url:"/pages/myFamily/editFamily/editFamily"+this.$u.queryParams(params)
-			})
 		},
-		activeFace(item){
-			let params={
-				room_id:item.roomId,
-				user_id:item.id,
-				name:item.name,
-				tel:item.tel,
-				room_name:item.roomName,
-				type:item.type,
-				id_card:item.idCard || '',
-				sex:item.sex,
-				nationality:item.nationality || '',
-				faceUrl:item.faceUrl || '',
-				passport_img_uri:item.passportImgUri || '',
-				entry_img_uri:item.entryImgUri || ''
+		methods: {
+			bindRoom(item){
+				this.$dialog.showModal('确定绑定该房间?').then(()=>{
+					this.$http.bindRoom(this.vuex_member.id,[item.id]).then(res=>{
+						if (res.data.success) {
+							this.$u.toast('绑定成功')
+							this.reload()
+						}else{
+							this.$u.toast('操作失败')
+						}
+					})
+				})
+			},
+			isEmpty(data) {
+				if (this.$isEmpty(data) || data == -1) {
+					return true
+				}
+				return false
+			},
+			edit(item) {
+				let params = {
+					user_id: item.id,
+					name: item.name,
+					tel: item.phone,
+					room_name: item.roomName,
+					type: item.type,
+					id_card: item.idCard || '',
+					sex: item.sex,
+					nationality: item.nationality || '',
+					faceUrl: item.faceUrl || '',
+					passport_img_uri: item.passportImgUri || '',
+					entry_img_uri: item.entryImgUri || '',
+					operUserType: item.type
+				}
+				if (this.vuex_relationshipType == 0) {
+					//业主身份操作
+					params['operUserType'] = 0
+				} else {
+					//不是业主身份操作
+					params['operUserType'] = item.type
+				}
+				uni.navigateTo({
+					url: "/pages/myFamily/editFamily/editFamily" + this.$u.queryParams(params)
+				})
+			},
+			activeFace(item) {
+				let params = {
+					room_id: item.roomId,
+					user_id: item.id,
+					name: item.name,
+					tel: item.tel,
+					room_name: item.roomName,
+					type: item.type,
+					id_card: item.idCard || '',
+					sex: item.sex,
+					nationality: item.nationality || '',
+					faceUrl: item.faceUrl || '',
+					passport_img_uri: item.passportImgUri || '',
+					entry_img_uri: item.entryImgUri || ''
+				}
+				uni.navigateTo({
+					url: "/pages/myFamily/activateFace/activateFace" + this.$u.queryParams(params)
+				})
+			},
+			deleteUserById(id) {
+				this.$emit('deleteUserById', id)
+			},
+			onTap(url) {
+				uni.navigateTo({
+					url: url
+				})
 			}
-			uni.navigateTo({
-				url:"/pages/myFamily/activateFace/activateFace"+this.$u.queryParams(params)
-			})
-		},
-		deleteUserById(id) {
-			this.$emit('deleteUserById',id)
-		},
-		onTap(url) {
-			uni.navigateTo({
-				url: url
-			})
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss" scoped>
-.data {
-	background-color: #FFFFFF;
-	width: 720rpx;
-	margin:10rpx auto;
-	border-radius: 6rpx;
-	box-sizing: border-box;
-	padding: 20rpx;
-	font-size: 28rpx;
-	border-bottom: 1rpx solid #d1d1d1;
-	.top {
-		display: flex;
-		justify-content: space-between;
-		border-bottom: 1rpx dashed #DEDEDE;
-		padding-bottom: 20rpx;
-		.left {
+	.data {
+		background-color: #FFFFFF;
+		width: 720rpx;
+		margin: 10rpx auto;
+		border-radius: 6rpx;
+		box-sizing: border-box;
+		padding: 20rpx;
+		font-size: 28rpx;
+		border-bottom: 1rpx solid #d1d1d1;
+
+		.top {
 			display: flex;
-			align-items: center;
-			.title {
-				margin: 0 10rpx;
-				font-size: 32rpx;
+			justify-content: space-between;
+			border-bottom: 1rpx dashed #DEDEDE;
+			padding-bottom: 20rpx;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.title {
+					margin: 0 10rpx;
+					font-size: 32rpx;
+				}
 			}
 		}
-	}
-	.item {
-		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
-		margin: 40rpx 0 20rpx 0;
-		.left {
+
+		.item {
 			display: flex;
-			image {
-				width: 130rpx;
-				height: 130rpx;
-				border-radius: 50%;
-			}
-			.content {
-				padding-left: 30rpx;
-				view{
-					padding-bottom: 16rpx;
+			flex-direction: row;
+			justify-content: space-between;
+			margin: 40rpx 0 20rpx 0;
+
+			.left {
+				display: flex;
+
+				image {
+					width: 130rpx;
+					height: 130rpx;
+					border-radius: 50%;
+				}
+
+				.content {
+					padding-left: 30rpx;
+
+					view {
+						padding-bottom: 16rpx;
+					}
 				}
 			}
 		}
+
+		.bottom {
+			display: flex;
+			margin-top: 20rpx;
+			justify-content: flex-end;
+			align-items: center;
+		}
 	}
-	.bottom {
-		display: flex;
-		margin-top: 20rpx;
-		justify-content: flex-end;
-		align-items: center;
-	}
-}
 </style>