<template>
	<view class="page">
		<u-navbar title="设备设置" :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#fff'
			title-size='36' height='50'></u-navbar>
		<view class="toptit">
			完善设备信息
		</view>
		<view class="card">
			<view class="icon_img">
				<image src="https://api.ccttiot.com/smartmeter/img/static/uIvJLAq6xh67FZAI5qEC" mode="aspectFit"></image>
				<view class="">设备展示图</view>
			</view>
			<view class="shebeitit">展示设备的外观信息</view>
			<view class="icon">
				<view class="imgbox" v-if="userImgs">
					<view
						style="border: 0;outline: none;padding-left: 0rpx;border-radius: 16rpx;"
						@click="getImage">
						<image style="border-radius: 10rpx;" :src="userImgs" mode="aspectFit"></image>
					</view>
				</view>
				<view class="imgbox"v-else>
					<view
						style="border: 0;outline: none;padding-left: 0rpx;border-radius: 16rpx;"
						@click="getImage">
						<image style="width: 100rpx;height: 100rpx;margin-left: 76rpx;margin-top: 50rpx;" src="https://api.ccttiot.com/smartmeter/img/static/urkb8tICILUpvA86HoxB"
							mode="aspectFit"></image>
							<view class="" style="width: 100%;text-align: center;margin-top: 15rpx;">
								上传设备展示图
							</view>
					</view>
				</view>
				<!-- 截图 -->
				<ksp-cropper mode="free" :width="142" :height="142" :maxWidth="1024" :maxHeight="1024" :url="url"
					@cancel="oncancel" @ok="onok"></ksp-cropper>

			</view>
		</view>
		<view class="shebeiname">
			<view class="icon_img">
				<image src="https://api.ccttiot.com/smartmeter/img/static/u44V9FNVsAHcbZGtab1A" mode="aspectFit"></image>
				<view class="">设备名称</view>
			</view>
			<view class="shebeitit">
				正确描述设备名称
			</view>
			<view class="info">
				<input type="text" v-model="xgname" />
			</view>
		</view>
		<view class="buttit">
			设备名称和设备主图将会在用户扫码付款时进行展现
		</view>

		<view class="btnxyb" @click="btnxia">
			下一步(1/3)
		</view>
		<!-- <view class="btntg" @click="btntiao">
			跳过
		</view> -->
	</view>
</template>

