<template>
	<view class="page">
		<view class="status_bar">
			<view class="top_view"></view>
		</view>
		<view class="wui_banner">
			<view class="banner_img">
				<image src="../../static/home-bg.png" mode=""></image>
			</view>
		</view>
		<view class="home-apps">
			<view class="home-apps-item" @click="fnScan">
				<view class="home-apps-item-img">
					<image src="../../static/icon-apps/app_icons6.png" mode=""></image>
				</view>
				<view class="text">
					<text>扫码</text>
				</view>
			</view>
			<view class="home-apps-item" v-for="(item, index) in baseList" :key="index" @click="fnNavigator(index)">
				<view class="home-apps-item-img">
					<image :src="item.img" mode=""></image>
				</view>
				<view class="text">
					<text>{{ item.title }}</text>
				</view>
			</view>
		</view>
		<u-modal :show="updateVersion.modalShow" title="温馨提示" :showConfirmButton="updateVersion.showConfirmButton"
			:showCancelButton="updateVersion.showCancelButton" :confirmText="updateVersion.confirmText"
			:cancelText="updateVersion.cancelText" @cancel="modalCancel" @confirm="modalConfirm">
			<view style="text-align: center; color: #606266">
				<rich-text :nodes="updateVersion.modalContent"></rich-text>
			</view>
		</u-modal>

	</view>
</template>

