From 0a33c8460d60cf315542dfe60bffd14a08cf9495 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Fri, 01 Dec 2023 18:16:37 +0800
Subject: [PATCH] 首页逻辑修改,我的小区,圈子点赞评论功能

---
 pages/user/center.vue              |  107 ++++---
 api/house/house.js                 |    9 
 pages/circle/index.vue             |  334 +++++++++++++++++++----
 pages/home/index.vue               |  126 +++++---
 api/circle/circle.js               |   29 ++
 pages.json                         |   23 +
 api/system/index.js                |   14 
 subPackage/user/district/index.vue |  104 +++++++
 common/setting.js                  |    4 
 subPackage/article/detail.vue      |   89 +++---
 10 files changed, 628 insertions(+), 211 deletions(-)

diff --git a/api/circle/circle.js b/api/circle/circle.js
index 4fb07ef..53ed148 100644
--- a/api/circle/circle.js
+++ b/api/circle/circle.js
@@ -29,4 +29,33 @@
 			...params
 		}
 	})
+}
+
+//圈子点赞
+export const handleLike = (params) => {
+	return http.request({
+		url: '/blade-circleLike/circleLike/submit',
+		method: 'POST',
+		data: params
+	})
+}
+
+//圈子评论
+export const handleAddComment = (params) => {
+	return http.request({
+		url: '/blade-circleComment/circleComment/save',
+		method: 'POST',
+		data: params
+	})
+}
+
+//评论列表
+export const getComment = (params) => {
+	return http.request({
+		url: '/blade-circleComment/circleComment/page',
+		method: 'GET',
+		params: {
+			...params
+		}
+	})
 }
\ No newline at end of file
diff --git a/api/house/house.js b/api/house/house.js
index 7ad83b0..9e237d3 100644
--- a/api/house/house.js
+++ b/api/house/house.js
@@ -17,3 +17,12 @@
 		data: data
 	})
 }
+
+//获取小区详情
+export const getDistrictDetail=(param)=>{
+	return http.request({
+		url: 'blade-district/district/getDetail',
+		method: 'GET',
+		params: param
+	})
+}
\ No newline at end of file
diff --git a/api/system/index.js b/api/system/index.js
index 054ad79..c5d6e96 100644
--- a/api/system/index.js
+++ b/api/system/index.js
@@ -9,4 +9,16 @@
 			...params
 		}
 	})
-}
\ No newline at end of file
+}
+
+
+//获取快捷拨号
+export const getContact = (params) => {
+	return http.request({
+		url: '/blade-household/household/getHouseholdOtherInfo',
+		method: 'GET',
+		params: {
+			...params
+		}
+	})
+}
diff --git a/common/setting.js b/common/setting.js
index aa2c724..5c6d126 100644
--- a/common/setting.js
+++ b/common/setting.js
@@ -14,8 +14,8 @@
 	// devUrl:'http://192.168.1.50:9528',
 	// devUrl: 'http://192.168.0.102:9528',
 	// devUrl:'https://srgdjczzxtpt.com:2080/api',
-	devUrl: 'http://192.168.0.102:9528',
-	// devUrl: 'https://srgdjczzxtpt.com:2080/api',
+	// devUrl: 'http://192.168.0.100:9528',
+	devUrl: 'https://srgdjczzxtpt.com:2080/api',
 	minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/",
 	// minioBaseUrl:"http://192.168.0.103:9528/",
 	// minioBaseUrl: 'https://srgdjczzxtpt.com:2080/',
diff --git a/pages.json b/pages.json
index c2c2878..9d415ce 100644
--- a/pages.json
+++ b/pages.json
@@ -31,7 +31,7 @@
 		{
 			"path": "pages/circle/index",
 			"style": {
-				"enablePullDownRefresh": false,
+				"enablePullDownRefresh": true,
 				"navigationStyle": "custom"
 			}
 		},
