<template>
	<view>
		<u-navbar :is-back="true" title='设置' title-color="#000" :border-bottom="false" :background="true" id="navbar">
		</u-navbar>
		<!-- 背景 -->
		<view class="img">
			<image class="img" src="https://api.ccttiot.com/smartmeter/img/static/uVKucPVDjxjaCDCpFKvw" mode=""></image>
		</view>
		<view class="name" @click="btnxianshi">
			<view class="">{{user.deviceName == undefined ? '--' : user.deviceName}}</view>
			<image src="https://api.ccttiot.com/smartmeter/img/static/uL6FHnMGWFrdptmDokDI" mode=""></image>
		</view>
		<view class="model">
			<text class="one">型号</text> <text>{{user.model == undefined ? '--' : user.model}}</text>
		</view>
		<view class="model" style="margin-top: 24rpx;">
			<text class="one" style="margin-right: 124rpx;">MAC</text>
			<text>{{user.mac == undefined ? '--' : user.mac}}</text>
		</view>
		<view class="wifi" style="margin-top: 78rpx;" @click="xpshow = true">
			<view class="">息屏</view>
			<view class="flex">{{xptxt}}
				<image src="https://api.ccttiot.com/smartmeter/img/static/uiTIUYnR3ClrmqOTyF8F" mode=""></image>
			</view>
		</view>
		<view class="wifi" style="margin-top: 24rpx;" @click="gjconfirm">
			<view class="">固件更新</view>
			<view class="flex">
				<!-- <image src="https://api.ccttiot.com/smartmeter/img/static/uiTIUYnR3ClrmqOTyF8F" mode=""></image> -->
			</view>
		</view>
		<!-- 息屏选择器 -->
		<u-select v-model="xpshow" :list="xplist" @confirm="xpconfirm"></u-select>
		<!-- 固件更新选择器 -->
		<u-select v-model="gjshow" :list="gjlist" @confirm="gjconfirm"></u-select>
		<!-- 修改设备名称弹框 -->
		<view class="editname" v-if="nameflag">
			<view class="top">
				修改名称
			</view>
			<input type="text" v-model="namesb" placeholder="请输入您想要修改的名字" />
			<view class="anniu">
				<view class="qx" @click="btnqx">
					取消
				</view>
				<view class="qd" @click="btnqd">
					确定
				</view>
			</view>
		</view>
		<!-- 解绑 -->
		<view class="annius" @click="btnjiebang">
			<button>解绑设备</button>
		</view>
		<!-- 修改名称蒙层 -->
		<view class="mask" v-if="nameflag"></view>
		
		<!-- 进度条 -->
		<view class="container" v-if="shengjiflag">
			<image src="https://api.ccttiot.com/smartmeter/img/static/uquIy7wJmrNhjvy2maJf" mode=""></image>
		    <!-- 进度条背景 -->
		    <view class="progress-bar">
		        <!-- 进度条填充部分 -->
		        <view class="progress-fill" :style="{ width: progress + '%' }"></view>
		    </view>
		    <!-- 显示进度百分比 -->
		    <view class="progress-text">{{ progress }}%</view>
			<view class="wz">
				固件升级中请保持蓝牙连接
			</view>
			<view class="wz">
				切记在蓝牙范围内,以防升级失败
			</view>
		</view>

	</view>
</template>

