You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

341 lines
7.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="container" style="padding:25rpx;">
<view class="wifi-data">
<view class="wifi-icon">
<u-icon color="#ffffff" name="wifi" size="30"></u-icon>
</view>
<view class="wifi-datas" color="#2979ff">
<view class="wifi-name">jichuang_5G</view>
<view class="wifi-hot">
<text class="hot-text">快速连接</text>
<text class="hot-icon">.</text>
<text class="hot-text">无需密码</text>
<text class="hot-icon">.</text>
<text class="hot-text">保护隐私</text>
</view>
</view>
</view>
<view class="wifi-success">
WI-FI连接成功
</view>
<!-- <u-button type="primary" text="一键连接WI-FI" @click="handleCode()"></u-button> -->
<u-popup :show="show" mode="bottom">
<view class="video-container">
<view class="video-btns" :style="{paddingTop:statusBarHeight+'rpx'}">
<view class="second" v-show="countdown > 0">{{countdown}} 后获得奖励</view>
<view class="second" v-show="countdown == 0">已获得奖励</view>
<view class="close" @click="handleClose()">关闭</view>
</view>
<video id="video-box" v-if="show" :src="urlPath" :autoplay="true" :controls="false"
@timeupdate="changeTimeupdate"></video>
</view>
</u-popup>
</view>
</template>
<script>
import {
findById,
getShanghu,
getPoster,
addNetHistory,
addPosterHistory
} from '@/api/index.js'
export default {
data() {
return {
baseUrl: getApp().globalData.config.baseUrl,
pathData: '',
urlPath: '',
time: null,
countdown: 5,
videoCurrentTime: 0,
show: false,
from: {},
statusBarHeight: 20,
shanghuId: null,
posterData: {},
}
},
onLoad(option) {
// #ifdef MP-WEIXIN
let sys = uni.$u.sys()
this.statusBarHeight = sys.statusBarHeight + 44
// #endif
// if (option.shanghuId) {
// this.shanghuId = option.shanghuId
// //根据码信息shanghuId获取WIFI信息
// this.getFindbyid()
// } else {
// uni.showToast({
// title: '获取网络信息失败!',
// icon: 'error'
// })
// }
},
methods: {
handleCode() {
uni.scanCode({
success: (res) => {
console.log('二维码信息', res)
}
})
},
//获取WIFI信息
getFindbyid() {
findById(this.shanghuId).then(res => {
this.from = {
wifiName: res.data.wifiName,
wifiPass: res.data.wifiPass
}
//提示用户需要看广告才能链接
this.lookPoster()
})
},
//看广告
lookPoster() {
let _this = this
uni.showModal({
title: '温馨提示',
content: '连接WIFI需要观看一段视频广告是否确认',
success: (res) => {
if (res.confirm) {
//查询商户的信息从而拿到广告视频路径
getShanghu(_this.shanghuId).then(shanghu => {
//广告id
let posterId = shanghu.data.posterId
//获取广告信息
getPoster(posterId).then(poster => {
_this.posterData = {
posterId: poster.data.id,
shanghuId: _this.shanghuId,
posterName: poster.data.posterName,
startTime: poster.data.startTime,
endTime: poster.data.endTime,
videoPath: poster.data.videoPath,
}
//视频路径
_this.urlPath = this.baseUrl + poster.data
.videoPath;
_this.show = true
//打开弹窗就播放视频了所以启用计时器
_this.EnableTimer()
})
})
} else {
uni.showToast({
title: '连接失败',
icon: 'error'
})
}
}
})
},
// 计时器
EnableTimer() {
this.time = setInterval(() => {
if (this.countdown > 0) {
this.countdown--
} else {
clearInterval(this.time)
}
}, 1000)
},
// 视频进度
changeTimeupdate(event) {
let {
currentTime,
duration
} = event.detail
this.videoCurrentTime = currentTime
},
//关闭弹窗
handleClose() {
this.show = false
if (this.videoCurrentTime >= 5) {
//链接WIFI
this.handleWifi()
} else {
uni.showToast({
title: '获取奖励失败',
icon: 'error'
})
this.countdown = 5
this.videoCurrentTime = 0
}
// 清除计时器
clearInterval(this.time)
//存广告历史
addPosterHistory(this.posterData)
},
handleWifi: function() {
let that = this
uni.getSystemInfo({
success: function(res) {
var system = '';
if (res.platform == 'android') system = parseInt(res.system.substr(8));
if (res.platform == 'ios') system = parseInt(res.system.substr(4));
if (res.platform == 'android' && system < 6) {
wx.showToast({
title: '手机版本不支持',
icon: 'error',
})
return
}
if (res.platform == 'ios' && system < 11.2) {
wx.showToast({
title: '手机版本不支持',
icon: 'error'
})
return
}
//2.初始化 Wi-Fi 模块
that.startWifi();
}
})
},
//初始化 Wi-Fi 模块
startWifi: function() {
var that = this
uni.startWifi({
success: function() {
//请求成功连接Wifi
that.Connected();
},
fail: function(res) {
uni.showToast({
title: '初始化WIFI失败',
icon: 'error'
})
}
})
},
Connected: function() {
var that = this
uni.connectWifi({
SSID: this.from.wifiName, //wifi名
BSSID: '',
password: this.from.wifiPass, //wifi密码
success: function(res) {
addNetHistory({
shanghuId: _this.shanghuId,
wifiName: this.from.wifiName,
wifiPass: this.from.wifiPass,
isTrue: that.videoCurrentTime >= 5 ? 1 : 2
}).then(res => {
uni.showToast({
title: '连接成功',
icon: 'success'
})
})
},
fail: function(res) {
uni.showToast({
title: 'wifi连接失败',
icon: 'error'
})
}
})
},
},
}
</script>
<style lang="scss" scoped>
page {
background: #F5F7F8;
}
.wifi-data {
border-radius: 16rpx;
background-color: #ffffff;
box-sizing: border-box;
padding: 20rpx;
display: flex;
align-items: center;
.wifi-icon {
height: 100rpx;
width: 100rpx;
border-radius: 50%;
background: #32B78B;
display: flex;
align-items: center;
justify-content: center;
}
.wifi-datas {
box-sizing: border-box;
padding-left: 20rpx;
.wifi-name {
font-size: 28rpx;
font-weight: bold;
color: #333;
margin-bottom: 6px;
}
.wifi-hot {
color: #9DA2AB;
.hot-text {
font-size: 24rpx;
}
.hot-icon {
margin: 0 10rpx;
}
}
}
}
.wifi-success {
margin-top: 20rpx;
border-radius: 16rpx;
background-color: #ffffff;
box-sizing: border-box;
padding: 40rpx 20rpx;
color: #32B78B;
font-size: 28rpx;
text-align: center;
}
.video-container {
width: 100%;
position: relative;
#video-box {
height: 100vh;
width: 100%;
}
.video-btns {
position: absolute;
left: 0;
top: 0;
z-index: 100;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 0 20rpx;
&>view {
border: 1px solid #ccc;
color: white;
font-size: 24rpx;
border-radius: 25rpx;
box-sizing: border-box;
padding: 8rpx 20rpx;
}
}
}
</style>