@@ -92,6 +92,15 @@
 					"path": "family/edit",
 					"style": {
 						"navigationBarTitleText": "编辑",
+						"enablePullDownRefresh": false,
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black"
+					}
+				},
+				{
+					"path": "district/index",
+					"style": {
+						"navigationBarTitleText": "我的小区",
 						"enablePullDownRefresh": false,
 						"navigationBarBackgroundColor": "#fff",
 						"navigationBarTextStyle": "black"
@@ -616,12 +625,12 @@
 				"iconPath": "static/img/tabbar-01.png",
 				"text": "首页"
 			},
-			// {
-			// 	"pagePath": "pages/circle/index",
-			// 	"iconPath": "static/img/tabbar-02.png",	
-			// 	"selectedIconPath": "static/img/tabbar-02-selected.png",
-			// 	"text": "圈子"
-			// },
+			{
+				"pagePath": "pages/circle/index",
+				"iconPath": "static/img/tabbar-02.png",	
+				"selectedIconPath": "static/img/tabbar-02-selected.png",
+				"text": "圈子"
+			},
 			{
 				"pagePath": "pages/user/center",
 				"iconPath": "static/img/tabbar-03.png",
diff --git a/pages/circle/index.vue b/pages/circle/index.vue
index 9fbdde5..fc4e1c4 100644
--- a/pages/circle/index.vue
+++ b/pages/circle/index.vue
@@ -1,109 +1,238 @@
 <template>
 	<view class="">
 		<view class="">
-			<u-navbar @rightClick="rightClick" :autoBack="false">
-				<view class="" slot="left">
-					<u-search placeholder="搜索" v-model="keyword" :showAction="false"></u-search>
+			<u-navbar :autoBack="false">
+				<view class="" slot="left" style="width:500rpx">
+					<u-search placeholder="搜索" v-model="keyword" :clearabled="true" animation="true" :showAction="true"
+						@clear="clearSearch" @search="searchList" @custom="searchList"></u-search>
 				</view>
 			</u-navbar>
 		</view>
 		<view class="content">
-			<view class="topic-item"   v-for="(item,index) in list"   @click="navToDetail(item.id)">
+			<view class="topic-item" v-for="(item,index) in list">
 				<view class="flex">
-					<u-avatar size="44"  :src="item.avatar"></u-avatar>
-					<view class="ml-10 flex f-d-c">
+					<u-avatar size="44" :src="item.avatar"></u-avatar>
+					<view class="ml-20 flex f-d-c">
 						<text class="f-26 mb-10">{{item.name}}</text>
-						<text class="f-22 c-66">{{item.createTime}}</text>
+						<text class="f-24 c-66">{{item.createTime}}</text>
 					</view>
 				</view>
 				<view class="topic-content f-28">
 					{{item.circleText}}
 				</view>
-				<u-album v-if="item.circleImages"  :urls="setImgUrl(item.circleImages)" ></u-album>
-				<view class="topic-action flex j-c-f-e" >
-					<view class="flex a-i-c">
-						<u-icon name="heart-fill" color="#C4C8CB" size="24"></u-icon>
-						<text class="f-22 c-66 ml-10">10</text>
+				<u-album v-if="item.circleImages" :urls="setImgUrl(item.circleImages)" singleSize="100"
+					multipleSize="100"></u-album>
+				<view class="topic-action flex j-c-f-e">
+					<view class="flex a-i-c" @click="handleThumpsUp(item.id,item.likeFlag,index)">
+						<u-icon v-if="item.likeFlag == 0" name="heart-fill" color="#C4C8CB" size="24"></u-icon>
+						<u-icon v-if="item.likeFlag == 1" name="heart-fill" color="#CC0000" size="24"></u-icon>
+						<text class="f-22 c-66 ml-10">{{item.likeCount}}</text>
 					</view>
-					<view class="flex ml-30 a-i-c">
+					<view class="flex ml-30 a-i-c" @click="showPopup(item)">
 						<u-icon name="chat-fill" color="#C4C8CB" size="24"></u-icon>
-						<text class="f-22 c-66 ml-10">10</text>
+						<text class="f-22 c-66 ml-10">{{item.commentCount}}</text>
 					</view>
 				</view>
 			</view>
 		</view>
-		
-		<view class="float flex j-c-c a-i-c"   @click="navToPublish">
+
+		<u-popup :show="isShowPop" :round="10" mode="bottom" @close="isShowPop = false" :closeable="true"
+			:safeAreaInsetBottom="true">
+			<view class="popup-content">
+				<view class="popup-top f-28" v-if="current.commentCount > 0">
+					{{current.commentCount}}条评论
+				</view>
+				<view class="popup-list">
+					<view class="popup-empty f-28 flex j-c-c a-i-c" v-if="!commentList.length">
+						暂无评论~
+					</view>
+					<scroll-view scroll-y="true" class="popup-scroll" v-if="commentList.length">
+						<view class="comment-item flex" v-for="(i,k) in commentList" :key="k">
+							<u-avatar size="40" :src="i.avatar"></u-avatar>
+							<view class="ml-20 flex f-d-c">
+								<text class="f-26 c-99">{{i.name}}</text>
+								<view class="comment-content f-28">
+									{{i.content}}
+								</view>
+								<text class="f-24 c-99">{{i.createTime}}</text>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="popup-bottom flex j-c-s-b a-i-c">
+					<view class="popup-input">
+						<input class="input-box" type="text" v-model="commentContent" placeholder="说点什么..."
+							placeholder-class="f-26 c-99" />
+					</view>
+					<button v-if="commentContent" class="popup-btn bgc-main c-ff f-26"
+						@click="handleSubmitComment">发送</button>
+				</view>
+			</view>
+		</u-popup>
+
+
+		<view class="float flex j-c-c a-i-c" @click="navToPublish">
 			<view class="float-box bgc-main flex j-c-c f-d-c a-i-c">
-				<u-icon name="plus"  color="#fff"  size="24"></u-icon>
+				<u-icon name="plus" color="#fff" size="24"></u-icon>
 				<text class="f-26 c-ff">发布</text>
 			</view>
 		</view>
-		
+
 	</view>
 
 </template>
 
 <script>
-	import { getList } from "@/api/circle/circle.js"
-	import { minioBaseUrl } from "@/common/setting.js"
- 	export default {
+	import {
+		getList,
+		handleLike,
+		handleAddComment,
+		getComment
+	} from "@/api/circle/circle.js"
+	import {
+		minioBaseUrl
+	} from "@/common/setting.js"
+	export default {
 		data() {
 			return {
 				keyword: "",
 				urls: [{
 					src: 'https://cdn.uviewui.com/uview/album/1.jpg',
 				}],
-				roleType:0,
-				list:[]
+				roleType: 0,
+				list: [],
+				isShowPop: false,
+				current: "",
+				commentContent: "", //评论内容
+				page: 1,
+				isSearch: false,
+				commentList: []
 			}
 		},
-		
-		onLoad(){
-			let role =  uni.getStorageSync('activeRole')
-			if(role.roleAlias == "inhabitant"){
+
+		onLoad() {
+			let role = uni.getStorageSync('activeRole')
+			if (role.roleAlias == "inhabitant") {
 				this.roleType = 0
-			}else {
+			} else {
 				this.roleType = 1;
 			}
-			
 			this.getCircleList()
-          uni.$on("refreshList",()=>{
-			  this.getCircleList()
-		  })			
+			uni.$on("refreshList", () => {
+				this.getCircleList()
+			})
 		},
 		
-		methods:{
-			getCircleList(){
-				getList({
-					current:1,
-					size:20,
-					circleType:this.roleType
-				}).then(res=>{
-					if(res.code == 200){
+		onPullDownRefresh() {
+			this.getCircleList();
+			setTimeout(() => {
+				uni.stopPullDownRefresh();
+			}, 300)
+		},
+		
+		methods: {
+			searchList() {
+				this.isSearch = true;
+				this.page = 1;
+				this.list = [];
+				this.getCircleList()
+			},
+
+			clearSearch() {
+				if (!this.isSearch) return;
+				this.keyword = "";
+				this.page = 1;
+				this.list = [];
+				this.getCircleList();
+				this.isSearch = false;
+			},
+
+			getCircleList() {
+				let params = {
+					current: this.page,
+					size: 20,
+					circleType: this.roleType,
+				}
+				if (this.keyword) {
+					params.circleText = this.keyword;
+				}
+				getList(params).then(res => {
+					if (res.code == 200) {
 						this.list = res.data.records
 					}
 				})
 			},
-			
-			setImgUrl(str){
-				 let urls = str.split(",");
-				 let arr = [];
-				 for(let i of urls){
-					 arr.push(`${minioBaseUrl}${i}`)
-				 }
-				 return arr;
+
+			setImgUrl(str) {
+				let urls = str.split(",");
+				let arr = [];
+				for (let i of urls) {
+					arr.push(`${minioBaseUrl}${i}`)
+				}
+				return arr;
 			},
-			
-			navToDetail(id){
-				uni.navigateTo({
-					url:`/subPackage/circle/detail?id=${id}`
+
+			getCommentList() {
+				getComment({
+					circleId: this.current.id
+				}).then(res => {
+					if (res.code == 200) {
+						this.commentList = res.data.records;
+					}
 				})
 			},
-			
-			navToPublish(){
+
+
+			//点赞
+			handleThumpsUp(id, status, index) {
+				handleLike({
+					circleId: id,
+					deleteFlag: status
+				}).then(res => {
+					if (res.code == 200) {
+						if (status == 0) {
+							this.list[index].likeFlag = 1;
+							this.list[index].likeCount++
+						} else {
+							this.list[index].likeFlag = 0;
+							this.list[index].likeCount--
+						}
+					}
+				})
+			},
+
+			showPopup(item) {
+				this.current = item;
+				this.isShowPop = true;
+				this.getCommentList();
+			},
+
+			//评论
+			handleSubmitComment() {
+				handleAddComment({
+					circleId: this.current.id,
+					content: this.commentContent
+				}).then(res => {
+					if (res.code == 200) {
+						uni.showToast({
+							title: res.msg
+						})
+						this.commentContent = ""
+						this.getCommentList()
+						this.current.commentCount = this.commentList.length;
+					}
+				})
+			},
+
+			navToDetail(id) {
 				uni.navigateTo({
-					url:"publish"
+					url: `/subPackage/circle/detail?id=${id}`
+				})
+			},
+
+			navToPublish() {
+				uni.navigateTo({
+					url: "publish"
 				})
 			}
 		}
@@ -128,19 +257,96 @@
 			padding: 30rpx 0;
 		}
 	}
-	.float{
-		width:120rpx;
-		height:120rpx;
+
+	.float {
+		width: 120rpx;
+		height: 120rpx;
 		border-radius: 50%;
-		border:1px solid  #3A74F1;
+		border: 1px solid #3A74F1;
 		position: fixed;
 		bottom: 20%;
-		right:30rpx;
-		.float-box{
-			width:110rpx;
-			height:110rpx;
+		right: 30rpx;
+
+		.float-box {
+			width: 110rpx;
+			height: 110rpx;
 			border-radius: 50%;
-			
+
+		}
+	}
+
+	.popup-content {
+		width: 100%;
+
+		.popup-top {
+			text-align: center;
+			padding: 30rpx 0;
+		}
+
+		.popup-list {
+			height: 600rpx;
+			padding-top: 20rpx;
+			box-sizing: border-box;
+		}
+
+		.popup-scroll {
+			width: 100%;
+			height: 100%;
+		}
+		.popup-empty{
+			width:100%;
+			height:200rpx;
+		}
+
+		.popup-bottom {
+			width: 100%;
+			padding: 20rpx;
+			box-sizing: border-box;
+			border-top: 1px solid #F5F5F5;
+		}
+
+		.popup-btn {
+			width: 160rpx;
+			height: 70rpx;
+			line-height: 70rpx;
+			border-radius: 35rpx;
+			border: none;
+			margin: 0;
+			padding: 0;
+			margin: 0 0 0 20rpx;
+		}
+
+		.popup-btn {
+			border: none;
+		}
+
+		.popup-input {
+			// width:70%;
+			flex: 1;
+			height: 70rpx;
+			border-radius: 35rpx;
+			padding: 0 10rpx 0 30rpx;
+			box-sizing: border-box;
+			background-color: #f5f5f5;
+			transition: all .2s;
+		}
+
+		.input-box {
+			width: 100%;
+			height: 70rpx;
+			font-size: 28rpx;
+		}
+
+		.comment-item {
+			padding: 20rpx;
+		}
+
+		.comment-content {
+			padding: 14rpx 0;
+		}
+
+		.tc {
+			text-align: center;
 		}
 	}
 </style>
\ No newline at end of file
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 0af6f1b..ada9a3b 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -20,14 +20,14 @@
 					</u-grid-item>
 				</u-grid>
 
-				<view class="section flex j-c-s-b mt-40">
-					<view class="section-item" v-for="(i,k) in contactList" :key="k" @click="navigatorPage()">
-						<image class="section-item-bg" :src="i.pictureImg" mode="aspectFill"></image>
+				<view class="section flex j-c-s-a a-i-c mt-40"  v-if="isShowContact && curSelectSite.addressType == 1">
+					<view class="section-item" v-for="(i,k) in contactList" :key="k"   v-if="i.name"      >
+						<image class="section-item-bg" :src="i.bgImg" mode="aspectFill"></image>
 						<view class="item-box">
-							<view class="f-28">{{i.name}}</view>
+							<view class="f-28">{{i.title}}</view>
 							<view class="flex j-c-s-b">
-								<text class="f-22">{{i.remark}}</text>
-								<!-- <u-icon :name="i.icon"></u-icon> -->
+								<text class="f-22">{{i.name}}</text>
+								<u-icon :name="i.icon"   @click="callPhone(i.phone)"></u-icon>
 							</view>
 						</view>
 					</view>
@@ -96,8 +96,6 @@
 					</u-grid-item>
 				</u-grid>
 			</view>
-
-
 			<view class="" v-if="roleType == 2 && curSelectSite.addressType == 2">
 				<caption-row title="工作台" />
 				<u-grid :border="false" col="4">
@@ -107,6 +105,14 @@
 							style="background:linear-gradient(133deg, #F9FAFE 0%, rgba(249,250,254,0) 100%)">
 							<u-icon name="/static/icon/menu-05.png" width="60rpx" height="60rpx"></u-icon>
 							<text class="grid-text f-24 fw mt-10">场所维护</text>
+						</view>
+					</u-grid-item>
+					<u-grid-item  @click="navigatorPage('')"
+						:customStyle="{paddingTop:20+'rpx'}">
+						<view class="grid-item flex f-d-c a-i-c"
+							style="background:linear-gradient(133deg, #F9FAFE 0%, rgba(249,250,254,0) 100%)">
+							<u-icon name="/static/icon/menu-02.png" width="60rpx" height="60rpx"></u-icon>
+							<text class="grid-text f-24 fw mt-10">场所任务</text>
 						</view>
 					</u-grid-item>
 				</u-grid>
@@ -134,7 +140,8 @@
 		getPage
 	} from "@/api/article/article";
 	import {
-		getBannerList
+		getBannerList,
+		getContact
 	} from "@/api/system/index"
 	import {
 		minioBaseUrl
@@ -219,28 +226,7 @@
 							background: 'linear-gradient(133deg, #F9FAFE 0%, rgba(249,250,254,0) 100%)'
 						},
 						path: "/subPackage/workbench/views/patrol"
-					},
-					// {
-					// 	icon: "/static/icon/menu-07.png",
-					// 	text: "校园安全",
-					// 	style: {
-					// 		background: 'linear-gradient(133deg, #F9FAFE 0%, rgba(249,250,254,0) 100%)',
-					// 	}
-					// },
-					// {
-					// 	icon: "/static/icon/menu-08.png",
-					// 	text: "旅馆安全",
-					// 	style: {
-					// 		background: 'linear-gradient(131deg, #FCF8FF 0%, rgba(252,248,255,0) 100%)',
-					// 	}
-					// },
-					// {
-					// 	icon: "/static/icon/menu-09.png",
-					// 	text: "取保候审",
-					// 	style: {
-					// 		background: 'linear-gradient(137deg, #FFF4F3 0%, rgba(255,244,243,0) 100%)',
-					// 	}
-					// }
+					}
 				],
 				roleType: 2, // 1网格员/系统管理员 、  2居民
 				roleTypeName: "街道社区网格",
@@ -262,7 +248,30 @@
 				contactList: [], //便民服务联系方式
 				isShowHouse: false, //显示楼盘表
 				isShowNotice: false, //显示通知公告
-				bannerList: []
+				isShowContact:false  ,
+				bannerList: [],
+				navList: [{
+						title: "物业",
+						name: "",
+						icon: "/static/icon/tel-green.png",
+						bgImg: "/static/icon/nav-bg-01.png",
+						phone:""
+					},
+					{
+						title: "综治网格",
+						name: "",
+						icon: "/static/icon/tel-orange.png",
+						bgImg: "/static/icon/nav-bg-02.png",
+						phone:""
+					},
+					{
+						title: "公安网格",
+						name: "",
+						icon: "/static/icon/tel-blue.png",
+						bgImg: "/static/icon/nav-bg-03.png",
+						phone:""
+					},
+				],
 			}
 		},
 
@@ -355,7 +364,36 @@
 					}
 				})
 			},
-
+			
+			getContactList(){
+				getContact({
+					houseCode:this.curHouseCode
+				}).then(res=>{
+					 let data = res.data;
+					 this.contactList = this.navList;
+					 if(data.wg){
+						 this.contactList[1].name = data.wg.name;
+						 this.contactList[1].phone = data.wg.phone
+					 }
+					 if(data.wy){
+						 this.contactList[0].name = data.wy.name;
+						 this.contactList[0].phone = data.wy.phone
+					 }
+					 if(data.ga){
+						 this.contactList[2].name = data.ga.name;
+						 this.contactList[2].phone = data.ga.phone
+					 }
+				})
+			},
+			
+			callPhone(phone){
+				uni.makePhoneCall({
+					phoneNumber:phone
+				})
+			},
+			
+			
+			
 			async getNoticeList() {
 				const param = {
 					size: 10,
@@ -461,21 +499,12 @@
 
 			//获取首页菜单
 			getMenuList() {
-				// this.$store.dispatch("getMenuList").then(res => {
-				// 	this.menuList = res;
-				// 	setTimeout(() => {
-				// 		this.liveList = this.hasMenu('生活')
-				// 		this.contactList = this.hasMenu('快捷拨号');
-				// 		this.jobList = this.hasMenu('工作台')
-				// 		this.getHouseMenu();
-				// 		this.getNoticeMenu();
-				// 	}, 100)
-				// });
 				this.menuList = uni.getStorageSync("menu")
 				this.liveList = this.setLiveMenu(this.hasMenu('生活'));
-				this.contactList = this.hasMenu('快捷拨号');
+				// this.contactList = this.hasMenu('快捷拨号');
 				this.jobList = this.hasMenu('工作台')
 				if (this.menuList.length) {
+					this.getContactMenu();
 					this.getHouseMenu();
 					this.getNoticeMenu();
 				}
@@ -492,6 +521,15 @@
 					}
 				}, 200)
 			},
+			
+			getContactMenu() {
+				let list = [];
+				list = this.menuList.filter(item => item.name == "快捷拨号")
+				this.isShowContact = list.length ? true : false;
+				if(list.length){
+					this.getContactList()
+				}
+			},
 
 			getHouseMenu() {
 				let list = [];
diff --git a/pages/user/center.vue b/pages/user/center.vue
index 08e2d8e..efae136 100644
--- a/pages/user/center.vue
+++ b/pages/user/center.vue
@@ -7,15 +7,16 @@
 				<text class="f-36 mb-20 fw" v-else>{{userInfo.user_name}}</text>
 				<!-- <text class="f-28 c-99">您好业主,欢迎回家</text> -->
 			</view>
-			<view class="flex f-d-c ml-20" v-if="!isLogin"    @click="navToLogin()">
+			<view class="flex f-d-c ml-20" v-if="!isLogin" @click="navToLogin()">
 				<text class="f-36 mb-20 fw">未登录</text>
 				<!-- <text class="f-28 c-99">您好业主,欢迎回家</text> -->
 			</view>
 		</view>
 
-		<view class="main"  v-if="isLogin">
-			<view class="nav bgc-ff flex j-c-s-a a-i-c">
-				<view v-for="(item,index) in navList" :key="index" class="flex f-d-c a-i-c" @click="navigator(item)">
+		<view class="main" v-if="isLogin">
+			<view class="nav bgc-ff flex j-c-s-a a-i-c" v-if="roleType == 1">
+				<view v-for="(item,index) in navList" :key="index" class="flex f-d-c a-i-c"
+					@click="navigator(item.url)">
 					<u-icon :customStyle="{paddingTop:20+'rpx'}" :name="item.icon" width="90rpx"
 						height="90rpx"></u-icon>
 					<text class="grid-text mt-20 f-28">{{item.title}}</text>
@@ -23,20 +24,32 @@
 			</view>
 			<view class="main-cell bgc-ff">
 				<view class="cell-content">
-					<!-- <u-cell-group :border="false">
-						<u-cell @click="navigator(item)" v-for="(item, index) in menuList" :icon="item.icon"
-							:title="item.title" :key="index" :border="true" :iconStyle="{width:'48rpx',height:'48rpx'}"
-							:isLink="true"></u-cell>
-					</u-cell-group> -->
+					<view class="cell-item flex j-c-s-b a-i-c" @click="navigator('/subPackage/user/family/list')"
+						v-if="roleType == 1">
+						<view class="flex a-i-c">
+							<u-icon name="/static/icon/menu-center-01.png" width="60rpx" height="60rpx"></u-icon>
+							<text class="f-30 ml-20">我的家人</text>
+						</view>
+						<u-icon name="arrow-right" color="#999"></u-icon>
+					</view>
 
 					<view class="cell-item flex j-c-s-b a-i-c" v-for="(item,index) in menuList" :key="index"
-						@click="navigator(item)">
+						@click="navigator(item.url)">
 						<view class="flex a-i-c">
 							<u-icon :name="item.icon" width="60rpx" height="60rpx"></u-icon>
 							<text class="f-30 ml-20">{{item.title}}</text>
 						</view>
 						<u-icon name="arrow-right" color="#999"></u-icon>
 					</view>
+
+					<view class="cell-item flex j-c-s-b a-i-c" @click="logOut()">
+						<view class="flex a-i-c">
+							<u-icon name="/static/icon/menu-center-04.png" width="60rpx" height="60rpx"></u-icon>
+							<text class="f-30 ml-20">退出登录</text>
+						</view>
+						<u-icon name="arrow-right" color="#999"></u-icon>
+					</view>
+
 				</view>
 			</view>
 		</view>
@@ -48,11 +61,6 @@
 		data() {
 			return {
 				menuList: [{
-						icon: "/static/icon/menu-center-01.png",
-						title: "我的家人",
-						url: "/subPackage/user/family/list"
-					},
-					{
 						icon: "/static/icon/menu-center-02.png",
 						title: "切换角色",
 						url: "/subPackage/user/role/index"
@@ -61,12 +69,7 @@
 						icon: "/static/icon/menu-center-03.png",
 						title: "修改密码",
 						url: "/subPackage/user/password/index"
-					},
-					{
-						icon: "/static/icon/menu-center-04.png",
-						title: "退出登录",
-						url: ""
-					},
+					}
 				],
 				navList: [{
 						icon: "/static/icon/nav-center-01.png",
@@ -76,15 +79,26 @@
 					{
 						icon: "/static/icon/nav-center-02.png",
 						title: "我的小区",
-						url: ""
+						url: "/subPackage/user/district/index"
 					},
 					{
 						icon: "/static/icon/nav-center-03.png",
 						title: "出租信息",
 						url: "/subPackage/bs/views/zhsb"
 					},
-				]
+				],
+				roleType: 1
 				// userInfo:{}
+			}
+		},
+
+
+		onShow() {
+			let role = uni.getStorageSync('activeRole')
+			if (role.roleAlias == "inhabitant") {
+				this.roleType = 1
+			} else {
+				this.roleType = 2;
 			}
 		},
 
@@ -94,39 +108,36 @@
 				this.$u.func.globalNavigator(url, "switchTab")
 			},
 
-			navigator(item) {
-				if (item.title == '退出登录') {
-					uni.showModal({
-						title: "提示",
-						content: "是否要退出该账号?",
-						success: (res) => {
-							if (res.confirm) {
-								this.logOut()
-							}
-						}
-					})
-				} else if(item.title == '我的小区'){
-					uni.showToast({
-						title:"功能开发中~",
-						icon:"none"
-					})
-				}else {
-					this.$u.func.globalNavigator(item.url)
-				}
+			navigator(url) {
+				this.$u.func.globalNavigator(url)
 			},
-			
-			navToLogin(){
+
+
+
+
+			navToLogin() {
 				uni.redirectTo({
 					url: "/pages/login/login-account"
 				})
 			},
 
 			logOut() {
-				uni.setStorageSync("responIndex", 0)
-				uni.clearStorageSync()
-				uni.reLaunch({
-					url: "/pages/login/login-account"
+
+				uni.showModal({
+					title: "提示",
+					content: "是否要退出该账号?",
+					success: (res) => {
+						if (res.confirm) {
+							uni.setStorageSync("responIndex", 0)
+							uni.clearStorageSync()
+							uni.reLaunch({
+								url: "/pages/login/login-account"
+							})
+						}
+					}
 				})
+
+
 			}
 		}
 	}
diff --git a/subPackage/article/detail.vue b/subPackage/article/detail.vue
index be85180..5380909 100644
--- a/subPackage/article/detail.vue
+++ b/subPackage/article/detail.vue
@@ -321,58 +321,57 @@
 						icon: "none"
 					})
 				}
-			}
-		},
+			},
 
