<template> <div id="main" class="h-all"> <el-container class="h-all"> <el-header height="auto"> <!-- 条件筛选工具栏 --> <div class="header-button-box"> <el-button v-if="createCommand.visible" size='mini' icon="el-icon-circle-plus-outline" type="primary" @click="createUser">{{$t("common.createBtn")}}</el-button> <el-button v-if="deleteUserCommand.visible" size='mini' icon="el-icon-delete" type="danger" @click="deleteUser">{{$t("common.deleteBtn")}}</el-button> <!-- <el-button v-if="updateUserCommand.visible" size='mini' icon="el-icon-edit" type="primary"--> <!-- @click="updateUser">{{$t("common.updateBtn")}}</el-button>--> <!-- <el-button size='mini' icon="el-icon-refresh" type="primary"--> <!-- @click="resetUserPassword">{{$t("Security.resetPassword")}}</el-button>--> </div> <div class="header-search"> <div class="search-input-box"> <label>{{$t("Security.userName")+':'}}</label> <!--<el-select v-model="selectedUserKey" size="mini" :placeholder="$t('common.selectOption')" :clearable="true">--> <!--<el-option--> <!--v-for="item in userCollection"--> <!--:key="item.userKey"--> <!--:label="item.userName"--> <!--:value="item.userKey">--> <!--</el-option>--> <!--</el-select>--> <el-input size = 'mini' :placeholder="$t('common.placeholder')" v-model="selectedUserKey" clearable></el-input> </div> <div class="search-input-box"> <label>{{$t("Security.userGroup")+':'}}</label> <el-select v-model="selectedUserGroup" size="mini" :placeholder="$t('common.selectOption')" @visible-change="getAllUserGroupsChange" :clearable="true"> <el-option v-for="item in userGroupList" :key="item.usergroupKey" :label="item.usergroupName" :value="item.usergroupKey"> </el-option> </el-select> </div> <div class="search-input-box"> <label>{{$t("Security.userStatus")+':'}}</label> <el-select v-model="selectedLockFlag" size="mini" :placeholder="$t('common.selectOption')" :clearable="true"> <el-option v-for="item in userLockFlag" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> <el-button size='mini' icon="el-icon-search" type="primary" @click="queryUser">{{$t("common.queryBtn")}}</el-button> </div> </el-header> <!-- table数据表格 --> <el-main class="adapt-height-box"> <el-table :empty-text="$t('common.noData')" ref="multipleTable" :data="userList" header-row-class-name="table-header" cell-class-name="table-cell" class="adapt-height" height="auto" border stripe tooltip-effect="dark" :highlight-current-row="true" @selection-change="handleSelectionChange"> <el-table-column type="selection" :selectable='checkboxDisabled' width="28"> </el-table-column> <el-table-column type="index" v-if="false" :label="$t('Performance.index')" width="50"> </el-table-column> <el-table-column prop="userName" :label="$t('Security.userName')" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="usergroupKey" :label="$t('Security.userGroup')" :formatter="formatUserGroupKey" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="phone" :label="$t('Security.userTelephone')" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="address" :label="$t('Security.userAddress')" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="lockFlag" :label="$t('Security.userStatus')" :formatter="formatStatus" :show-overflow-tooltip="true"> </el-table-column> <el-table-column width="106px" v-if="updateUserCommand.visible" :label="$t('common.operation')"> <template slot-scope="scope"> <el-button size="mini" v-if="scope.row.userName === 'admin' ? false : true" style="background: #008000" :title="$t('common.updateBtn')" @click="updateUser(scope.row)"> <svg class="icon" aria-hidden="true"> <use xlink:href="#icon-bianji"></use> </svg> </el-button> <el-button size="mini" v-if="scope.row.userName === 'admin' ? false : true" style="background: #008000" :title="$t('Security.resetPassword')" @click="resetUserPassword(scope.row)"> <svg class="icon" aria-hidden="true"> <use xlink:href="#icon-bianji"></use> </svg> </el-button> </template> </el-table-column> </el-table> </el-main> </el-container> <CommandExecuteContext v-bind:commands="commandContext"></CommandExecuteContext> </div> </template> <script> import UserService from '../../domain/services/UserService' import UserGroupService from '../../domain/services/UserGroupService' import CommandExecuteContext from '../../commands/CommandExecuteContext' import UserCommands from '../../commands/UserCommands' import HelperUtil from '../../utils/HelperUtil' export default { name: 'UserManagement', components: { CommandExecuteContext }, // 创建期间 beforeCreate () { }, // vue加载初始化函数,加载数据 created: function () { this.getAllUsers() // this.getAllUserGroups(); }, data () { return { // 命令 commandContext: {}, // 删除相关 deleteList: [], // 为修改传参数 updateInitList: [], // 查询条件 queryList: [], multipleSelection: [], // form参数 formLabelWidth: '120px', // 用户名 userCollection: {}, userList: [], selectedUserKey: '', // 用户组 userGroupCollection: {}, userGroupList: [], selectedUserGroup: '', // 用户组查询条件 // 用户状态 userLockFlag: [{ value: 0, label: this.$t('Security.unlocked') }, { value: 1, label: this.$t('Security.locked') }], selectedLockFlag: '', // 用户实体类 userKey: '', userName: '', usergroupKey: '', editFlag: 0, // 0可编辑;1不可编辑 password: '', phone: '', address: '', modifyTime: '', delFlag: 0, lockFlag: 0, // 0:未锁定 1:已锁定 // 弹出框双向绑定 form: { userName: '', userKey: '', usergroupName: '', usergroupKey: '', editFlag: 0, password: '123456', phone: '', address: '', modifyTime: '', delFlag: 0, lockFlag: 0, enableChecked: false } } }, computed: { // 命令 createCommand () { return UserCommands.createUserCommand(this.commandContext) }, deleteUserCommand () { return UserCommands.deleteUserCommand(this.deleteList, this.commandContext) }, updateUserCommand () { return UserCommands.updateUserCommand(this.updateInitList, this.commandContext) } }, methods: { /* ---------------------------页面显示--------------------------- */ /*** * @Description : 获取全部用户,初始化表格+用户下拉菜单 * @author : zf * @date : 2019/03/13 11:01 */ getAllUsers: function () { let _this = this _this.getAllUserGroups() UserService.getAllUserCollection().then(result => { // 成功 _this.userCollection = result _this.userList = Object.values(result) }).catch(err => { // 失败 _this.InfoTip.errorTip(_this, err) }) }, /*** * @Description : 获取全部用户组 * @author : zf * @date : 2019/03/13 16:00 */ getAllUserGroups: function () { let _this = this UserGroupService.getAllUserGroups().then(result => { // 成功 _this.userGroupCollection = result _this.userGroupList = Object.values(result) }).catch(err => { // 失败 _this.InfoTip.errorTip(_this, err) }) }, /*** * @Description : 用户组改变 * @author : zf * @date : 2019/06/20 17:52 */ getAllUserGroupsChange: function (visible) { if (visible) { this.getAllUserGroups() } }, /*** * @Description : 超级用户不能被删除修改 * @author : zf * @date : 2019/04/01 15:09 */ checkboxDisabled: function (row, rowIndex) { let currentIndex for (let i = 0; i < this.userList.length; i++) { if (this.userList[i].editFlag === 1) { currentIndex = i } } if (rowIndex === currentIndex) { return false } else { return true } }, /*** * @Description : 表格过滤用户锁定状态 * @author : zf * @date : 2019/02/25 15:54 */ formatStatus: function (row, column) { let result = row.lockFlag if (row.lockFlag === 0) { result = this.$t('Security.unlocked') } else if (row.lockFlag === 1) { result = this.$t('Security.locked') } return result }, /*** * @Description : 表格过滤用户组名称 * @author : zf * @date : 2019/03/13 09:51 */ formatUserGroupKey: function (row, column) { if (this.userGroupCollection[row.usergroupKey] !== undefined) { return this.userGroupCollection[row.usergroupKey].usergroupName } else { return row.usergroupKey } }, /* ---------------------------Table选择--------------------------- */ /** * @Description :选择行 * @author :zf * @date :2019/2/25 */ handleSelectionChange (val) { this.multipleSelection = val }, /** * @Description :单选一行选中checkbox * @author :zf * @date :2019/2/25 */ clickRow (val) { let currentRow for (let i = 0; i < this.userList.length; i++) { if (val.userKey === this.userList[i].userKey) { currentRow = i } } if (this.userList[currentRow].editFlag !== 1) { this.$refs.multipleTable.toggleRowSelection(val) } }, /* ---------------------------新建用户--------------------------- */ /*** * @Description : 点击创建按钮 * @author : zf * @date : 2019/03/13 10:37 */ createUser: function () { this.createCommand.execute() }, /* ---------------------------删除用户--------------------------- */ /*** * @Description : 删除选中用户 * @author : zf * @date : 2019/03/13 13:40 */ deleteUser: function () { if (this.multipleSelection.length === 0) { this.InfoTip.warningTip(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.DELETE_SELECT_CODE)) } else { this.deleteList = new Array() for (let i = 0; i < this.multipleSelection.length; i++) { var obj = {'userKey': this.multipleSelection[i]['userKey']} this.deleteList.push(obj) } this.deleteUserCommand.execute() } }, /* ---------------------------修改选择--------------------------- */ /*** * @Description : 点击修改按钮 * @author : zf * @date : 2019/03/08 16:29 */ updateUser: function (row) { let currentUser = {} currentUser['userKey'] = row.userKey currentUser['userName'] = row.userName currentUser['usergroupKey'] = row.usergroupKey currentUser['password'] = row.password currentUser['phone'] = row.phone currentUser['address'] = row.address currentUser['modifyTime'] = row.modifyTime currentUser['delFlag'] = row.delFlag currentUser['lockFlag'] = row.lockFlag if (currentUser['lockFlag'] === 1) { currentUser['enableChecked'] = true } else { currentUser['enableChecked'] = false } this.updateInitList = currentUser this.updateUserCommand.execute() // if (this.multipleSelection.length === 0 || this.multipleSelection.length > 1) { // this.InfoTip.warningTip(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.UPDATE_SELECT_CODE)) // } else { // let currentUser = {} // currentUser['userKey'] = this.multipleSelection[0].userKey // currentUser['userName'] = this.multipleSelection[0].userName // currentUser['usergroupKey'] = this.multipleSelection[0].usergroupKey // currentUser['password'] = this.multipleSelection[0].password // currentUser['phone'] = this.multipleSelection[0].phone // currentUser['address'] = this.multipleSelection[0].address // currentUser['modifyTime'] = this.multipleSelection[0].modifyTime // currentUser['delFlag'] = this.multipleSelection[0].delFlag // currentUser['lockFlag'] = this.multipleSelection[0].lockFlag // if (currentUser['lockFlag'] === 1) { // currentUser['enableChecked'] = true // } else { // currentUser['enableChecked'] = false // } // // this.updateInitList = currentUser // this.updateUserCommand.execute() // } }, /* ---------------------------查询用户--------------------------- */ /*** * @Description : 获取查询条件 * @author : zf * @date : 2019/05/21 13:14 */ getQueryList: function () { this.queryList = [] if (this.selectedUserKey !== '' && this.selectedUserKey !== null) { this.queryList.push({ quaryAttribute: 'userName', compareSymbol: 'like', compareValue: this.selectedUserKey }) } if (this.selectedUserGroup !== '' && this.selectedUserGroup !== null) { this.queryList.push({ quaryAttribute: 'usergroupKey', compareSymbol: '=', compareValue: this.selectedUserGroup }) } if (this.selectedLockFlag !== '' && this.selectedLockFlag !== null) { this.queryList.push({ quaryAttribute: 'lockFlag', compareSymbol: '=', compareValue: this.selectedLockFlag }) } }, /*** * @Description : 按条件查询用户 * @author : zf * @date : 2019/03/13 14:13 */ queryUser: function () { let _this = this _this.getQueryList() // _this.getAllUserGroups(); //同步用户组信息 let loadingInstance = _this.Loading.openLoading() UserService.conditionQueryUser(this.queryList).then(result => { // 成功 _this.Loading.closeLoading(loadingInstance) _this.userList = Object.values(result) if (_this.userList.length === 0) { _this.InfoTip.warningTip_alarm(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.QUERY_NULL_CODE)) } else { _this.InfoTip.successTip(_this, HelperUtil.getStatusCodeObjectByCode(_this.successCode.QUERY_CODE)) } }).catch(err => { // 失败 _this.Loading.closeLoading(loadingInstance) _this.InfoTip.errorTip(_this, err) }) }, /* ---------------------------重置密码--------------------------- */ /*** * @Description : 重置用户密码为初始密码 * @author : zf * @date : 2019/03/18 15:26 */ resetUserPassword: function (row) { let _this = this let loadingInstance = _this.Loading.openLoading() UserService.resetUserPassword(row).then(result => { // 成功 _this.Loading.closeLoading(loadingInstance) _this.InfoTip.successTip(_this, HelperUtil.getStatusCodeObjectByCode(_this.successCode.OTHERS_CODE)) }).catch(err => { // 失败 _this.Loading.closeLoading(loadingInstance) _this.InfoTip.errorTip(_this, err) }) } }, watch: { commandContext (newVal, oldVal) { if (JSON.stringify(newVal) === '{}') { this.selectedUserKey = '' this.selectedUserGroup = '' this.selectedLockFlag = '' this.getAllUsers() this.$refs.multipleTable.clearSelection() } deep: true }, '$i18n.locale' () { this.userLockFlag[0].label = this.$t('Security.unlocked') this.userLockFlag[1].label = this.$t('Security.locked') } } } </script> <style scoped> </style>