<template>
  <view class="page">
    <u-navbar class="u-navbar" title="人员资质查询" placeholder @leftClick="leftClick" leftIconColor="#fff"  bgColor="#00337A"  :titleStyle="{ color: '#FFF', fontSize: '32rpx' }"></u-navbar>
	<view class="tab-box">
		<view class="tab-item" :class="currentTabIndex == 0 ? 'active' : ''" @click="currentTabIndex = 0">
			姓名
			<view class="activeLine" v-if="currentTabIndex == 0"></view>
		</view>
		<view class="tab-item" :class="currentTabIndex == 1 ? 'active' : ''" @click="currentTabIndex = 1">
			组织
			<view class="activeLine" v-if="currentTabIndex == 1"></view>
		</view>
 
	</view> 
	
	<scroll-view class="content" scroll-y="true">
		<view class="view-box" v-show="currentTabIndex == 0">
			<view class="form-box" style="padding: 20rpx 0rpx;">
				<view class="form-input-box">
					<view style="width:70%;height: 100%;">
						<u--input v-model="keyWord" type="text" placeholder="请输入人员姓名" maxlength="20"  border="surround" clearable></u--input>
					</view> 
					<view class="submitBtn" style="width: 20%;" @click="searchList">查询</view> 
				</view> 
			</view>
			<view style="width: 100%;height: 72vh;display: flex;align-items: center;justify-content: center;" v-if="isLoading">
				<u-loading-icon :show="true" mode="circle" text="加载中" :vertical="true"></u-loading-icon>
			</view>
			<view v-if="!isLoading&&listData.length==0" style="width: 96%;height: 60vh;display: flex;flex-direction: column;justify-content: center;align-items: center;" >
				<image src="../../../../static/realName/noData.png" style="width: 100rpx;height: 120rpx;" mode=""></image>
				<view>暂无数据</view>
			</view>
			<u-list height="72vh" v-if="!isLoading&&listData.length>0">
				<u-list-item  v-for="(item, index) in listData" :key="index">
					<view class="list-item">
						<view class="content-box" @click="goDetail(item)"> 
							<view class="item-text">
								<text class="label" style="font-weight: bold;">姓名：</text>
								<text class="info">{{item.name}}</text> 
							</view>
							<view class="item-text" >
								<text class="label" style="font-weight: bold;">身份证号：</text>
								<text class="info">{{item.idNumber}}</text>
							</view>
							<view class="item-text" >
								<text class="label" style="font-weight: bold;">工种：</text>
								<text class="info">{{item.postName}}</text>
							</view>
						</view> 
					</view>
				</u-list-item>
			</u-list> 
		</view>
		
		<view class="view-box" v-show="currentTabIndex == 1">
			<view class="form-box" style="padding: 20rpx 0rpx;">
				<view class="form-input-box">
					<view style="width: 70%;height: 100%;">
						<u--input v-model="keyWord1" type="text" placeholder="请输入人员姓名" maxlength="20"  border="surround" clearable></u--input>
					</view> 
					<view class="submitBtn" style="width: 20%;" @click="searchList">查询</view>
				</view>
			</view>
			<view style="width: 100%;margin: 0px;height: 72vh;">
				<ly-tree :tree-data="orgList" 
					:ready="ready"
					node-key="id" 
					@node-click="handleNodeClick">
				</ly-tree>
			</view>
			
		</view>
		
	</scroll-view>
	
	
 
  </view>
</template>

