<template>
	<view style="background: url(../../static/bg-login.png) no-repeat;background-size:100% auto;height:100vh;background-color: #058cf5; position: fixed; width: 100%;">
		<!-- <view class="bottom-img">
			<image src="../../static/hg-bottom.png" mode=""></image>
		</view> -->
		<view class="login-box">
			<view class="login-title">
				<view class="login-logo">
					<image src="../../static/image/logo.png" mode=""></image>
				</view>
				<view class="login-text">
					<text>欢迎使用，</text>
					<text>秦安安全云平台!</text>
				</view>
			</view>
			<view class="login-content">
				<view class="input-row">
					<view class="title">
						<text class="">手机号码</text>
					</view>
					<view class="m-input-view">
						<input v-model="userName" class="m-input" placeholder-style="color: #5caceb;font-size: 34upx;" placeholder="请输入手机号..." />
					</view>
				</view>
				<view class="input-row mt30">
					<view class="title">
						<text class="">密码</text>
					</view>
					<view class="m-input-view">
						<input v-model="userPwd" class="m-input" placeholder-style="color: #5caceb;font-size: 34upx;" password type="text"
						 placeholder="请输入密码..." />
					</view>
				</view>
			</view>
			<view class="btn-row">
				<button class="cu-btn bg-login margin-tb-sm lg" @click="$noMultipleClicks(login)">登 录</button>
			</view>
			<view class="bar-forget">
<!-- 				<navigator class="title" url="/pages/login/forget/forget">
					忘记密码
				</navigator> -->
				<!-- 				<view class="title">
					注册
				</view> -->
			</view>
		</view>
    <view style="width: 100%;color: #fff;position: absolute;left: 50%;transform: translateX(-50%);bottom: 50upx;display: flex;justify-content: center;align-items: center">
      <radio-group>
      <radio :checked="radio === '1'" @click="radioChange"></radio>
      </radio-group>
      <view style="margin-left: 20upx;display: flex">
        <text>我已阅读并同意</text>
        <navigator style="color: #041d8c" url="/pages/my/agreement/agreement">
          《服务协议》
        </navigator>
        <text>和</text>
        <navigator style="color: #041d8c" url="/pages/my/privacy/privacy">
        《隐私政策》
        </navigator>
      </view>
    </view>
	</view>
</template>

