smartswrtch-app/pages/shouye/index.vue
2024-05-24 16:48:42 +08:00

673 lines
14 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="page">
<!-- 用户首页显示 -->
<view class="useryonghu">
<u-navbar :is-back="false" title="首页" :border-bottom="false" :background="bgc" title-color='#fff'
title-size='44' height='58'></u-navbar>
<view class="ditu">
<view class="dtxs">
<map class='map' :latitude="latitude" :longitude="longitude" @markertap="handleMarkerClick"
@scale="onMapScaleChange" :show-location="true" :markers="covers" :scale="mapScale" />
</view>
<view class="fujin">
<image src="https://api.ccttiot.com/smartmeter/img/static/u7HPhEwbIJqbLRpImBON" mode=""
@click="btnindex(5)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uGVN2tOaCq2hiWKy1cYl" mode=""
@click="btnindex(6)" v-if="isMch"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uzSmYNgLYJRMEmo4TWyA" mode=""
@click="btnindex(7)"
style="width: 58rpx;height: 58rpx;position: fixed;top: 940rpx;right: 60rpx;"></image>
</view>
<view class="tubiao">
<view class="gr" @click="btnindex(1)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJBKoGWpRH2lM1NpQU0I" mode=""
style="width: 96rpx;height:98rpx;"></image>
<!-- 个人中心 -->
</view>
<view class="gr" @click="btnindex(2)">
<image src="https://api.ccttiot.com/smartmeter/img/static/u8rWtdPtHabALkII23Zr" mode=""
style="width: 96rpx;height:102rpx;"></image>
<!-- 我的订单 -->
</view>
<view class="gr" @click="btnindex(3)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uphoDfOVnT6VEyj6glfF" mode=""
style="width: 96rpx;height:98rpx;"></image>
<!-- 附近门店 -->
</view>
<view class="gr" @click="btnindex(4)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uBN46m7mPVlbbPth80FC" mode=""
style="width: 96rpx;height:94rpx;"></image>
<!-- 联系客服 -->
</view>
</view>
<view class="guangg">
<image :src="imgad" mode=""></image>
</view>
<view class="saoma" @click="scanQRCode">
<view>
<image src="https://api.ccttiot.com/smartmeter/img/static/uBh15vzRx6gV0wRQj7gi" mode=""></image>
扫一扫
</view>
</view>
</view>
<view class="tip_box" v-if="czflag">
<view class="top">
<view class="txt">
系统检测到您的设备未联网或者为蓝牙版本,金额充值失败,请靠近设备进行蓝牙充值
</view>
</view>
<view class="bot">
<view class="bot_left" @click="czflag = false">
取消
</view>
<view class="bot_right" @click="tocz()">
蓝牙充值
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
params: {
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
dateindex: 1,
latitude: '', // 初始纬度
longitude: '', // 初始经度
covers: [], // 覆盖物数组
jinweidu: '',
userType: '',
isMch: false,
imgad: '',
mapScale: 15,
czflag:false,
datetime:0,
dingobj:''
};
},
onLoad() {
// this.initOtherCovers(); // 初始化其他覆盖物
},
onShow() {
this.logins();
this.getad()
this.gethuidaio()
},
methods: {
onMapScaleChange(e) {
// console.log(this.covers,'eeeeeeeee');
this.mapScale = e.detail.scale; // 更新当前缩放级别
this.getMyLocation()
// this.covers.forEach(marker => {
// marker.label.content = this.mapScale > 13 ? marker.label.content : '';
// });
},
scanQRCode() {
uni.scanCode({
onlyFromCamera: true,
scanType: ['qrCode'],
success: res => {
// console.log('扫描结果:', res);
let id = res.result
this.$u.get(`/app/device/${res.result}/withSuitList`).then((res) => {
if (res.code == 200) {
uni.navigateTo({
url: '/page_components/fuwu/index?id=' + id
})
}
})
},
fail: err => {
console.error('扫描失败:', err);
uni.showToast({
title: '扫描失败',
icon: 'none'
});
}
});
},
getad() {
this.$u.get("/app/ad").then((res) => {
if (res.code == 200) {
this.imgad = res.data.picture
}
})
},
btnindex(num) {
if (num == 2) {
uni.navigateTo({
url: '/page_fenbao/statulist/question/index'
})
} else if (num == 3) {
uni.navigateTo({
url: '/page_fenbao/statulist/about/index'
})
} else if (num == 1) {
uni.navigateTo({
url: '/page_fenbao/statulist/myorder/index'
})
} else if (num == 4) {
uni.navigateTo({
url: '/page_fenbao/statulist/merchant/index'
})
} else if (num == 5) {
uni.navigateTo({
url: '/page_fenbao/statulist/nearby/index'
})
} else if (num == 6) {
uni.switchTab({
url: '/pages/index/index'
})
} else if (num == 7) {
uni.navigateTo({
url: '/page_fenbao/statulist/fault/yichang/index'
})
}
},
getMyLocation() {
uni.getLocation({
type: 'wgs84',
success: (res) => {
// console.log('我的位置:', res);
this.latitude = res.latitude;
this.longitude = res.longitude;
this.jinweidu = this.longitude + ',' + this.latitude;
// 请求附近的店铺
this.$u.get("/app/store/listNearBy?center=" + this.jinweidu + '&radius=' + 1000).then(
res => {
if (res.code == 200) {
// console.log(res);
// 假设返回的店铺数据在res.rows中并且每个店铺有latitude和longitude字段
res.data.forEach(item => {
const shopCover = {
id: parseFloat(item.storeId),
latitude: item.lat,
longitude: item.lng,
width: 25,
height: 30,
iconPath: 'https://api.ccttiot.com/smartmeter/img/static/uZXgsJE6hXbRSwbKILB4', // 你可以为每个店铺指定不同的图标
label: {
content: item.name,
// anchorX:-20,
textAlign: 'center'
}
};
this.covers.push(shopCover); // 将店铺覆盖物添加到数组中
});
}
});
},
fail: (err) => {
console.error('获取位置失败:', err);
}
});
},
handleMarkerClick(event) {
// console.log(event);
const markerId = event.markerId;
uni.navigateTo({
url: '/page_user/mapditu/index?markerId=' + markerId
})
},
logins() {
if (uni.getStorageSync('userType')) {
this.userType = uni.getStorageSync('userType')
this.userType = '01'
if (this.userType == '01') {
this.getDeviceList()
} else if (this.userType == '00') {
this.getdevice()
}
} else {
}
this.getuserinfo()
},
getuserinfo() {
this.$u.get("/app/user/userInfo").then((res) => {
if (res.code == 200) {
this.isMch = res.data.isMch
uni.setStorageSync('userType', res.data.userType)
this.userType = res.data.userType
if (this.userType == '01') {
this.getDeviceList()
} else if (this.userType == '00') {
this.getdevice()
}
} else {
this.jmlogin()
}
});
},
jmlogin() {
let taht = this
wx.login({
success(res) {
if (res.code) {
let data = {
loginCode: res.code,
};
taht.$u.post('/app/auth/wxLogin', data).then(res => {
if (res.code == 10003) {
// uni.navigateTo({
// url: '/pages/login/login'
// })
} else if (res.code == 200) {
uni.setStorageSync('token', res.token);
taht.logins()
}
});
}
},
});
},
gethuidaio(){
this.$u.get('/app/bill/recharge/device/fail/list').then(res => {
if(res.code == 200){
if(res.data.length > 0){
this.czflag = true
this.dingobj = res.data
}else{
uni.removeStorageSync('time')
}
}
})
},
tocz(){
this.czflag = false
uni.navigateTo({
url:'/page_fenbao/chongzhi?dingobj=' + JSON.stringify(this.dingobj)
})
},
},
mounted() {
this.getMyLocation(); // 获取并设置自身位置的覆盖物
}
};
</script>
<style lang="scss">
/deep/ .u-title{
padding-bottom: 41rpx;
}
/deep/ .u-icon__icon{
padding-bottom: 41rpx;
}
/deep/ .map {
width: 100%;
height: 100%;
}
.dateactive {
background: #E1F3ED;
}
page {
// background-color: ;
background: linear-gradient(180deg, #8883F0 0%, rgba(255, 255, 255, 0) 100%);
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.page {
width: 750rpx;
padding-left: 34rpx;
padding-right: 34rpx;
box-sizing: border-box;
height: 100%;
// 代理样式
.tip_box{
position: fixed;
left: 72rpx;
top: 700rpx;
width: 610rpx;
background: #F7FAFE;
border-radius: 30rpx 30rpx 30rpx 30rpx;
z-index: 10000000;
.top{
padding: 52rpx 38rpx 42rpx 36rpx;
.txt{
width: 100%;
text-align: center;
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
}
}
.bot{
border-top: 2rpx solid #D8D8D8 ;
display: flex;
flex-wrap: nowrap;
height: 100%;
.bot_left{
width: 50%;
height: 98rpx;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
font-size: 36rpx;
color: #3D3D3D;
}
.bot_right{
width: 50%;
height: 98rpx;
display: flex;
align-items: center;
justify-content: center;
border-left: 2rpx solid #D8D8D8 ;
font-weight: 500;
font-size: 36rpx;
color: #8883F0;
}
}
}
.userdaili {
.gongneng {
width: 680rpx;
height: 304rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
padding: 0 50rpx;
box-sizing: border-box;
.icons {
display: inline-block;
width: 145rpx;
text-align: center;
image {
margin-top: 34rpx;
width: 50px;
height: 50px;
}
}
}
.ordertongji {
width: 680rpx;
height: 342rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.shuju {
display: flex;
justify-content: space-between;
padding: 0 40rpx;
box-sizing: border-box;
margin-top: 24rpx;
.ddje {
text-align: center;
.shu {
font-weight: 500;
font-size: 40rpx;
color: #3D3D3D;
}
.sb {
margin-top: 20rpx;
font-weight: 500;
font-size: 20rpx;
color: #3D3D3D;
}
}
}
.date {
padding-left: 80rpx;
padding-right: 80rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
margin-top: 26rpx;
text {
padding: 6rpx 18rpx;
box-sizing: border-box;
background: #eee;
border-radius: 10rpx 10rpx 10rpx 10rpx;
font-size: 24rpx;
color: #808080;
}
}
.orderday {
display: flex;
justify-content: space-between;
width: 100%;
padding: 10rpx 12rpx;
box-sizing: border-box;
text {
margin-right: 10rpx;
border-radius: 20rpx;
text-align: center;
display: inline-block;
width: 148rpx;
height: 84rpx;
text-align: center;
line-height: 84rpx;
}
}
}
.dttitle {
margin: 36rpx 0;
font-weight: 500;
font-size: 36rpx;
color: #3D3D3D;
}
.zhanghu {
margin-top: 32rpx;
width: 680rpx;
height: 264rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
padding: 36rpx 38rpx;
box-sizing: border-box;
.zhtitle {
display: flex;
justify-content: space-between;
.sj {
display: flex;
justify-content: space-between;
text {
font-size: 24rpx;
color: #3D3D3D;
}
}
.tx {
font-size: 24rpx;
color: #27D089;
}
}
.zhje {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
border-bottom: 1px solid #ccc;
padding-bottom: 20rpx;
text {
font-weight: 500;
font-size: 48rpx;
color: #3D3D3D;
}
.btntx {
width: 156rpx;
height: 42rpx;
background: linear-gradient(270deg, #54DAA1 0%, #19CD82 100%);
border-radius: 40rpx 40rpx 40rpx 40rpx;
font-size: 24rpx;
color: #FFFFFF;
text-align: center;
line-height: 42rpx;
margin-top: 10rpx;
}
}
.buc {
margin-top: 20rpx;
font-size: 24rpx;
color: #979797;
}
}
}
//样式结束
.title {
font-weight: 500;
font-size: 36rpx;
color: #3D3D3D;
line-height: 50rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.guangg {
image {
border-radius: 30rpx;
width: 680rpx;
height: 238rpx;
}
}
.saoma {
width: 750rpx;
height: 186rpx;
background: #FFFFFF;
position: fixed;
bottom: 0;
left: 0;
padding-top: 38rpx;
border-radius: 54rpx 54rpx 0 0;
view {
text-align: center;
width: 676rpx;
height: 102rpx;
background: linear-gradient(270deg, #8883F0 0%, #8883F0 100%);
border-radius: 54rpx 54rpx 54rpx 54rpx;
font-weight: 500;
font-size: 40rpx;
color: #FFFFFF;
margin: auto;
line-height: 102rpx;
}
image {
width: 56rpx;
height: 56rpx;
vertical-align: middle;
margin-right: 10rpx;
margin-bottom: 10rpx;
}
}
.ditu {
width: 100%;
height: 980rpx;
background: #FFFFFF;
border-radius: 38rpx 38rpx 38rpx 38rpx;
// margin-top: 34rpx;
padding-top: 16rpx;
.fujin {
position: fixed;
top: 940rpx;
padding-left: 30rpx;
image {
width: 210rpx;
height: 62rpx;
}
}
.dtxs {
width: 642rpx;
height: 812rpx;
margin: auto;
}
.tubiao {
display: flex;
justify-content: space-between;
padding: 0 50rpx;
box-sizing: border-box;
padding-top: 20rpx;
padding-bottom: 24rpx;
.gr {
text-align: center;
width: 100%;
font-weight: 400;
font-size: 24rpx;
color: #3D3D3D;
image {
display: block;
margin: auto;
margin-bottom: 14rpx;
}
}
}
}
}
</style>