<template>
|
<GlobalWindow
|
class="position-user-window"
|
width="80%"
|
:title="departmentName + '人员列表'"
|
:visible.sync="visible"
|
:with-footer="false"
|
>
|
<TableLayout :with-breadcrumb="false">
|
<!-- 搜索表单 -->
|
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
|
<el-form-item label="用户名" prop="username">
|
<el-input v-model="searchForm.username" placeholder="请输入用户名" v-trim @keypress.enter.native="search"/>
|
</el-form-item>
|
<el-form-item label="姓名" prop="realname">
|
<el-input v-model="searchForm.realname" placeholder="请输入姓名" v-trim @keypress.enter.native="search"/>
|
</el-form-item>
|
<el-form-item label="手机号码" prop="mobile">
|
<el-input v-model="searchForm.mobile" placeholder="请输入手机号码" v-trim @keypress.enter.native="search"/>
|
</el-form-item>
|
<section>
|
<el-button type="primary" icon="el-icon-search" @click="search">搜索</el-button>
|
<el-button @click="reset">重置</el-button>
|
</section>
|
</el-form>
|
<div slot="space" class="toolbar">
|
<el-switch v-model="onlyCurrentDept" @change="search" :disabled="isWorking.search"/>
|
<label>仅查看当前部门人员</label>
|
</div>
|
<template v-slot:table-wrap>
|
<el-table
|
v-loading="isWorking.search"
|
:data="tableData.list"
|
stripe
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column prop="avatar" label="头像" width="80px" class-name="table-column-avatar" fixed="left">
|
<template slot-scope="{row}">
|
<img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
|
</template>
|
</el-table-column>
|
<el-table-column prop="realname" label="姓名" min-width="100px" fixed="left"></el-table-column>
|
<el-table-column prop="username" label="用户名" min-width="100px"></el-table-column>
|
<el-table-column prop="empNo" label="工号" min-width="80px"></el-table-column>
|
<el-table-column prop="department" label="部门" min-width="120px">
|
<template slot-scope="{row}">{{row.department == null ? '' : row.department.name}}</template>
|
</el-table-column>
|
<el-table-column prop="position" label="岗位" min-width="120px" class-name="table-column-strings">
|
<template slot-scope="{row}">
|
<ul>
|
<li v-for="position in row.positions" :key="position.id">{{position.name}}</li>
|
</ul>
|
</template>
|
</el-table-column>
|
<el-table-column prop="sex" label="性别" min-width="80px">
|
<template slot-scope="{row}">
|
{{row.sex | sex}}
|
</template>
|
</el-table-column>
|
<el-table-column prop="mobile" label="手机号码" min-width="100px"></el-table-column>
|
<el-table-column prop="email" label="邮箱" min-width="180px"></el-table-column>
|
<el-table-column prop="birthday" label="生日" min-width="100px"></el-table-column>
|
<el-table-column prop="birthday" label="角色" min-width="160px" class-name="table-column-role">
|
<template slot-scope="{row}">
|
<ul>
|
<li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
|
</ul>
|
</template>
|
</el-table-column>
|
</el-table>
|
<pagination
|
@size-change="handleSizeChange"
|
@current-change="handlePageChange"
|
:pagination="tableData.pagination"
|
></pagination>
|
</template>
|
</TableLayout>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import TableLayout from '@/layouts/TableLayout'
|
import BaseTable from '@/components/base/BaseTable'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import Pagination from '@/components/common/Pagination'
|
import { fetchUserList } from '@/api/system/department'
|
export default {
|
name: 'DepartmentUserWindow',
|
extends: BaseTable,
|
components: { Pagination, GlobalWindow, TableLayout },
|
data () {
|
return {
|
departmentId: null,
|
departmentName: '',
|
visible: false,
|
// 仅查看当前部门
|
onlyCurrentDept: true,
|
// 搜索表单
|
searchForm: {
|
departmentId: null,
|
username: '',
|
realname: '',
|
mobile: ''
|
}
|
}
|
},
|
methods: {
|
// 打开查看人员窗口
|
open (departmentId, departmentName) {
|
this.departmentId = departmentId
|
this.departmentName = departmentName
|
this.searchForm.departmentId = departmentId
|
this.visible = true
|
this.search()
|
},
|
// 处理分页
|
handlePageChange (pageIndex) {
|
// 仅查看当前部门处理
|
this.searchForm.strictDeptId = null
|
this.searchForm.rootDeptId = this.searchForm.departmentId
|
if (this.onlyCurrentDept) {
|
this.searchForm.strictDeptId = this.searchForm.departmentId
|
this.searchForm.rootDeptId = null
|
}
|
this.tableData.pagination.pageIndex = pageIndex
|
this.isWorking.search = true
|
fetchUserList({
|
page: pageIndex,
|
capacity: this.tableData.pagination.pageSize,
|
model: this.searchForm
|
})
|
.then(data => {
|
this.tableData.list = data.records
|
this.tableData.pagination.total = data.total
|
})
|
.catch(e => {
|
// this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.isWorking.search = false
|
})
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.position-user-window {
|
/deep/ .table-search-form {
|
padding: 0;
|
}
|
/deep/ .window__body {
|
background: #f7f7f7;
|
.table-content {
|
padding: 0;
|
.table-wrap {
|
padding: 0;
|
}
|
}
|
}
|
.toolbar {
|
margin-top: 10px;
|
padding: 6px 12px;
|
background: #fff;
|
font-size: 13px;
|
label {
|
margin-left: 8px;
|
vertical-align: middle;
|
color: #999;
|
}
|
}
|
// 列表头像处理
|
.table-column-avatar {
|
img {
|
width: 48px;
|
}
|
}
|
// 列表角色处理
|
.table-column-role {
|
ul {
|
li {
|
display: inline-block;
|
background: #eee;
|
border-radius: 3px;
|
padding: 0 3px;
|
margin-right: 3px;
|
}
|
}
|
}
|
}
|
</style>
|