From 8265412eef286cc6027c8ec6085d6b059b7ab457 Mon Sep 17 00:00:00 2001
From: Liuyi <candymxq888@outlook.com>
Date: 星期五, 29 十一月 2024 17:30:18 +0800
Subject: [PATCH] 添加参数修改,设备详情

---
 pagesAdmin/adminPlatform/inspect.vue                     |   25 +
 pagesAdmin/adminPlatform/params.vue                      |  510 ++++++++++++++++++++++++++++++
 unpackage/dist/dev/mp-weixin/api/index.js                |   16 
 pages.json                                               |   14 
 unpackage/dist/dev/mp-weixin/project.private.config.json |    2 
 pagesAdmin/adminPlatform/facility.vue                    |    7 
 unpackage/dist/dev/mp-weixin/app.js                      |    2 
 unpackage/dist/dev/mp-weixin/app.json                    |    4 
 pagesAdmin/adminPlatform/facilityDetail.vue              |  277 ++++++++++++++++
 unpackage/dist/dev/mp-weixin/common/vendor.js            |   12 
 pages/login/index.vue                                    |    2 
 static/images/maintain/switch-off.png                    |    0 
 api/index.js                                             |   16 
 pagesAdmin/adminPlatform/home.vue                        |    2 
 static/images/maintain/switch-on.png                     |    0 
 unpackage/dist/dev/mp-weixin/common/assets.js            |   94 ++--
 16 files changed, 927 insertions(+), 56 deletions(-)

diff --git a/api/index.js b/api/index.js
index 98c0fce..c5329f2 100644
--- a/api/index.js
+++ b/api/index.js
@@ -168,6 +168,22 @@
 export function searchWaterFacilityApi(data){
 	return request(`/waterFacility/search`,data,'POST')
 }
+//根据id获取设备详情
+export function getFacilityApi(id){
+	return request(`/waterFacility/get?id=${id}`,{},'GET')
+}
+//设备开阀
+export function openFacilityApi(data){
+	return request('/api/facility/open',data,'POST')
+}
+//设备关阀
+export function closeFacilityApi(data){
+	return request('/api/facility/close',data,'POST')
+}
+//获取设备参数
+export function getParameterApi(sn){
+	return request(`/waterFacility/getParameter?sn=${sn}`,{},'GET')
+}
 
 
 
diff --git a/pages.json b/pages.json
index 5ecbbec..26cae9c 100644
--- a/pages.json
+++ b/pages.json
@@ -209,6 +209,20 @@
 					{
 						"navigationBarTitleText" : ""
 					}
+				},
+				{
+					"path" : "adminPlatform/inspect",
+					"style" :
+					{
+						"navigationBarTitleText" : ""
+					}
+				},
+				{
+					"path" : "adminPlatform/params",
+					"style" :
+					{
+						"navigationBarTitleText" : ""
+					}
 				}
 			]
 		},
diff --git a/pages/login/index.vue b/pages/login/index.vue
index 80a0138..3156d15 100644
--- a/pages/login/index.vue
+++ b/pages/login/index.vue
@@ -56,7 +56,7 @@
 		}
 	}
 	//管理员登录
-	const form = ref({userName:'',password:''})
+	const form = ref({userName:'admin',password:'lunhan123456'})
 	const pwdType = ref('password')
 	function changePwdType(str){
 		pwdType.value = str == 'pwd' ? 'text' : ( str == 'text' ? 'password' : 'text')
diff --git a/pagesAdmin/adminPlatform/facility.vue b/pagesAdmin/adminPlatform/facility.vue
index 7418124..f018fa7 100644
--- a/pagesAdmin/adminPlatform/facility.vue
+++ b/pagesAdmin/adminPlatform/facility.vue
@@ -76,9 +76,10 @@
 			}
 		})
 	}