<script> 
import config from '@/config' 
import LyTree from '@/components/ly-tree/ly-tree.vue'
export default {
	components: { LyTree },
	data() {
		return { 
			currentTabIndex:0,
			proId:uni.getStorageSync('realNameUser').proId, 
			teamId:uni.getStorageSync('realNameUser').teamId,
			userId:uni.getStorageSync('realNameUser').userId,
			keyWord:"",
			keyWord1:"", 
			isLoading:false,
			ready: true,
			props: {
				label: 'name',
				children: 'children'
			},
			listData:[],
			orgList:[],
			dataList: [
					{ id:'1',
			          label: '广东电网直流背靠背东莞工程（大湾区南通道直流背靠背工程）110kV环保城输变电工程（电缆部分）',
			          children: [
						{
							id:'2',
							label: '广东电网直流背靠背东莞工程（大湾区南通道直流背靠背工程）110kV环保城输变电工程（电缆部分）',
							children: [{
								id:'3',
								label: '广东电网直流背靠背东莞工程（大湾区南通道直流背靠背工程）110kV环保城输变电工程（电缆部分）'
							}]
						}
					  ]
			        },
			]
		}
	},
	onLoad(option) {
		this.selectOrgPerson()
	},
	onShow() {
		 
	},
	watch: {
		currentTabIndex: function(newVal, oldVal) {
			// if (newVal == 0) {
			// 	this.selectBasePerson()
			// } else if(newVal == 1) {
				
			// }
		}
	},
	methods: { 
		searchList(){
			if (this.currentTabIndex == 0) {
				this.selectBasePerson()
			} else if(this.currentTabIndex == 1) {
				this.selectOrgPerson()
			}
		},
		//获取列表
		selectBasePerson(){
			let param={
				keyword:this.keyWord,
			} 
			console.log(param)
			this.listData=[]
			this.isLoading=true;
			uni.request({
				url: config.realAppUrl+'/BasePerson/selectBasePerson', 
				method: 'post',
				data: param,
				header: {
					'Content-Type': 'application/json',
					Authorization: uni.getStorageSync('realNameToken')	
				},
				success: res => {
				console.log(res)
					this.isLoading=false;
					res = res.data;
					if(res.code==200){
						this.listData=res.data;
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none'
						})
					}
				},
				fail: err => {
					this.isLoading=false;
					console.log(err)
				}
			}) 
		},
		goDetail(item){
			uni.navigateTo({
				url: `/pages/realName/workbench/qualifications/detail?idNumber=${item.idNumber}`
			})
		},
		 //获取组织
		selectOrgPerson(){
			let param={
				keyword:this.keyWord1,
			} 
			console.log(param)  
			uni.request({
				url: config.realAppUrl+'/BasePerson/selectOrgPerson', 
				method: 'post',
				data: param,
				header: {
					'Content-Type': 'application/json',
					Authorization: uni.getStorageSync('realNameToken')	
				},
				success: res => {
				console.log(res) 
					res = res.data;
					if(res.code==200){
						if(res.data.length>0){
							res.data.forEach((item,index)=>{
								if(item.name.indexOf("底级人员")>-1){
									let strArr=item.name.split("底级人员")
									item.label=`${strArr[0]}(${strArr[1]})`
								}else{
									item.label=item.name;
								}
							})
							this.orgList=this.handleTree(res.data,"id","pid")
							this.ready = true;
						}
					}else{
						uni.showToast({
							title: res.msg,
							icon: 'none'
						})
					}
				},
				fail: err => {
					this.isLoading=false;
					console.log(err)
				}
			}) 
		},
		// uni-app中emit触发的方法只能接受一个参数，所以会回传一个对象，打印对象即可见到其中的内容
		handleNodeClick(obj) {
			let checkData = obj.data
			if(checkData.name.indexOf("底级人员")>-1){
				console.log(checkData);
				let strArr=checkData.name.split("底级人员") 
				uni.navigateTo({//人员查询
					url: `/pages/realName/workbench/qualifications/detail?idNumber=${strArr[1]}`
				})
			}
		},
		leftClick() {
			console.log('返回')
			uni.navigateBack({
				delta: 1 // 返回
			});
		},
		//构造树状数据
		handleTree(data, id, parentId, children) {
		  let config = {
		    id: id || 'id',
		    parentId: parentId || 'parentId',
		    childrenList: children || 'children'
		  };
		
		  var childrenListMap = {};
		  var nodeIds = {};
		  var tree = [];
		
		  for (let d of data) {
		    let parentId = d[config.parentId];
		    if (childrenListMap[parentId] == null) {
		      childrenListMap[parentId] = [];
		    }
		    nodeIds[d[config.id]] = d;
		    childrenListMap[parentId].push(d);
		  }
		
		  for (let d of data) {
		    let parentId = d[config.parentId];
		    if (nodeIds[parentId] == null) {
		      tree.push(d);
		    }
		  }
		
		  for (let t of tree) {
		    adaptToChildrenList(t);
		  }
		
		  function adaptToChildrenList(o) {
		    if (childrenListMap[o[config.id]] !== null) {
		      o[config.childrenList] = childrenListMap[o[config.id]];
		    }
		    if (o[config.childrenList]) {
		      for (let c of o[config.childrenList]) {
		        adaptToChildrenList(c);
		      }
		    }
		  }
		  return tree;
		},
		
		
		timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
			let date
			// 若传入时间为假值，则取当前时间
			if (!dateTime) {
				date = new Date()
			}
			// 若为unix秒时间戳，则转为毫秒时间戳（逻辑有点奇怪，但不敢改，以保证历史兼容）
			else if (/^\d{10}$/.test(dateTime?.toString().trim())) {
				date = new Date(dateTime * 1000)
			}
			// 若用户传入字符串格式时间戳，new Date无法解析，需做兼容
			else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
				date = new Date(Number(dateTime))
			}
			// 处理平台性差异，在Safari/Webkit中，new Date仅支持/作为分割符的字符串时间
			// 处理 '2022-07-10 01:02:03'，跳过 '2022-07-10T01:02:03'
			else if (typeof dateTime === 'string' && dateTime.includes('-') && !dateTime.includes('T')) {
				date = new Date(dateTime.replace(/-/g, '/'))
			}
			// 其他都认为符合 RFC 2822 规范
			else {
				date = new Date(dateTime)
			}
		
			const timeSource = {
				'y': date.getFullYear().toString(), // 年
				'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
				'd': date.getDate().toString().padStart(2, '0'), // 日
				'h': date.getHours().toString().padStart(2, '0'), // 时
				'M': date.getMinutes().toString().padStart(2, '0'), // 分
				's': date.getSeconds().toString().padStart(2, '0') // 秒
				// 有其他格式化字符需求可以继续添加，必须转化成字符串
			}
		
			for (const key in timeSource) {
				const [ret] = new RegExp(`${key}+`).exec(formatStr) || []
				if (ret) {
					// 年可能只需展示两位
					const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0
					formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))
				}
			}
			return formatStr
		},
	},
}
</script>
 
