当前位置:首页 > 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调用。

<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实现全局用户状态管理和权限控制。

// 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>

用户列表管理

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

vue用户功能实现

<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>

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

相关文章

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

vue实现功能插件

vue实现功能插件

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

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备与绑定 准备一个包含所有数据的数组,并使用v-model或v-…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

vue实现表情功能

vue实现表情功能

实现表情功能的基本思路 在Vue中实现表情功能通常涉及表情选择器的UI组件开发、表情数据的存储与渲染,以及用户输入与表情的交互逻辑。以下是具体实现方法: 表情数据准备 准备一个表情符号的数组或对象,…

vue实现截图功能

vue实现截图功能

Vue实现截图功能的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将HTML元素转换为Canvas,进而生成图片。在Vue项目中安装html2can…