龚焕茏
2024-05-15 9e0295ecdc7398f7997c1f0fab9274b42630bc87
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<template>
  <div class="app-container">
    <el-form :model="queryParam" ref="queryForm" :inline="true">
      <el-form-item label="用户名:">
        <el-input v-model="queryParam.userName"></el-input>
      </el-form-item>
      <el-form-item>
        <div style="display: flex">
          <el-button type="primary" @click="search()">查询</el-button>
        </div>
      </el-form-item>
    </el-form>
 
    <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
      <el-table-column prop="userName" label="用户名" />
      <el-table-column prop="departmentName" label="部门名称" />
      <el-table-column prop="nowDepartmentName" label="原部门名称" />
      <el-table-column prop="result" label="审核结果">
        <template slot-scope="{row}">
          <el-tag :type="row.result === '审核通过' ? 'success' : row.result === '审核驳回' ? 'danger' : 'info'">{{row.result}}</el-tag>
        </template>
      </el-table-column>
      <el-table-column prop="createUserName" label="创建人" />
      <el-table-column prop="createTime" label="创建时间" width="160px" />
      <el-table-column label="操作" align="center">
        <template slot-scope="{row}">
          <el-button v-if="row.result === '待审核'" type="primary" size="mini" @click="transposition(row)" class="link-left">审核</el-button>
          <el-popconfirm title="确认删除" @confirm="deleteUser(row)">
            <el-button slot="reference" size="mini" type="danger" class="link-left">删除</el-button>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
      @pagination="search" />
 
    <!-- 审核弹窗 -->
    <el-dialog :visible.sync="statusVisible" append-to-body :show-close="false" center width="400px">
      <el-radio-group v-model="user.result">
        <el-radio label="审核通过">通过</el-radio>
        <el-radio label="审核驳回">驳回</el-radio>
      </el-radio-group>
      <el-input type="textarea" maxlength="100" show-word-limit :autosize="{ minRows: 4 }" :rows="2"
        v-model="user.remark" placeholder="请输入审核意见" style="margin-top: 30px;"></el-input>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="statusConfirm">确 定</el-button>
        <el-button @click="statusVisible = false">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>
 
<script>
import departmentExamineApi from '@/api/departmentExamine'
import Pagination from '@/components/Pagination'
import { mapGetters, mapState } from 'vuex'
 
export default {
  components: { Pagination },
  data() {
    return {
      user: {},
      statusVisible: false,
      fileList: [],
      queryParam: {
        userName: '',
        role: 1,
        pageIndex: 1,
        pageSize: 10
      },
      listLoading: true,
      tableData: [],
      total: 0,
    }
  },
  created() {
    this.search()
  },
  methods: {
    transposition(user) {
      this.statusVisible = true;
      this.user = { ...user };
    },
    statusConfirm() {
      if (this.user.result === null) {
        this.$message.error("请选择状态")
        return
      }
      departmentExamineApi.audit(this.user).then(res => {
        if (res.code === 1) {
          this.$message.success("操作成功")
          this.statusVisible = false;
          this.search()
        } else {
          this.$message.error("操作失败")
        }
      })
    },
    search() {
      this.listLoading = true
      departmentExamineApi.list(this.queryParam).then(data => {
        const re = data.response
        this.tableData = re.list
        this.total = re.total
        this.queryParam.pageIndex = re.pageNum
        this.listLoading = false
      })
    },
    changeStatus(row) {
      let _this = this
      userApi.changeStatus(row.id).then(re => {
        if (re.code === 1) {
          row.status = re.response
          _this.$message.success(re.message)
        } else {
          _this.$message.error(re.message)
        }
      })
    },
    deleteUser(row) {
      let _this = this
      departmentExamineApi.delete(row.id).then(re => {
        if (re.code === 1) {
          _this.search()
          _this.$message.success(re.message)
        } else {
          _this.$message.error(re.message)
        }
      })
    },
    levelFormatter(row, column, cellValue, index) {
      return this.enumFormat(this.levelEnum, cellValue)
    },
    sexFormatter(row, column, cellValue, index) {
      return this.enumFormat(this.sexEnum, cellValue)
    },
    statusFormatter(status) {
      return this.enumFormat(this.statusEnum, status)
    },
    statusTagFormatter(status) {
      return this.enumFormat(this.statusTag, status)
    },
    statusBtnFormatter(status) {
      return this.enumFormat(this.statusBtn, status)
    }
  },
  computed: {
    ...mapGetters('enumItem', [
      'enumFormat'
    ]),
    ...mapState('enumItem', {
      sexEnum: state => state.user.sexEnum,
      statusEnum: state => state.user.statusEnum,
      statusTag: state => state.user.statusTag,
      statusBtn: state => state.user.statusBtn,
      levelEnum: state => state.user.levelEnum
    })
  }
}
</script>
<style lang="scss" scoped>
.upload-demo {
  margin-left: 5px;
}
</style>