<script>
	var  xBlufi = require("@/page_components/blufi/xBlufi.js")
	export default {
		data() {
			return {
				qrResult: '',
				bluetoothflag: false,
				shibaiflag: false,
				bgc: {
					backgroundColor: "#8883f0",
				},
				showloading: false,
				showfz: false,
				show: false,
				showshop: false,
				list: [{
						value: '1',
						label: '欠费立即断电'
					},
					{
						value: '0',
						label: '欠费不断电'
					}
				],
				id: '',
				xgname: '',
				deviceInfo: {},
				groupList: {},
				showpopup: false,
				remake: '',
				price: '',
				showpeice: false,
				showremake: false,
				listobj: {
					deviceName: '',
					storeName: '',
					deviceNo: '',
					model: '',
					wifi: '',
				},
				showmc: false,
				pagenum: 1,
				wateringList: [],
				pagesize: 10,
				isLoading: false,
				noMoreData: false,
				total: 0,
				storeId: '',
				devicesList: [],
				setMode: null,
				mac: '',
				name: '',
				deviceId: '',
				isMch: false,
				taocan: '',
				token: '',
				userImgs: '',
				url: '',
				modelid:[],
				sn:''
			}
		},
		onLoad(option) {
			let id = option.id
			this.id = id
			this.sn = option.sn
			this.getDevice(id)

		},
		onShow() {
			this.wateringList = []
			this.setMode == null
			this.taocan = ''
			this.getQiniuToken()
			this.getlistobj(this.id)
			this.getuserinfo()
		},
		// 分享到好友（会话）
		onShareAppMessage: function() {
			return {
				title: '创想物联',
				path: '/pages/shouye/index'
			}
		},
		onUnload: function() {
			console.log("unload ");
			xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
			wx.closeBLEConnection({
			  deviceId: this.deviceId,
			})
		},

		// 分享到朋友圈  
		onShareTimeline: function() {
			return {
				title: '创想物联',
				query: '',
				path: '/pages/shouye/index'
			}
		},
		methods: {
			// 点击下一步
			btnxia() {
				if (this.xgname == '') {
                    uni.showToast({
                    	title: '名称不能为空',
                    	icon: 'none',
                    	duration: 2000
                    })
				} else {
					let data = {
						deviceId: this.id,
						deviceName: this.xgname
					}
					this.$u.put('/app/device', data).then((res) => {
						if (res.code == 200) {
							// this.getDevice()
							if (this.modelid.some(item => item == 2)) {  
							    console.log('wifi');  
							    uni.navigateTo({  
							        url: '/page_components/bindsztwo?id=' + this.id  + '&sn=' + this.sn
							    });  
								console.log(this.id);
							} else {  
							    console.log('4g');  
							    uni.navigateTo({  
							        url: '/page_components/bindszthr?id=' + this.id  + '&sn=' + this.sn
							    })
							}
						}
					})
				}
			},
			btnlyqx() {
				this.shibaiflag = false
				this.bluetoothflag = false
			},
			// 修改图片
			getImage() {
				uni.chooseImage({
					count: 1,
					success: (rst) => {
						this.url = rst.tempFilePaths[0];
					}
				})
			},
			onok(ev) {
				this.url = "";
				this.path = ev.path;
				let _this = this
				let math = 'static/' + _this.$u.guid(20)
				wx.uploadFile({
					url: 'https://up-z2.qiniup.com',
					name: 'file',
					filePath: _this.path,
					formData: {
						token: _this.token, //后端返回的token
						key: 'smartmeter/img/' + math
					},
					success: function(res) {
						let str = JSON.parse(res.data)
						_this.userImgs = 'https://api.ccttiot.com/' + str.key
						let data = {
							deviceId: _this.id,
							customPicture: _this.userImgs
						}
						_this.$u.put('/app/device', data).then((res) => {
							if (res.code == 200) {
								this.getDevice()
								uni.showToast({
									title: '操作成功',
									icon: 'none',
									duration: 2000
								})
							}
						})
					}
				})
			},
			oncancel() {
				// url设置为空，隐藏控件
				this.url = ""
			},
			// 获取上传七牛云token
			getQiniuToken() {
				this.$u.get("/common/qiniu/uploadInfo").then((res) => {
					if (res.code == 200) {
						this.token = res.token
					}
				})
			},
			getao() {
				this.$u.get(`/app/suit/listByDeviceId/${this.id}`).then(res => {
					if (res.code == 200) {
						if (res.data.length <= 1) {
							res.data.forEach(item => {
								this.taocan += item.name
							})
						} else {
							res.data.forEach(item => {
								this.taocan += item.name + ','
							})
						}
					}
				})
			},
			// 点击设置套餐
			btntc() {
				uni.navigateTo({
					url: '/page_fenbao/statulist/taocanlist/index?id=' + this.id
				})
			},
			// 获取当前用户信息
			getuserinfo() {
				this.$u.get("/app/user/userInfo").then((res) => {
					if (res.code == 200) {
						this.isMch = res.data.isMch
					}
				})
			},
			sub(num) {
				if (num == 1) {
					let data = {
						deviceId: this.id,
						remark: this.remake
					}
					this.showpopup = false
					this.showremake = false
					this.putdevice(data)
				} else if (num == 2) {
					let data = {
						deviceId: this.id,
						price: this.price,
					}
					this.showpopup = false
					this.showpeice = false
					this.showmc = false
					this.putdevice(data)
				} else if (num == 3) {
					console.log(this.xgname);
					let data = {
						deviceId: this.id,
						deviceName: this.xgname,
					}
					this.showpopup = false
					this.showpeice = false
					this.showmc = false
					this.putdevice(data)
					setTimeout(() => {
						this.getlistobj(this.id)
					}, 1000)
				}
			},
			confirm(e) {
				let data = {
					deviceId: this.id,
					outageWay: e[0].value
				}
				this.putdevice(data)
			},
			sremakemc() {
				console.log(1);
				this.showmc = true
				this.xgname = this.listobj.deviceName
			},
			sremake() {
				this.showpopup = true
				this.showremake = true
			},
			sprice() {
				this.showpopup = true
				this.showpeice = true
			},
			close() {
				this.showpeice = false
				this.showremake = false
				this.showpopup = false
				this.showmc = false
			},
			getDevice(id) {
				this.$u.get("/app/device/" + this.id).then((res) => {
					if (res.code == 200) {
						this.modelid = res.data.modelTags
						this.deviceInfo = res.data
						this.storeId = res.data.storeId
						this.price = this.deviceInfo.price
						this.remake = this.deviceInfo.remark
						this.qrResult = res.data.mac
					}
				})
			},
			getgroup() {
				this.$u.get("/app/store/listCount").then((res) => {
					if (res.code == 200) {
						this.groupList = res.data
					}
				})
			},
			getlistobj(id) {
				this.$u.get("/app/device/" + id).then((res) => {
					if (res.code == 200) {
						this.listobj = res.data
						this.xgname = this.listobj.deviceName
						this.userImgs = res.data.picture
					}
				})
			},
			funListenDeviceMsgEvent: function(options) {
				switch (options.type) {
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_MY_DATA:
						let loadPercent = options.data;
						let loadText = '文件读取中'
						// console.log("文件读取中", options.data);
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
						let ver_data = this.parseCustomData(options.data)
						this.setMode = Math.floor(ver_data.setMode / 60)
						console.log("1收到设备发来的自定义数据结果：", ver_data, this.setMode)
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
						if (options.result) {
							let devicesarr = options.data
							devicesarr.forEach(device => {
								const mac = device.name.slice(-12)
								if (device.name.slice(5, 17) == this.qrResult) {
									this.deviceId = device.deviceId
									this.name = device.name
									this.mac = device.name.slice(5, 17)
								}
							})
						}
						break;

					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
						// console.log("连接回调：" + JSON.stringify(options));
						if (options.result) {
							this.bluetoothflag = false
							uni.hideLoading();
							{
								console.log("连接回调options.data.deviceId：" + options.data.deviceId,
									"连接回调options.data.name：" + options.data.name);
							}
						} else {
							this.shibaiflag = true
							this.bluetoothflag = false
							uni.hideLoading()
						}
						break;
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
						if (!options.result) {
							setTimeout(() => {
								uni.hideLoading()
								this.bluetoothflag = false
							}, 3000)
							console.log("蓝牙未开启", options)
							return
						} else {
							
						}

						break;

					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
						if (options.result) {
							let uniqueDevicesList = Array.from(new Set(this.devicesList))
							// 将去重后的数组重新赋值给 this.devicesList
							this.devicesList = uniqueDevicesList
							let list = []
							filteredDevices.forEach(device => {
								// 从设备名称中提取 MAC 地址（假设 MAC 地址是设备名称的后6个字符）
								let macFromName = device.name.substring(device.name.length - 12);
								this.$u.get(`/app/device/${macFromName}/isBind`).then((res) => {
									if (res.data == false) {
										list.push(device)
									} else {

									}
								})
							})
							setTimeout(() => {
								this.devicesList = list
							}, 200)

							console.log('蓝牙停止搜索ok');
						} else {
							//蓝牙停止搜索失败
							console.log('蓝牙停止搜索失败');
						}
						this.searching = false
						break;
				}
			},
			parseCustomData(data) {
				// 将字符串按照 "@" 分割成数组
				const dataArray = data.split('@');
				// 根据约定，解析各个字段的值
				const voltage = parseFloat(dataArray[0].substring(1)); // 去除前缀 "V"，并将字符串转换为浮点数
				const switchState = dataArray[1].substring(1); // 去除前缀 "S"
				const current = parseFloat(dataArray[2].substring(1)); // 去除前缀 "A"，并将字符串转换为浮点数
				const power = parseFloat(dataArray[4].substring(1)); // 去除前缀 "P"，并将字符串转换为浮点数
				const remainingPower = parseFloat(dataArray[5].substring(1)); // 去除前缀 "M"，并将字符串转换为浮点数
				const setMode = dataArray[6].substring(1); // 去除前缀 "T"
				// 返回解析后的数据对象
				return {
					voltage,
					switchState,
					current,
					power,
					remainingPower,
					setMode
				};
			},
		}
	}
