Login.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div class="login-flex">
  3. <div class="login">
  4. <div class="logo"><img src="img/logo_blue.png" /></div>
  5. <a-form @submit="loginAction">
  6. <div>
  7. <a-select
  8. style="width: 100%; text-align: left"
  9. mode="SECRET_COMBOBOX_MODE_DO_NOT_USE"
  10. v-model:value="server"
  11. :options="servers"
  12. placeholder="请选择服务地址"
  13. >
  14. </a-select>
  15. </div>
  16. <div>
  17. <a-input
  18. v-model:value="loginName"
  19. id="loginName-input"
  20. type="text"
  21. placeholder="请输入账号"
  22. />
  23. </div>
  24. <div>
  25. <a-input
  26. v-model:value="password"
  27. id="password-input"
  28. type="password"
  29. placeholder="请输入密码"
  30. @press-enter="loginAction"
  31. />
  32. </div>
  33. <div><a href="##" id="login-button" @click="loginAction">登录</a></div>
  34. </a-form>
  35. </div>
  36. <div class="ft">
  37. Copyright © 2011-2021 www.qmth.com.cn, All Rights Reserved
  38. </div>
  39. </div>
  40. </template>
  41. <script setup lang="ts">
  42. import { ref } from "vue";
  43. import { store } from "@/store";
  44. import { login } from "@/api/api";
  45. import { useRouter } from "vue-router";
  46. import { message } from "ant-design-vue";
  47. import { Store } from "@/types";
  48. const router = useRouter();
  49. store.pageInputs = {} as Store["pageInputs"];
  50. let server = ref("");
  51. // const servers = store.config.servers.map((v) => {
  52. // return { label: v.name, value: v.host };
  53. // });
  54. const servers = ref([
  55. { label: "线上环境", value: "https://www.markingcloud.com" },
  56. ]);
  57. let loginName = ref("");
  58. let password = ref("");
  59. // FIXME: restore original state
  60. // onMounted(() => {
  61. // window.localStorage.clear();
  62. // });
  63. // server.value = "http://192.168.10.224:80";
  64. // loginName.value = "admin-test";
  65. // password.value = "123456";
  66. // server.value = "https://www.markingcloud.com";
  67. // loginName.value = "admin-wdsx";
  68. // password.value = "wdsx!@#";
  69. // server.value = "http://192.168.10.221:80";
  70. // loginName.value = "admin-test";
  71. // password.value = "123456";
  72. const loginAction = () => {
  73. if (!server.value.startsWith("http")) {
  74. server.value = `http://${server.value}`;
  75. }
  76. let curServer = store.config.servers.find((v) => v.host === server.value) || {
  77. host: server.value,
  78. name: "自定义环境",
  79. };
  80. Object.assign(store.env, {
  81. server:
  82. store.config.servers.find((v) => v.host === server.value) || curServer,
  83. loginName: loginName.value,
  84. password: password.value,
  85. });
  86. if (!server.value) {
  87. message.info("请选择服务地址");
  88. return;
  89. }
  90. if (!loginName.value) {
  91. message.info("请输入账号");
  92. return;
  93. }
  94. if (!password.value) {
  95. message.info("请输入密码");
  96. return;
  97. }
  98. login()
  99. .then((res) => {
  100. Object.assign(store.env.user, res.data);
  101. router.push("/exam-list");
  102. })
  103. .catch((err) => {
  104. if (!err.toString().includes("404")) {
  105. message.error("登录失败,用户名或密码错误");
  106. }
  107. });
  108. };
  109. </script>