smartmeter-app/pages/shebei/setting.vue
2024-08-31 18:01:17 +08:00

533 lines
11 KiB
Vue

<template>
<view class="page">
<u-navbar title="设置" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
height='36'></u-navbar>
<view class="card">
<view class="li" @click.stop="sremake()">
<view class="tit">
备注
</view>
<view class="info">
<view class="txt" v-if="deviceInfo.remark">
{{deviceInfo.remark}}
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view>
<view class="li" @click="showfz=true">
<view class="tit">
分组
</view>
<view class="info">
<view class="txt">
{{deviceInfo.groupName}}
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view>
<view class="li" @click="sprice()">
<view class="tit">
电价设置
</view>
<view class="info">
<view class="txt">
{{deviceInfo.price}}元/度
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view>
<view class="li" @click="show=true">
<view class="tit">
欠费断电
</view>
<view class="info">
<view class="txt" v-if="deviceInfo.outageWay==1">
欠费断电
</view>
<view class="txt" v-if="deviceInfo.outageWay==0">
欠费不断电
</view>
<view class="iconfont icon-xiangyou1"></view>
</view>
</view>
<view class="li">
<view class="tit">
S/N
</view>
<view class="info">
<view class="txt">
{{deviceInfo.mac}}
</view>
<!-- <view class="iconfont icon-xiangyou1"></view> -->
</view>
</view>
<view class="li">
<view class="tit">
类型
</view>
<view class="info">
<view class="txt">
{{deviceInfo.model}}
</view>
<!-- <view class="iconfont icon-xiangyou1"></view> -->
</view>
</view>
<view class="li" v-if="false">
<view class="tit">
Wifi配网
</view>
<view class="info">
<view class="txt">
{{deviceInfo.wifi}}
</view>
<!-- <view class="iconfont icon-xiangyou1"></view> -->
</view>
</view>
</view>
<u-mask :show="showloading"></u-mask>
<u-mask :show="showfz"></u-mask>
<view class="fz" v-show="showfz" >
<view class="fz_top">
<view class="iconfont icon-shanchu" @click="showfz=false">
</view>
<view class="tit">
设备分组
</view>
<view class="txt" @click="tosetpage()">
管理
</view>
</view>
<view class="card_cont">
<view class="cards" v-for="(item,index) in groupList" :key="index" @click="changeGp(item)">
<view class="txt">
{{item.groupName}}
</view>
<view class="num">
{{item.deviceCount}}
</view>
</view>
<view class="zhanwei" style="width: 100%;height: 100rpx;">
</view>
</view>
</view>
<view class="dd">
<u-select v-model="show" :list="list" title='欠费断电' @confirm="confirm" ></u-select>
</view>
<u-popup v-model="showpopup" mode="center" border-radius='20'>
<view class="popcard" v-if="showremake">
<view class="tit">
修改备注
</view>
<view class="ipt">
<u-input v-model="remake" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;' />
</view>
<view class="btnbox">
<view class="btn2" @click="close()">
取消
</view>
<view class="btn1" @click="sub(1)">
确定
</view>
</view>
</view>
<view class="popcard" v-if="showpeice" >
<view class="tit">
电价设置
</view>
<view class="ipt">
<u-input v-model="price" placeholder=" " border='surround' placeholder-style='font-size: 24rpx;'/>
</view>
<view class="btnbox">
<view class="btn2" @click="close()">
取消
</view>
<view class="btn1" @click="sub(2)">
确定
</view>
</view>
</view>
</u-popup>
<view class="btn" @click="deldevice()">
解除绑定
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#F7FAFE",
},
showloading: false,
showfz: false,
show: false,
list: [{
value: '1',
label: '欠费立即断电'
},
{
value: '0',
label: '欠费不断电'
}
],
id:'',
deviceInfo:{},
groupList:{},
showpopup:false,
remake:'',
price:'',
showpeice:false,
showremake:false,
}
},
onLoad(option) {
let id = option.id
this.id=id
this.getDevice(id)
},
onShow() {
this.getgroup()
},
methods: {
changeGp(item){
console.log(item,'changeGp');
let data ={
deviceId:this.id,
groupId: item.groupId
}
this.putdevice(data)
this.showfz=false
setTimeout(()=>{
this.getgroup()
},1000)
},
tosetpage(){
this.showfz=false
uni.navigateTo({
url:'/pages/shebei/fenzu'
})
},
sub(num){
if(num==1){
let data ={
deviceId:this.id,
remark:this.remake
}
this.showpopup=false
this.showremake=false
this.putdevice(data)
}else if(num==2){
let data ={
deviceId:this.id,
price:this.price
}
this.showpopup=false
this.showpeice=false
this.putdevice(data)
}
},
deldevice(){
this.$u.delete('/app/device/landlord/unbind/'+this.id).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '解除成功',
icon: 'none',
duration: 2000
});
uni.navigateBack({
delta: 2 // 返回上级页面
});
}
})
},
confirm(e){
let data ={
deviceId:this.id,
outageWay: e[0].value
}
this.putdevice(data)
},
putdevice(data){
this.$u.put('/app/device',data).then((res) => {
if (res.code == 200) {
this.getDevice()
uni.showToast({
title: '修改成功',
icon: 'none',
duration: 2000
});
}
})
},
sremake(){
this.showpopup=true
this.showremake=true
},
sprice(){
this.showpopup=true
this.showpeice=true
},
close() {
this.showpeice=false
this.showremake=false
this.showpopup=false
},
getDevice(id){
this.$u.get("/app/device/"+this.id).then((res) => {
// this.$forceUpdate()
if (res.code == 200) {
this.deviceInfo=res.data
console.log(this.deviceInfo,'resres');
this.price=this.deviceInfo.price
this.remake=this.deviceInfo.remark
// this.loadings=true
// this.initChart()
}
});
},
getgroup(){
this.$u.get("/app/group/list").then((res) => {
// this.$forceUpdate()
if (res.code == 200) {
this.groupList=res.rows
// this.loadings=true
// this.initChart()
}
});
}
}
}
</script>
<style lang="scss">
page {
background-color: #F7FAFE;
}
.page {
width: 750rpx;
.popcard{
display: flex;
justify-content: center;
flex-wrap: wrap;
// padding: 40rpx;
width: 550rpx;
height: 400rpx;
border-radius: 20rpx;
.tit{
display: flex;
justify-content: center;
width: 100%;
align-items: center;
font-size: 28rpx;
font-weight: 700;
}
.ipt{
margin-top: 60rpx;
width: 80%;
// width: 60%;
.u-input::placeholder {
font-size: 20px;
color: red;
}
}
.btnbox{
width: 100%;
display: flex;
flex-wrap: nowrap;
border-radius: 0 0 20rpx 20rpx;
.btn2{
display: flex;
align-items: center;
justify-content: center;
width: 50%;
// justify-content: center;
// width: 200rpx;
// height: 70rpx;
// border-radius: 20rpx;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #FFFFFF;
background-color: #2A82E4;
}
.btn1{
display: flex;
align-items: center;
justify-content: center;
width: 50%;
// justify-content: center;
// width: 200rpx;
// height: 70rpx;
// border-radius: 20rpx;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #000;
background-color: #fff;
border: 1rpx solid #ccc;
}
}
}
.card {
padding: 16rpx 38rpx;
margin: 60rpx auto 0;
width: 654rpx;
// height: 734rpx;
background: #FFFFFF;
border-radius: 30rpx;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
opacity: 1;
.li {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
height: 94rpx;
border-bottom: #E5E5E5 solid 2rpx;
.tit {
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #000000;
}
.info {
display: flex;
flex-wrap: nowrap;
align-items: center;
.txt {
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #95989D;
}
.icon-xiangyou1 {
margin-left: 6rpx;
color: #95989D;
}
}
}
}
.btn {
display: flex;
align-items: center;
justify-content: center;
margin: 52rpx auto 0;
width: 654rpx;
height: 100rpx;
background: #FF4F4F;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
opacity: 1;
border-radius: 30rpx;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #FFFFFF;
}
.fz {
position: fixed;
bottom: 0;
width: 750rpx;
height: 1152rpx;
background: #F7FAFE;
border-radius: 30rpx 30rpx 0 0;
z-index: 10071;
.fz_top {
margin: 18rpx 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
.icon-shanchu {
margin-left: 40rpx;
font-size: 50rpx;
}
.tit {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
.txt {
margin-right: 40rpx;
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #2A82E4;
}
}
.card_cont {
width: 750rpx;
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: center;
// height: 1030rpx;
overflow-y: auto;
overflow-x: hidden;
.cards {
margin-top: 32rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
padding: 0 40rpx;
width: 682rpx;
border-radius: 30rpx;
height: 114rpx;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
.txt {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
.num {
font-size: 36rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
}
}
}
}
}
</style>