|
@@ -3,22 +3,22 @@
|
|
<cus-header title='智慧空调' bgColor='transparent'></cus-header>
|
|
<cus-header title='智慧空调' bgColor='transparent'></cus-header>
|
|
<image class="bg" :src="imgBase+'home/kongtiao_bg.png'" mode="widthFix"></image>
|
|
<image class="bg" :src="imgBase+'home/kongtiao_bg.png'" mode="widthFix"></image>
|
|
<div class="nums">
|
|
<div class="nums">
|
|
- <div class="pre">空调:<span class="mr">{{8}}</span></div>
|
|
|
|
- <div class="pre">正常:<span class="zc">{{20}}</span></div>
|
|
|
|
- <div class="pre">离线:<span class="lx">{{1}}</span></div>
|
|
|
|
|
|
+ <div class="pre">空调:<span class="mr">{{ktNum}}</span></div>
|
|
|
|
+ <div class="pre">正常:<span class="zc">{{zcNum}}</span></div>
|
|
|
|
+ <div class="pre">离线:<span class="lx">{{lxNum}}</span></div>
|
|
</div>
|
|
</div>
|
|
<div class="boxs" v-if="list.length">
|
|
<div class="boxs" v-if="list.length">
|
|
- <div class="box" v-for="(item,index) in list" :key="index" :class="bgcolorCfg[item.type]" @tap="showDetail(item)">
|
|
|
|
- <image :src="imgCfg[item.type]" class="type" mode="widthFix"></image>
|
|
|
|
- <div class="place">{{item.place}}</div>
|
|
|
|
- <div class="position">{{item.position}}</div>
|
|
|
|
- <div class="temperature" :class="{'off':item.status==2}">{{item.temperature}}℃</div>
|
|
|
|
|
|
+ <div class="box" v-for="(item,index) in list" :key="index" :style="{'background':modeCfg[item.attributeList[2].value].color}" @tap="showDetail(item,index)">
|
|
|
|
+ <image :src="modeCfg[item.attributeList[2].value].icon.split(';')[0]" class="type" mode="widthFix"></image>
|
|
|
|
+ <div class="place">{{item.installSite}}{{item.roomNumbers}}</div>
|
|
|
|
+ <div class="position">{{item.airConditionerName}}</div>
|
|
|
|
+ <div class="temperature" :class="{'off':item.opStatus==0}">{{item.attributeList[5].value}}℃</div>
|
|
<div class="text">温度</div>
|
|
<div class="text">温度</div>
|
|
- <div class="btn" v-if="item.status==1">
|
|
|
|
|
|
+ <div class="btn" v-if="item.opStatus==1" @tap.stop="switchOpenClose(1,item.deviceId, index,item.attributeList[3].sensorAddress)">
|
|
<div class="circle"></div>
|
|
<div class="circle"></div>
|
|
<text style="margin-left: 4rpx;">ON</text>
|
|
<text style="margin-left: 4rpx;">ON</text>
|
|
</div>
|
|
</div>
|
|
- <div class="btn" v-else-if="item.status==2">
|
|
|
|
|
|
+ <div class="btn" v-else-if="item.opStatus==0" @tap.stop="switchOpenClose(0,item.deviceId, index,item.attributeList[3].sensorAddress)">
|
|
<text style="margin-right: 4rpx;">OFF</text>
|
|
<text style="margin-right: 4rpx;">OFF</text>
|
|
<div class="circle off"></div>
|
|
<div class="circle off"></div>
|
|
</div>
|
|
</div>
|
|
@@ -33,8 +33,8 @@
|
|
<div class="left">
|
|
<div class="left">
|
|
<image :src="imgBase+'home/kongtiao_kt.png'"></image>
|
|
<image :src="imgBase+'home/kongtiao_kt.png'"></image>
|
|
<div class="addr">
|
|
<div class="addr">
|
|
- <text>{{ktInfo.place}}</text>
|
|
|
|
- <text class="ts">{{ktInfo.position}}</text>
|
|
|
|
|
|
+ <text>{{ktInfo.installSite}}{{ktInfo.roomNumbers}}</text>
|
|
|
|
+ <text class="ts">{{ktInfo.airConditionerName}}</text>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="right" @tap="ktClose">
|
|
<div class="right" @tap="ktClose">
|
|
@@ -42,45 +42,37 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<template v-if="!setShow">
|
|
<template v-if="!setShow">
|
|
- <image class="setting" :src="imgBase+'home/kongtiao_set.png'" @tap="setShow = true"></image>
|
|
|
|
|
|
+ <!-- <image class="setting" :src="imgBase+'home/kongtiao_set.png'" @tap="setShow = true"></image> -->
|
|
<div class="wendu">
|
|
<div class="wendu">
|
|
- <TemperatureControl :temperature="this.ktInfo.temperature" @changeTemperature="changeTemperature" ref="tcRef"></TemperatureControl>
|
|
|
|
|
|
+ <TemperatureControl :temperature="temperature" @changeTemperature="changeTemperature" ref="tcRef"></TemperatureControl>
|
|
</div>
|
|
</div>
|
|
- <div class="type">
|
|
|
|
- <div class="pre" :class="{'active':ktInfo.type==1}" @tap="changeType(1)">
|
|
|
|
- <image :src="imgBase+'home/kongtiao_zl_bai.png'" v-if="ktInfo.type==1"></image>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_zl_hui.png'" v-else></image>
|
|
|
|
- <text>制冷</text>
|
|
|
|
- </div>
|
|
|
|
- <div class="pre" :class="{'active':ktInfo.type==2}" @tap="changeType(2)">
|
|
|
|
- <image :src="imgBase+'home/kongtiao_zr_bai.png'" v-if="ktInfo.type==2"></image>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_zr_hui.png'" v-else></image>
|
|
|
|
- <text>制热</text>
|
|
|
|
- </div>
|
|
|
|
- <div class="pre" :class="{'active':ktInfo.type==3}" @tap="changeType(3)">
|
|
|
|
- <image :src="imgBase+'home/kongtiao_cs_bai.png'" v-if="ktInfo.type==3"></image>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_cs_hui.png'" v-else></image>
|
|
|
|
- <text>除湿</text>
|
|
|
|
- </div>
|
|
|
|
- <div class="pre" :class="{'active':ktInfo.type==4}" @tap="changeType(4)">
|
|
|
|
- <image :src="imgBase+'home/kongtiao_sf_bai.png'" v-if="ktInfo.type==4"></image>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_sf_hui.png'" v-else></image>
|
|
|
|
- <text>送风</text>
|
|
|
|
|
|
+ <div class="type" v-if="ktInfo.attributeList&&ktInfo.attributeList.length">
|
|
|
|
+ <div class="pre" v-for="item in modeList" :key="item.id" :style="{'width':'calc(100% / '+modeList.length+' - 20rpx)'}"
|
|
|
|
+ :class="{'active':temperature&&modeValue==item.dictValue}" @tap="changeType(item.dictValue)">
|
|
|
|
+ <image :src="item.icon.split(';')[2]" v-if="temperature&&modeValue==item.dictValue"></image>
|
|
|
|
+ <image :src="item.icon.split(';')[1]" v-else></image>
|
|
|
|
+ <text>{{item.dictLabel}}</text>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="speend">
|
|
<div class="speend">
|
|
<text>风速</text>
|
|
<text>风速</text>
|
|
<image class="jian" :src="imgBase+'home/kongtiao_jian.png'" @tap="changeWindSpeend(1)"></image>
|
|
<image class="jian" :src="imgBase+'home/kongtiao_jian.png'" @tap="changeWindSpeend(1)"></image>
|
|
- <div class="area">
|
|
|
|
- <div class="jd" :style="{'width':speend+'%'}"></div>
|
|
|
|
|
|
+ <div class="area" v-if="speendList.length">
|
|
|
|
+ <div class="pre" :class="{'active':temperature&&speendValue==item.dictValue}"
|
|
|
|
+ :style="{'width':'calc(100% / '+speendList.length+' - 3rpx)'}"
|
|
|
|
+ v-for="item in speendList" :key="item.id">
|
|
|
|
+ <div class="text" v-if="temperature&&speendValue==item.dictValue">{{item.dictLabel}}</div>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<image class="jia" :src="imgBase+'home/kongtiao_jia.png'" @tap="changeWindSpeend(2)"></image>
|
|
<image class="jia" :src="imgBase+'home/kongtiao_jia.png'" @tap="changeWindSpeend(2)"></image>
|
|
</div>
|
|
</div>
|
|
<div class="btns">
|
|
<div class="btns">
|
|
- <div class="btn" :class="{'blue':wtype==1}" @tap="changeWindFx(1)">左右扫风</div>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_open1.png'" v-if="ktInfo.status==1" @tap="control(1)"></image>
|
|
|
|
- <image :src="imgBase+'home/kongtiao_open2.png'" v-else-if="ktInfo.status==2" @tap="control(2)"></image>
|
|
|
|
- <div class="btn" :class="{'blue':wtype==2}" @tap="changeWindFx(2)">上下扫风</div>
|
|
|
|
|
|
+ <!-- <div class="btn" :class="{'blue':wtype==1}" @tap="changeWindFx(1)">左右扫风</div> -->
|
|
|
|
+ <div></div>
|
|
|
|
+ <image :src="imgBase+'home/kongtiao_open1.png'" v-if="ktInfo.opStatus==1" @tap="control(1)"></image>
|
|
|
|
+ <image :src="imgBase+'home/kongtiao_open2.png'" v-else-if="ktInfo.opStatus==0" @tap="control(0)"></image>
|
|
|
|
+ <!-- <div class="btn" :class="{'blue':wtype==2}" @tap="changeWindFx(2)">上下扫风</div> -->
|
|
|
|
+ <div></div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<template v-else>
|
|
<template v-else>
|
|
@@ -137,95 +129,114 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import TemperatureControl from '@/pagesHome/components/TemperatureControl/index.vue'
|
|
import TemperatureControl from '@/pagesHome/components/TemperatureControl/index.vue'
|
|
|
|
+ import pageEmpty from '@/components/pageEmpty/index.vue'
|
|
export default {
|
|
export default {
|
|
components:{
|
|
components:{
|
|
- TemperatureControl
|
|
|
|
|
|
+ TemperatureControl,
|
|
|
|
+ pageEmpty
|
|
},
|
|
},
|
|
data(){
|
|
data(){
|
|
return {
|
|
return {
|
|
- imgCfg:{
|
|
|
|
- 1:this.$imgBase+'home/kongtiao_cold.png',
|
|
|
|
- 2:this.$imgBase+'home/kongtiao_sun.png',
|
|
|
|
- 3:this.$imgBase+'home/kongtiao_water.png',
|
|
|
|
- 4:this.$imgBase+'home/kongtiao_wind.png'
|
|
|
|
- },
|
|
|
|
- bgcolorCfg:{
|
|
|
|
- 1:'cold',
|
|
|
|
- 2:'hot',
|
|
|
|
- 3:'water',
|
|
|
|
- 4:'wind'
|
|
|
|
|
|
+ ktNum:0,
|
|
|
|
+ zcNum:0,
|
|
|
|
+ lxNum:0,
|
|
|
|
+ params:{
|
|
|
|
+ page:1,
|
|
|
|
+ limit:9999,
|
|
|
|
+ controlCategory:'CommonLighting'
|
|
},
|
|
},
|
|
- list:[
|
|
|
|
- {
|
|
|
|
- place:'B#/13F1301',
|
|
|
|
- position:'传秀-指挥中心东',
|
|
|
|
- temperature:18,
|
|
|
|
- status:1,//1开启 2关闭
|
|
|
|
- type:1//1制冷 2制热 3除湿 4送风
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- place:'B#/13F1302',
|
|
|
|
- position:'传秀-指挥中心南',
|
|
|
|
- temperature:20.5,
|
|
|
|
- status:2,//1开启 2关闭
|
|
|
|
- type:3//1制冷 2制热 3除湿 4送风
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- place:'B#/13F1303',
|
|
|
|
- position:'传秀-指挥中心西',
|
|
|
|
- temperature:28,
|
|
|
|
- status:1,//1开启 2关闭
|
|
|
|
- type:4//1制冷 2制热 3除湿 4送风
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- place:'B#/13F1304',
|
|
|
|
- position:'传秀-指挥中心北',
|
|
|
|
- temperature:28,
|
|
|
|
- status:1,//1开启 2关闭
|
|
|
|
- type:2//1制冷 2制热 3除湿 4送风
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
|
|
+ modeList:[],
|
|
|
|
+ modeCfg:{},
|
|
|
|
+ modeValue:'',
|
|
|
|
+ speendList:[],
|
|
|
|
+ speendCfg:{},
|
|
|
|
+ speendValue:'',
|
|
|
|
+ ktStatus:'',
|
|
|
|
+ temperature:0,
|
|
|
|
+ list:[],
|
|
|
|
+ lIndex:'',
|
|
show:false,
|
|
show:false,
|
|
setShow:false,
|
|
setShow:false,
|
|
ktInfo:{},
|
|
ktInfo:{},
|
|
- speend:20,
|
|
|
|
wtype:1,
|
|
wtype:1,
|
|
|
|
+ canClick:true
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ async onLoad() {
|
|
|
|
+ await this.getModeList();
|
|
|
|
+ await this.getSpeendList();
|
|
|
|
+ this.getList();
|
|
|
|
+ },
|
|
|
|
+ onPullDownRefresh() {
|
|
|
|
+ this.getList();
|
|
|
|
+ },
|
|
methods:{
|
|
methods:{
|
|
- showDetail(item){
|
|
|
|
|
|
+ async getModeList(){
|
|
|
|
+ let res = await this.$api.get('/sys/dict/data/getListByType/air_mode');
|
|
|
|
+ if(res.data.code===0){
|
|
|
|
+ this.modeList = res.data.data;
|
|
|
|
+ res.data.data.map(d=>this.modeCfg[d.dictValue]=d);
|
|
|
|
+ }else this.$showToast(res.data.msg)
|
|
|
|
+ },
|
|
|
|
+ async getSpeendList(){
|
|
|
|
+ let res = await this.$api.get('/sys/dict/data/getListByType/air_fan');
|
|
|
|
+ if(res.data.code===0){
|
|
|
|
+ this.speendList = res.data.data;
|
|
|
|
+ res.data.data.map(d=>this.speendCfg[d.dictValue]=d);
|
|
|
|
+ }else this.$showToast(res.data.msg)
|
|
|
|
+ },
|
|
|
|
+ getList(){
|
|
|
|
+ this.$api.get('/airconditioner/page',this.params).then(res=>{
|
|
|
|
+ if(res.data.code===0){
|
|
|
|
+ this.list = res.data.data.list;
|
|
|
|
+ this.ktNum = res.data.data.total;
|
|
|
|
+ this.zcNum = this.list.filter(l=>l.opStatus==1).length;
|
|
|
|
+ this.lxNum = this.list.filter(l=>l.opStatus==0).length;
|
|
|
|
+ }else this.$showToast(res.data.msg)
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ showDetail(item,index){
|
|
this.ktInfo = JSON.parse(JSON.stringify(item));
|
|
this.ktInfo = JSON.parse(JSON.stringify(item));
|
|
- if(item.status==2){
|
|
|
|
- this.speend = 0;
|
|
|
|
- this.wtype = '';
|
|
|
|
- this.ktInfo.type = '';
|
|
|
|
- }
|
|
|
|
|
|
+ this.ktStatus = item.opStatus;
|
|
|
|
+ this.modeValue = this.ktInfo.attributeList[2].value;
|
|
|
|
+ this.temperature = this.ktInfo.attributeList[5].value;
|
|
|
|
+ this.speendValue = this.ktInfo.attributeList[0].value;
|
|
|
|
+ this.lIndex = index;
|
|
|
|
+
|
|
this.show = true;
|
|
this.show = true;
|
|
- this.$refs.tcRef.sjTemperature = item.temperature;
|
|
|
|
|
|
+ this.$refs.tcRef.status = this.ktStatus;
|
|
|
|
+ this.$refs.tcRef.sjTemperature = this.temperature;
|
|
this.$refs.tcRef.init();
|
|
this.$refs.tcRef.init();
|
|
},
|
|
},
|
|
changeType(type){
|
|
changeType(type){
|
|
- if(this.ktInfo.status==2) return
|
|
|
|
- this.ktInfo.type = type;
|
|
|
|
|
|
+ if(this.ktInfo.opStatus==0) return
|
|
|
|
+ if(this.modeValue == type) return
|
|
|
|
+ this.modeValue = type;
|
|
|
|
+ this.updateAirConditioner(type,this.ktInfo.attributeList[2].sensorAddress)
|
|
},
|
|
},
|
|
changeWindSpeend(type){
|
|
changeWindSpeend(type){
|
|
- if(this.ktInfo.status==2) return
|
|
|
|
- if(type==1){
|
|
|
|
- if(this.speend<=20) return
|
|
|
|
- this.speend-=20;
|
|
|
|
- }else if(type==2){
|
|
|
|
- if(this.speend==100) return
|
|
|
|
- this.speend+=20;
|
|
|
|
|
|
+ if(this.ktInfo.opStatus==0) return
|
|
|
|
+ let idx = this.speendList.findIndex(s=>s.dictValue==this.speendValue)
|
|
|
|
+
|
|
|
|
+ if(idx>-1){
|
|
|
|
+ if(type==1){
|
|
|
|
+ if(idx==0) return
|
|
|
|
+ this.speendValue = this.speendList[idx-1].dictValue;
|
|
|
|
+ }else if(type==2){
|
|
|
|
+ if(idx==this.speendList.length-1) return
|
|
|
|
+ this.speendValue = this.speendList[idx+1].dictValue;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ this.updateAirConditioner(this.speendValue,this.ktInfo.attributeList[0].sensorAddress)
|
|
},
|
|
},
|
|
- changeWindFx(type){
|
|
|
|
- if(this.ktInfo.status==2) return
|
|
|
|
- this.wtype = type;
|
|
|
|
- },
|
|
|
|
- control(type){
|
|
|
|
- this.show = false;
|
|
|
|
|
|
+ // changeWindFx(type){
|
|
|
|
+ // if(this.ktInfo.opStatus==0) return
|
|
|
|
+ // },
|
|
|
|
+ control(status){
|
|
|
|
+ this.openCloseAirConditioner(status,this.ktInfo.deviceId,this.lIndex,this.ktInfo.attributeList[3].sensorAddress);
|
|
},
|
|
},
|
|
ktClose(){
|
|
ktClose(){
|
|
|
|
+ this.ktInfo = {};
|
|
this.setShow = false;
|
|
this.setShow = false;
|
|
this.show = false;
|
|
this.show = false;
|
|
},
|
|
},
|
|
@@ -233,7 +244,56 @@
|
|
this.setShow = false;
|
|
this.setShow = false;
|
|
},
|
|
},
|
|
changeTemperature(temperature){
|
|
changeTemperature(temperature){
|
|
- console.log(temperature,'temperature');
|
|
|
|
|
|
+ this.updateAirConditioner(temperature,this.ktInfo.attributeList[5].sensorAddress)
|
|
|
|
+ },
|
|
|
|
+ switchOpenClose(status,deviceId,index,identifier){
|
|
|
|
+ this.openCloseAirConditioner(status,deviceId,index,identifier);
|
|
|
|
+ },
|
|
|
|
+ openCloseAirConditioner(status,deviceId,index,identifier){
|
|
|
|
+ let msg = status?'关闭':'开启';
|
|
|
|
+ uni.showModal({
|
|
|
|
+ title:'温馨提示',
|
|
|
|
+ content:`是否确认【${msg}】此设备`,
|
|
|
|
+ success: (res) => {
|
|
|
|
+ if(res.confirm){
|
|
|
|
+ this.$api.post('/airconditioner/command',{
|
|
|
|
+ identifier,
|
|
|
|
+ action: 0,
|
|
|
|
+ value: status? 0 : 1,
|
|
|
|
+ deviceId,
|
|
|
|
+ }).then(resu=>{
|
|
|
|
+ if(resu.data.code===0){
|
|
|
|
+ this.show = false;
|
|
|
|
+ this.$showToast('操作成功');
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ this.getList();
|
|
|
|
+ },3000)
|
|
|
|
+ }else this.$showToast(resu.data.msg)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ updateAirConditioner(value, identifier){
|
|
|
|
+ if(!this.canClick) return
|
|
|
|
+ this.canClick = false;
|
|
|
|
+ this.$api.post('/airconditioner/command',{
|
|
|
|
+ action: 0,
|
|
|
|
+ identifier,
|
|
|
|
+ value,
|
|
|
|
+ deviceId:this.ktInfo.deviceId,
|
|
|
|
+ }).then(resu=>{
|
|
|
|
+ if(resu.data.code===0){
|
|
|
|
+ this.show = false;
|
|
|
|
+ this.$showToast('操作成功');
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ this.getList();
|
|
|
|
+ },3000)
|
|
|
|
+ }else this.$showToast(resu.data.msg)
|
|
|
|
+ this.canClick = true;
|
|
|
|
+ }).catch(err=>{
|
|
|
|
+ this.canClick = true;
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -304,18 +364,6 @@
|
|
padding: 32rpx 21rpx 42rpx 29rpx;
|
|
padding: 32rpx 21rpx 42rpx 29rpx;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
position: relative;
|
|
- &.cold{
|
|
|
|
- background: linear-gradient( 180deg, #D7EBFF 0%, #FFFFFF 100%);
|
|
|
|
- }
|
|
|
|
- &.hot{
|
|
|
|
- background: linear-gradient( 180deg, #FFE7E4 0%, #FFFFFF 100%);
|
|
|
|
- }
|
|
|
|
- &.water{
|
|
|
|
- background: linear-gradient( 180deg, #ECF2F7 0%, #FFFFFF 100%);
|
|
|
|
- }
|
|
|
|
- &.wind{
|
|
|
|
- background: linear-gradient( 180deg, #ECF2F7 0%, #FFFFFF 100%);
|
|
|
|
- }
|
|
|
|
|
|
|
|
.type{
|
|
.type{
|
|
width: 164rpx;
|
|
width: 164rpx;
|
|
@@ -452,7 +500,6 @@
|
|
justify-content: space-around;
|
|
justify-content: space-around;
|
|
margin-top: 20rpx;
|
|
margin-top: 20rpx;
|
|
.pre{
|
|
.pre{
|
|
- width: calc(25% - 20rpx);
|
|
|
|
margin: 0 10rpx;
|
|
margin: 0 10rpx;
|
|
padding: 36rpx 0;
|
|
padding: 36rpx 0;
|
|
display: flex;
|
|
display: flex;
|
|
@@ -507,17 +554,28 @@
|
|
.area{
|
|
.area{
|
|
width: calc(100% - 200rpx);
|
|
width: calc(100% - 200rpx);
|
|
height: 20rpx;
|
|
height: 20rpx;
|
|
- background: #EDF4FF;
|
|
|
|
border-radius: 16rpx;
|
|
border-radius: 16rpx;
|
|
- position: relative;
|
|
|
|
- .jd{
|
|
|
|
- height: 100%;
|
|
|
|
- border-radius: 16rpx;
|
|
|
|
- background: linear-gradient( 90deg, #3A8DFF 0%, #0BC6FF 100%);
|
|
|
|
- box-shadow: 0rpx 4rpx 16rpx 4rpx #EFEFEF;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 0;
|
|
|
|
- top: 0;
|
|
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ .pre{
|
|
|
|
+ height: 20rpx;
|
|
|
|
+ background: #EDF4FF;
|
|
|
|
+ position: relative;
|
|
|
|
+ &.active{
|
|
|
|
+ background: linear-gradient( 90deg, #3A8DFF 0%, #0BC6FF 100%);
|
|
|
|
+ box-shadow: 0rpx 4rpx 16rpx 4rpx #EFEFEF;
|
|
|
|
+ }
|
|
|
|
+ .text{
|
|
|
|
+ width: 100%;
|
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ color: #86909C;
|
|
|
|
+ line-height: 33rpx;
|
|
|
|
+ text-align: center;
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: -33rpx;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|