<script>
	import {
		basePath,
		setloginUserId,
		setCorpinfoId,
		setloginUser,
		setDeptId,
		setDeptLevel,
		adminPath,
		corpinfoId,
		setBasePath,
		setIsRest,
		isRest,
		loginUser,
    setPremission,
    publicKey
	} from '@/common/tool.js';
  import JSEncrypt from '../../static/js/jsencrypt.min'
	export default {
		data() {
			return {
				noClick:true,
				userName : '',
				userPwd: '',
        push_clientid:'',
        radio:''
			}
		},
		async onLoad() {
      this.getRemember()
      uni.getPushClientId({
        success: (res) => {
          this.push_clientid = res.cid
          this.getLoginUser()
          console.log('客户端推送标识:',res.cid)
        },
        fail(err) {
          uni.showToast({
            icon: 'none',
            title: "获取用户标识失败,请重新登录",
            duration: 2000
          });
        }
      });
			// this.getLoginUser()
			//this.getUrlVersion();
		},
		methods: {
      getRemember(){
        uni.getStorage({
          key: 'remember',
          success: async (res) => {
            if (res.data && res.data.username) {
              this.userName = res.data.username
              this.userPwd = res.data.userPwd
            }
          }
        });
      },
			getLoginUser() {
				uni.getStorage({
					key: 'USER',
					success: async (res) => {
						if (res.data && res.data.USER_ID) {

							setloginUserId(res.data.USER_ID);
							setCorpinfoId(res.data.CORPINFO_ID);
							setDeptId(res.data.DEPARTMENT_ID);
							setDeptLevel(res.data.DEPARTMENT_LEVEL);

							setloginUser(res.data);
							// 查看是否离岗
							this.handleLoginCheck(res.data.USER_ID).then(()=>{
								uni.navigateTo({
									url: '/pages/index/index',
								});
							})
						}
					}
				});
			},
			handleLoginCheck(USER_ID){
				return new Promise((resolve,reject)=>{
					uni.request({
						url: basePath + '/app/offduty/isRest',
						method: 'POST',
						dataType: 'json',
						header: {
							'Content-type': 'application/x-www-form-urlencoded'
						},
						data: {
							CORPINFO_ID: corpinfoId,
							USER_ID: loginUser.USER_ID,
						},
						success: (res1) => {
							this.updatePushCid(USER_ID, this.push_clientid)
							if ("success" == res1.data.result) {
								if (res1.data.ISREST != null) {
									setIsRest(res1.data.ISREST);
								} else {
									setIsRest(res.data.ISREST);
								}
								resolve()
							}else if ("usercorperror" == res1.data.result) {
								uni.showToast({
									icon: 'none',
									title: "您的企业已停用，请联系管理员",
									duration: 2000
								});
								reject()
							}else if ("userUSEerror" == res1.data.result) {
								uni.showToast({
									icon: 'none',
									title: "您的企业已到使用期限，请联系管理员",
									duration: 2000
								});
								reject()
							}


						},
						fail: (res2) => {
							uni.showToast({
								icon: 'none',
								title: "服务器正在升级，请稍后再试。",
								duration: 2000
							});
						}
					});
				})
			},
			radioChange() {
				if (this.radio) this.radio = ''
				else this.radio = '1'
			},

			userNameinp(e) {
				this.userName = e.detail.value
			},
			userPwdinp(e) {
				this.userPwd = e.detail.value
			},
			login() {
				if (this.radio !== '1') {
					uni.showToast({
						title: '请先阅读并同意《服务协议》和《隐私政策》',
						icon: 'none'
					})
					return;
				}
				var _this = this;
				var userName = _this.userName;
				var userPwd = _this.userPwd;
				var jsencrypt = new JSEncrypt()
				jsencrypt.setPublicKey(publicKey)
				const keydataVal = jsencrypt.encrypt('zcloudchina' + userName + ',zy,' + userPwd)
				// var keydataVal = 'zcloudchina' + userName + ',zy,' + userPwd;


				var myreg = /^(((13[0-9]{1})|159)+\d{8})$/;

				if (userName == '') {
					uni.showToast({
						icon: 'none',
						title: '请输入用户名',
						duration: 2000
					});
					return;
				} else if (userName.length != 11 && !myreg.test(userName)) {
					uni.showToast({
						icon: 'none',
						title: '手机号格式不正确',
						duration: 2000
					});
					return;
				}
				if (userPwd == '') {
					uni.showToast({
						title: '密码不能为空',
						icon: 'none',
						duration: 2000
					});
					return;
				}


				uni.showLoading({
					mask: true,
					title: '请稍候'
				})
				uni.request({
					url: basePath + '/admin/check',
					method: 'POST',
					dataType: 'json',
					header: {
						'Content-type': 'application/x-www-form-urlencoded'
					},
					data: {
						KEYDATA: keydataVal,
						SOURCE: '2',
						tm: new Date().getTime(),
					},
					success: (res) => {
						var result = res.data.result;
						uni.showToast({
							icon: 'none',
							title: res.data.msg,
							duration: 2000
						});
						if ("success" == result) {
							setloginUserId(res.data.USER_ID);
							setCorpinfoId(res.data.CORPINFO_ID);
							setDeptId(res.data.DEPARTMENT_ID);
							setDeptLevel(res.data.DEPARTMENT_LEVEL);
							setIsRest(res.data.ISREST);
							setloginUser(res.data);
							uni.setStorage({key: 'USER', data: res.data});
						  	const remember = {}
						  	remember.username = 	userName
						  	remember.userPwd = userPwd
						  	uni.setStorage({key: 'remember', data: remember});
							this.getMenu()
							this.updatePushCid(res.data.USER_ID, this.push_clientid)
						} else if ("usererror" == result) {
							uni.showToast({
								icon: 'none',
								title: "用户名或密码有误",
								duration: 2000
							});
						} else if ("error" == result) {
							uni.showToast({
								icon: 'none',
								title: "缺少参数",
								duration: 2000
							});
						} else if ("invalid" == result) {
							uni.showToast({
								icon: 'none',
								title: "账号已被冻结，请联系管理员",
								duration: 2000
							});
						} else if ("usercorperror" == result) {
							uni.showToast({
								icon: 'none',
								title: res.data.msg,
								duration: 2000
							});
						} else if ("userUSEerror" == result) {
							uni.showToast({
								icon: 'none',
								title: res.data.msg,
								duration: 2000
							});
						}else if ("maintainDeactivateError" == result) {
							uni.showToast({
								icon: 'none',
								title: "企业处于维护停用阶段，暂时无法登录",
								duration: 2000
							});
						}else if ("exception" == result) {
							uni.showToast({
								icon: 'none',
								title: res.data.exception,
								duration: 2000
							});
						}

					},
					fail: (res) => {
						uni.showToast({
							icon: 'none',
							title: "服务器正在升级，请稍后再试。",
							duration: 2000
						});
					}
				})
			},
			getMenu() {
				var _this = this;
				uni.showLoading({
					title: '请稍候'
				})
				uni.request({
					url: basePath + '/app/main/index',
					method: 'POST',
					dataType: 'json',
					header: {
						'Content-type': 'application/x-www-form-urlencoded'
					},
					data: {
						USER_ID: loginUser.USER_ID,
					},
					success: (res) => {

						if ("success" == res.data.result) {

							var menuList = res.data.menuList
							var premissionList = new Map()

							menuList.map(item => {
								if (item.menu_NAME == '安全承诺' && item.hasMenu) {
									premissionList.set('commitment', true)
									if (item.subMenu && item.subMenu.length > 0) {
										item.subMenu.map(child => {
											if (child.menu_NAME == '公司级承诺公告' && child.hasMenu) {
												premissionList.set('commitment-company', true)
											}
											if (child.menu_NAME == '车间级承诺公告' && child.hasMenu) {
												premissionList.set('commitment-workshop', true)
											}
											if (child.menu_NAME == '班组级承诺公告' && child.hasMenu) {
												premissionList.set('commitment-team', true)
											}
										})
									}
								}

								if (item.menu_NAME == '受限空间作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('confinedspace', true)
								}
								if (item.menu_NAME == '动火作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('hotwork', true)
								}
								if (item.menu_NAME == '高处作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('high-work', true)
								}
								if (item.menu_NAME == '吊装作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('hoisting', true)
								}
								if (item.menu_NAME == '盲板抽堵作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('blind-board', true)
								}
								if (item.menu_NAME == '动土作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('break-ground', true)
								}
								if (item.menu_NAME == '临时用电作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('electricity', true)
								}
								if (item.menu_NAME == '断路作业管理' && item.hasMenu) {
									premissionList.set('eightWork', true)
									premissionList.set('open-circuit', true)
								}
								if (item.menu_NAME == '在线学习与考试' && item.hasMenu) {
									premissionList.set('education', true)
								}

								if (item.menu_NAME == '设备设施管理' && item.hasMenu) {
									premissionList.set('speEquip', true)
								}
							})
							setPremission(Object.fromEntries(premissionList));
							uni.hideLoading();
							uni.showToast({
								title: "登录成功",
								duration: 1000
							});
							uni.redirectTo({
								url: '/pages/index/index'
							});
						} else {
							uni.showToast({
								title: res.data.message,
								duration: 2000
							});
						}
					},
					fail: (res) => {
						uni.showToast({
							icon: 'none',
							title: "服务器正在升级，请稍后再试。",
							duration: 2000
						});
					}
				});
			},
			getUrlVersion() {
				plus.runtime.getProperty(plus.runtime.appid, function (inf) {
					var _this = this;
					//  路径
					uni.request({
						url: basePath + '/app/versionurl/goUrlByVersion',
						method: 'POST',
						dataType: 'json',
						header: {
							'Content-type': 'application/x-www-form-urlencoded'
						},
						data: {
							VERSION: inf.version,
						},
						success: (res) => {
							if (res.data.pd != null) {
								console.info(inf.version);
								setBasePath(res.data.pd.URL);
							}
						},
						fail: (res) => {
							uni.showToast({
								icon: 'none',
								title: "服务器正在升级，请稍后再试。",
								duration: 2000
							});
						}
					});
				});
			},
			updatePushCid(userId, pushCid) {
				uni.request({
					url: basePath + '/app/user/updatePushCid',
					method: 'POST',
					dataType: 'json',
					header: {
						'Content-type': 'application/x-www-form-urlencoded'
					},
					data: {
						USER_ID: userId,
						PUSH_CID: pushCid
					},
				});
			}
		}
	}