<script>
	var xBlufi = require("@/components/blufi/xBlufi.js") 
	export default {
		data() {
			return {
				xpshow: false,
				gjshow: false,
				xptxt: '',
				gjtxt: 'v2.1.2',
				nameflag: false,
				xplist: [{
						value: '1',
						label: '30秒'
					},
					{
						value: '2',
						label: '一分钟'
					},
					{
						value: '2',
						label: '三分钟'
					},
					{
						value: '2',
						label: '五分钟'
					}
				],
				gjlist: [{
					value: '1',
					label: 'v2.1.2'
					},
					{
					value: '2',
					label: 'v2.1.3'
				}],
				deviceid: '',
				user: {},
				namesb: '',
				ver:'',
				file:'',
				intervalId: null,
				progress:0,
				shengjiflag:false
			}
		},
		// 分享到好友(会话)
		onShareAppMessage: function() {
			return {
				title: '绿小能',
				path: '/pages/index/index'
			}
		},
		// 分享到朋友圈  
		onShareTimeline: function() {
			return {
				title: '绿小能',
				query: '',
				path: '/pages/index/index'
			}
		},
		onLoad(option) {
			xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
			this.deviceid = option.deviceid
			if(option.ver != undefined && option.ver != null){
				this.ver = option.ver
				this.getbanben()
			}
			this.getshebxq()
		},
		methods: {
			// 解绑设备按钮
			btnjiebang() {
				let that = this
				uni.showModal({
					title: '提示',
					content: '您确定要解绑当前设备吗?',
					success: function(res) {
						if (res.confirm) {
							that.$u.delete(`//app/device/unbind/${that.deviceid}`).then(res => {
								if (res.code == 200) {
									uni.showToast({
										title: '解绑成功',
										icon: 'success',
										duration: 2000
									})
									setTimeout(() => {
										uni.reLaunch({
											url:'/pages/index/index'
										})
									}, 1000)
								} else {
									uni.showToast({
										title: res.msg,	
										icon: 'none',
										duration: 2000
									})
								}
							})
						} else if (res.cancel) {

						}
					}
				})
			},
			// 获取设备信息
			getshebxq() {
				this.$u.get(`/app/getDeviceInfo/${this.deviceid}`).then(res => {
					if (res.code == 200) {
						this.user = res.data
					}
				})
			},
			// 点击显示修改名称弹框
			btnxianshi() {
				this.nameflag = true
				this.namesb = this.user.deviceName
			},
			// 选择息屏时间
			xpconfirm(e) {
				this.xptxt = e[0].label
			},
			getbanben(){
				this.$u.get(`/app/getVersion?version=${this.ver.slice(3)}`).then(res => {
					if (res.code == 200) {
						this.file = res.data.file 
						console.log(this.file);
						// this.file = 'https://www.zenghi.com/gj/water_flower.bin'
					}
				})
			},
			startProgress() {
			    this.intervalId = setInterval(() => {
			        if (this.progress < 100) {
			            
			        } else {
			            clearInterval(this.intervalId); // 进度达到 100% 时清除定时器
			            console.log("加载完成");
			        }
			    }, 30); // 每 30 毫秒更新一次进度
			},
			// 选择固件版本
			gjconfirm(e) {
				// this.gjtxt = e[0].label
				if(this.ver != ''){
					if(this.file != ''){
						var data = {
						    sum: 100,
						    http: this.file
						}
						xBlufi.notifySendCustomData({
						    customData: data
						})
						this.shengjiflag = true
						this.startProgress()
					}else{
						uni.showToast({
							title: '暂无新版本',
							icon: 'none',
							duration: 2000
						})
					}
				}else{
					uni.showToast({
						title: '请连接蓝牙获取版本号',
						icon: 'none',
						duration: 2000
					})
				}
			},
			// 点击取消修改设备名称
			btnqx() {
				this.nameflag = false
			},
			// 点击确定修改设备名称
			btnqd() {
				this.$u.put(`/app/editDeviceName?deviceId=${this.deviceid}&deviceName=${this.namesb}`).then(res => {
					if (res.code == 200) {
						this.nameflag = false
						this.user.deviceName = this.namesb
						uni.showToast({
							title: '修改成功',
							icon: 'success',
							duration: 2000
						})
					} else {
						uni.showToast({
							title: res.msg,
							icon: 'none',
							duration: 2000
						})
					}
				})
			},
			
			// 接受蓝牙回调
			funListenDeviceMsgEvent: function(options) {
				switch (options.type) {
					case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
						if (!options.result) {
							console.log('duankai');
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						console.log("连接回调:" + JSON.stringify(options))
						if (options.result == true){
							
						}else{
							
						}
						break
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
					    console.log("选择固件升级收信息:", options.data, options.data.length);
					    if (typeof options.data === 'string') {
					        if (options.data.indexOf("prom:") !== -1) {
					            console.log('固件升级中')
					            var indexOld = options.data.substring(options.data.indexOf('prom:'))
					            console.log("indexOld", indexOld);
					            var load_num = indexOld.substring(
					                indexOld.indexOf("prom:") + 5,
					                indexOld.indexOf("@")
					            )
					            this.progress = Number(load_num);
					            console.log("load_num", load_num);
					            console.log("升级进度:", this.progress)
					            if (this.progress === 6000) {
					                console.log('固件成功')
					                this.progress = 100
									uni.showToast({
										title: '固件升级成功',
										icon: 'success',
										duration: 2000
									})
									setTimeout(()=>{
										this.shengjiflag = false
										uni.reLaunch({
											url:'/pages/index/index'
										})
									},2000)
					            }
					            if (this.progress === 9000) {
					                console.log('固件升级失败')
					                this.progress = 99
									uni.showToast({
										title: '固件升级失败',
										icon: 'none',
										duration: 2000
									})
									setTimeout(()=>{
										this.shengjiflag = false
										uni.reLaunch({
											url:'/pages/index/index'
										})
									},1000)
					            }
					        }
					    } else {
					        console.error("options.data 不是字符串:", options.data);
					    }
					    break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
						if (!options.result) {
							console.log('蓝牙未开启')
							return
						}
						break
				}
			},
			
		}
	}
</script>

<style lang="less">
	.container {
	    display: flex;
	    flex-direction: column;
	    align-items: center;
	    height: 100vh; /* 全屏高度 */
	    background-color: #f0f0f0; /* 背景颜色 */
		position: fixed;
		top: 0;
		left: 50%;
		transform: translateX(-50%);
		width: 100%;
		image{
			width: 400rpx;
			height: 500rpx;
			margin-top: 260rpx;
			margin-bottom: 80rpx;
		}
		.wz{
			color: red;
			margin-top: 20rpx;
		}
	}
	
	/* 进度条背景 */
	.progress-bar {
	    width: 80%; /* 进度条宽度 */
	    height: 20px; /* 进度条高度 */
	    background-color: #e0e0e0; /* 背景颜色 */
	    border-radius: 10px; /* 圆角 */
	    overflow: hidden; /* 隐藏超出部分 */
	}
	
	/* 进度条填充部分 */
	.progress-fill {
	    height: 100%;
	    background-color: #7FAD76; /* 填充颜色 */
	    transition: width 0.1s ease; /* 平滑过渡 */
	}
	
	/* 进度百分比文字 */
	.progress-text {
	    margin-top: 20px;
	    font-size: 24px;
	    color: #333;
	}
	.annius {
		padding: 0 40rpx;
		width: 100%;
		box-sizing: border-box;
		position: fixed;
		left: 0;
		bottom: 112rpx;

		button {
			background: #7FAD76;
			border-radius: 52rpx 52rpx 52rpx 52rpx;
			color: #fff;
		}
	}

	/deep/ .u-title {
		margin-bottom: 22rpx;
	}

	/deep/ .uicon-nav-back {
		margin-bottom: 22rpx;
	}

	.editname {
		width: 530rpx;
		height: 340rpx;
		background-color: #fff;
		position: fixed;
		top: 600rpx;
		left: 50%;
		transform: translateX(-50%);
		border-radius: 20rpx;
		z-index: 1;
		padding: 20rpx;
		box-sizing: border-box;

		.top {
			font-size: 32rpx;
			color: #3D3D3D;
			text-align: center;
			width: 100%;
			margin-top: 20rpx;
			font-weight: 600;
		}

		input {
			width: 450rpx;
			height: 80rpx;
			background-color: #eee;
			border-radius: 10rpx;
			margin: auto;
			margin-top: 20rpx;
			padding-left: 10rpx;
		}

		.anniu {
			display: flex;
			justify-content: space-between;
			margin-top: 30rpx;
			padding: 0 10rpx;
			box-sizing: border-box;

			view {
				width: 48%;
				height: 80rpx;
				line-height: 80rpx;
				text-align: center;
				font-size: 32rpx;
			}

			.qx {
				border: 1px solid #7FAD76;
				border-radius: 20rpx;
				color: #7FAD76;
			}

			.qd {
				background-color: #7FAD76;
				color: #fff;
				border-radius: 20rpx;
			}
		}
	}

	.mask {
		width: 100%;
		height: 100vh;
		background-color: #000;
		opacity: .5;
		position: fixed;
		top: 0;
		left: 0;
	}

	.img {
		width: 304rpx;
		height: 332rpx;
		margin: auto;
	}

	.name {
		width: 100%;
		font-weight: 600;
		font-size: 36rpx;
		color: #3D3D3D;
		display: flex;
		margin-top: 64rpx;
		justify-content: center;
		align-items: center;

		image {
			width: 44rpx;
			height: 44rpx;
			margin-left: 26rpx;
		}
	}

	.model {
		width: 100%;
		display: flex;
		font-weight: 600;
		font-size: 32rpx;
		color: #3D3D3D;
		margin-top: 48rpx;

		.one {
			margin-left: 74rpx;
			margin-right: 144rpx;
		}
	}

	.wifi {
		width: 678rpx;
		height: 104rpx;
		font-size: 32rpx;
		color: #3D3D3D;
		line-height: 104rpx;
		background: rgba(255, 255, 255, 0.2);
		box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
		margin: auto;
		margin-top: 60rpx;
		border-radius: 20rpx;
		display: flex;
		justify-content: space-between;
		padding: 0 42rpx;
		box-sizing: border-box;

		.flex {
			display: flex;
			align-items: center;

			image {
				width: 40rpx;
				height: 40rpx;
				margin-left: 18rpx;
			}
		}
	}
</style>