<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>
		<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 {
		basePath,
		setloginUserId,
		setCorpinfoId,
		setloginUser,
		setDeptId,
		setDeptLevel,
		corpinfoId,
		setBasePath,
		setIsRest,
		isRest,
		loginUser,
		publicKey
	} from '@/common/tool.js';
	import JSEncrypt from '../../static/js/jsencrypt.min'
	import updateVersion from '../../utils/updateVersion'
  import {getVersion} from "../../api";


	export default {
		mixins: [updateVersion],
		data() {
			return {
				noClick: true,
				userName: '',
				userPwd: '',
				radio: ''
			}
		},
		async onLoad() {
			await this.fnUpdateVersion(false)
      await this.getRemember()
      await this.getLoginUser()
			// this.getLoginUser()
			// this.getUrlVersion();
		},
		methods: {
      async goRemLogin() {
        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)
        uni.showLoading({
          mask: true,
          title: '请稍候'
        })
        await 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
              });
              uni.hideLoading();
              uni.showToast({
                title: "登录成功",
                duration: 1000
              });
              uni.redirectTo({
                url: '/pages/index/index'
              });
            } 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
            });
          }
        });
      },
			async getRemember() {
				await uni.getStorage({
					key: 'remember',
					success: async (res) => {
						if (res.data && res.data.username) {
							this.userName = res.data.username
							this.userPwd = res.data.userPwd
              // await this.goRemLogin()
            }
					}
				});
			},
			async getLoginUser() {
        // #ifdef APP-PLUS
        let resData = await getVersion({FILETYPE:plus.os.name})
        if (resData.pd) {
          if (plus.runtime.version != resData.pd.VERSION) {
              return
          }
        }
        // #endif
        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) => {
							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
							});
							uni.hideLoading();
							uni.showToast({
								title: "登录成功",
								duration: 1000
							});
							uni.redirectTo({
								url: '/pages/index/index'
							});
						} 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
						});
					}
				});
			},
			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
							});
						}
					});
				});
			},
		}
	}
</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>
