zhizhijie
4 小时以前 799ec6799ad9e994f7d369f059ca7682962f648f
traffic-audit-web/src/views/UserManage.vue
@@ -1,9 +1,9 @@
<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">
        <el-menu ref="sideMenu" router :default-active="$route.path" @select="onMenuSelect">
          <el-menu-item index="/dashboard">工作台</el-menu-item>
          <el-menu-item index="/import">数据导入</el-menu-item>
          <el-menu-item index="/data">数据查看</el-menu-item>
@@ -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>
@@ -44,6 +43,7 @@
              <el-table-column label="操作" width="140" align="center">
                <template slot-scope="{ row }">
                  <el-button type="text" size="mini" @click="openEdit(row)">编辑</el-button>
                  <el-button v-if="isAdmin" type="text" size="mini" @click="resetPwd(row)">重置密码</el-button>
                  <el-button type="text" size="mini" style="color:#f56c6c" @click="removeUser(row)">删除</el-button>
                </template>
              </el-table-column>
@@ -89,6 +89,7 @@
</template>
<script>
import api from '@/api'
import AppHeader from '@/components/AppHeader.vue'
const MODULE_OPTIONS = [
  { key: 'freight', label: '货运报表' },
  { key: 'passenger', label: '公路旅客报表' },
@@ -97,10 +98,10 @@
  { key: 'cityPassenger', label: '城市客运报表' }
]
export default {
  components: { AppHeader },
  name: 'UserManage',
  data() {
    return {
      activeMenu: '/users',
      keyword: '',
      list: [],
      loading: false,
@@ -114,17 +115,18 @@
      }
    }
  },
  computed: {
    isAdmin() {
      return sessionStorage.getItem('username') === 'admin'
    }
  },
  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,12 +166,19 @@
            this.loadList()
          })
          .catch(err => {
            if (err && err._toast) return
            const d = err && err.response && err.response.data
            this.$message.error((d && d.message) || '保存失败')
          })
          .finally(() => { this.saving = false })
      })
    },
    resetPwd(row) {
      this.$confirm('确定将用户「' + (row.realName || row.username) + '」的密码重置为 123456 吗?', '重置密码', { type: 'warning' })
        .then(() => api.post('/user/reset-password', { id: row.id }))
        .then(() => { this.$message.success('已重置为 123456'); this.loadList() })
        .catch(() => {})
    },
    removeUser(row) {
      this.$confirm('确定删除用户「' + (row.realName || row.username) + '」吗?', '删除确认', { type: 'warning' })
        .then(() => api.post('/user/delete', null, { params: { id: row.id } }))