<style lang="scss">
	/deep/.ly-tree .ly-tree-node__content{
		margin-bottom: 10rpx;
		height: auto;
	}
	/deep/.ly-tree .ly-tree-node{
		
		white-space: normal;
	}
.page {
	width: 100vw;
	height: 100vh;
	background-color: #EFEFEF;
	box-sizing: border-box;
	.tab-box {
		width: 100%;
		margin: 0rpx auto;
		padding-top: 20rpx; 
		display: flex;
		justify-content: space-between;
		background-color: #FFF;
		.tab-item {
			height: 70upx;
			width: 45%;
			font-size: 30upx;
			text-align: center;
			line-height: 70upx;
			color: #666;
		}
		.active {
			color: #00337A;
			border-radius: 10upx 10upx 0 0;
			font-weight: bold;	
		}
		.activeLine{
			background: #00337A;
			border-radius: 10upx;
			width: 100%;
			height: 6upx;
		}
	}
	.submitBtn{
		width: 10%;
		height: 50rpx;
		line-height: 50rpx;
		border-radius: 10rpx;
		background: #00337A;
		color: #FFF;
		padding: 10rpx 16rpx;
		text-align: center;
	}
	.content{
		width: 100%;
		height: 84vh;
		margin-top: 20rpx;
		// padding-bottom: 80rpx;
		background-color: #EFEFEF;
	}
	
	.btn{
		padding: 12rpx 20rpx;
		border-radius: 10rpx;
		margin: 0rpx 20rpx;
	}
	
	.view-box{
		width: 100%;
		height: auto;
		margin: 0rpx auto;
		border-radius: 10rpx;
		padding-top: 20rpx;
		// background-color: red;
		
		.title-view{
			font-weight: 600;
			margin-left: 20rpx;
			border-bottom: 1rpx solid #EFEFEF;
		}
		.form-box{
			width: 100%;
			height: auto;
			font-size: 26rpx;
			background-color: #FFF;
			.form-input-box{
				padding: 0 10rpx;
				display: flex;
				align-items: center;
				justify-content: space-between; 
			}
		}
		.view-item{
			width: 94%;
			margin: 0rpx auto;
			padding:10rpx;
			display: flex;
			border-bottom: 1rpx solid #EFEFEF;
			font-size: 26rpx;
			.label{
				width: 160rpx;
				color: #666;
				margin-bottom: 10rpx;
			}
			.img-box{
				width: 94%;
				height: auto;
				margin: 0rpx auto;
				padding:10rpx;
				display: flex;
				border-bottom: 1rpx solid #EFEFEF;
				.img-item {
					float: left;
					width: 200upx;
					height: 200upx;
					border: 1px solid #ddd;
					margin: 0 22rpx 20upx 0upx;
					position: relative;
					box-sizing: border-box;
					background: #eee;
					.img {
						display: block;
						width: 100%;
						height: 100%;
					}
					.remove-btn {
						position: absolute;
						top: -18upx;
						right: -18upx;
						width: 44upx;
						height: 44upx;
						z-index: 2;
					}
				}
				.upload-btn {
							display: flex;
							justify-content: center;
							align-items: center;
						.img {
							width: 60upx;
							height: 60upx;
							margin: unset;
						}
				}
			}
		}
	
	
		.sumbit-btn{
			width: 94%;
			height: 80rpx;
			margin: 0 auto;
			margin-bottom: 100rpx;
			display: flex;align-items: center;justify-content: center;
			background: #00337A;
			color: #FFF;
			border-radius: 10rpx;
		}
	}
	.list-item{
			width: 100%;
			height: auto;
			background-color: #fff;
			border-radius: 20rpx;
			margin: 20rpx 0;
			
			.content-box{
				width: 96%;
				height: auto;
				margin: 20rpx;
				// background-color: #F2F6F9;
				padding: 10rpx 0;
				
				.item-text{
					width: 96%;
					margin-left: 20rpx;
					margin-top: 15rpx;
					// display: flex;
					align-items: center;
					position: relative;
					.label{
						color: #3A3A3A;
						// font-weight: 500;
					}
					.info-right{
						position: absolute;
						top: 0rpx;
						right: 40rpx;
					}
					.info{
						color: #6F6F6F;
					
					}
				}
			}
		}
 
 

}
</style>