<script>
	import updateVersion from '../../utils/updateVersion'
  import {
    setEntry,
    getIsUploadFace,
    getClassInfoByParams,
    getClassList, getExamExercises
  } from '../../api'
	import {
		getStudentInfoApi,
		setEntryV1
	} from "../../api/api";
	import store from "../../store";

	export default {
		mixins: [updateVersion],
		data() {
			return {
				baseList: [{
						img: require('../../static/icon-apps/app_icons.png'),
						title: '电子工牌',
						url: '/pages/electronic_work_card/index'
					},
					{
						img: require('../../static/icon-apps/app_icons2.png'),
						title: '服务单位 管理',
						url: '/pages/service_unit_management/index'
					},
					{
						img: require('../../static/icon-apps/app_icons3.png'),
						title: '我的信息',
						url: '/pages/mine/information/index'
					},
					{
						img: require('../../static/icon-apps/app_icons4.png'),
						title: '证书信息',
						url: '/pages/certificate_information/index'
					},
					{
						img: require('../../static/icon-apps/app_icons5.png'),
						title: '就职单位',
						url: '/pages/employed_by/index'
					},
					{
						img: require('../../static/icon-apps/app_icons7.png'),
						title: '高危作业',
						url: '/pages/eight_assignments/index'
					},
					{
						img: require('../../static/icon-apps/app_icons8.png'),
						title: '培训管理',
						url: '/pages/train_management/index'
					},
					{
						img: require('../../static/icon-apps/app_icons9.png'),
						title: '隐患整改',
						url: '/pages/hidden_rectification/index'
					},
          {
            img: require('../../static/icon-apps/home-door.png'),
            title: '口门门禁管理',
            url: '/pages/door_access_control/index'
          },
				],
				classInfo: null,
			}
		},
		computed: {
			userInfo() {
				return this.$store.getters.getUserInfo
			}
		},
		onLoad() {
			if (this.$store.getters.getUserInfo.USER_ID) {
				// 获取系统版本号, 其函数主体在 /utils/updateVersion.js 文件内查找
				this.fnUpdateVersion(false)
        // 应齐津铖要求，临时取消;根据BUG号 7592 人脸更新页面报错
				// this.getUserFaceCompleted()
			}
		},
		methods: {
			handleGetClassInfoByParams(classId) {
				return new Promise(async (resolve, reject) => {
					const userInfo = store.getters.getUserInfo
					await getClassInfoByParams({
							classId,
							userId: userInfo.USER_ID
						})
						.then((resData) => {
							resolve(resData.classInfo)
						})
						.catch(() => {
							uni.$u.toast('网络开小差了,请稍后尝试')
							reject()
						})
				})
			},
			async fnScan() {
        this.classInfo = null;  // 清空 classInfo
				uni.scanCode({
					success: async (res) => {
						// let obj = JSON.parse(res.result)
						// let type = obj[0].CODE_TYPE
						const {
							classId,
							stageexampaperinputId,
							type,
							CORPINFO_ID,
							RELEVANT_UNIT_NAME
						} = JSON.parse(res.result);
						if (type !== '0') {
							this.classInfo = await this.handleGetClassInfoByParams(classId);
							const resData = await getStudentInfoApi({
								classId: this.classInfo.classId
							})
							await this.$store.dispatch('setStudentInfo', resData.studentInfo)
						}
						switch (type) {
							case "0": {
								let info = await setEntryV1({
									userId: this.userInfo.USER_ID,
									corpinfoId: CORPINFO_ID,
									RELEVANT_UNIT_NAME: RELEVANT_UNIT_NAME,
									postMethod: 'application/json'
								})
								if (info.code === 200) {
									uni.$u.toast('入职成功')
								} else {
									uni.$u.toast('入职失败，请联系管理员')
								}
								break;
							}
							// case "1": {
							// 	// type=1时跳转电子工牌页面
							// 	uni.$u.route({
							// 		url: '/pages/electronic_work_card/index',
							// 		params: {
							// 			USER_ID: obj[0].USER_ID,
							// 			CODE_TYPE: obj[0].CODE_TYPE
							// 		}
							// 	})
							// 	break;
							// };
							case "2": {
								// 签到二维码方式进入, [type: 2 --> 签到二维码方式进入]
								if (store.getters.getVerification === '0') {
									uni.showModal({
										title: '温馨提示',
										content: '检测到您还未完成人脸信息读取，请先完成人脸信息认证!',
										success: function(res) {
											if (res.confirm) {
												uni.$u.route({
													url: '/pages/train_management/face_authentication',
													params: {
														type: 'facial_input'
													}
												})
											}
											if (res.cancel) {
												uni.navigateBack({
													delta: 1
												})
											}
										}
									})
								}
								if (store.getters.getVerification === '1') {
									if (this.classInfo) {
										if (this.classInfo.studystate === "3") {
											uni.$u.toast("您已经入班签到，无需再次签到！")
											return;
										}
										uni.$u.route({
											url: '/pages/train_management/realname_info_auth',
											params: {
												type: 'scan_face',
												classId
											}
										})
									} else {
										uni.$u.toast('您未在培训计划内，无法入班签到，请联系教师')
									}
								} else {
									uni.$u.toast('您还未完成人脸信息读取，请先完成人脸信息认证!')
								}
								break;
							}
							case "3": {
								// 考试二维码方式进入 [type: 3 --> 考试二维码方式进入]
								if (store.getters.getVerification === '1') {
									if (this.classInfo) {
                    if (this.classInfo.studystate !== "3") {
                      uni.$u.toast("您还未入班签到，无法考试！")
                      return;
                    }
                    if (this.classInfo.stageexamstate === "3") {
                      uni.$u.toast("您已经考试通过，无需再次考试！")
                      return;
                    }
                    const resData = await getExamExercises({
                      stageexampaperinputId,
                      classId,
                    })
                    if (resData.numberofexams <= 0) {
                      uni.$u.toast("您的考试次数已用尽，无法再次考试！")
                      return;
                    }
										uni.$u.route({
											url: '/pages/train_management/face_authentication',
											params: {
												type: 'learning_certification',
												stageexampaperinputId,
												classId,
											}
										})

									} else {
										uni.$u.toast('您未在培训计划内，无法进行考试，请联系教师')
									}
								} else {
									uni.$u.toast('您还未完成人脸信息读取，请先完成人脸信息认证!')
								}
								break;
							}
							default: {
								break;
							}
						}
					}
				})
			},
			fnIsShow(index) {
				if (index === 5) return !!this.userInfo.CORPINFO_ID
				return true
			},
			fnNavigator(e) {
				uni.$u.route({
					url: this.baseList[e].url
				})
			},
			/**
			 * 获取是否已经完成上传人脸信息
			 */
			async getUserFaceCompleted() {
				const userFaceData = await getIsUploadFace()
				// userFaceData.authentication --> 0: 未完成人脸认证
				// userFaceData.authentication --> 1: 已完成人脸认证
				this.$store.dispatch('setVerification', userFaceData.authentication ? userFaceData.authentication :
					"0"); // 设置本地存储人脸检测验证状态
				const isPassedVerification = userFaceData.authentication === '0'
				if (isPassedVerification) {
					uni.showModal({
						title: '温馨提示',
						content: '为了能够得到更好的体验，我们会获取您个人信息，请完成人脸信息认证!',
						success: function(res) {
							if (res.confirm) {
								uni.$u.route({
									url: '/pages/train_management/face_authentication',
									params: {
										type: 'facial_input'
									}
								})
							}
							if (res.cancel) {
								uni.$u.toast("您可进入[我的]-[人脸认证]完成信息认证")
							}
						}
					})
				}
			}
		}
	}
</script>

<style lang="scss" scoped>
	.page {
		background-color: #f7f9ff;
		min-height: 100vh;
	}
</style>
