|
|
@@ -20,19 +20,19 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="listbox" v-if="menuList.length">
|
|
|
- <view class="second-tab">
|
|
|
- <view class="tab-box">
|
|
|
- <view
|
|
|
- v-for="(item,index) in list"
|
|
|
- :key="index"
|
|
|
- @click="changeDevice(item,index)"
|
|
|
- v-show="!item.url"
|
|
|
- :class="['tab-item',currents == index?'active':'']"
|
|
|
- >
|
|
|
- <text>{{item.purview_name}}</text>
|
|
|
+ <view class="second-tab">
|
|
|
+ <view class="tab-box">
|
|
|
+ <view
|
|
|
+ v-for="(item,index) in list"
|
|
|
+ :key="index"
|
|
|
+ @click="changeDevice(item,index)"
|
|
|
+ v-show="!item.url"
|
|
|
+ :class="['tab-item',currents == index?'active':'']"
|
|
|
+ >
|
|
|
+ <text>{{item.purview_name}}</text>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
<view class="third-tab">
|
|
|
<view
|
|
|
class="third-tab-item"
|
|
|
@@ -60,19 +60,19 @@
|
|
|
>
|
|
|
<view class="list_item" v-for="(item, index) in eqlistdata" :key="index" @click="historys(item)">
|
|
|
<view class="list_item_top">
|
|
|
- <p class="p1">
|
|
|
+ <view class="p1">
|
|
|
<span class="title">{{ (item.name || '--' )}}</span>
|
|
|
<span class="sub-title" @click.stop="modification(item)">信息修改</span>
|
|
|
- </p>
|
|
|
- <p class="online-status"
|
|
|
+ </view>
|
|
|
+ <view class="online-status"
|
|
|
v-if="item.status == 1 || item.is_online" >
|
|
|
<image
|
|
|
:src="$imageURL+'/bigdata_app/newImg/home/online1.png'"
|
|
|
mode=""
|
|
|
></image>
|
|
|
<text class="status-text-online">在线</text>
|
|
|
- </p>
|
|
|
- <p
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
v-else
|
|
|
class="online-status"
|
|
|
>
|
|
|
@@ -81,22 +81,58 @@
|
|
|
mode=""
|
|
|
></image>
|
|
|
<text class="status-text-offline">离线</text>
|
|
|
- </p>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
<view class="list_item_text">
|
|
|
- <p v-if="item.imei">
|
|
|
- <span class="label">IMEI</span>{{ (item.dui || item.imei) }}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <span class="label">设备ID</span>{{ item.only_for_show || item.id || item.device_id }}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <span class="label">上报时间</span>{{ (item.report || item.uptime) | timeFormat() }}
|
|
|
- </p>
|
|
|
- <p style="display:flex;align-items: center;">
|
|
|
- <span class="label">设备位置</span>
|
|
|
- <span class="nav-label">{{ (item.address|| '无') }}</span>
|
|
|
- </p>
|
|
|
+ <view v-if="item.imei" class="p1">
|
|
|
+ <text class="label">IMEI</text>{{ (item.dui || item.imei) }}
|
|
|
+ </view>
|
|
|
+ <view class="p1">
|
|
|
+ <text class="label">设备ID</text>{{ item.only_for_show || item.id || item.device_id }}
|
|
|
+ </view>
|
|
|
+ <view class="p1">
|
|
|
+ <text class="label">上报时间</text>{{ (item.report || item.uptime || item.upload_time) | timeFormat() }}
|
|
|
+ </view>
|
|
|
+ <view class="p1" style="display:flex;align-items: center;">
|
|
|
+ <text class="label">设备位置</text>
|
|
|
+ <text class="nav-label">{{ (item.address|| '无') }}</text>
|
|
|
+ </view>
|
|
|
+ <view class="action-list" style="display:flex;align-items: center;" v-if="type_id == 49">
|
|
|
+ <view class="action-item">
|
|
|
+ <image :src="lightning" alt="" class="item-icon">
|
|
|
+ </image>
|
|
|
+ <text>{{item.sensor_params.charging_vol || 0}}v</text>
|
|
|
+ </view>
|
|
|
+ <view class="action-item">
|
|
|
+ <image :src="getSignal(item.sensor_params.rssl)" alt="" class="item-icon">
|
|
|
+ </image>
|
|
|
+ <text>{{item.sensor_params.rssl}}</text>
|
|
|
+ </view>
|
|
|
+ <view class="action-item">
|
|
|
+ <image :src="battery" alt="" class="item-icon">
|
|
|
+ </image>
|
|
|
+ <text>{{item.sensor_params.kwh}}%</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="action-container" v-if="type_id == 49">
|
|
|
+ <view class="action-container-item" :class="n.switchValue?'action-container-container-item-active':''" v-for="(n,key) in item.valve_params" :key="key">
|
|
|
+ <view class="action-open">
|
|
|
+ <view class="item-number" :class="{'item-number-active':n.switchValue}">{{n.name}}</view>
|
|
|
+ <u-switch
|
|
|
+ :value="n.switchValue"
|
|
|
+ active-color="#0BBC58"
|
|
|
+ @click.native="()=>changeSwitchStatus(n.value,n,item)"
|
|
|
+ size="36"
|
|
|
+ ></u-switch>
|
|
|
+ </view>
|
|
|
+ <view class="action-open-value" @click.stop="editHandle(n.value,n,item)" v-if="n.value != 0">
|
|
|
+ <image :src="openingDegree" alt="" class="item-icon">
|
|
|
+ </image>
|
|
|
+ <text>{{n.value}}%</text>
|
|
|
+ <u-icon name="edit-pen" color="#0BBC58"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</scroll-view>
|
|
|
@@ -106,16 +142,93 @@
|
|
|
<image src="../../static/images/ajax-loader.gif" mode="" class="img"></image>
|
|
|
</view>
|
|
|
<view class="top" v-if="isTop" @click="top">
|
|
|
- <image
|
|
|
- :src="
|
|
|
- $imageURL+'/bigdata_app' +
|
|
|
- '/image/6209a98f0cb3b5086f2ca36152c9269.png'
|
|
|
- " mode=""></image>
|
|
|
+ <image :src="$imageURL+'/bigdata_app' + '/image/6209a98f0cb3b5086f2ca36152c9269.png'" mode=""></image>
|
|
|
+ </view>
|
|
|
+ <u-popup v-model="showPopup" mode="bottom">
|
|
|
+ <u-form :model="form" label-width="160rpx" :label-style="{marginLeft:'20rpx'}">
|
|
|
+ <u-form-item label="开启状态">
|
|
|
+ <u-radio-group v-model="value" @change="radioGroupChange">
|
|
|
+ <u-radio
|
|
|
+ @change="radioChange"
|
|
|
+ v-for="(item, index) in radioList" :key="index"
|
|
|
+ :name="item.value"
|
|
|
+ active-color="#0BBC58"
|
|
|
+ >
|
|
|
+ {{item.name}}
|
|
|
+ </u-radio>
|
|
|
+ </u-radio-group>
|
|
|
+ </u-form-item>
|
|
|
+ <u-form-item label="开阀时间" v-if="value == 1">
|
|
|
+ <view @click="show1 = true" class="hour">{{hour}} 小时</view>
|
|
|
+ <view @click="show2 = true" class="minute">{{minute}} 分钟</view>
|
|
|
+ </u-form-item>
|
|
|
+ <u-form-item label="开度数值">
|
|
|
+ <view class="slider-container">
|
|
|
+ <view class="slider-min-value">10</view>
|
|
|
+ <view
|
|
|
+ class="custom-progress"
|
|
|
+ @touchstart.stop="onSliderTouchStart($event, 'openingValue', 10, 120)"
|
|
|
+ @touchmove.stop.prevent="onSliderTouchMove($event, 10, 120)"
|
|
|
+ @touchend.stop="onSliderTouchEnd"
|
|
|
+ @tap.stop="onSliderTap($event, 'openingValue', 10, 120)"
|
|
|
+ >
|
|
|
+ <view class="progress-track">
|
|
|
+ <view class="progress-fill" :style="{ width: getProgressWidth(equipContrlForm.openingValue, 10, 120) + '%' }"></view>
|
|
|
+ <view class="progress-thumb" :style="{ left: getProgressWidth(equipContrlForm.openingValue, 10, 120) + '%' }"></view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="slider-max-value">100</view>
|
|
|
+ </view>
|
|
|
+ <text style="margin-left: 20rpx">{{equipContrlForm.openingValue}}</text>
|
|
|
+ </u-form-item>
|
|
|
+ <u-button type="success" style="width: 94%;margin-left: 3%;margin-bottom: 40rpx" @click="submit">提交</u-button>
|
|
|
+ </u-form>
|
|
|
+ </u-popup>
|
|
|
+ <u-popup v-model="showPopup2" mode="bottom">
|
|
|
+ <u-form :model="form" label-width="160rpx" :label-style="{marginLeft:'20rpx'}">
|
|
|
+ <u-form-item label="开度数值">
|
|
|
+ <view class="slider-container">
|
|
|
+ <view class="slider-min-value">10</view>
|
|
|
+ <view
|
|
|
+ class="custom-progress"
|
|
|
+ @touchstart.stop="onSliderTouchStart($event, 'openingValue', 10, 120)"
|
|
|
+ @touchmove.stop.prevent="onSliderTouchMove($event, 10, 120)"
|
|
|
+ @touchend.stop="onSliderTouchEnd"
|
|
|
+ @tap.stop="onSliderTap($event, 'openingValue', 10, 120)"
|
|
|
+ >
|
|
|
+ <view class="progress-track">
|
|
|
+ <view class="progress-fill" :style="{ width: getProgressWidth(equipContrlForm.openingValue, 10, 120) + '%' }"></view>
|
|
|
+ <view class="progress-thumb" :style="{ left: getProgressWidth(equipContrlForm.openingValue, 10, 120) + '%' }"></view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="slider-max-value">100</view>
|
|
|
+ </view>
|
|
|
+ <text style="margin-left: 20rpx">{{equipContrlForm.openingValue}}</text>
|
|
|
+ </u-form-item>
|
|
|
+ <u-button type="success" style="width: 94%;margin-left: 3%;margin-bottom: 40rpx" @click="submit2">提交</u-button>
|
|
|
+ </u-form>
|
|
|
+ </u-popup>
|
|
|
+ <u-modal v-model="show3" :content="content" @confirm="confirmClose" @cancel="cancelClose"></u-modal>
|
|
|
+ <u-select v-model="show1" :list="hours" @confirm="changeHour"></u-select>
|
|
|
+ <u-select v-model="show2" :list="minutes" @confirm="changeMinute"></u-select><u-popup v-model="show4" mode="center" width="80%">
|
|
|
+ <view class="progress-container">
|
|
|
+ <u-line-progress :percent="percentage" style="width: 90%;"></u-line-progress>
|
|
|
</view>
|
|
|
+ </u-popup>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import lightning from '../assets/lightning.png';
|
|
|
+import battery from '../assets/battery.png';
|
|
|
+import signal0 from '../assets/signal0.png';
|
|
|
+import signal1 from '../assets/signal1.png';
|
|
|
+import signal2 from '../assets/signal2.png';
|
|
|
+import signal3 from '../assets/signal3.png';
|
|
|
+import signal4 from '../assets/signal4.png';
|
|
|
+import signal5 from '../assets/signal5.png';
|
|
|
+import openingDegree from '../assets/openingDegree.png';
|
|
|
+
|
|
|
import {
|
|
|
Debounce,
|
|
|
Throttle
|
|
|
@@ -124,7 +237,42 @@
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
+ showPopup: false,
|
|
|
+ showPopup2: false,
|
|
|
+ show4: false,
|
|
|
+ percentage: 0,
|
|
|
+ openingValue: 60,
|
|
|
+ show1: false,
|
|
|
+ show2: false,
|
|
|
+ show3: false,
|
|
|
+ content:'确认关闭当前阀吗?',
|
|
|
+ hours: [],
|
|
|
+ value: 0,
|
|
|
+ minutes: [],
|
|
|
+ sensor_params:{},
|
|
|
+ valve_params:[],
|
|
|
+ currentRow: {},
|
|
|
+ lightning,
|
|
|
+ battery,
|
|
|
+ radioList:[{
|
|
|
+ name:'常开',
|
|
|
+ value:0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name:'定时',
|
|
|
+ value:1
|
|
|
+ }],
|
|
|
+ form:{},
|
|
|
+ openingDegree,
|
|
|
+ signal0,
|
|
|
+ signal1,
|
|
|
+ signal2,
|
|
|
+ signal3,
|
|
|
+ signal4,
|
|
|
+ signal5,
|
|
|
list: [],
|
|
|
+ hour: 1,
|
|
|
+ minute: 0,
|
|
|
pur_id: '',
|
|
|
loading: false,
|
|
|
currentPur_id:'',
|
|
|
@@ -132,6 +280,7 @@
|
|
|
counts:0,
|
|
|
online_counts:0,
|
|
|
offline_counts:0,
|
|
|
+ accessToken: '',
|
|
|
current: 0,
|
|
|
currents: 0,
|
|
|
total: 0,
|
|
|
@@ -147,11 +296,169 @@
|
|
|
loadingtf: false,
|
|
|
width: 0, //顶部搜索栏宽度
|
|
|
device_id: '', //搜索设备ID
|
|
|
- menuList: []
|
|
|
+ current_device_id: '', //当前设备ID
|
|
|
+ menuList: [],
|
|
|
+ sliderRect: {},
|
|
|
+ equipContrlForm: {
|
|
|
+ openingValue: 60,
|
|
|
+ },
|
|
|
+ sliderField: '',
|
|
|
+ sliderMin: 0,
|
|
|
+ sliderMax: 0,
|
|
|
+ timer: null,
|
|
|
+ valve_param_key: '',
|
|
|
};
|
|
|
},
|
|
|
-
|
|
|
methods: {
|
|
|
+ setPercentage(msg){
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ this.percentage += 1;
|
|
|
+ if(this.percentage >= 100){
|
|
|
+ this.percentage = 100;
|
|
|
+ uni.showToast({
|
|
|
+ title: msg,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ clearInterval(this.timer);
|
|
|
+ this.show4 = false;
|
|
|
+ this.percentage = 0;
|
|
|
+ this.eqlist();
|
|
|
+ }
|
|
|
+ }, 125);
|
|
|
+ },
|
|
|
+ getSignal(val){
|
|
|
+ if(val < 0){
|
|
|
+ return this.signal0;
|
|
|
+ }
|
|
|
+ if(val > 5){
|
|
|
+ return this.signal5;
|
|
|
+ }
|
|
|
+ return this['signal' + val];
|
|
|
+ },
|
|
|
+ confirmClose(){
|
|
|
+ this.closeValve();
|
|
|
+ },
|
|
|
+ cancelClose(){
|
|
|
+ this.show3 = false;
|
|
|
+ },
|
|
|
+ editHandle(openingValue,item,device){
|
|
|
+ this.valve_param_key = item.key;
|
|
|
+ this.current_device_id = device.id;
|
|
|
+ this.showPopup2 = true;
|
|
|
+ this.equipContrlForm.openingValue = openingValue;
|
|
|
+ },
|
|
|
+ changeHour(e){
|
|
|
+ this.hour = e[0].value
|
|
|
+ },
|
|
|
+ changeMinute(e){
|
|
|
+ this.minute = e[0].value
|
|
|
+ },
|
|
|
+ getProgressWidth(value, min, max) {
|
|
|
+ if (max === min) return 0
|
|
|
+ return ((value - min) / (max - min)) * 100
|
|
|
+ },
|
|
|
+ getModel(value){
|
|
|
+ return value == 0 ? false : true
|
|
|
+ },
|
|
|
+ async closeValve(){
|
|
|
+ const res = await this.$myRequest({
|
|
|
+ url: '/api/api_gateway?method=irrigation_system.valvecontrol.close_valvecontrol_valve',
|
|
|
+ method: 'POST',
|
|
|
+ data: {
|
|
|
+ device_id: this.current_device_id,
|
|
|
+ valve_param_key: this.valve_param_key
|
|
|
+ },
|
|
|
+ });
|
|
|
+ if(res.code == 0){
|
|
|
+ this.show4 = true;
|
|
|
+ this.setPercentage(res.message);
|
|
|
+ }else{
|
|
|
+ uni.showToast({
|
|
|
+ title: res?.message,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async setAction(data){
|
|
|
+ const res = await this.$myRequest({
|
|
|
+ url: '/api/api_gateway?method=irrigation_system.valvecontrol.open_valvecontrol_valve',
|
|
|
+ method: 'POST',
|
|
|
+ data,
|
|
|
+ });
|
|
|
+ if(res.code == 0){
|
|
|
+ this.show4 = true;
|
|
|
+ this.setPercentage(res.message);
|
|
|
+ }else{
|
|
|
+ uni.showToast({
|
|
|
+ title: res?.message,
|
|
|
+ icon: 'none',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onSliderTouchStart(e, field, min, max) {
|
|
|
+ this.sliderField = field
|
|
|
+ this.sliderMin = min
|
|
|
+ this.sliderMax = max
|
|
|
+ const query = uni.createSelectorQuery().in(this)
|
|
|
+ query.select('.custom-progress').boundingClientRect(rect => {
|
|
|
+ this.sliderRect = rect
|
|
|
+ }).exec()
|
|
|
+ this.updateSliderValue(e.touches[0].clientX, field, min, max)
|
|
|
+ },
|
|
|
+ onSliderTouchMove(e, min, max) {
|
|
|
+ if (!this.sliderField || !this.sliderRect) return
|
|
|
+ this.updateSliderValue(e.touches[0].clientX, this.sliderField, min, max)
|
|
|
+ },
|
|
|
+ onSliderTouchEnd() {
|
|
|
+ this.sliderField = ''
|
|
|
+ },
|
|
|
+ onSliderTap(e, field, min, max) {
|
|
|
+ const query = uni.createSelectorQuery().in(this)
|
|
|
+ query.select('.custom-progress').boundingClientRect(rect => {
|
|
|
+ this.sliderRect = rect
|
|
|
+ this.updateSliderValue(e.detail.x + rect.left, field, min, max)
|
|
|
+ }).exec()
|
|
|
+ },
|
|
|
+ updateSliderValue(clientX, field, min, max) {
|
|
|
+ if (!this.sliderRect) return
|
|
|
+ let ratio = (clientX - this.sliderRect.left) / this.sliderRect.width
|
|
|
+ ratio = Math.max(0, Math.min(1, ratio))
|
|
|
+ const value = Math.round(min + ratio * (max - min))
|
|
|
+ this.$set(this.equipContrlForm, field, value)
|
|
|
+ },
|
|
|
+ submit(){
|
|
|
+ this.setAction({
|
|
|
+ device_id: this.current_device_id,
|
|
|
+ valve_param_key: this.valve_param_key,
|
|
|
+ var_value: this.equipContrlForm.openingValue,
|
|
|
+ valve_delayed: this.value == 0 ? 0 : Number(this.hour) * 60 + Number(this.minute)
|
|
|
+ })
|
|
|
+ this.showPopup = false;
|
|
|
+ },
|
|
|
+ submit2(){
|
|
|
+ this.setAction({
|
|
|
+ device_id: this.current_device_id,
|
|
|
+ valve_param_key: this.valve_param_key,
|
|
|
+ var_value: this.equipContrlForm.openingValue,
|
|
|
+ })
|
|
|
+ this.showPopup2 = false;
|
|
|
+ },
|
|
|
+ getHours(){
|
|
|
+ for(let i = 0; i < 24; i++){
|
|
|
+ this.hours.push({
|
|
|
+ label: i + ' 时',
|
|
|
+ value: i,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getMinutes(){
|
|
|
+ for(let i = 0; i < 60; i++){
|
|
|
+ this.minutes.push({
|
|
|
+ label: i + ' 分',
|
|
|
+ value: i,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
isShow(item){
|
|
|
return item.pur_id != 422
|
|
|
},
|
|
|
@@ -167,6 +474,17 @@
|
|
|
this.type_id,
|
|
|
});
|
|
|
},
|
|
|
+ changeSwitchStatus(status,item,device){
|
|
|
+ this.valve_param_key = item.key;
|
|
|
+ this.current_device_id = device.id;
|
|
|
+ if(status == 0){
|
|
|
+ this.equipContrlForm.openingValue = 40;
|
|
|
+ this.showPopup = true;
|
|
|
+ this.currentRow = item;
|
|
|
+ }else{
|
|
|
+ this.show3 = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
changeStatus(status){
|
|
|
this.device_status = status;
|
|
|
Debounce(() => {
|
|
|
@@ -249,10 +567,19 @@
|
|
|
this.offline_counts = status.offline || 0;
|
|
|
this.counts = (status.online || 0) + (status.offline || 0);
|
|
|
this.total = res.total || 0;
|
|
|
+ const resData = res?.data;
|
|
|
+ resData.forEach(item=>{
|
|
|
+ if(item.type_id == 49 && item.valve_params.length){
|
|
|
+ item.valve_params.forEach(param=>{
|
|
|
+ param.switchValue = param.value == 0 ? false : true;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(resData,'resDasadsdss')
|
|
|
if (tf) {
|
|
|
- this.eqlistdata = this.eqlistdata.concat(res.data);
|
|
|
+ this.eqlistdata = this.eqlistdata.concat(resData);
|
|
|
} else {
|
|
|
- this.eqlistdata = res.data;
|
|
|
+ this.eqlistdata = resData;
|
|
|
}
|
|
|
},
|
|
|
change(index,itemData) {
|
|
|
@@ -321,8 +648,11 @@
|
|
|
},
|
|
|
historys(item) {
|
|
|
const type_id = item.type_id;
|
|
|
+ this.accessToken = uni.getStorageSync('session_key')
|
|
|
switch (type_id) {
|
|
|
// 水肥新设备
|
|
|
+ case 49:
|
|
|
+ return;
|
|
|
case 22:
|
|
|
var obj = {};
|
|
|
obj.d_id = item.d_id;
|
|
|
@@ -345,12 +675,6 @@
|
|
|
break;
|
|
|
case 2:
|
|
|
item.addtime = item.uptime;
|
|
|
- // uni.navigateTo({
|
|
|
- // url: '../prevention/equipmentdetails?shebei=' + JSON.stringify(item),
|
|
|
- // });
|
|
|
- // uni.navigateTo({
|
|
|
- // url: '../scd/detail?info=' + JSON.stringify(item),
|
|
|
- // });
|
|
|
if(item.device_model == 102){
|
|
|
uni.navigateTo({
|
|
|
url: '../scd/detail?info=' + JSON.stringify(item),
|
|
|
@@ -365,6 +689,8 @@
|
|
|
uni.navigateTo({
|
|
|
url: `../deviceDetails/weatherStation1/index?devBid=${item.id}&devName=${item.name}&devStatus=${item.status}&address=${item.address}&uptime=${item.uptime}&d_id=${item.d_id}&deviceType=46`,
|
|
|
});
|
|
|
+ break;
|
|
|
+
|
|
|
// var obj = {};
|
|
|
// obj.d_id = item.d_id;
|
|
|
// obj.equip_id = item.id;
|
|
|
@@ -442,10 +768,6 @@
|
|
|
case 34:
|
|
|
item.addtime = item.uptime;
|
|
|
item.type = item.type_id;
|
|
|
- // uni.navigateTo({
|
|
|
- // url: '../cb/equip-detail/equip-detail-new?info=' +
|
|
|
- // JSON.stringify(item),
|
|
|
- // });
|
|
|
let cmd = ''
|
|
|
if(type_id == 34){
|
|
|
cmd = 'sy1'
|
|
|
@@ -454,9 +776,7 @@
|
|
|
}
|
|
|
uni.navigateTo({
|
|
|
url: '../sy/detail?info=' +
|
|
|
- JSON.stringify(item) +
|
|
|
- '&cmd=' +
|
|
|
- cmd,
|
|
|
+ JSON.stringify(item) + '&cmd=' + cmd,
|
|
|
});
|
|
|
break;
|
|
|
case 7:
|
|
|
@@ -706,6 +1026,8 @@
|
|
|
},
|
|
|
},
|
|
|
onLoad() {
|
|
|
+ this.getHours();
|
|
|
+ this.getMinutes();
|
|
|
const that = this;
|
|
|
uni.$on('purId', (item) => {
|
|
|
that.pur_id = item.purId;
|
|
|
@@ -762,7 +1084,24 @@
|
|
|
page {
|
|
|
background: linear-gradient(180deg, #ffffff00 0%, #F5F6FA 23.64%, #F5F6FA 100%), linear-gradient(102deg, #BFEADD 6.77%, #B8F1E7 40.15%, #B9EEF5 84.02%);
|
|
|
}
|
|
|
-
|
|
|
+ ::v-deep .u-flex{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ .hour,.minute{
|
|
|
+ font-size: 28rpx;
|
|
|
+ color: #999999;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ border: 2rpx solid #aaa;
|
|
|
+ padding: 4rpx 8rpx;
|
|
|
+ margin-right: 8rpx;
|
|
|
+ height: 40rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 160rpx;
|
|
|
+ }
|
|
|
/deep/.uni-icons {
|
|
|
font-size: 40rpx !important;
|
|
|
}
|
|
|
@@ -790,6 +1129,54 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
+ .slider-container{
|
|
|
+ position: relative;
|
|
|
+ margin-top: 10rpx;
|
|
|
+ .slider-min-value{
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: -60rpx;
|
|
|
+ }
|
|
|
+ .slider{
|
|
|
+ width: 600rpx;
|
|
|
+ }
|
|
|
+ .slider-max-value{
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ top: -60rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .custom-progress{
|
|
|
+ width: 500rpx;
|
|
|
+ padding: 0;
|
|
|
+ .progress-track{
|
|
|
+ position: relative;
|
|
|
+ height: 12rpx;
|
|
|
+ background-color: #ebedf0;
|
|
|
+ border-radius: 6rpx;
|
|
|
+ }
|
|
|
+ .progress-fill{
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ height: 100%;
|
|
|
+ background-color: #0BBC58;
|
|
|
+ border-radius: 6rpx;
|
|
|
+ transition: width 0.2s;
|
|
|
+ }
|
|
|
+ .progress-thumb{
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ width: 28rpx;
|
|
|
+ height: 28rpx;
|
|
|
+ margin-left: -14rpx;
|
|
|
+ margin-top: -14rpx;
|
|
|
+ border-radius: 50%;
|
|
|
+ background-color: #fff;
|
|
|
+ box-shadow: 0 1px 4px rgba(0,0,0,0.3);
|
|
|
+ transition: left 0.2s;
|
|
|
+ }
|
|
|
+ }
|
|
|
.utabs_box {
|
|
|
width: 100%;
|
|
|
position: fixed;
|
|
|
@@ -802,7 +1189,22 @@
|
|
|
margin: 0 auto;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ .opening-container{
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+ .opening-min{
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ .opening-max{
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
.loading {
|
|
|
position: fixed;
|
|
|
top: 440px;
|
|
|
@@ -850,6 +1252,81 @@
|
|
|
text-align: center;
|
|
|
}
|
|
|
}
|
|
|
+ .action-list{
|
|
|
+ display: flex;
|
|
|
+ margin: 8px 0;
|
|
|
+ .action-item{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-right: 8px;
|
|
|
+ .item-icon{
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .action-container{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 16rpx;
|
|
|
+ .action-container-item{
|
|
|
+ flex:1;
|
|
|
+ height: 90rpx;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ background: #ffffff;
|
|
|
+ padding: 8rpx;
|
|
|
+ border: 2rpx solid #999999;
|
|
|
+ }
|
|
|
+ .action-container-container-item-active{
|
|
|
+ border: 2rpx solid #0BBC58;
|
|
|
+ }
|
|
|
+ .action-open{
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .item-number{
|
|
|
+ width: 30rpx;
|
|
|
+ height: 30rpx;
|
|
|
+ line-height: 30rpx;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 50%;
|
|
|
+ border: 2rpx solid #999999;
|
|
|
+ color: #999999;
|
|
|
+ font-size: 22rpx;
|
|
|
+ margin-right: 8rpx;
|
|
|
+ //超出部分省略号
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ .item-number-active{
|
|
|
+ border: 2rpx solid #0BBC58;
|
|
|
+ color: #0BBC58;
|
|
|
+ }
|
|
|
+ .action-open-value{
|
|
|
+ margin-top: 8rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ .item-icon{
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .progress-container{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ height:100%;
|
|
|
+ }
|
|
|
.tab {
|
|
|
// background-color: #0BBC58;
|
|
|
margin-top: 42rpx;
|
|
|
@@ -874,7 +1351,6 @@
|
|
|
background: linear-gradient(0deg, #0bbc580f 0%, #0bbc580f 100%), #00000005;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
.second-tab {
|
|
|
height: 80rpx;
|
|
|
.tab-item{
|
|
|
@@ -960,16 +1436,9 @@
|
|
|
.online-status{
|
|
|
font-size: 28rpx;
|
|
|
position: absolute;
|
|
|
- top:0rpx;
|
|
|
text-align: center;
|
|
|
- right: 8rpx;
|
|
|
+ right: 2rpx;
|
|
|
top: 2rpx;
|
|
|
- width: 76px;
|
|
|
- height: 28px;
|
|
|
- // line-height: 28px;
|
|
|
- // border-radius: 0px 0px 0px 26px;
|
|
|
-
|
|
|
- // border: 1px solid #ffffff;
|
|
|
image{
|
|
|
width: 140rpx;
|
|
|
height: 56rpx;
|
|
|
@@ -1009,7 +1478,7 @@
|
|
|
.list_item_text {
|
|
|
margin-top: 20rpx;
|
|
|
|
|
|
- p {
|
|
|
+ .p1 {
|
|
|
font-size: 24rpx;
|
|
|
color: #303133;
|
|
|
margin-top: 10rpx;
|