| | |
| | | <template> |
| | | <TableLayout :permissions="['system:user:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> |
| | | <el-form-item label="姓名" prop="realname"> |
| | | <el-input v-model="searchForm.realname" v-trim placeholder="请输入" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="所属部门" prop="companyDepartmentPathName"> |
| | | <el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="请输入" @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> |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']"> |
| | | <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('新增账号')">新增账号</el-button></li> |
| | | <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">删除</el-button></li>--> |
| | | </ul> |
| | | <!-- @selection-change="handleSelectionChange"--> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | :default-sort = "{prop: 'createTime', order: 'descending'}" |
| | | stripe |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <el-table-column label="序号" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="username" label="账号" min-width="120px"></el-table-column> |
| | | <el-table-column prop="realname" label="姓名" min-width="100px"></el-table-column> |
| | | <el-table-column prop="mobile" label="联系方式" min-width="100px"></el-table-column> |
| | | <el-table-column label="主管" min-width="100px"> |
| | | <template slot-scope="{ row }"> |
| | | <el-switch |
| | | v-model="row.headStatus" |
| | | @change="setHeadStatus($event, row)" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="companyDepartmentPathName" label="所在部门" min-width="100px"></el-table-column> |
| | | <el-table-column prop="roles" label="角色" min-width="160px" class-name="table-column-strings"> |
| | | <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-column label="启用状态" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | v-if="!row.fixed" |
| | | @change="changeStatus($event, row)" |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])" |
| | | label="操作" |
| | | width="270" |
| | | fixed="right" |
| | | > |
| | | <!-- row.id !== userInfo.id &&--> |
| | | <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('编辑用户', {...row, departmentId: row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val)})" v-permissions="['system:user:update']">编辑</el-button> |
| | | <el-button type="text" @click="$refs.allocationEnterprises.open('分配企业', row)" v-if="[0,2].includes(userInfo.type)">分配企业</el-button> |
| | | <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">配置角色</el-button> |
| | | <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">重置密码</el-button> |
| | | <!-- <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">删除</el-button>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | <!-- 新建/修改 --> |
| | | <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <!-- 配置角色 --> |
| | | <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <!-- 重置密码 --> |
| | | <ResetPwdWindow ref="resetPwdWindow"/> |
| | | <!-- 分配企业 --> |
| | | <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | </TableLayout> |
| | | <TableLayout :permissions="['system:user:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> |
| | | <el-form-item label="姓名" prop="realname"> |
| | | <el-input v-model="searchForm.realname" v-trim placeholder="请输入" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="所属部门" prop="companyDepartmentPathName"> |
| | | <el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="请输入" @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> |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']"> |
| | | <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('新增账号')">新增账号</el-button></li> |
| | | <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">删除</el-button></li>--> |
| | | </ul> |
| | | <!-- @selection-change="handleSelectionChange"--> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | :default-sort = "{prop: 'createTime', order: 'descending'}" |
| | | stripe |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <el-table-column label="序号" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="username" label="账号" min-width="120px"></el-table-column> |
| | | <el-table-column prop="realname" label="姓名" min-width="100px"></el-table-column> |
| | | <el-table-column prop="mobile" label="联系方式" min-width="100px"></el-table-column> |
| | | <el-table-column label="主管" min-width="100px"> |
| | | <template slot-scope="{ row }"> |
| | | <el-switch |
| | | v-model="row.headStatus" |
| | | @change="setHeadStatus($event, row)" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="companyDepartmentPathName" label="所在部门" min-width="100px"></el-table-column> |
| | | <el-table-column prop="roles" label="角色" min-width="160px" class-name="table-column-strings"> |
| | | <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-column label="启用状态" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | v-if="!row.fixed" |
| | | @change="changeStatus($event, row)" |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])" |
| | | label="操作" |
| | | width="270" |
| | | fixed="right" |
| | | > |
| | | <!-- row.id !== userInfo.id &&--> |
| | | <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('编辑用户', {...row, departmentId: row.companyDepartmentPathId ? row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val) : '' })" v-permissions="['system:user:update']">编辑</el-button> |
| | | <el-button type="text" @click="$refs.allocationEnterprises.open('分配企业', row)" v-if="[0,2].includes(userInfo.type)">分配企业</el-button> |
| | | <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">配置角色</el-button> |
| | | <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">重置密码</el-button> |
| | | <!-- <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">删除</el-button>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | <!-- 新建/修改 --> |
| | | <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <!-- 配置角色 --> |
| | | <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <!-- 重置密码 --> |
| | | <ResetPwdWindow ref="resetPwdWindow"/> |
| | | <!-- 分配企业 --> |
| | | <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import OperaUserWindow from '@/components/system/user/OperaUserWindow' |
| | | import allocationEnterprises from '@/components/system/user/allocationEnterprises' |
| | | import RoleConfigWindow from '@/components/system/user/RoleConfigWindow' |
| | | import ResetPwdWindow from '@/components/system/user/ResetPwdWindow' |
| | | import DepartmentSelect from '@/components/common/DepartmentSelect' |
| | | import PositionSelect from '@/components/common/PositionSelect' |
| | | import { updUserStatus, updateHead } from '@/api/system/user' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'SystemUser', |
| | | extends: BaseTable, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, |
| | | data () { |
| | | return { |
| | | // 搜索 |
| | | searchForm: { |
| | | username: '', // 名字 |
| | | realname: '', // 姓名 |
| | | rootDeptId: null, // 部门ID |
| | | positionId: null, // 岗位ID |
| | | mobile: '', // 手机号码 |
| | | type: '', |
| | | companyDepartmentPathName: '' // 部门名称 |
| | | import Pagination from '@/components/common/Pagination' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import OperaUserWindow from '@/components/system/user/OperaUserWindow' |
| | | import allocationEnterprises from '@/components/system/user/allocationEnterprises' |
| | | import RoleConfigWindow from '@/components/system/user/RoleConfigWindow' |
| | | import ResetPwdWindow from '@/components/system/user/ResetPwdWindow' |
| | | import DepartmentSelect from '@/components/common/DepartmentSelect' |
| | | import PositionSelect from '@/components/common/PositionSelect' |
| | | import { updUserStatus, updateHead } from '@/api/system/user' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'SystemUser', |
| | | extends: BaseTable, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, |
| | | data () { |
| | | return { |
| | | // 搜索 |
| | | searchForm: { |
| | | username: '', // 名字 |
| | | realname: '', // 姓名 |
| | | rootDeptId: null, // 部门ID |
| | | positionId: null, // 岗位ID |
| | | mobile: '', // 手机号码 |
| | | type: '', |
| | | companyDepartmentPathName: '' // 部门名称 |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '用户', |
| | | api: '/system/user', |
| | | 'field.main': 'realname', |
| | | sorts: [{ |
| | | property: 'CREATE_TIME', |
| | | direction: 'DESC' |
| | | }] |
| | | }) |
| | | this.searchForm.type = this.userInfo.type |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // 设置取消主管 |
| | | setHeadStatus(e, row) { |
| | | updateHead({ id: row.id, headStatus: row.headStatus }) |
| | | .then(res => { |
| | | this.search() |
| | | }) |
| | | }, |
| | | changeStatus(status, row) { |
| | | updUserStatus({ |
| | | id: row.id, |
| | | status |
| | | }).then(res => { |
| | | this.search() |
| | | }).catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '用户', |
| | | api: '/system/user', |
| | | 'field.main': 'realname', |
| | | sorts: [{ |
| | | property: 'CREATE_TIME', |
| | | direction: 'DESC' |
| | | }] |
| | | }) |
| | | this.searchForm.type = this.userInfo.type |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // 设置取消主管 |
| | | setHeadStatus(e, row) { |
| | | updateHead({ id: row.id, headStatus: row.headStatus }) |
| | | .then(res => { |
| | | this.search() |
| | | }) |
| | | }, |
| | | changeStatus(status, row) { |
| | | updUserStatus({ |
| | | id: row.id, |
| | | status |
| | | }).then(res => { |
| | | this.search() |
| | | }).catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | // 列表头像处理 |
| | | .table-column-avatar { |
| | | img { |
| | | width: 48px; |
| | | } |
| | | } |
| | | @import "@/assets/style/variables.scss"; |
| | | // 列表头像处理 |
| | | .table-column-avatar { |
| | | img { |
| | | width: 48px; |
| | | } |
| | | } |
| | | </style> |