<template>
	<view>
		<view class="textbox">
			<view class="inputs">
				<u-search placeholder="请输入设备名称/编号" v-model="device_id" placeholder-color="#909696" :show-action="false"
					search-icon-color="#909696" @input="searchinput">
				</u-search>
			</view>
				<view class="tab">
					<view class="tab-content">
						<view class="tab-box">
							<view v-for="(item,index) in menuList" :key="index" @click="change(index,item)"
								:class="['tab-item',current==index?'active':'']">
								<image class="img-icon" :src="item.app_menu_icon" mode=""></image>
								<view class="text">{{item.purview_name}}</view>
							</view>
						</view>
					</view>
				</view>
				<view class="listbox">
				<view class="second-tab">
					<view class="tab-box">
						<view
              v-for="(item,index) in list"
              :key="index"
              @click="changeDevice(item,index)"
							:class="['tab-item',currents==index?'active':'']"
            >
							<text>{{item.purview_name}}</text>
						</view>
					</view>
				</view>
				<view class="third-tab">
					<view 
            class="third-tab-item"
            @click="changeStatus('')" 
            :class="{'active-tab' : device_status == ''}"
          >总计{{ counts }}</view>
					<view 
            class="third-tab-item"
            @click="changeStatus('1')" 
            :class="{'active-tab' : device_status == '1'}"
          >在线{{ online_counts }}</view>
					<view 
            class="third-tab-item"
            @click="changeStatus('0')" 
            :class="{'active-tab' : device_status == '0'}"
          >离线{{ offline_counts }}</view>
				</view>
				<scroll-view 
          :scroll-top="0"
          :scroll-y="true"
          class="list scroll-Y"
          @scrolltoupper="upper"
					@scrolltolower="lower"
          @scroll="scroll"
        >
					<view class="list_item" v-for="(item, index) in eqlistdata" :key="index" @click="historys(item)">
						<view class="list_item_top">
							<p class="p1">
                <span class="title">{{ (item.name || '--' )}}</span>
                <span class="sub-title">{{ item.id || item.device_id }}</span>
              </p>
							<p class="online-status">
								<image
                  v-if="item.status == 1 || item.is_online" 
                  :src="$imageURL+'/bigdata_app/newImg/home/online.png'" 
                  mode=""
                ></image>
								<image
                  v-else
                  :src="$imageURL+'/bigdata_app/newImg/home/outline.png'"
                  mode=""
                ></image>
							</p>
						</view>
						<view class="list_item_text">
							<p>
                <span class="label">上报时间</span>{{ item.uptime | timeFormat() }}
              </p>
							<p>
								<span class="label">设备位置</span>{{ (item.address|| '无') }}
							</p>
						</view>
					</view>
				</scroll-view>
			</view>
		</view>
		<view class="loading" v-if="loadingtf">
			<image src="../../static/images/ajax-loader.gif" mode="" class="img"></image>
		</view>
		<view class="top" v-if="isTop" @click="top">
			<image 
        :src="
        $imageURL+'/bigdata_app' +
        '/image/6209a98f0cb3b5086f2ca36152c9269.png'
        " mode=""></image>
		</view>
	</view>
</template>

