index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <div class="login flex-column flex-justify-center flex-align-center m0 b0">
  3. <a-image :preview="false" style="width: 17vw; height: 10vw; margin-bottom: 50px" :src="djiLogo" />
  4. <p class="fz35 pb50" style="color: #2d8cf0">无人机管理系统</p>
  5. <a-form layout="inline" :model="formState" class="flex-row flex-justify-center flex-align-center">
  6. <a-form-item>
  7. <a-input v-model:value="formState.username" placeholder="账号">
  8. <template #prefix>
  9. <UserOutlined style="color: rgba(0, 0, 0, 0.25)" />
  10. </template>
  11. </a-input>
  12. </a-form-item>
  13. <a-form-item>
  14. <a-input v-model:value="formState.password" type="password" placeholder="密码">
  15. <template #prefix>
  16. <LockOutlined style="color: rgba(0, 0, 0, 0.25)" />
  17. </template>
  18. </a-input>
  19. </a-form-item>
  20. <a-form-item>
  21. <a-button class="m0" type="primary" html-type="submit" :disabled="loginBtnDisabled" @click="onSubmit">
  22. 登录
  23. </a-button>
  24. </a-form-item>
  25. </a-form>
  26. </div>
  27. </template>
  28. <script lang="ts" setup>
  29. import djiLogo from '/@/assets/icons/dji_logo.png'
  30. import { LockOutlined, UserOutlined } from '@ant-design/icons-vue'
  31. import { message } from 'ant-design-vue'
  32. import { reactive, computed, UnwrapRef } from 'vue'
  33. import { login, LoginBody } from '/@/api/manage'
  34. import { getRoot } from '/@/root'
  35. import { ELocalStorageKey, ERouterName, EUserType } from '/@/types'
  36. const root = getRoot()
  37. const formState: UnwrapRef<LoginBody> = reactive({
  38. username: 'adminPC',
  39. password: 'adminPC',
  40. flag: EUserType.Web,
  41. })
  42. const loginBtnDisabled = computed(() => {
  43. return !formState.username || !formState.password
  44. })
  45. const onSubmit = async (e: any) => {
  46. const result = await login(formState)
  47. if (result.code === 0) {
  48. localStorage.setItem(ELocalStorageKey.Token, result.data.access_token)
  49. localStorage.setItem(ELocalStorageKey.WorkspaceId, result.data.workspace_id)
  50. localStorage.setItem(ELocalStorageKey.Username, result.data.username)
  51. localStorage.setItem(ELocalStorageKey.UserId, result.data.user_id)
  52. localStorage.setItem(ELocalStorageKey.Flag, EUserType.Web.toString())
  53. root.$router.push(ERouterName.DEVICES)
  54. } else {
  55. message.error(result.message)
  56. }
  57. }
  58. </script>
  59. <style lang="scss" scoped>
  60. @import '/@/styles/index.scss';
  61. .login {
  62. background-color: $dark-highlight;
  63. height: 100vh;
  64. }
  65. </style>