login1.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <view class="login-box">
  3. <view class="login-top">
  4. <view>您好</view>
  5. <view>欢迎登录</view>
  6. </view>
  7. <fs-form ref="loginRef" :model="loginModel">
  8. <fs-form-item>
  9. <template #before>
  10. <fs-icon type="icon-user"></fs-icon>
  11. </template>
  12. <fs-field placeholder="请输入账号" v-model="loginModel.name"></fs-field>
  13. </fs-form-item>
  14. <fs-form-item>
  15. <template #before>
  16. <fs-icon type="icon-password"></fs-icon>
  17. </template>
  18. <fs-field placeholder="请输入密码" v-model="loginModel.password"></fs-field>
  19. </fs-form-item>
  20. <fs-gutter height="100rpx" bgColor="#fff"></fs-gutter>
  21. <fs-button full @click="handleLogin">登录</fs-button>
  22. </fs-form>
  23. </view>
  24. </template>
  25. <script setup>
  26. import { ref, reactive } from 'vue'
  27. import useForm from '@/hooks/useForm'
  28. import { useStore } from 'vuex'
  29. const store = useStore()
  30. const loginRules = {
  31. name: {
  32. required: true,
  33. message: '请输入账号'
  34. },
  35. password: {
  36. required: true,
  37. message: '请输入密码'
  38. }
  39. }
  40. const loginModel = reactive({
  41. name: '',
  42. password: ''
  43. })
  44. const loginRef = ref(null)
  45. const loginForm = useForm(loginRules, 'loginRef')
  46. const handleLogin = () => {
  47. loginForm.validate().then(() => {
  48. store.dispatch('login', {
  49. ...loginModel
  50. }).then(res => {
  51. uni.navigateBack()
  52. })
  53. })
  54. }
  55. </script>
  56. <style>
  57. page{
  58. background-color: #fff;
  59. }
  60. </style>
  61. <style lang="scss" scoped>
  62. .login-box{
  63. padding: 30rpx;
  64. }
  65. .login-top{
  66. color: #222222;
  67. font-size: 30px;
  68. font-weight: bold;
  69. margin: 100rpx 0;
  70. }
  71. </style>