-	function navTo(){
+	function navTo(facilityId){
+		console.log(13,facilityId)
 		uni.navigateTo({
-			url:'/pagesAdmin/adminPlatform/facilityDetail'
+			url:`/pagesAdmin/adminPlatform/facilityDetail?id=${facilityId}`
 		})
 	}
 	onMounted(async() =>{
@@ -121,7 +122,7 @@
 								<text class="item-state-value">{{item.onLineStateView}}</text>
 							</view>
 						</view>
-						<view class="item-right" @click="navTo">
+						<view class="item-right" @click="navTo(item.id)">
 							<text>查看详情</text>
 						</view>
 					</view>
diff --git a/pagesAdmin/adminPlatform/facilityDetail.vue b/pagesAdmin/adminPlatform/facilityDetail.vue
index a9348a8..ebab19c 100644
--- a/pagesAdmin/adminPlatform/facilityDetail.vue
+++ b/pagesAdmin/adminPlatform/facilityDetail.vue
@@ -1,13 +1,282 @@
 <script setup>
+	import{ onLoad } from '@dcloudio/uni-app'
+	import{ ref,onMounted } from 'vue'
+	import{ getFacilityApi,closeFacilityApi,openFacilityApi } from '../../api/index.js'
+	const facilityList = ref([])
+	const facilityControl = ref({
+		saleOpen:false,
+		productionOpen:false,
+		temperatureOpen:false,
+		totalOpen:false,
+	})
+	let facilityCode
+	let facilityOnLine
+	async function getFalicityDetail(){
+		await getFacilityApi(facilityId).then((res) =>{
+			if(res.code == 200){
+				facilityCode = res.data.facilityCode
+				facilityOnLine = res.data.onLineState
+				facilityList.value = []
+				facilityList.value.push({name:'设备编号:',value:res.data.facilityCode})
+				facilityList.value.push({name:'设备名称:',value:res.data.facilityName})
+				facilityList.value.push({name:'在线状态:',value:res.data.onLineState == 1 ? '在线' : (res.data.onLineState == 0 ? '离线' : '')})
+				facilityList.value.push({name:'设备供应商:',value:res.data.supplier})
+				facilityList.value.push({name:'安装日期:',value:res.data.installDate})
+				
+				facilityControl.value.saleOpen = res.data.saleOpen == 1 ? true : false
+				facilityControl.value.productionOpen = res.data.productionOpen == 1 ? true : false
+				facilityControl.value.temperatureOpen = res.data.temperatureOpen == 1 ? true : false
+			}
+		})
+	}
+	function navTo(){
+		uni.navigateTo({
+			url:`/pagesAdmin/adminPlatform/params?id=${facilityId}`
+		})
+	}
+	//设备开关操作相关
+	//操作类型(售水开关:01开 02关,制水开关:03开 04关,温控开关:05开 06关,设备开关机:07开 08关-设备开关机代表设备完全开关机,相当于售水、制水、温控全开或全关)
+	async function handelControl(status,name){
+		if(facilityOnLine == 0){
+			uni.showToast({
+				title:'离线,无法操作',
+				icon:'none'
+			})
+			return
+		}
+		let textInfo
+		if(name == 'totalOnOff'){
+			textInfo = status === false ?  '确认关闭设备全部状态?':'确认开启设备全部状态?'
+		}else{
+			textInfo = status === true ?  '确认关闭状态?':'确认开启状态?'
+		}
+		
+		uni.showModal({
+			title:'提示',
+			content:textInfo,
+			success:(res) =>{
+				if(res.confirm){
+					
+					async function handelOpen(setStatus){
+						await openFacilityApi({data:setStatus,sn:facilityCode}).then((res) =>{
+							if(res.code == 200){
+								setTimeout(async() => {
+									await getFalicityDetail()
+								}, 4000);
+								uni.showToast({
+									title:'成功!三秒刷新'
+								})
+							}else{
+								uni.showToast({
+									title:'操作失败!',
+									icon:'none'
+									
+								})
+							}
+						}) 
+					}
+					
+					async function handelClose(setStatus){
+						await closeFacilityApi({data:setStatus,sn:facilityCode}).then((res) =>{
+							if(res.code == 200){
+								setTimeout(async() => {
+									await getFalicityDetail()
+								}, 4000);
+								uni.showToast({
+									title:'成功!三秒刷新'
+								})
+							}else{
+								uni.showToast({
+									title:'操作失败!',
+									icon:'none'
+								})
+							}
+						}) 
+					}
+					
+					switch(name){
+						case 'saleOpen':
+						status == true ?  handelClose('02') :  handelOpen('01');
+						break;
+						case 'productionOpen':
+							status == true ?  handelClose('04') :  handelOpen('03');
+						break;
+						case 'temperatureOpen':
+							status == true ?  handelClose('06') :  handelOpen('05');
+						break;
+						case 'totalOnOff':
+							status == true ?  handelOpen('07') :  handelClose('08');
+						break;
+					}
+				}
+			}
+		})
+	}
+	let facilityId
+	onLoad(async(option) =>{
+		console.log(14,option)
+		facilityId = option.id
+		await getFalicityDetail(option.id)
+	})
 	
 </script>
 <template>
-	<view>
-		<navbar title='设备详情'></navbar>
-		设备详情
+	<view class="container">
+		<navbar title = '设备详情'></navbar>
+		<view class="content">
+			<view class="detail-box">
+				<view class="title">设备详情</view>
+				<view class="detail">
+					<view class="info">
+						<view class="item" v-for="(item,index) in facilityList" :key="index">
+							<view class="item-text">{{item.name}}&nbsp;</view>
+							<view class="item-value">{{item.value}}</view>
+						</view>
+						<view @click="navTo" class="info-params"><view class="params">设备参数设置</view></view>
+					</view>
+					<view class="control">
+						<view class="switch-item">
+							<text class="switch-text">售水开关</text>
+							<view class="switch-icon" @click="handelControl(facilityControl.saleOpen,'saleOpen')">
+								<image class="icon-on-off" v-if="facilityControl.saleOpen" src="../../static/images/maintain/switch-on.png"></image>
+								<image class="icon-on-off" v-else src="../../static/images/maintain/switch-off.png"></image>
+							</view>
+						</view>
+						<view class="switch-item">
+							<text class="switch-text">制水开关</text>
+							<view class="switch-icon" @click="handelControl(facilityControl.productionOpen,'productionOpen')">
+								<image class="icon-on-off" v-if="facilityControl.productionOpen" src="../../static/images/maintain/switch-on.png"></image>
+								<image class="icon-on-off" v-else src="../../static/images/maintain/switch-off.png"></image>
+							</view>
+						</view>
+						<view class="switch-item">
+							<text class="switch-text">温控开关</text>
+							<view class="switch-icon" @click="handelControl(facilityControl.temperatureOpen,'temperatureOpen')">
+								<image class="icon-on-off" v-if="facilityControl.temperatureOpen" src="../../static/images/maintain/switch-on.png"></image>
+								<image class="icon-on-off" v-else src="../../static/images/maintain/switch-off.png"></image>
+							</view>
+						</view>
+						<view class="switch-item">
+							<text class="switch-text">总开开关</text>
+							<view class="total-control">
+								<view class="control-btn" @click="handelControl(true,'totalOnOff')">总开</view>
+								<view class="control-btn" @click="handelControl(false,'totalOnOff')">总关</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
 	</view>
 </template>
 
 <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:60rpx 40rpx 100rpx;
+		box-sizing: border-box;
+		.detail-box{
+			width:100%;
+			height:1100rpx;
+			background:rgba(255,255,255,0.7);
+			border-radius:5rpx;
+			padding:40rpx;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			.title{
+				color: #575858;
+			}
+			.detail{
+				width:100%;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				.info{
+					width:100%;
+					display: flex;
+					flex-direction: column;
+					.info-params{
+						width:100%;
+						display: flex;
+						.params{
+							margin-top:30rpx;
+							color: #4571c3;
+							width:220rpx;
+							height:60rpx;
+							border-radius:15rpx;
+							// border:solid 1rpx #678cc3;
+							box-shadow:0 0 6rpx 1rpx  rgba(143, 182, 255, 0.3) inset;
+							text-align: center;
+							line-height:60rpx;
+							font-size:30rpx;
+							background:rgba(126, 171, 255, 0.2);
+						}
+					}
+					.item{
+						width:100%;
+						display: flex;
+						flex-wrap: nowrap;
+						margin-top:30rpx;
+						border-bottom:solid 1rpx #dbe7e8;
+						padding-bottom:10rpx;
+						.item-text{
+							color: #575858;
+						}
+						.item-value{
+							color: #4571c3;
+						}
+					}
+				}
+				.control{
+					height:400rpx;
+					width:100%;
+					display: flex;
+					flex-direction:column;
+					justify-content:space-evenly;
+					align-items: flex-start;
+					margin-top:20rpx;
+					.switch-item{
+						width:100%;
+						border-bottom:solid 1rpx #dbe7e8;
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						.switch-text{
+							color: #697fb3;
+							font-weight:600;
+						}
+						.switch-icon{
+							.icon-on-off{
+								width:80rpx;
+								height:80rpx;
+							}
+						}
+						.total-control{
+							height: 80rpx;
+							display: flex;
+							align-items: center;
+							.control-btn{
+								width:110rpx;
+								height:50rpx;
+								background: #409eff;
+								border-radius:10rpx;
+								text-align: center;
+								line-height: 50rpx;
+								margin-left:20rpx;
+								color:#fff;
+								font-size:30rpx;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
 </style>
diff --git a/pagesAdmin/adminPlatform/home.vue b/pagesAdmin/adminPlatform/home.vue
index c2ab056..b831192 100644
--- a/pagesAdmin/adminPlatform/home.vue
+++ b/pagesAdmin/adminPlatform/home.vue
@@ -396,7 +396,7 @@
 					</view>
 					<text>设备管理</text>
 				</view>
-				<view class="item" style="border-bottom: 1rpx solid #c8c8c8;">
+				<view @click="navTo('/pagesAdmin/adminPlatform/inspect')" class="item" style="border-bottom: 1rpx solid #c8c8c8;">
 					<view class="item-img-box icon2" >
 						<image class="item-img" src="../../static/images/maintain/fun-icon2.svg"></image>
 					</view>
diff --git a/pagesAdmin/adminPlatform/inspect.vue b/pagesAdmin/adminPlatform/inspect.vue
new file mode 100644
index 0000000..6392dc2
--- /dev/null
+++ b/pagesAdmin/adminPlatform/inspect.vue
@@ -0,0 +1,25 @@
+<template>
+	<view class="container">
+		<navbar title = '巡检管理'></navbar>
+		<view class="content"></view>
+		巡检管理
+	</view>
+</template>
+
+<script setup>
+	
+</script>
+
+<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;
+		}
+	}
+	       
+</style>
diff --git a/pagesAdmin/adminPlatform/params.vue b/pagesAdmin/adminPlatform/params.vue
new file mode 100644
index 0000000..378e561
--- /dev/null
+++ b/pagesAdmin/adminPlatform/params.vue
@@ -0,0 +1,510 @@
+<script setup>
+	import { onLoad } from '@dcloudio/uni-app'
+	import { getFacilityApi,getParameterApi } from '../../api/index.js'
+	import { ref,onMounted } from 'vue';
+	
+	let facilityId
+	let onLineState
+	let facilityCode
+	onLoad(async(option) =>{
+		console.log(14,option)
+		facilityId = option.id
+		await getFacilityById()
+	})
+	onMounted(async() =>{
+		await handleSetting()
+	})
+	async function getFacilityById(){
+		await getFacilityApi(facilityId).then((res) =>{
+			onLineState = res.data.onLineState
+			facilityCode = res.data.facilityCode
+		})
+	}
+	//表单相关
+	const formRef = ref()
+	const formData = ref({})
+	function initData(){
+	    formData.value = {
+	        sn: '',
+	        swipingCardAmount: 100,
+	        pulse: 450,
+	        swipingCardTime: 45,
+	
+	        insertCoinsCount: 5,
+	        insertCoinsTime: 22,
+	        swipingCardCount: 7500,
+	        recycleAmountTime: 60,
+	        lightFetchWaterTime: 60,
+	
+	        lockFetchWaterTime: 60,
+	        produceWaterTime: 1,
+	        wasteWaterTime: 10,
+	        wasteWaterIntervalTime: 10,
+	        ozoneTime: 10,
+	
+	        ozoneIntervalTime: 60,
+	        temperatureLower: 10,
+	        temperatureUpper: 15,
+	        openAdvertTime: '19:10',
+	        closeAdvertTime: '23:30',
+	
+	        recycleWashing: 10,
+	        recycleWashingInterval: 4,
+	        runningMode: 1,
+	        isReport: 1,
+	        wxFetchWaterAmount: 100,
+	
+	        wxFetchWaterTime: 45,
+	        wxFetchWaterCount: 7500,
+	        coinsFetchWater: 3750,
+	        type:'',
+		}
+	}
+	//表单校验
+	
+	const rulesData = ref({
+	        swipingCardAmount: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1|[1-9]\d{0,2}|[1-5]\d{3}|6000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        pulse: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]\d{0,2}|1\d{3}|2000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        swipingCardTime:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]\d{0,2}|1000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	
+	        insertCoinsCount: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]|10)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        insertCoinsTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]\d{0,2}|1000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        swipingCardCount: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1|([1-9]\d{0,4}|[1-5]\d{4}|6[0-4]\d{3}|65000))$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        recycleAmountTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1[0-9]{1,2}|2[0-3][0-9]|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        lightFetchWaterTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([5-9]|[1-9]\d|1\d{2}|2[0-3]\d|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	
+	        lockFetchWaterTime:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([5-9]|[1-9]\d|1\d{2}|2[0-3]\d|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        produceWaterTime:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-5]\d{0,1}|60)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        wasteWaterTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1[0-9]{1,2}|2[0-3][0-9]|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        wasteWaterIntervalTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([5-9]|[1-9]\d|1\d{2}|2[0-3]\d|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        ozoneTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([5-9]|[1-9]\d|1\d{2}|2[0-3]\d|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	
+	        ozoneIntervalTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([3-9]\d|1\d{2}|2[0-3]\d|240)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        temperatureLower: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]|[1-2]\d|3[0-5])$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        temperatureUpper:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^[3-9]|[1-4]\d|50$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        openAdvertTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					],
+			},
+	        closeAdvertTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					],
+			},
+	
+	        recycleWashing: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]\d{0,1}|0)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        recycleWashingInterval:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]|10)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        runningMode: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^1|2$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        isReport: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^1|2$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        wxFetchWaterAmount:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1|[1-9]\d{0,2}|[1-5]\d{3}|6000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	
+	        wxFetchWaterTime: {
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^([1-9]\d{0,3}|10000)$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        wxFetchWaterCount:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1|([1-9]\d{0,4}|[1-5]\d{4}|6[0-4]\d{3}|65000))$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	        coinsFetchWater:{
+				rules:[
+					{required: true,errorMessage: '请输入参数'},
+					{pattern:/^(1|([1-9]\d{0,4}|[1-5]\d{4}|6[0-4]\d{3}|65000))$/,errorMessage: '超出范围,请输入范围内参数'},
+					],
+			},
+	});
+	
+	//参数设置按钮,请求设备参数
+	async function handleSetting(){
+	    await getParameterApi(facilityCode).then((res) =>{
+	        //参数不为空
+	        if(res.data != null){
+	            formData.value = res.data
+	        }else{
+	            //参数为空置为默认
+	            initData()
+	            formData.value.sn = facilityCode
+	        }
+	    })
+	}
+	//type:1:修改参数,0:恢复出厂设置
+	//恢复出厂设置
+	async function restore(){
+	    if(onLineState == 1){
+	            
+	        let sn = formData.value.sn
+	        initData()
+	        formData.value.type = 0
+	        formData.value.sn = sn
+			await setParams(formData.value)
+	    }else{
+	        uni.showToast({
+	        	title:'离线,无法操作',
+				icon:'none'
+	        })
+	    }
+	}
+	//修改参数
+	async function save(){
+	    if(onLineState.value == 1){
+			
+	        formData.value.type = 1
+	       formRef.value.validate.then(async() =>{
+			   await setParams(formData.value)
+		   }).catch(() =>{})
+	    }else{
+	       uni.showToast({
+	       	title:'离线,无法操作',
+	       	icon:'none'
+	       })
+	    }
+	}
+	
+	async function setParams(formParams){
+		await facilityList().editParameter(formParams).then((res) =>{
+			if(res.code == 200){
+				uni.showToast({
+					title:'成功!三秒刷新'
+				})
+				setTimeout(async() =>{
+					await handleSetting()
+				},4000)
+			}else{
+				uni.showToast({
+					title:'网络错误',
+					icon:'none'
+				})
+			}
+		})
+	}
+</script>
+<template>
+	<view>
+		<view class="container">
+			<navbar title = '参数设置'></navbar>
+			<view class="content">
+				<view class="head">
+					<text>设备参数设置</text>
+				</view>
+				<view class="main">
+					<view class="form-box">
+						<uni-forms ref="formRef" :modelValue="formData" :rules="rulesData">
+							<view class="devide-name">水价设置:</view>
+							<uni-group>
+								<uni-forms-item class="form-item" name="swipingCardAmount">
+									<text style="color:#4784c7">刷卡扣费金额:(范围:10-6000分)</text>
+									<uni-easyinput type="text" v-model="formData.swipingCardAmount" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="swipingCardTime">
+									<text style="color:#4784c7">刷卡打水时间:(范围:1-1000秒)</text>
+									<uni-easyinput type="text" v-model="formData.swipingCardTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="swipingCardCount">
+									<text style="color:#4784c7">刷卡打水水量:(范围:1-65000毫升)</text>
+									<uni-easyinput type="text" v-model="formData.swipingCardCount" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="insertCoinsCount">
+									<text style="color:#4784c7">投币数量设置:(范围:1-10个)</text>
+									<uni-easyinput type="text" v-model="formData.insertCoinsCount" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="insertCoinsTime">
+									<text style="color:#4784c7">5角投币打水时间:(范围:1-1000秒)</text>
+									<uni-easyinput type="text" v-model="formData.insertCoinsTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="coinsFetchWater">
+									<text style="color:#4784c7">5角投币打水水量:(范围:1-65000毫升)</text>
+									<uni-easyinput type="text" v-model="formData.coinsFetchWater" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="wxFetchWaterAmount">
+									<text style="color:#4784c7">微信打水金额:(范围:1-6000分)</text>
+									<uni-easyinput type="text" v-model="formData.wxFetchWaterAmount" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="wxFetchWaterTime">
+									<text style="color:#4784c7">微信打水时间:(范围:1-1000秒)</text>
+									<uni-easyinput type="text" v-model="formData.wxFetchWaterTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="wxFetchWaterCount">
+									<text style="color:#4784c7">微信打水量:(范围:1-65000毫升)</text>
+									<uni-easyinput type="text" v-model="formData.wxFetchWaterCount" placeholder="请输入姓名" />
+								</uni-forms-item>
+							</uni-group>
+							
+							<view class="devide-name">系统参数:</view>
+							<uni-group>
+								<uni-forms-item class="form-item" name="runningMode">
+									<text style="color:#4784c7">计费模式:(范围:1时间,2流量)</text>
+									<uni-easyinput type="text" v-model="formData.runningMode" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="pulse">
+									<text style="color:#4784c7">流量计脉冲数:(范围:1-2000个)</text>
+									<uni-easyinput type="text" v-model="formData.pulse" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="recycleAmountTime">
+									<text style="color:#4784c7">钱数回收时间:(范围:10-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.recycleAmountTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="lightFetchWaterTime">
+									<text style="color:#4784c7">打水灯延时:(范围:5-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.lightFetchWaterTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="lockFetchWaterTime">
+									<text style="color:#4784c7">打水锁延时:(范围:5-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.lockFetchWaterTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="isReport">
+									<text style="color:#4784c7">是否语音播报金额:(范围:1开启,2关闭)</text>
+									<uni-easyinput type="text" v-model="formData.isReport" placeholder="请输入姓名" />
+								</uni-forms-item>
+							</uni-group>
+							
+							<view class="devide-name">制水设置:</view>
+							<uni-group>
+								<uni-forms-item class="form-item" name="produceWaterTime">
+									<text style="color:#4784c7">制水延时:(范围:1-60分)</text>
+									<uni-easyinput type="text" v-model="formData.produceWaterTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="wasteWaterTime">
+									<text style="color:#4784c7">废水重洗时间:(范围:5-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.wasteWaterTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="wasteWaterIntervalTime">
+									<text style="color:#4784c7">废水重洗间隔:(范围:30-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.wasteWaterIntervalTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="ozoneTime">
+									<text style="color:#4784c7">臭氧杀菌时间:(范围:1-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.ozoneTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="ozoneIntervalTime">
+									<text style="color:#4784c7">臭氧杀菌间隔:(范围:1-240秒)</text>
+									<uni-easyinput type="text" v-model="formData.ozoneIntervalTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="temperatureLower">
+									<text style="color:#4784c7">加热温度下限:(范围:1-35℃)</text>
+									<uni-easyinput type="text" v-model="formData.temperatureLower" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="temperatureUpper">
+									<text style="color:#4784c7">加热温度上限:(范围:3-50℃)</text>
+									<uni-easyinput type="text" v-model="formData.temperatureUpper" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="openAdvertTime">
+									<text style="color:#4784c7;font-size: 26rpx">广告灯开启时间:(范围:00:00~23:59时分)</text>
+									<uni-easyinput type="text" v-model="formData.openAdvertTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="closeAdvertTime">
+									<text style="color:#4784c7;font-size: 26rpx">广告灯关闭时间:(范围:00:00~23:59时分)</text>
+									<uni-easyinput type="text" v-model="formData.closeAdvertTime" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="recycleWashing">
+									<text style="color:#4784c7">循环重洗时间:(范围:0-99秒)</text>
+									<uni-easyinput type="text" v-model="formData.recycleWashing" placeholder="请输入姓名" />
+								</uni-forms-item>
+								<uni-forms-item class="form-item" name="recycleWashingInterval">
+									<text style="color:#4784c7">循环重洗间隔:(范围:1-10小时)</text>
+									<uni-easyinput type="text" v-model="formData.recycleWashingInterval" placeholder="请输入姓名" />
+								</uni-forms-item>
+							</uni-group>
+						</uni-forms>
+					</view>
+					<view class="handle-btn">
+						<view class="left" @click="restore">恢复出厂设置</view>
+						<view class="right" @click="save">保存设置</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<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;
+			.head{
+				width:100%;
+				height: 100rpx;
+				background-color: rgba(255,255,255,0.6);
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: 38rpx;
+				color: #4784c7;
+				letter-spacing: 2rpx;
+				box-shadow: 0 4rpx 4rpx 1rpx rgba(71,132,199,0.6);
+			}
+			.main{
+				width:100%;
+				height:calc(100% - 100rpx);
+				background-color: rgba(255,255,255,0.6);
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				justify-content: center;
+				margin-top:30rpx;
+				padding:30rpx 40rpx; 
+				box-sizing:border-box;
+				.handle-btn{
+					height:60rpx;
+					width:100%;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					text-align: center;
+					margin-top:50rpx;
+					.left{
+						border: 1rpx solid #5694f0;
+						color: #409EFF;
+						background-color:#fff;
+						border-radius:15rpx;
+						line-height:60rpx;
+						margin-right:60rpx;
+						width: 215rpx;
+						font-size: 30rpx;
+					}
+					.left:hover{
+						opacity: 0.8;
+					}
+					.right{
+						background-color:#409EFF;
+						color: #fff;
+						border-radius:15rpx;
+						line-height:60rpx;
+						width: 215rpx;
+						font-size: 30rpx;
+					}
+					.right:hover{
+						opacity:0.8;
+					}
+				}
+				.form-box{
+					width: 580rpx;
+					height:90%;
+					overflow: scroll;
+					.devide-name{
+						width:100%;
+						color: #30b351;
+						margin:20rpx 0;
+					}
+					.form-item{
+						width:100%;
+					}
+				}
+			}
+		}
+	}
+	       
+</style>
diff --git a/static/images/maintain/switch-off.png b/static/images/maintain/switch-off.png
new file mode 100644
index 0000000..5ae150f
--- /dev/null
+++ b/static/images/maintain/switch-off.png
Binary files differ
diff --git a/static/images/maintain/switch-on.png b/static/images/maintain/switch-on.png
new file mode 100644
index 0000000..48fc021
--- /dev/null
+++ b/static/images/maintain/switch-on.png
Binary files differ
diff --git a/unpackage/dist/dev/mp-weixin/api/index.js b/unpackage/dist/dev/mp-weixin/api/index.js
index ca5d79a..5eec553 100644
--- a/unpackage/dist/dev/mp-weixin/api/index.js
+++ b/unpackage/dist/dev/mp-weixin/api/index.js
@@ -123,6 +123,18 @@
 function searchWaterFacilityApi(data) {
   return util_request.request(`/waterFacility/search`, data, "POST");
 }
+function getFacilityApi(id) {
+  return util_request.request(`/waterFacility/get?id=${id}`, {}, "GET");
+}
+function openFacilityApi(data) {
+  return util_request.request("/api/facility/open", data, "POST");
+}
+function closeFacilityApi(data) {
+  return util_request.request("/api/facility/close", data, "POST");
+}
+function getParameterApi(sn) {
+  return util_request.request(`/waterFacility/getParameter?sn=${sn}`, {}, "GET");
+}
 exports.adminDetailApi = adminDetailApi;
 exports.adminLoginApi = adminLoginApi;
 exports.askShareApi = askShareApi;
@@ -130,12 +142,15 @@
 exports.balanceChangeApi = balanceChangeApi;
 exports.balanceStatisticsApi = balanceStatisticsApi;
 exports.buyWaterApi = buyWaterApi;
+exports.closeFacilityApi = closeFacilityApi;
 exports.creatUserArchive = creatUserArchive;
 exports.deleteAddressApi = deleteAddressApi;
 exports.editAddressApi = editAddressApi;
 exports.editShareTypeApi = editShareTypeApi;
 exports.editUserInfoApi = editUserInfoApi;
 exports.getAddressApi = getAddressApi;
+exports.getFacilityApi = getFacilityApi;
+exports.getParameterApi = getParameterApi;
 exports.getParentAreaApi = getParentAreaApi;
 exports.getPriceBySnApi = getPriceBySnApi;
 exports.getRegionApi = getRegionApi;
@@ -150,6 +165,7 @@
 exports.goodsSearchTypeApi = goodsSearchTypeApi;
 exports.infoBreakdownApi = infoBreakdownApi;
 exports.integralConvertApi = integralConvertApi;
+exports.openFacilityApi = openFacilityApi;
 exports.paymentChangeApi = paymentChangeApi;
 exports.pointsExchangeApi = pointsExchangeApi;
 exports.pointsSearchApi = pointsSearchApi;
diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js
index f437de8..42bba60 100644
--- a/unpackage/dist/dev/mp-weixin/app.js
+++ b/unpackage/dist/dev/mp-weixin/app.js
@@ -30,6 +30,8 @@
   "./pagesAdmin/adminPlatform/home.js";
   "./pagesAdmin/adminPlatform/facility.js";
   "./pagesAdmin/adminPlatform/facilityDetail.js";
+  "./pagesAdmin/adminPlatform/inspect.js";
+  "./pagesAdmin/adminPlatform/params.js";
   "./pagesPoints/pointsMall/index.js";
   "./pagesPoints/pointsMall/pointsGetRecord/index.js";
   "./pagesPoints/pointsMall/pointsExchangeRecord/index.js";
diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json
index c1030b5..cfdec28 100644
--- a/unpackage/dist/dev/mp-weixin/app.json
+++ b/unpackage/dist/dev/mp-weixin/app.json
@@ -32,7 +32,9 @@
       "pages": [
         "adminPlatform/home",
         "adminPlatform/facility",
-        "adminPlatform/facilityDetail"
+        "adminPlatform/facilityDetail",
+        "adminPlatform/inspect",
+        "adminPlatform/params"
       ]
     },
     {
diff --git a/unpackage/dist/dev/mp-weixin/common/assets.js b/unpackage/dist/dev/mp-weixin/common/assets.js
index 7383bba..f7f1e80 100644
--- a/unpackage/dist/dev/mp-weixin/common/assets.js
+++ b/unpackage/dist/dev/mp-weixin/common/assets.js
@@ -1,16 +1,16 @@
 "use strict";
-const _imports_0$f = "/static/images/login/logo.png";
-const _imports_1$9 = "/static/images/login/wx.png";
+const _imports_0$g = "/static/images/login/logo.png";
+const _imports_1$a = "/static/images/login/wx.png";
 const _imports_2$2 = "/static/images/login/close_pwd.png";
 const _imports_3$3 = "/static/images/login/open_pwd.png";
 const _imports_4$3 = "/static/images/login/switchto.svg";
-const _imports_0$e = "/static/images/index/head.png";
-const _imports_1$8 = "/static/images/index/back.png";
-const _imports_0$d = "/static/images/index/card11.png";
+const _imports_0$f = "/static/images/index/head.png";
+const _imports_1$9 = "/static/images/index/back.png";
+const _imports_0$e = "/static/images/index/card11.png";
 const _imports_3$2 = "/static/images/index/code1.png";
 const _imports_4$2 = "/static/images/index/vip-add.png";
 const _imports_5$1 = "/static/images/index/home21.png";
-const _imports_1$7 = "/static/images/index/icon22.png";
+const _imports_1$8 = "/static/images/index/icon22.png";
 const _imports_7 = "/static/images/index/icon23.png";
 const _imports_8$1 = "/static/images/index/advert-icon3.svg";
 const _imports_9$1 = "/static/images/index/advert-icon1.svg";
@@ -19,24 +19,26 @@
 const _imports_12 = "/static/images/index/icon51.png";
 const _imports_13 = "/static/images/index/more-info5.png";
 const _imports_14 = "/static/images/index/notice5.png";
-const _imports_0$c = "/static/images/addCard/code.png";
-const _imports_1$6 = "/static/images/other/more.png";
-const _imports_0$b = "/static/images/other/expand.png";
-const _imports_1$5 = "/static/images/other/nodata.png";
-const _imports_0$a = "/static/images/other/code-none.png";
-const _imports_0$9 = "/static/images/address/edit.png";
-const _imports_1$4 = "/static/images/address/delete.png";
-const _imports_0$8 = "/static/images/address/expand.png";
-const _imports_0$7 = "/static/images/other/success.png";
-const _imports_0$6 = "/static/logo.png";
-const _imports_1$3 = "/static/images/other/img-add.png";
-const _imports_0$5 = "/static/images/other/home.svg";
-const _imports_0$4 = "/static/images/maintain/maintenance-head.svg";
-const _imports_1$2 = "/static/images/maintain/fun-icon1.svg";
+const _imports_0$d = "/static/images/addCard/code.png";
+const _imports_1$7 = "/static/images/other/more.png";
+const _imports_0$c = "/static/images/other/expand.png";
+const _imports_1$6 = "/static/images/other/nodata.png";
+const _imports_0$b = "/static/images/other/code-none.png";
+const _imports_0$a = "/static/images/address/edit.png";
+const _imports_1$5 = "/static/images/address/delete.png";
+const _imports_0$9 = "/static/images/address/expand.png";
+const _imports_0$8 = "/static/images/other/success.png";
+const _imports_0$7 = "/static/logo.png";
+const _imports_1$4 = "/static/images/other/img-add.png";
+const _imports_0$6 = "/static/images/other/home.svg";
+const _imports_0$5 = "/static/images/maintain/maintenance-head.svg";
+const _imports_1$3 = "/static/images/maintain/fun-icon1.svg";
 const _imports_2$1 = "/static/images/maintain/fun-icon2.svg";
 const _imports_3$1 = "/static/images/maintain/fun-icon3.svg";
 const _imports_4$1 = "/static/images/maintain/fun-icon4.svg";
-const _imports_0$3 = "/static/images/maintain/expand.svg";
+const _imports_0$4 = "/static/images/maintain/expand.svg";
+const _imports_0$3 = "/static/images/maintain/switch-on.png";
+const _imports_1$2 = "/static/images/maintain/switch-off.png";
 const _imports_0$2 = "/static/images/pointMall/back.svg";
 const _imports_1$1 = "/static/images/pointMall/points.svg";
 const _imports_2 = "/static/images/pointMall/points-icon.svg";
@@ -51,30 +53,32 @@
 const _imports_0 = "/static/images/other/navBack.svg";
 exports._imports_0 = _imports_0;
 exports._imports_0$1 = _imports_0$2;
-exports._imports_0$10 = _imports_0$7;
-exports._imports_0$11 = _imports_0$6;
-exports._imports_0$12 = _imports_0$5;
-exports._imports_0$13 = _imports_0$4;
-exports._imports_0$14 = _imports_0$3;
-exports._imports_0$15 = _imports_0$1;
-exports._imports_0$2 = _imports_0$f;
-exports._imports_0$3 = _imports_0$d;
-exports._imports_0$4 = _imports_0$e;
-exports._imports_0$5 = _imports_0$c;
-exports._imports_0$6 = _imports_0$b;
-exports._imports_0$7 = _imports_0$a;
-exports._imports_0$8 = _imports_0$9;
-exports._imports_0$9 = _imports_0$8;
-exports._imports_1 = _imports_1$9;
-exports._imports_1$1 = _imports_1$7;
-exports._imports_1$2 = _imports_1$8;
-exports._imports_1$3 = _imports_1$6;
-exports._imports_1$4 = _imports_1$5;
-exports._imports_1$5 = _imports_1$4;
-exports._imports_1$6 = _imports_1$3;
-exports._imports_1$7 = _imports_1$2;
-exports._imports_1$8 = _imports_1$1;
-exports._imports_1$9 = _imports_1;
+exports._imports_0$10 = _imports_0$8;
+exports._imports_0$11 = _imports_0$7;
+exports._imports_0$12 = _imports_0$6;
+exports._imports_0$13 = _imports_0$5;
+exports._imports_0$14 = _imports_0$4;
+exports._imports_0$15 = _imports_0$3;
+exports._imports_0$16 = _imports_0$1;
+exports._imports_0$2 = _imports_0$g;
+exports._imports_0$3 = _imports_0$e;
+exports._imports_0$4 = _imports_0$f;
+exports._imports_0$5 = _imports_0$d;
+exports._imports_0$6 = _imports_0$c;
+exports._imports_0$7 = _imports_0$b;
+exports._imports_0$8 = _imports_0$a;
+exports._imports_0$9 = _imports_0$9;
+exports._imports_1 = _imports_1$a;
+exports._imports_1$1 = _imports_1$8;
+exports._imports_1$10 = _imports_1;
+exports._imports_1$2 = _imports_1$9;
+exports._imports_1$3 = _imports_1$7;
+exports._imports_1$4 = _imports_1$6;
+exports._imports_1$5 = _imports_1$5;
+exports._imports_1$6 = _imports_1$4;
+exports._imports_1$7 = _imports_1$3;
+exports._imports_1$8 = _imports_1$2;
+exports._imports_1$9 = _imports_1$1;
 exports._imports_10 = _imports_10;
 exports._imports_11 = _imports_11;
 exports._imports_12 = _imports_12;
diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js
index 53109de..d8e1b9f 100644
--- a/unpackage/dist/dev/mp-weixin/common/vendor.js
+++ b/unpackage/dist/dev/mp-weixin/common/vendor.js
@@ -8083,6 +8083,18 @@
         style: {
           navigationBarTitleText: ""
         }
+      },
+      {
+        path: "adminPlatform/inspect",
+        style: {
+          navigationBarTitleText: ""
+        }
+      },
+      {
+        path: "adminPlatform/params",
+        style: {
+          navigationBarTitleText: ""
+        }
       }
     ]
   },
diff --git a/unpackage/dist/dev/mp-weixin/project.private.config.json b/unpackage/dist/dev/mp-weixin/project.private.config.json
index 6d0a32f..9f29cc0 100644
--- a/unpackage/dist/dev/mp-weixin/project.private.config.json
+++ b/unpackage/dist/dev/mp-weixin/project.private.config.json
@@ -1,7 +1,7 @@
 {
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
   "projectname": "water-drinking-uniapp",
-  "setting": {
+ 0、- "setting": {
     "compileHotReLoad": true
   }
 }
\ No newline at end of file

--
Gitblit v1.9.3