<script>
	import {
		Debounce,
		Throttle
	} from '../../util/anitthro.js';
	export default {
		data() {
			return {
				list: [],
        pur_id: '',
        device_status: '',
        counts:0,
        online_counts:0,
        offline_counts:0,
				current: 0,
				currents: 0,
				page: 1,
				size: 10,
				eqlistdata: [],
				isTop: false,
				device_model: 0,
				infoalter: false, // 权限设置,
				type_id: 0, //设备类型,
				imgpath: [],
				loadingtf: false,
				width: 0, //顶部搜索栏宽度
				device_id: '', //搜索设备ID
				menuList: []
			};
		},
		methods: {
      changeStatus(status){
        this.device_status = status;
        this.page = 1;
        this.eqlist();
      },
			async getUserlogin() {
        this.list = [];
				const res = await this.$myRequest({
					url: '/api/api_gateway?method=user.login.user_login_info',
					method: 'POST',
					data: {
						is_app: 1,
					},
				});
        res.forEach(item=>{
          item.icon = '/bigdata_app/newImg/home/sqjd.png'
        })
        const menulist = res || [];
        const menuItem = menulist.find(item => item.purview_name == '智慧物联')
        this.menuList = menuItem.children || [];
        this.list = this.menuList[0].children || []
        this.pur_id = this.menuList[0].pur_id || '';
        if(this.list[0].purview_name != '全部'){
          this.list.unshift({
            device_type_id: '',
            purview_name: '全部'
          })
        }
        this.type_id = this.list[0].device_type_id;
        this.initPage();
      },
			async eqlist(tf) {
				this.loadingtf = true;
        let data = {
          device_type_id: this.type_id,
          page: this.page,
          page_size: this.size,
          pur_id: this.pur_id,
          device_status: this.device_status,
          device_id: this.device_id,
          device_model: this.device_model
        }
				const res = await this.$myRequest({
					url: '/api/api_gateway?method=device.app_device.app_device_list',
					data: data,
				});
				this.loadingtf = false;
        const status = res?.status || {};
        this.online_counts = status.online || 0;
        this.offline_counts = status.offline || 0;
        this.counts = (status.online || 0) + (status.offline || 0);
				if (tf) {
					this.eqlistdata = this.eqlistdata.concat(res.data);
				} else {
					this.eqlistdata = res.data;
				}
			},
			change(index,itemData) {
        this.list = this.menuList[index].children || []
        if(this.list[0].purview_name != '全部'){
          this.list.unshift({
            device_type_id: '',
            purview_name: '全部'
          })
        }
        this.current = index;
        const item = this.list[0];
        this.pur_id = itemData.pur_id || '';
        this.changeDevice(item,0);
			},
      changeDevice(item,index){
				this.currents = index;
				this.page = 1;
				this.eqlistdata = [];
				this.type_id = item.device_type_id;
				this.eqlist();
      },
			top() {
				uni.pageScrollTo({
					scrollTop: 0,
					duration: 500,
				});
			},
      initPage(){
        this.eqlistdata = [];
        this.current = 0;
        this.currents = 0;
        this.page = 1;
        this.eqlist(true);
        this.width = 0;
      },
			historys(item) {
				const type_id = item.type_id;
				switch (type_id) {
					// 水肥新设备
					case 22:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						uni.navigateTo({
							url: '../waterandfernew/details?shebei=' + JSON.stringify(obj),
						});
						break;
						// 病虫害可视监测
					case 14:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: '../cb/sy/detail?detail=' + JSON.stringify(item),
						});
						break;
					case 2:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: '../prevention/equipmentdetails?shebei=' + JSON.stringify(item),
						});
						break;
					case 38:
						var obj = {};
						obj.d_id = item.d_id;
						obj.equip_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						uni.navigateTo({
							url: '../environment/equipment-new?shebei=' + JSON.stringify(obj),
						});
						break;
					case 5:
						var obj = {};
						obj.d_id = item.d_id;
						obj.equip_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						uni.navigateTo({
							url: '../environment/equipment?shebei=' + JSON.stringify(obj),
						});
						break;
					case 6:
						uni.navigateTo({
							url: '/pages/webview/webview?device_id=' +
								item.id +
								'&accessToken=' +
								this.accessToken,
						});
						break;
					case 3:
						item.addtime = item.uptime;
						item.type = item.type_id;
						uni.navigateTo({
							url: '../cbd/detail?info=' + JSON.stringify(item),
						});
						break;
					case 28:
						item.addtime = item.uptime;
						item.type = item.type_id;
						uni.navigateTo({
							url: '../cb/smallPest/smallPest?info=' + JSON.stringify(item),
						});
						break;
					case 4:
						item.addtime = item.uptime;
						item.type = item.type_id;
						uni.navigateTo({
							url: '../cb/equip-detail/equip-detail?info=' + JSON.stringify(item),
						});
						break;
					case 32:
					case 33:
					case 34:
					case 35:
						item.addtime = item.uptime;
						item.type = item.type_id;
						uni.navigateTo({
							url: '../cb/equip-detail/equip-detail-new?info=' +
								JSON.stringify(item),
						});
						break;
					case 7:
						item.addtime = item.uptime;
						item.type = item.type_id;
						uni.navigateTo({
							url: '../cb/equip-detail/equip-detail?info=' + JSON.stringify(item),
						});
						break;
					case 8:
						uni.navigateTo({
							url: '../cb/thxydetail/thxydetail?imei=' + item.id,
						});
						break;
					case 29:
						uni.navigateTo({
							url: `../cb/nlNewXy/nlNewXy?imei=${item.id}&showId=${item.only_for_show}`,
						});
						break;
					case 24:
						uni.navigateTo({
							url: '../cb/zjxydetail/thxydetail?imei=' + item.id,
						});
						break;
					case 12:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: '../cb/xctdetail/xctdetail?info=' + JSON.stringify(item),
						});
						break;
					case 13:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						uni.navigateTo({
							url: '../waterandfer/datails?shebei=' + JSON.stringify(obj),
						});
						break;
					case 15:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						uni.navigateTo({
							url: '../environment/gsequipment?shebei=' + JSON.stringify(obj),
						});
						break;
					case 17:
						break;
					case 18:
						var obj = {};
						obj.device_id = item.id;
						obj.is_online = item.status;
						uni.navigateTo({
							url: '../cb/shuifeiL/shuifeiL?detail=' + JSON.stringify(obj),
						});
						break;
          case 43:
            uni.navigateTo({
              url: "/pages/fmSys/details?info=" + JSON.stringify(item)
            })
          break;
          case 44:
            uni.navigateTo({
              url: "/pages/webviewdgp/webview?device_id=" + item.id + "&accessToken=" + this.accessToken || uni
                .getStorageSync('session_key') +
                '&type=dgp'
            })
          break;
					case 11:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 11;
						uni.navigateTo({
							url: '../disease/cmb?shebei=' + JSON.stringify(obj),
						});
						break;
					case 19:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 19;
						uni.navigateTo({
							url: '../disease/cmb?shebei=' + JSON.stringify(obj),
						});
						break;
					case 20:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 20;
						uni.navigateTo({
							url: '../disease/cmb?shebei=' + JSON.stringify(obj),
						});
						break;
					case 21:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 21;
						uni.navigateTo({
							url: '../disease/cmb?shebei=' + JSON.stringify(obj),
						});
						break;
					case 26:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 26;
						uni.navigateTo({
							url: '../disease/cmb?shebei=' + JSON.stringify(obj),
						});
						break;
					case 27:
						var obj = {};
						obj.d_id = item.d_id;
						obj.device_id = item.id;
						obj.is_online = item.status;
						obj.lat = item.lat;
						obj.lng = item.lng;
						obj.equip_name = item.name;
						obj.uptime = item.uptime;
						obj.location = item.address;
						obj.type = 26;
						uni.navigateTo({
							url: '../disease/mls/mls?shebei=' + JSON.stringify(obj),
						});
						break;
					case 25:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: '../cb/xylps/detail?detail=' + JSON.stringify(item),
						});
						break;
					default:
						item.addtime = item.uptime;
						item.type = this.type_id;
						uni.navigateTo({
							url: '../cb/xy2.0/particulars?info=' + JSON.stringify(item),
						});
						break;
					case 40:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: `../cb/shuifeizs/shuifeizs?devBid=${item.devBid}&devName=${item.name}&devStatus=${item.status}`,
						});
						break;
					case 42:
						item.addtime = item.uptime;
						uni.navigateTo({
							url: `../cb/wenshizs/wenshizs?devBid=${item.devBid}&devName=${item.name}&devStatus=${item.status}`,
						});
						break;
				}
			},
			searchinput() {
				Debounce(() => {
					this.eqlistdata = [];
					this.page = 1;
					this.eqlist();
				}, 1000)();
			},
			scrollTop(e) {},
			upper() {},
			lower() {
				this.page++;
				this.eqlist(true);
			},
			scroll() {},
		},
		onLoad() {
			this.getUserlogin();
		},
		onTabItemTap(e) {
		},
		onReachBottom() {
			this.page++;
			this.eqlist(true);
		},
		onPageScroll(e) {
			//nvue暂不支持滚动监听，可用bindingx代替
			if (e.scrollTop > 200) {
				//距离大于200时显示
				this.isTop = true;
			} else {
				//距离小于200时隐藏
				this.isTop = false;
			}
		},
	};
