smartmeter-app/page_user/fztx.vue
2024-08-31 18:01:17 +08:00

258 lines
5.5 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="tip">
<view class="txt">
房租到期提醒
</view>
<u-switch v-model="checked" active-color="#8883F0" @change='changefz()'></u-switch>
</view>
<view class="tip">
<view class="tit">
开启后,发送通知到微信公众号
</view>
</view>
<view class="tip" style="margin-top: 62rpx;">
<view class="txt">
提醒方式
</view>
<transition name="slide-fade">
<view class="switch">
<view class="cont" :class="tipindex==1?'act':''" @click="changetip(1)">
单次
</view>
<view class="cont " :class="tipindex==2?'act':''" @click="changetip(2)">
每月
</view>
</view>
</transition>
</view>
<view class="tip" style="margin-top: 70rpx;">
<view class="txt">
提醒日期
</view>
<view class="txt" @click="show=true">
{{times}}
<view class="iconfont icon-xiangyou1" style="color: #C4C4C4;"></view>
</view>
</view>
<u-picker mode="time" v-model="show" :params="params" :default-time="defaultTime"
start-year='2024' @confirm='changetime()'></u-picker>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#F7FAFE",
},
checked: false,
tipindex: 0,
show: false,
params: {
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
times: '2024-1-26',
defaultTime: '',
id:'',
deviceInfo:{},
noticeWay:''
}
},
onReady() {
this.onPickerReady()
},
onLoad(option) {
console.log(option,'pppppppppp');
this.id=option.id
this.getDevice(this.id)
},
methods: {
changetime(e){
// console.log(e,'eee');
this.times = e.year + '-' + e.month + '-' + e.day;
let data ={
deviceId:this.id,
expireDate: this.times
}
this.putdevice(data)
console.log(this.times,'aaa');
},
changetip(index){
this.tipindex = index;
let data ={
deviceId:this.id,
noticeWay: this.tipindex
}
this.putdevice(data)
},
changefz() {
let data ={
deviceId:this.id,
enableExpireNotice: this.checked
}
this.putdevice(data)
},
getDevice(id){
this.$u.get("/app/device/"+this.id).then((res) => {
// this.$forceUpdate()
if (res.code == 200) {
this.deviceInfo=res.data
this.checked=this.deviceInfo.enableExpireNotice
this.tipindex=this.deviceInfo.noticeWay
if(this.deviceInfo.expireDate){
this.times=this.deviceInfo.expireDate
}
console.log(this.times);
// this.loadings=true
// this.initChart()
}
});
},
putdevice(data){
this.$u.put('/app/device',data).then((res) => {
if (res.code == 200) {
setTimeout(()=>{
this.getDevice()
},300)
uni.showToast({
title: '修改成功',
icon: 'none',
duration: 2000
});
}
})
},
onPickerReady() {
// 在onReady生命周期中设置默认时间为当前时间
this.setDefaultTime();
},
setDefaultTime() {
// 获取当前时间
const currentTime = new Date();
// 格式化时间,以符合 u-picker 组件的要求
const formattedTime = this.formatTime(currentTime);
// 设置默认时间
this.defaultTime = formattedTime;
console.log(this.defaultTime, 'defaultTime');
},
formatTime(time) {
// 实现一个函数,以符合所需的日期格式(年月日)
const year = time.getFullYear();
const month = (time.getMonth() + 1).toString().padStart(2, '0');
const day = time.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
},
}
}
</script>
<style lang="scss">
page {
background-color: #F7FAFE;
}
.page {
width: 750rpx;
.card {
padding: 62rpx 38rpx;
margin: 50rpx auto 0;
width: 654rpx;
height: 390rpx;
background: #FFFFFF;
border-radius: 30rpx;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
.tip {
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
.txt {
display: flex;
flex-wrap: nowrap;
align-items: center;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #000000;
}
.tit {
font-size: 24rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #808080;
}
.switch {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
padding: 0 10rpx;
width: 160rpx;
height: 60rpx;
background: #E5E5E5;
border-radius: 15rpx;
.cont {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
width: 80rpx;
height: 52rpx;
font-size: 24rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #383838;
transition: transform 0.3s ease;
}
.act {
border-radius: 10rpx;
background: #FFFFFF;
}
}
}
}
}
.slide-fade-enter-active,
.slide-fade-leave-active {
transition: all 0.3s ease;
}
.slide-fade-enter,
.slide-fade-leave-to {
transform: translateX(100%);
opacity: 0;
}
</style>