Files
endo_an_2/pages/set/run.vue
T
2026-02-10 09:51:18 +08:00

318 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="ant-layout page">
<page-header></page-header>
<head-title title="运行参数"></head-title>
<view class="ant-layout-content content">
<uni-section title="存储超时设置" titleColor="#fff" titleFontSize="18px"></uni-section>
<uni-row>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">临期</view>
<view class="value">
<input type="number" class="ant-input" v-model="endoNear"/>
</view>
<view class="ant-form-item-label after">小时</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">超期</view>
<view class="value">
<input type="number" class="ant-input" v-model="endoOver"/>
</view>
<view class="ant-form-item-label after">小时</view>
</view>
</uni-col>
</uni-row>
<uni-section title="传感器设置" titleColor="#fff" titleFontSize="18px"></uni-section>
<uni-row>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">温度</view>
<view class="value">
<input type="number" class="ant-input" v-model="temp"/>
</view>
<view class="ant-form-item-label after"></view>
</view>
</uni-col>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">湿度</view>
<view class="value">
<input type="number" class="ant-input" v-model="humi"/>
</view>
<view class="ant-form-item-label after">%RH</view>
</view>
</uni-col>
</uni-row>
<uni-row>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">压差</view>
<view class="value">
<input type="number" class="ant-input" v-model="pressure"/>
</view>
<view class="ant-form-item-label after">Pa</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label before">压差补偿</view>
<view class="value">
<input class="ant-input" v-model="pressureCom"/>
</view>
<view class="ant-form-item-label after">Pa</view>
</view>
</uni-col>
</uni-row>
<uni-section title="自动消毒设置" titleColor="#fff" titleFontSize="18px"></uni-section>
<view class="ant-flex group-set" v-for="(i, k) in group" :key="k">
<view class="ant-form-item-label">{{k+1}}</view>
<view class="input">
<input type="number" class="ant-input" v-model="group[k].start.h" />
<text class="form-text"> : </text>
<input type="number" class="ant-input" v-model="group[k].start.m" />
</view>
<view class="form-text">~</view>
<view class="input">
<input type="number" class="ant-input" v-model="group[k].end.h" />
<text class="form-text"> : </text>
<input type="number" class="ant-input" v-model="group[k].end.m" />
</view>
<view class="form-text" style="width: 120px;margin-left: 10px;">
<select-switch :defaultSwitch="group[k].status" @change="groupStatusChange(k)" checked_bj_color="#777D90" :switchList="['ON', 'OFF']"></select-switch>
</view>
</view>
<uni-section title="手动消毒时长设置" titleColor="#fff" titleFontSize="18px"></uni-section>
<uni-row class="ant-flex" style="justify-content: left;">
<view class="ant-form-item-label">时长</view>
<view class="input" style="width: 100px;">
<input type="number" class="ant-input" v-model="disinfectTime"/>
</view>
<view class="ant-form-item-label">
<text class="form-text">分钟</text>
<text style="font-size: 16px;margin-left:10px;">(单次开启持续时长1-59分钟)</text>
</view>
</uni-row>
<uni-section title="真空泵运行参数设置" titleColor="#fff" titleFontSize="18px"></uni-section>
<uni-row>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label">每隔</view>
<view class="input" style="width: 100px;">
<input type="number" class="ant-input" v-model="vacuumPerHour"/>
</view>
<view class="ant-form-item-label">小时</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="ant-flex">
<view class="ant-form-item-label">启动</view>
<view class="input" style="width: 100px;">
<input type="number" min="1" max="59" class="ant-input" v-model="vacuumRunTime"/>
</view>
<view class="ant-form-item-label">分钟</view>
</view>
</uni-col>
</uni-row>
<uni-row style="margin-top: 40px;">
<uni-col :span="24">
<view class="ant-btn" @click="submit">保存</view>
<view class="ant-btn" style="margin-left: 20px;" @click="asyncSet">同步</view>
</uni-col>
</uni-row>
</view>
<notice ref="notice"/>
</view>
</template>
<script>
import PageHeader from '@/components/PageHeader.vue'
import HeadTitle from '@/components/HeadTitle.vue'
import Notice from '@/components/Notice.vue';
import selectSwitch from "@/components/xuan-switch/xuan-switch.vue";
import storage from '@/utils/storage.js';
import { compareTimes } from '@/utils/common.js';
export default {
components: {
PageHeader,Notice,HeadTitle, selectSwitch
},
data() {
return {
endoNear: '72',
endoOver: '96',
temp: '16',
humi: '30',
pressure: '5',
pressureCom: '+5',
group: [],
disinfectTime: '10',
vacuumPerHour: '1',
vacuumRunTime: '10',
}
},
onLoad() {
let runStorage = this.$store.getters.run
if (runStorage) {
// 本地存储
for (let k in runStorage) {
this[k] = runStorage[k]
}
}
},
methods: {
groupStatusChange(key) {
this.group[key].status = !this.group[key].status
},
submit() {
if (this.checkeForm()) {
storage.set('run', { ...this.$data })
this.$store.commit('SET_RUN', { ...this.$data })
this.$refs.notice.open({
title: '保存成功'
})
}
},
checkeForm() {
if (this.endoNear < 1 || this.endoNear > this.endoOver) {
uni.showToast({
title: '请检查超时设置填写是否正确',
icon: 'none'
})
return false
}
for (let i of this.group) {
if (i.start.h > 23 || i.start.m > 59 || i.end.h > 23 || i.end.m > 59) {
uni.showToast({
title: '时间格式超限',
icon: 'none'
})
return false
}
i.start.h = i.start.h.toString().padStart(2, '0');
i.start.m = i.start.m.toString().padStart(2, '0');
i.end.h = i.end.h.toString().padStart(2, '0');
i.end.m = i.end.m.toString().padStart(2, '0');
let start = i.start.h + ':' + i.start.m
let end = i.end.h + ':' + i.end.m
if (i.status == false) {
continue;
}
if (compareTimes(start, end) != 1) {
uni.showToast({
title: '请检查消毒设置填写是否正确',
icon: 'none'
})
return false
}
}
for (let i in this.$data) {
if (this.$data[i] == 'group') {
continue;
}
if (this.$data[i] == '' || this.$data[i] == null || this.$data[i] == 0) {
uni.showToast({
title: '请检查信息填写是否完整',
icon: 'none'
})
return false
}
}
return true
},
asyncSet() {
// const res = await this.$api.asyncSet()
// if (res.code === 200) {
// this.$refs.notice.show({
// title: '同步成功',
// type: 'success'
// })
// } else {
// this.$refs.notice.show({
// title: '同步失败',
// type: 'error'
// })
// }
}
},
}
</script>
<style scoped>
.page{
background: transparent;
height: 100%;
}
.content{
height: 100%;
padding: 20px;
}
.uni-section{
background-color: transparent;
text-align: left;
}
.uni-row{
margin-bottom: 10px;
}
.ant-form-item-label{
color: #747A8D;
line-height: 40px;
padding: 0 10px;
font-size: 18px;
}
.ant-form-item-label.before{
width: 160px;
text-align: right;
}
.value{
width: 140px;
}
.ant-form-item-label.after{
width: 80px;
text-align: left;
}
.ant-input{
height: 40px;
font-size: 18px;
}
.form-text{
color: #747A8D;
line-height: 40px;
text-align: left;
font-size: 18px;
}
.ant-btn{
line-height: 38px;
background: #2F3242;
border-color: #2F3242;
height: 46px;
width: 128px;
border-radius: 50px;
color: #fff;
font-size: 16px;
}
.group-set{
margin-bottom: 10px;
}
.group-set .ant-input{
width: 65px;
}
.form-text :deep(.switch-container){
width: 100%;
height: 40px;
border-radius: 0;
}
</style>