<template>
  <app-statusbar class="login">
    <app-navback class="login-navback" />
    <div class="login-logo"></div>
    <Form class="login-form" @submit="formSubmit">
      <CellGroup>
        <Field v-model="formData.LoginID" name="account" label="用户名" size="large" placeholder="请输入用户名"
          :rules="[{ required: true, message: '请输入用户名' }]" />
        <Field v-model="formData.LoginPWD" name="password" type="password" label="密码" size="large" placeholder="请输入密码"
          :rules="[{ required: true, message: '请输入密码' }]" autocomplete="off" />
      </CellGroup>
      <div class="button-link">
        <span @click="navigationTo('UserRegister')">用户注册</span>
        <span @click="navigationTo('UserForget')">忘记密码</span>
      </div>
      <div class="button-submit">
        <Button type="primary" native-type="submit" round block>登录</Button>
      </div>
    </Form>
    <div class="login-footer">
      <div class="login-footer__trem">
        <Checkbox shape="square" icon-size=".36rem" v-model="checked">我已阅读并同意</Checkbox>
        <span @click="routerTo('rules-zcxy')" style="color:#E92020">《用户注册协议》</span>
        <span>、</span>
        <span @click="routerTo('rules-yhkhfxgzs')" style="color:#E92020">《用户开户风险告知书》</span>
        <span>、</span>
        <span @click="routerTo('rules-yszc')" style="color:#E92020">《隐私政策》</span>
      </div>
      <div class="login-footer__version" v-if="plus.getSystemInfo('os') !== 'Web'">
        <span>v{{ appVersion }}</span>
      </div>
    </div>
  </app-statusbar>
</template>

<script lang="ts" setup>
import { shallowRef } from 'vue'
import { Button, Field, CellGroup, Form, Checkbox, showFailToast, showSuccessToast, showToast } from 'vant'
import { fullloading } from '@/utils/vant'
import { ClientType } from '@/constants/client'
import { useLogin } from '@/business/login'
import { useNavigation } from '@/hooks/navigation'
import service from '@/services'
import plus from '@/utils/h5plus'

const { routerBack, routerTo } = useNavigation()
const { formData, userLogin } = useLogin()
const checked = shallowRef(false) // 是否同意协议管理
const appVersion = plus.getSystemInfo('version') // 应用版本号

// 导航跳转
const navigationTo = (name: string) => {
  fullloading((hideLoading) => {
    service.onReady().then(() => {
      hideLoading()
      routerTo(name)
    }).catch(() => {
      showFailToast('初始化失败')
    })
  }, '加载中...')
}

// 获取终端类型
const getClientType = () => {
  const os = plus.getSystemInfo('os')
  switch (os) {
    case 'Android': {
      return ClientType.Android
    }
    case 'iOS': {
      return ClientType.IOS
    }
    default: {
      return ClientType.Web
    }
  }
}

const formSubmit = () => {
  if (checked.value) {
    fullloading((hideLoading) => {
      formData.ClientType = getClientType()
      userLogin().then(() => {
        hideLoading()
        routerBack()
        showSuccessToast('登录成功')
      }).catch((err) => {
        showFailToast(err)
      })
    }, '登录中...')
  } else {
    showToast('请先同意使用条款')
  }
}
</script>

<style lang="less">
@import './index.less';
</style>