-		selectOption(id, index) {
-			let item = this.voteTopicList[index];
-			item.selected = id;
-			this.$set(this.voteTopicList, index, item);
-		},
+			selectOption(id, index) {
+				let item = this.voteTopicList[index];
+				item.selected = id;
+				this.$set(this.voteTopicList, index, item);
+			},
 
-		getParams() {
-			let list = JSON.parse(JSON.stringify(this.voteTopicList));
-			let arr = [];
-			for (let i of list) {
-				if (i.selected) {
-					delete i.children;
-					i.selected = JSON.stringify(i.selected)
-					arr.push(i)
-				}
-			}
-			return arr;
-		},
-
-		//提交投票
-		submitVote() {
-			if (this.computeEndTime > 0) {
-				let data = this.getParams()
-				communityModel.addVoteOperate(data).then(res => {
-					if (res.code == 200) {
-						uni.showToast({
-							title: "操作成功"
-						})
-						this.$nextTick(() => {
-							this.getApplyDetail();
-							this.getVoteList();
-						})
+			getParams() {
+				let list = JSON.parse(JSON.stringify(this.voteTopicList));
+				let arr = [];
+				for (let i of list) {
+					if (i.selected) {
+						delete i.children;
+						i.selected = JSON.stringify(i.selected)
+						arr.push(i)
 					}
-				})
-			} else {
-				uni.showToast({
-					title: "投票已结束",
-					icon: "none"
+				}
+				return arr;
+			},
+
+			//提交投票
+			submitVote() {
+				if (this.computeEndTime > 0) {
+					let data = this.getParams()
+					communityModel.addVoteOperate(data).then(res => {
+						if (res.code == 200) {
+							uni.showToast({
+								title: "操作成功"
+							})
+							this.$nextTick(() => {
+								this.getApplyDetail();
+								this.getVoteList();
+							})
+						}
+					})
+				} else {
+					uni.showToast({
+						title: "投票已结束",
+						icon: "none"
+					})
+				}
+			},
+
+			navToComment() {
+				uni.navigateTo({
+					url: `comment?id=${this.params.id}`
 				})
 			}
-		},
-
-		navToComment() {
-			uni.navigateTo({
-				url: `comment?id=${this.params.id}`
-			})
 		}
 	}
-	
 </script>
 
 <style lang="scss">
diff --git a/subPackage/user/district/index.vue b/subPackage/user/district/index.vue
new file mode 100644
index 0000000..9e87125
--- /dev/null
+++ b/subPackage/user/district/index.vue
@@ -0,0 +1,104 @@
+<template>
+	<view class="">
+		<view class="bgc-ff">
+			<view class="item-row flex j-c-s-b a-i-c">
+				<text>小区名称</text>
+				<text>{{detail.name}}</text>
+			</view>
+			<view class="item-row flex j-c-s-b a-i-c">
+				<text>居委会名称</text>
+				<text>{{detail.communityName}}</text>
+			</view>
+			<view class="item-row flex j-c-s-b a-i-c">
+				<text>房屋住址</text>
+				<text class="address">{{detail.address}}</text>
+			</view>
+		</view>
+		<view class="box bgc-ff" v-if="detail.remark">
+			<view class="caption f-28">
+				小区简介
+			</view>
+			<view class="f-30">
+				{{detail.remark}}
+			</view>
+		</view>
+		<view class="box bgc-ff" v-if="images.length">
+			<view class="caption f-28">
+				小区照片
+			</view>
+			<u-album :urls="images" singleSize="100" multipleSize="100"></u-album>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	import {
+		getDistrictDetail
+	} from "@/api/house/house.js"
+	import {
+		minioBaseUrl
+	} from "@/common/setting.js"
+	export default {
+		data() {
+			return {
+				detail: {},
+				images: []
+			}
+		},
+
+		onLoad() {
+			this.getDetail()
+		},
+
+		methods: {
+			getDetail() {
+				getDistrictDetail({
+					houseCode: uni.getStorageSync("siteInfo").houseCode
+				}).then(res => {
+					this.detail = res.data;
+					if (res.data.picUrl) {
+						this.images = this.setImageUrl(res.data.picUrl);
+					}
+				})
+			},
+
+			setImageUrl(str) {
+				let urls = str.split(",")
+				let temp = [];
+				for (let i of urls) {
+					temp.push(`${minioBaseUrl}${i}`)
+				}
+				return temp
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #f5f5f5;
+	}
+
+	.item-row {
+		width: 100%;
+		padding: 30rpx;
+		box-sizing: border-box;
+		border-bottom: 1px solid #f5f5f5;
+		font-size: 28rpx;
+	}
+
+	.address {
+		width: 70%;
+		text-align: right;
+	}
+
+	.box {
+		padding: 0 30rpx;
+		margin-top: 20rpx;
+	}
+
+	.caption {
+		padding: 30rpx 0;
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3