traffic-audit-web/src/views/UserManage.vue
@@ -1,6 +1,6 @@
<template>
  <el-container>
    <el-header>交通统计报表审核系统 - 用户管理</el-header>
  <el-container direction="vertical">
    <app-header title="交通统计报表审核系统 - 用户管理"></app-header>
    <el-container>
      <el-aside width="200px">
        <el-menu router :default-active="activeMenu">
@@ -12,7 +12,6 @@
          <el-menu-item index="/report">报表生成</el-menu-item>
          <el-menu-item index="/rules">规则管理</el-menu-item>
          <el-menu-item index="/users">用户管理</el-menu-item>
          <el-menu-item index="/login" @click="logout">退出登录</el-menu-item>
        </el-menu>
      </el-aside>
      <el-main>
@@ -89,6 +88,7 @@
</template>
<script>
import api from '@/api'
import AppHeader from '@/components/AppHeader.vue'
const MODULE_OPTIONS = [
  { key: 'freight', label: '货运报表' },
  { key: 'passenger', label: '公路旅客报表' },
@@ -97,6 +97,7 @@
  { key: 'cityPassenger', label: '城市客运报表' }
]
export default {
  components: { AppHeader },
  name: 'UserManage',
  data() {
    return {
@@ -116,15 +117,11 @@
  },
  mounted() { this.loadList() },
  methods: {
    logout() {
      localStorage.removeItem('token'); localStorage.removeItem('username'); localStorage.removeItem('realName'); localStorage.removeItem('modules')
      this.$router.push('/login')
    },
    loadList() {
      this.loading = true
      api.get('/user/list', { params: { keyword: this.keyword } })
        .then(res => { this.list = res.data || [] })
        .catch(() => this.$message.error('用户列表加载失败'))
        .catch(e => { if (e && e._toast) return; this.$message.error('用户列表加载失败') })
        .finally(() => { this.loading = false })
    },
    moduleKeys(modules) {
@@ -164,6 +161,7 @@
            this.loadList()
          })
          .catch(err => {
            if (err && err._toast) return
            const d = err && err.response && err.response.data
            this.$message.error((d && d.message) || '保存失败')
          })