</script>
<style lang="scss">
	page {
		background: linear-gradient(180deg, #ffffff00 0%, #F5F6FA 23.64%, #F5F6FA 100%), linear-gradient(102deg, #BFEADD 6.77%, #B8F1E7 40.15%, #B9EEF5 84.02%);
	}

	/deep/.uni-icons {
		font-size: 40rpx !important;
	}
  input{
    background: transparent !important;
  }
	.textbox {
		width: 100%;
		height: 100vh;
		padding-top: 102rpx;
		box-sizing: border-box;

	}

	.inputs {
		width: 65%;
		margin-left: 12rpx;

		/deep/.u-content {
			background-color: #fff !important;
		}

		/deep/.uni-input-wrapper {
			background-color: #fff !important;
		}

	}

	.utabs_box {
		width: 100%;
		position: fixed;
		top: 88px;
		background-color: #ffffff;
		z-index: 100;

		.utabs {
			width: 95%;
			margin: 0 auto;
		}
	}

	.loading {
		position: fixed;
		top: 440px;
		width: 95%;
		left: 2.5%;
		text-align: center;

		.img {
			width: 300rpx;
			height: 40rpx;
		}
	}

  .active-tab{
    border-radius: 8rpx;
    background: linear-gradient(0deg, #0bbc580f 0%, #0bbc580f 100%), #00000005;
  }

	.tab-box {
		font-size: 30rpx;
		box-sizing: border-box;
		width: 100%;
		height: 100%;
		overflow-y: hidden;
		overflow-x: auto;
		white-space: nowrap;
    // 去掉滚动条
    -ms-overflow-style: none;
    scrollbar-width: none;
		.tab-item {
			cursor: pointer;
			position: relative;
			text-align: center;
			display: inline-block;
			padding: 16rpx 24rpx;
			box-sizing: border-box;

			span {
				display: inline-block;
			}
		}
	}

	.tab {
		// background-color: #0BBC58;
		margin-top: 42rpx;
		margin-bottom: 38rpx;
		padding: 0 32rpx;
		
		.img-icon {
			width: 80rpx;
			height: 80rpx;
			margin-bottom: 12rpx;
		}
		
		.text {
			color: #303133;
			font-size: 24rpx;
		}
		.tab-content {
			width: 100%;
		
			height: 162rpx;
		
		}

		.tab-item.active {

			border-radius: 24rpx;
		
			background: linear-gradient(0deg, #0bbc580f 0%, #0bbc580f 100%), #00000005;

		}
		
	}

	.second-tab {
		height: 80rpx;
		.tab-item{
			font-size: 28rpx;
			color: #999999;
		}
		.tab-item.active {
			color: #303133;
			font-weight: 700;
			
		}
		.tab-item.active::after {
		  content: '';
		  position: absolute;
		  bottom: 0;
		  left: 50%;
		  transform: translateX(-50%);
		  width: 18px; /* 比文字略宽 */
		  height: 18px;
		  border: 3px solid #0BBC58;
		  border-radius: 50%;
			border-color: transparent; /* 隐藏其他部分 */

		    border-bottom-color: #0BBC58; /* 组合成45度角 */
		    // transform: rotate(0deg); /* 调整角度 */
		}
	}

	.third-tab {
		margin: 8rpx 0;
		height: 64rpx;
		line-height: 64rpx;
		display: flex;
		justify-content: space-between;

		.third-tab-item {
			flex: 1;
			text-align: center;
		}
	}

	.list {
		width: 100%;
		background-color: #F5F6FA;
		// margin-bottom: 100rpx;
		overflow-y: auto;
		padding: 0 32rpx;
		box-sizing: border-box;

		.list_item {
			width: 100%;
			margin: 0 auto 24rpx;
			padding: 32rpx;
			box-sizing: border-box;
			position: relative;
			background-color: #ffffff;
			border-radius: 16rpx;

			.list_item_top {
		

				.p1 {
					width: 86%;

					height: 60rpx;
					line-height: 60rpx;
					font-size: 28rpx;
					overflow: hidden;

				

					.title{
						 color: #333333;
						 
						 font-size: 28rpx;
						
						 font-weight: 700;
						margin-right: 8rpx;
					}
					
					.sub-title{
						 color: #666666;
						 
						 font-size: 28rpx;
						
						 font-weight: 400;
						
					}
				}

				
			}
			.online-status{
				font-size: 28rpx;
				position: absolute;
				top:0rpx;
				text-align: center;
				right: 0rpx;
				width: 76px;
				height: 28px;
				// line-height: 28px;
				// border-radius: 0px 0px 0px 26px;
				
				// border: 1px solid #ffffff;
				image{
					width: 152rpx;
					height: 56rpx;
				}
	
			}
			// .p2 {
					
			// 	color: #0BBC58;
			// 	background: #0bbc581a;
			// }
			
			// .p_out {
					
			// 	color: #FB4E52;
			// 	background: #fb4e521a;
			// }
			.list_item_text {
				margin-top: 20rpx;
				
				p {
					font-size: 24rpx;
					color: #303133;
					margin-top: 10rpx;
					word-break: break-all;
				}
				

				.label{
					 color: #999999;
					 text-align: right;
					margin-right: 32rpx;
					 font-size: 24rpx;
				}
			}

			.list_item_btn {
				width: 126rpx;
				color: #42b983;
				height: 40rpx;
				text-align: center;
				border: 1rpx solid #42b983;
				border-radius: 25rpx;
				font-size: 24rpx;
				line-height: 35rpx;
				position: absolute;
				bottom: 15rpx;
				right: 20rpx;
			}
		}
	}

	.top {
		position: fixed;
		right: 30px;
		bottom: 100px;
		z-index: 100;

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