<template>
		<view class="studentWrapper">
			<view v-for="(item,index) in stuNeeds" :key="index" >
				<view class="studentList" @click="goDetail(item)">
				    <view class="studentLeft">
				        <view class="studentLeftTitle">
				            <text>{{item.name}}<text style="font-weight: 400; margin-left: 4px">学员</text></text>
				        </view>
				        <view class="studentNeedCourse">
				            <text>科目:</text>
				            <text class="needCourse">{{item.subjectBig}}/{{item.subjectSmall}}</text>
				        </view>
				        <view class="studentExpect">
				            <text>期望目标:</text>
				            <text class="expect">{{item.goal}}</text>
				        </view>
				    </view>
				    <view class="studentRight">
				        <view class="studentRightTitle">
				            <text>{{item.salary}}/小时</text>
				        </view>
				        <view class="studentSex">
				            <text>{{item.sex}}</text>
				        </view>
				        <view class="studentRightTitle">
				            <text>{{item.kil}}km</text>
				        </view>
				    </view>
				</view>
			</view>
		    
		</view>
</template>

<script>
	import { mapState } from 'vuex'
	
	export default {
		computed: {
			...mapState('m_user', ['location'])
		},
		data() {
			return {
				stuNeeds: [],
				queryObj: {
					pageNum: 1,
					pageSize: 8
				},
				total: 0,
				isloading: false
			};
		},
		created() {
			this.getAllStuNeeds()
		},
		methods: {
			async getAllStuNeeds(cb) {
				// 打开节流阀
				this.isloading = true
				
				// 发起请求
				const { data: result } = await uni.$http.get('/education/student-requirements/getAllRequirements', this.queryObj)
				
				// 关闭节流阀
				this.isloading = false
				// 只要数据请求完毕,就立即按需调用 cb 回调函数
				cb && cb()
				
				for (let i = 0; i < result.data.list.length; i++) {
					let arr = result.data.list[i].locationAl.split(",")
					let kil = this.space(arr[0], arr[1], this.location.latitude, this.location.longitude)
					result.data.list[i].kil = kil
				}
				
				// 新旧拼接
				this.stuNeeds = [...this.stuNeeds, ...result.data.list]
				this.total = result.data.total
				
				// console.log(result)
			},
			// 下拉刷新
			onPullDownRefresh() {
				if (this.isloading) return
				
				this.queryObj.pageNum = 1
				this.total = 0
				this.stuNeeds = []
				this.isloading = false
				
				this.getAllStuNeeds( () => uni.stopPullDownRefresh())
			},
			// 触底事件
			onReachBottom() {
				// 判断是否有下一页
				if (this.queryObj.pageNum * this.queryObj.pageSize >= this.total)
				return uni.$showMsg('数据加载完毕!')
				
				// 判断是否正在请求数据
				if (this.isloading) return
				
				this.queryObj.pageNum += 1
				this.getAllStuNeeds()
			},
			space(lat1, lng1, lat2, lng2) {
				// console.log(lat1, lng1, lat2, lng2)
				var radLat1 = lat1 * Math.PI / 180.0;
				var radLat2 = lat2 * Math.PI / 180.0;
				var a = radLat1 - radLat2;
				var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
				var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
						Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
				s = s * 6378.137;
				s = Math.round(s * 10000) / 10000;	// 单位千米
				return s.toFixed(2)	// 保留两位小数
			},
			goDetail(item) {
				uni.navigateTo({
					url: '/subpkg/all_stu_require_detail/all_stu_require_detail?item=' + encodeURIComponent(JSON.stringify(item)) 
				})
			}

		}
	}
</script>

<style lang="scss">
.studentWrapper{
    height: 100%;
    background-color: #E2F0D9;
    padding: 20rpx;
}

.studentList{
    display: flex;
    position: relative;
    /* border: 1rpx solid gray; */
    border-radius: 20rpx;
    background-color: #FFF2CC;
    margin-bottom: 20rpx;
}

/* 左侧部分 */
.studentLeft{
    padding: 10rpx;
    font-weight: bold;
    font-size: 30rpx;
}
.studentLeftTitle,
.studentExpect,
.studentNeedCourse{
    padding: 6rpx 0;
}

/* 科目 */
.studentNeedCourse{
    display: flex;
}


/* 期望目标 */
.studentExpect{
    display: flex;
	font-weight: 400;
	font-size: 26rpx;
}
/* 期望目标和需求科目详情 */
.needCourse,
.expect{
    margin-left: 10rpx;
    width: 240rpx;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 右侧部分定位 */
.studentRight{
    position: absolute;
    left: 65%;
    color: #FF0000;
    font-size: 32rpx;
}

.studentRight,
.studentSex{
    padding: 10rpx 0;
}
/* 设置性别的字体 */
.studentSex{
    font-weight: bold;
    color: #00B050;
}
</style>