当前位置:首页 > VUE

vue用户功能实现

2026-03-10 03:15:00VUE

Vue用户功能实现方法

用户登录功能

使用Vue Router和axios实现用户登录功能。创建登录表单组件,包含用户名和密码输入框。

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="username" placeholder="用户名"/>
    <input v-model="password" type="password" placeholder="密码"/>
    <button type="submit">登录</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        })
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        console.error('登录失败', error)
      }
    }
  }
}
</script>

用户注册功能

实现用户注册流程,包括表单验证和API调用。

vue用户功能实现

<template>
  <form @submit.prevent="handleRegister">
    <input v-model="form.username" placeholder="用户名"/>
    <input v-model="form.email" type="email" placeholder="邮箱"/>
    <input v-model="form.password" type="password" placeholder="密码"/>
    <input v-model="form.confirmPassword" type="password" placeholder="确认密码"/>
    <button type="submit">注册</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        email: '',
        password: '',
        confirmPassword: ''
      }
    }
  },
  methods: {
    validateForm() {
      return this.form.password === this.form.confirmPassword
    },
    async handleRegister() {
      if (!this.validateForm()) {
        alert('两次密码输入不一致')
        return
      }
      try {
        await axios.post('/api/register', this.form)
        this.$router.push('/login')
      } catch (error) {
        console.error('注册失败', error)
      }
    }
  }
}
</script>

用户权限管理

使用Vuex实现全局用户状态管理和权限控制。

vue用户功能实现

// store/user.js
export default {
  state: {
    user: null,
    isAuthenticated: false
  },
  mutations: {
    SET_USER(state, user) {
      state.user = user
      state.isAuthenticated = !!user
    }
  },
  actions: {
    async fetchUser({ commit }) {
      try {
        const response = await axios.get('/api/user')
        commit('SET_USER', response.data)
      } catch (error) {
        commit('SET_USER', null)
      }
    }
  }
}

用户信息展示

创建用户个人中心页面,展示用户信息和操作选项。

<template>
  <div v-if="user">
    <h3>{{ user.username }}</h3>
    <p>邮箱: {{ user.email }}</p>
    <p>注册时间: {{ formatDate(user.createdAt) }}</p>
    <button @click="logout">退出登录</button>
  </div>
</template>

<script>
export default {
  computed: {
    user() {
      return this.$store.state.user.user
    }
  },
  methods: {
    formatDate(date) {
      return new Date(date).toLocaleString()
    },
    logout() {
      localStorage.removeItem('token')
      this.$store.commit('SET_USER', null)
      this.$router.push('/login')
    }
  },
  created() {
    this.$store.dispatch('fetchUser')
  }
}
</script>

用户列表管理

实现管理员查看用户列表功能,包含分页和搜索。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索用户"/>
    <table>
      <tr v-for="user in filteredUsers" :key="user.id">
        <td>{{ user.username }}</td>
        <td>{{ user.email }}</td>
        <td>{{ user.role }}</td>
      </tr>
    </table>
    <div class="pagination">
      <button @click="prevPage">上一页</button>
      <span>第 {{ currentPage }} 页</span>
      <button @click="nextPage">下一页</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      users: [],
      searchQuery: '',
      currentPage: 1,
      pageSize: 10
    }
  },
  computed: {
    filteredUsers() {
      return this.users.filter(user => 
        user.username.includes(this.searchQuery) || 
        user.email.includes(this.searchQuery)
      ).slice(
        (this.currentPage - 1) * this.pageSize,
        this.currentPage * this.pageSize
      )
    }
  },
  methods: {
    async fetchUsers() {
      try {
        const response = await axios.get('/api/users')
        this.users = response.data
      } catch (error) {
        console.error('获取用户列表失败', error)
      }
    },
    nextPage() {
      this.currentPage++
    },
    prevPage() {
      if (this.currentPage > 1) this.currentPage--
    }
  },
  created() {
    this.fetchUsers()
  }
}
</script>

标签: 功能用户
分享给朋友:

相关文章

vue实现倒计时功能

vue实现倒计时功能

vue实现倒计时功能 在Vue中实现倒计时功能可以通过多种方式完成,以下是几种常见的方法: 方法一:使用setInterval和clearInterval 创建一个倒计时组件,利用setInter…

前端vue登录功能实现

前端vue登录功能实现

登录功能实现步骤 在Vue中实现登录功能通常需要结合后端API,以下是关键步骤和代码示例: 创建登录表单组件 <template> <div> <for…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

vue实现按钮实现点击功能

vue实现按钮实现点击功能

实现按钮点击功能 在Vue中实现按钮点击功能可以通过v-on指令或@缩写来绑定事件。以下是几种常见的实现方式: 使用v-on指令 通过v-on:click绑定点击事件,触发定义在methods中的方…

vue实现功能插件

vue实现功能插件

Vue 功能插件实现方法 插件基本结构 Vue 插件通常需要暴露一个 install 方法,该方法接收 Vue 构造函数作为参数。基本结构如下: const MyPlugin = { insta…