</script>

<style>
	.bottom-img{
		height: 298upx;
		width: 100%;
		position: fixed;
		bottom: 0;
	}
	.bottom-img image{
		width: 100%;
		height: 100%;
	}
	.bg-login {
		background-color: #72b0ed;
		color: #1f63ae;
		font-weight: bold;
	}

	.btn-row {
		display: flex;
		flex-direction: column;
	}

	.login-box {
		padding: 105upx 55upx;
	}

	.login-img {
		width: 90upx;
		height: 90upx;
		margin-bottom: 50upx;
	}

	.login-img image {
		width: 100%;
		height: 100%;
	}

	.login-title {
		display: flex;
		align-items: center;
		padding-top: 46upx;
	}
	.login-logo{
		margin-right: 26upx;
		margin-top: 10upx;
	}
	.login-logo image{
		width: 100upx;
		height: 100upx;
	}
	.login-text{
		color: #fff;
		font-size: 44upx;
		font-weight: 500;
		display: flex;
		flex-direction: column;
		line-height: 1.6;
	}

	.login-content {
		margin-top: 100upx;
		margin-bottom: 50upx;
	}

	.input-row .title {
		color: #8ee6ff;
		margin-bottom: 10upx;
	}

	.bar-forget {
		display: flex;
		padding-top: 30upx;
		justify-content: space-between;
		color: #8ee6ff;
	}

	.m-input-view {}

	.m-input-view .m-input {
		height: 80upx;
		line-height: 1;
		color: #fff;
		font-size: 40upx;
		border-bottom: 1upx solid #62abf7;
	}
</style>
