login.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <div class="loginView w-screen h-screen overflow-hidden flex">
  3. <div class="w-96 bg-white m-auto border-t-8 border-blue-400 shadow-xl rounded-md pl-9 pr-9">
  4. <div class="m-auto pt-4">
  5. <img class="w-1/5 h-1/5 m-auto" :src="loginLogo" alt="">
  6. </div>
  7. <h2 class="text-xl text-center pt-4 font-bold">客户管家</h2>
  8. <el-form class="pt-4" ref="ruleFormRef" :model="ruleForm" :rules="rules">
  9. <el-form-item prop="username">
  10. <el-input clearable :prefix-icon="UserFilled" size="large" class="mt-2" v-model="ruleForm.username"
  11. autocomplete="off" placeholder="账号/手机号" />
  12. </el-form-item>
  13. <el-form-item prop="password">
  14. <el-input clearable :prefix-icon="Lock" show-password size="large" class="mt-4" v-model="ruleForm.password"
  15. autocomplete="off" placeholder="密码" />
  16. </el-form-item>
  17. <div class="pt-4">
  18. <el-button type="primary" size="large" class="w-full" :loading="loginLoading"
  19. @click="login(ruleFormRef)">登录</el-button>
  20. </div>
  21. </el-form>
  22. <el-divider content-position="center">或</el-divider>
  23. <div class="m-auto mb-5">
  24. <img class="w-9 m-auto p-1 rounded-full border-blue-300 border-2 cursor-pointer" :src="qiyeweixin" alt="">
  25. </div>
  26. <div class="flex justify-between pb-5">
  27. <div class="cursor-pointer text-blue-400 hover:text-blue-300">联系客服</div>
  28. <div class="flex justify-around">
  29. <div class="mr-4 cursor-pointer text-blue-400 hover:text-blue-300" @click="useHelp()">使用说明</div>
  30. <div class="cursor-pointer text-blue-400 hover:text-blue-300" @click="toRegister()">企业注册</div>
  31. </div>
  32. </div>
  33. <el-dialog v-model="helpDialog" width="30%" title="使用说明">
  34. <div class="p-2 text-xl">文档水水水水</div>
  35. <div>文档水水水水</div>
  36. <div>文档水水水水</div>
  37. </el-dialog>
  38. </div>
  39. </div>
  40. </template>
  41. <script lang="ts" setup>
  42. import { reactive, ref, inject } from "vue";
  43. import { useRouter } from "vue-router";
  44. import loginLogo from "@/assets/login/login_logo.png";
  45. import qiyeweixin from "@/assets/login/qiyeweixin.png";
  46. import { UserFilled, Lock } from '@element-plus/icons-vue'
  47. import { type FormInstance, type FormRules } from 'element-plus'
  48. import { useStore } from '@/store/index'
  49. import { post } from "@/utils/request";
  50. import { LOGIN } from "./api";
  51. const { setRouters } = useStore()
  52. const router = useRouter();
  53. const globalPopup = inject<GlobalPopup>('globalPopup')
  54. const ruleFormRef = ref<FormInstance>();
  55. const ruleForm = ref({
  56. username: "",
  57. password: "",
  58. });
  59. const loginLoading = ref(false);
  60. const rules = reactive<FormRules<typeof ruleForm>>({
  61. username: [{ required: true, trigger: "blur", message: "请输入账号/手机号" }],
  62. password: [{ required: true, trigger: "blur", message: "请输入密码" }],
  63. })
  64. const helpDialog = ref(false);
  65. const login = (formEl: FormInstance | undefined) => {
  66. if (!formEl) {
  67. return
  68. }
  69. formEl.validate((valid) => {
  70. if (!valid) {
  71. return false;
  72. }
  73. loginLoading.value = true;
  74. console.log(ruleForm.value);
  75. globalPopup?.showSuccess();
  76. let newRouter = [
  77. {
  78. path: '/thread',
  79. name: '线索'
  80. }, {
  81. path: "/tasks",
  82. name: "任务"
  83. }, {
  84. path: "/system",
  85. name: "系统",
  86. children: [
  87. {
  88. path: "/role",
  89. name: "角色管理"
  90. }, {
  91. path: "/dictionary",
  92. name:"系统字典"
  93. }
  94. ]
  95. }
  96. ]
  97. setRouters(newRouter)
  98. setTimeout(() => {
  99. loginLoading.value = false;
  100. router.push(newRouter[0].path);
  101. }, 1000);
  102. return
  103. post(LOGIN, { ...ruleForm.value }).then(res => {
  104. console.log(res);
  105. // if(res.code == 'error') {
  106. // ElMessage.error({
  107. // message: "登录失败",
  108. // type: "error",
  109. // duration: 2000,
  110. // })
  111. // loginLoading.value = false;
  112. // return
  113. // }
  114. // ElMessage.success({
  115. // message: "登录成功",
  116. // type: "success",
  117. // duration: 2000,
  118. // })
  119. // setTimeout(() => {
  120. // loginLoading.value = false;
  121. // }, 1000)
  122. // loginLoading.value = false;
  123. }).catch(err => {
  124. console.log(err)
  125. loginLoading.value = false;
  126. })
  127. return
  128. // let newRouter = [
  129. // {
  130. // path: '/thread',
  131. // name: 'thread'
  132. // }
  133. // ]
  134. // setRouters(newRouter)
  135. // setTimeout(() => {
  136. // loginLoading.value = false;
  137. // router.push(newRouter[0].path);
  138. // }, 1000);
  139. })
  140. };
  141. const useHelp = () => {
  142. helpDialog.value = true;
  143. }
  144. const toRegister = () => {
  145. router.push("/register");
  146. }
  147. </script>
  148. <style lang="scss" scoped>
  149. .loginView {
  150. background: #f0f2f5 url("../assets/login/background.png") no-repeat;
  151. }
  152. </style>