From 98a835cc45adbe5ef8ee3cca5ad478f7df673b80 Mon Sep 17 00:00:00 2001
From: Liuyi <candymxq888@outlook.com>
Date: 星期三, 27 十一月 2024 17:20:33 +0800
Subject: [PATCH] 添加设备管理列表

---
 pagesAdmin/adminPlatform/facility.vue |  248 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 243 insertions(+), 5 deletions(-)

diff --git a/pagesAdmin/adminPlatform/facility.vue b/pagesAdmin/adminPlatform/facility.vue
index 0d9ca6c..7418124 100644
--- a/pagesAdmin/adminPlatform/facility.vue
+++ b/pagesAdmin/adminPlatform/facility.vue
@@ -1,13 +1,251 @@
 <script setup>
+	import{ ref,onMounted } from 'vue'
+	import { getParentAreaApi,searchWaterFacilityApi } from '../../api/index.js'
 	
+	//区域搜索相关
+	const DaTreeRef = ref()
+	const regionListTree = ref([])
+	const selectedReigonId = ref([])
+	const selectedReigonName = ref([])
+	async function getRegionList(){
+		await getParentAreaApi().then((res) =>{
+			if(res.code == 200){
+				regionListTree.value = res.data
+				// regionListTree.value[0].children.push({id: "1", areaName: "B2栋5-1"})
+				// regionListTree.value[0].children.push({id: "2", areaName: "B2栋1"})
+				// regionListTree.value[0].children.push({id: "3", areaName: "B2栋2"})
+				// regionListTree.value[0].children.push({id: "4", areaName: "B2栋3"})
+				// regionListTree.value[0].children.push({id: "5", areaName: "B2栋4"})
+				// regionListTree.value[0].children.push({id: "6", areaName: "B2栋5"})
+				// regionListTree.value[0].children.push({id: "7", areaName: "B2栋6"})
+				// regionListTree.value[0].children.push({id: "8", areaName: "B2栋7"})
+				// regionListTree.value[0].children.push({id: "9", areaName: "B2栋8"})
+			}
+		})
+	}
+	//选中区域
+	function handleTreeChange(e,e2){
+		isExpand.value = false
+		// if(DaTreeRef.value.getHalfCheckedKeys()){
+		// 	selectedReigonId.value = DaTreeRef.value.getHalfCheckedKeys().concat(DaTreeRef.value.getCheckedKeys())
+		// }else{
+			selectedReigonId.value = DaTreeRef.value.getCheckedKeys()
+			console.log(123,selectedReigonId.value)
+		// }
+		setRegionName()
+	}
+	//设置选中区域名
+	function setRegionName(){
+		let nodeList 
+		let nameList = []
+		//判断选中是否根节点,根节点直接取选中node值
+		if(DaTreeRef.value.getHalfCheckedNodes()){
+			nodeList = DaTreeRef.value.getHalfCheckedNodes().concat(DaTreeRef.value.getCheckedNodes())
+		}else{
+			nodeList = DaTreeRef.value.getCheckedNodes()
+		}
+		nodeList.forEach((item)=>{
+			nameList.push(item.label)
+		})
+		selectedReigonName.value = nameList.join()
+		console.log('000',selectedReigonName.value,selectedReigonId.value)
+	}
+	//搜索样式
+	const isExpand = ref(false)
+	const iconRotated = ref({
+		transform:'rotate(90deg)'
+	})
+	function setExpand(){
+		isExpand.value = isExpand.value ? false : true
+	}
+	//获取设备列表
+	const facilityList = ref([])
+	async function getList(e){
+		let postParams
+		if(e){
+			postParams = {limit:100,page:1,areaId:selectedReigonId.value[0]}
+		}else{
+			postParams = {limit:100,page:1}
+		}
+		await searchWaterFacilityApi(postParams).then((res) =>{
+			if(res.code == 200){
+				facilityList.value = res.data.list
+				facilityList.value.forEach((item) =>{
+					item.onLineStateView = item.onLineState == 1 ? '在线' : (item.onLineState == 0 ? '离线' : '')
+				})
+			}
+		})
+	}
+	function navTo(){
+		uni.navigateTo({
+			url:'/pagesAdmin/adminPlatform/facilityDetail'
+		})
+	}
+	onMounted(async() =>{
+		await getRegionList()
+		await getList()
+	})
 </script>
 <template>