</script>

<style lang="scss">
	/deep/ .u-flex {
		padding-top: 20rpx !important;
		box-sizing: border-box;
	}

	/deep/ .panel {
		position: fixed;
		width: 100%;
		height: 100%;
		top: 0;
		bottom: 0;
		left: 0;
		z-index: 99 !important;
		overflow: hidden;
	}

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

	/deep/ .u-icon__icon {
		padding-bottom: 22rpx;
	}

	.btnxyb {
		width: 636rpx;
		height: 100rpx;
		background: #8883F0;
		box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
		filter: blur(0px);
		text-align: center;
		line-height: 100rpx;
		font-size: 36rpx;
		color: #FFFFFF;
		border-radius: 10rpx;
		position: fixed;
		left: 50%;
		transform: translateX(-50%);
		bottom: 150rpx;
	}

	.btntg {
		font-size: 32rpx;
		color: #8883F0;
		margin-top: 20rpx;
		position: fixed;
		left: 50%;
		transform: translateX(-50%);
		bottom: 80rpx;
	}

	.buttit {
		font-size: 24rpx;
		color: #3D3D3D;
		width: 100%;
		padding-left: 58rpx;
		box-sizing: border-box;
		margin-top: 68rpx;
	}

	.toptit {
		font-weight: 700;
		font-size: 44rpx;
		color: #3D3D3D;
		padding-top: 58rpx;
		padding-left: 58rpx;
		box-sizing: border-box;
	}

	.shebeiname {
		width: 654rpx;
		height: 260rpx;
		background: #FFFFFF;
		box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
		border-radius: 24rpx 24rpx 24rpx 24rpx;
		margin: auto;
		margin-top: 26rpx;
		padding-top: 26rpx;
		padding-left: 28rpx;
		box-sizing: border-box;

		.shebeitit {
			font-size: 28rpx;
			color: #606060;
			margin-top: 18rpx;
		}

		input {
			width: 580rpx;
			height: 66rpx;
			background: #EDEDED;
			border-radius: 10rpx 10rpx 10rpx 10rpx;
			margin-top: 22rpx;
			padding-left: 26rpx;
			box-sizing: border-box;
		}

		.icon_img {
			image {
				width: 50rpx;
				height: 50rpx;
				margin-right: 14rpx;
			}

			display: flex;
			align-items: center;

			view {
				font-size: 32rpx;
				color: #3D3D3D;
			}
		}
	}

	.bluetoothbox {
		width: 100%;
		height: 100vh;
		background-color: #f4f1f6;
		position: fixed;
		top: 0;
		left: 0;
		z-index: 99;
		text-align: center;

		.img {
			margin-top: 400rpx;
			width: 320rpx;
			height: 320rpx;
		}

		.one {
			font-size: 36rpx;
			color: #000;
			// margin-top: 80rpx;
		}

		.two {
			margin-top: 30rpx;
			font-size: 24rpx;
			color: #ccc;
		}

		.thr {
			margin-top: 30rpx;
			font-size: 28rpx;
			color: #ccc;
		}

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

			.qx {
				width: 100rpx;
				height: 70rpx;
				line-height: 70rpx;
				text-align: center;
				border: 1px solid #3D3D3D;
				border-radius: 10rpx;
			}

			.cx {
				width: 200rpx;
				height: 70rpx;
				line-height: 70rpx;
				text-align: center;
				background-color: #8883F0;
				color: #fff;
				border-radius: 10rpx;
			}
		}

		.stop {
			font-size: 36rpx;
			color: #000;
			margin-top: 380rpx;
		}

		.xtop {
			margin-top: 30rpx;
			font-size: 24rpx;
			color: #ccc;
		}

		.xqx {
			width: 530rpx;
			height: 90rpx;
			line-height: 90rpx;
			// border: 1px solid #808080;
			border-radius: 20rpx;
			text-align: center;
			background-color: #fff;
			margin: auto;
			margin-top: 200rpx;
		}

		image {
			width: 500rpx;
			height: 500rpx;
			margin-top: 100rpx;
		}
	}

	page {
		background-color: #F7FAFE;
	}

	.page {
		width: 750rpx;

		.popcard {
			display: flex;
			justify-content: center;
			flex-wrap: wrap;
			width: 550rpx;
			height: 400rpx;
			border-radius: 20rpx;

			.tit {
				display: flex;
				justify-content: center;
				width: 100%;
				align-items: center;
				font-size: 28rpx;
				font-weight: 700;
			}

			.ipt {
				margin-top: 60rpx;
				width: 80%;

				.u-input::placeholder {
					font-size: 20px;
					color: red;
				}
			}

			.btnbox {
				width: 100%;
				display: flex;
				flex-wrap: nowrap;
				border-radius: 0 0 20rpx 20rpx;

				.btn2 {
					display: flex;
					align-items: center;
					justify-content: center;
					width: 50%;
					font-size: 32rpx;
					font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
					font-weight: 400;
					color: #000;
					background-color: #fff;
				}

				.btn1 {
					display: flex;
					align-items: center;
					justify-content: center;
					width: 50%;
					font-size: 32rpx;
					font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
					font-weight: 400;
					color: #fff;
					background-color: #8883F0;
					border: 1rpx solid #ccc;
				}
			}

		}

		.card {
			padding: 16rpx 28rpx;
			margin: 60rpx auto 0;
			width: 654rpx;
			background: #FFFFFF;
			border-radius: 30rpx;
			box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
			opacity: 1;

			.icon_img {
				image {
					width: 50rpx;
					height: 50rpx;
					margin-right: 14rpx;
				}

				display: flex;
				align-items: center;

				view {
					font-size: 32rpx;
					color: #3D3D3D;
				}
			}

			.shebeitit {
				font-size: 28rpx;
				color: #606060;
				margin-top: 18rpx;
			}

			.li {
				// display: flex;
				// flex-wrap: nowrap;
				// align-items: center;
				// justify-content: space-between;
				height: 94rpx;
				// border-bottom: #E5E5E5 solid 2rpx;

				.tit {
					font-size: 32rpx;
					font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
					font-weight: 400;
					color: #000000;
				}

				.info {
					display: flex;
					flex-wrap: nowrap;
					align-items: center;

					.txt {
						font-size: 32rpx;
						font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
						font-weight: 400;
						color: #95989D;
					}

					.icon-xiangyou1 {
						margin-left: 6rpx;
						color: #95989D;
					}
				}
			}
		}

		.btn {
			display: flex;
			align-items: center;
			justify-content: center;
			margin: 52rpx auto 0;
			width: 654rpx;
			height: 100rpx;
			background: #FF4F4F;
			box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
			opacity: 1;
			border-radius: 30rpx;
			font-size: 32rpx;
			font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
			font-weight: 400;
			color: #FFFFFF;
		}

		.fz {

			position: fixed;
			bottom: 0;
			width: 750rpx;
			height: 1152rpx;
			background: #F7FAFE;
			border-radius: 30rpx 30rpx 0 0;
			z-index: 10071;

			.fz_top {
				margin: 18rpx 0 auto;
				display: flex;
				flex-wrap: nowrap;
				justify-content: space-between;

				.icon-shanchu {
					margin-left: 40rpx;
					font-size: 50rpx;
				}

				.tit {
					font-size: 36rpx;
					font-family: Source Han Sans, Source Han Sans;
					font-weight: 400;
					color: #000000;
				}

				.txt {
					margin-right: 40rpx;
					font-size: 36rpx;
					font-family: Source Han Sans, Source Han Sans;
					font-weight: 400;
					color: #8883F0;

				}
			}

			.card_cont {
				width: 750rpx;
				display: flex;
				flex-wrap: wrap;
				align-items: baseline;
				justify-content: center;
				height: 1030rpx;
				overflow-y: auto;
				overflow-x: hidden;

				.cards {
					margin-top: 32rpx;
					display: flex;
					flex-wrap: nowrap;
					align-items: center;
					justify-content: space-between;
					padding: 0 40rpx;
					width: 682rpx;
					border-radius: 30rpx;
					height: 114rpx;
					background: #FFFFFF;
					box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);

					.txt {
						font-size: 36rpx;
						font-family: Source Han Sans, Source Han Sans;
						font-weight: 400;
						color: #000000;
					}

					.num {
						font-size: 36rpx;
						font-family: Source Han Sans, Source Han Sans;
						font-weight: 400;
						color: #000000;
					}
				}
			}
		}
	}

	.icon {
		// display: flex;
		// flex-wrap: wrap;
		// align-items: center;
		margin-top: 40rpx;
		margin-bottom: 30rpx;

		.imgbox {
			width: 250rpx;
			height: 250rpx;
			background: #EDEDED;
			border-radius: 10rpx 10rpx 10rpx 10rpx;

			image {
				width: 250rpx;
				height: 250rpx;
			}
		}
	}
</style>