-	<view>
-		
+	<view class="container">
+		<navbar title = '设备管理'></navbar>
+		<view class="content">
+			<view class="search">
+				<view class="search-text">区域选择:</view>
+				<view class="search-box">
+					<view class="placeholder" @click="setExpand">
+						<view v-if="selectedReigonName.length > 0" class="selected-Name"><text>{{selectedReigonName}}</text></view>
+						<text v-else>分区区域</text>
+						<image class="expand-icon" :style="isExpand ? '':iconRotated" src="../../static/images/maintain/expand.svg"></image>
+					</view>
+					<view v-if="isExpand" class="search-content">
+						<DaTree ref="DaTreeRef"
+							:data="regionListTree"
+							labelField="areaName"
+							valueField="id"
+							defaultExpandAll
+							:showRadioIcon='false'
+							@change="handleTreeChange"
+						</DaTree>
+					</view>
+				</view>
+				<view @click="getList(1)" class="search-btn">搜索</view>
+			</view>
+			<view class="main">
+				<view class="item-box" v-for="(item,index) in facilityList" :key="index">
+					<view class="item">
+						<view class="item-left">
+							<text class="item-name">{{item.facilityName}}</text>
+							<view class="item-state">
+								设备状态
+								<text class="item-state-value">{{item.onLineStateView}}</text>
+							</view>
+						</view>
+						<view class="item-right" @click="navTo">
+							<text>查看详情</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
 	</view>
 </template>
 
-
-<style>
-	       
+<style lang="scss" scoped>
+	.container{
+		width:100%;
+		box-sizing: border-box;
+		.content{
+			height:calc(100vh - 176rpx);
+			background: linear-gradient(to bottom,#8BC1FC 0%,#D2F2FE 30%,#D2F2FE 100%);
+			padding:30rpx 40rpx 100rpx;
+			box-sizing: border-box;
+			.search{
+				width:100%;
+				height:130rpx;
+				background:rgba(255,255,255,0.5);
+				z-index:2;
+				padding:30rpx 40rpx;
+				box-sizing: border-box;
+				border-radius:5rpx;
+				.search-text{
+					float: left;
+					line-height:70rpx;
+					color:rgba(39, 39, 39, 0.8);
+				}
+				.search-btn{
+					float: right;
+					line-height:70rpx;
+					width:100rpx;
+					height:70rpx;
+					background: #a2c5fc;
+					text-align: center;
+					border-radius: 15rpx;
+				}
+				.search-box{
+					position:relative;
+					width:100%;
+					float: left;
+					width:320rpx;
+					height:70rpx;
+					background: #fff;
+					border-radius:10rpx;
+					.placeholder{
+						height:100%;
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						color: #85898c;
+						padding:0 10rpx 0 20rpx ;
+						box-sizing: border-box;
+						.selected-Name{
+							height:100%;
+							color: #6f7375;
+							font-size:24rpx;
+							line-height:70rpx;
+							overflow: hidden;
+						}
+						.expand-icon{
+							width:44rpx;
+							height:44rpx;
+						}
+					}
+					.search-content{
+						position: absolute;
+						margin:0 auto;
+						z-index:2;
+						float: left;
+						width:100%;
+						background: rgba(255,255,255,0.7);
+						top:80rpx;
+					}
+				}
+			}
+			.main{
+				margin-top:4%;
+				width:100%;
+				height:86%;
+				background:rgba(255, 255, 255,1);
+				padding:30rpx;
+				box-sizing: border-box;
+				border-radius:5rpx;
+				.item-box{
+					width:100%;
+					height:120rpx;
+					background: #f2f3f3;
+					margin-top:20rpx;
+					padding:20rpx;
+					box-sizing: border-box;
+					.item{
+						width:100%;
+						height:100%;
+						display:flex;
+						justify-content: space-between;
+						align-items: center;
+						.item-left{
+							height:100%;
+							display: flex;
+							flex-direction: column;
+							justify-content: space-evenly;
+							.item-name{
+								color: #3d84c7;
+							}
+							.item-state{
+								color: #9a9fa2;
+								font-size:28rpx;
+								.item-state-value{
+									color: #eebe4c;
+								}
+							}
+						}
+						.item-right{
+							color: #5281c7;
+							font-size: 30rpx;
+						}
+					}
+					
+				}
+			}
+		}
+	}       
 </style>

--
Gitblit v1.9.3