用户管理修改

This commit is contained in:
fengachen
2021-08-30 14:19:14 +08:00
parent 67b6b27261
commit ffd41c4761
6 changed files with 139 additions and 114 deletions
+4 -2
View File
@@ -6,6 +6,7 @@ import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
const addRole = (params)=>postAction("/sys/role/add",params); const addRole = (params)=>postAction("/sys/role/add",params);
const editRole = (params)=>postAction("/sys/role/edit",params); const editRole = (params)=>postAction("/sys/role/edit",params);
const checkRoleCode = (params)=>getAction("/sys/role/checkRoleCode",params); const checkRoleCode = (params)=>getAction("/sys/role/checkRoleCode",params);
const queryallRoles = (params)=> getAction('sys/role/treeList',params)
const queryall = (params)=>getAction("/sys/role/queryall",params); const queryall = (params)=>getAction("/sys/role/queryall",params);
//用户管理 //用户管理
@@ -21,7 +22,7 @@ const checkOnlyUser = (params)=>getAction("/sys/user/checkOnlyUser",params);
//改变密码 //改变密码
const changePassword = (params)=>postAction("/sys/user/changePassword",params); const changePassword = (params)=>postAction("/sys/user/changePassword",params);
// 重置密码 // 重置密码
const resetUserPassword = (params) => postAction('',params) const resetUserPassword = (params) => postAction('/sys/user/resetPassword',params)
//权限管理 //权限管理
const addPermission= (params)=>postAction("/sys/permission/add",params); const addPermission= (params)=>postAction("/sys/permission/add",params);
@@ -163,7 +164,8 @@ export {
getUserNoticeInfo, getUserNoticeInfo,
getDictItemsFromCache, getDictItemsFromCache,
resetUserPassword, resetUserPassword,
getContactsByCompany getContactsByCompany,
queryallRoles
} }
+3 -2
View File
@@ -173,7 +173,7 @@ export default {
}, },
handleAddUserRole() { handleAddUserRole() {
if (this.currentRoleId == "") { if (this.currentRoleId == "") {
this.$message.error("请选择一个角色!"); this.$message.warn("请选择一个角色!");
} else { } else {
this.$refs.selectUserModal.visible = true; this.$refs.selectUserModal.visible = true;
} }
@@ -205,5 +205,6 @@ export default {
} }
}; };
</script> </script>
<style scoped> <style scoped lang="less">
@import '~@assets/less/common.less';
</style> </style>
+20 -23
View File
@@ -59,6 +59,7 @@
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button> <a-button type="primary" icon="import">导入</a-button>
</a-upload> </a-upload>
<a-button @click="handleExportXls('用户列表')" type="primary" icon="export">导出</a-button>
<a-button @click="batchDel" type="danger" icon="delete">批量删除</a-button> <a-button @click="batchDel" type="danger" icon="delete">批量删除</a-button>
</div> </div>
@@ -74,12 +75,13 @@
:dataSource="dataSource" :dataSource="dataSource"
:pagination="ipagination" :pagination="ipagination"
:loading="loading" :loading="loading"
class="j-table-force-nowrap"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"> @change="handleTableChange">
<span slot="action" class="action-span-cell" slot-scope="text, record"> <span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="handleEdit(record)" v-has="'user:edit'">编辑</a> <a @click="handleEdit(record)" v-has="'user:edit'">编辑</a>
<a @click="resetPassword(record.id)" >重置密码</a> <a @click="resetPassword(record.id)">重置密码</a>
<a @click="handleDelete(record.id)" v-has="'sys:user:del'">删除</a> <a @click="handleDelete(record.id)" v-has="'sys:user:del'">删除</a>
</span> </span>
<template slot="text" slot-scope="text"> <template slot="text" slot-scope="text">
@@ -99,6 +101,7 @@
<script> <script>
import UserModal from "./modules/UserModal"; import UserModal from "./modules/UserModal";
import {getAction, getFileAccessHttpUrl} from "@/api/manage"; import {getAction, getFileAccessHttpUrl} from "@/api/manage";
import "@/assets/less/TableExpand.less";
import { JeroListMixin } from "@/mixins/JeroListMixin"; import { JeroListMixin } from "@/mixins/JeroListMixin";
import JInput from "@/components/jero/JInput"; import JInput from "@/components/jero/JInput";
import JEllipsis from "@comp/jero/JEllipsis"; import JEllipsis from "@comp/jero/JEllipsis";
@@ -141,19 +144,19 @@ export default {
dataIndex: "realname", dataIndex: "realname",
scopedSlots: { customRender: "text" }, scopedSlots: { customRender: "text" },
}, },
{ // {
title: "性别", // title: "性别",
align: "center", // align: "center",
width: 80, // width: 80,
dataIndex: "sex_dictText", // dataIndex: "sex_dictText",
scopedSlots: { customRender: "text" }, // scopedSlots: { customRender: "text" },
}, // },
{ {
title: "角色类型", title: "角色类型",
align: "center", align: "center",
width: 100, width: 100,
dataIndex: "", dataIndex: "roleName",
// scopedSlots: { customRender: "text" }, scopedSlots: { customRender: "text" },
}, },
{ {
title: "手机号码", title: "手机号码",
@@ -166,7 +169,7 @@ export default {
title: "组织机构", title: "组织机构",
align: "center", align: "center",
width: 180, width: 180,
dataIndex: "orgCodeTxt", dataIndex: "departIds_dictText",
scopedSlots: { customRender: "text" }, scopedSlots: { customRender: "text" },
}, },
// { // {
@@ -181,13 +184,6 @@ export default {
// width: 180, // width: 180,
// dataIndex: 'departIds_dictText' // dataIndex: 'departIds_dictText'
// }, // },
{
title: "状态",
align: "center",
width: 80,
dataIndex: "status_dictText",
scopedSlots: { customRender: "text" },
},
{ {
title: "操作", title: "操作",
dataIndex: "action", dataIndex: "action",
@@ -212,11 +208,12 @@ export default {
{ type: "input", value: "username", text: "用户账号" } { type: "input", value: "username", text: "用户账号" }
], ],
url: { url: {
list: "/sys/user/page", list: "/sys/user/pageRoleAndDepart",
delete: "/sys/user/delete", delete: "/sys/user/delete",
deleteBatch: "/sys/user/deleteBatch", deleteBatch: "/sys/user/deleteBatch",
exportXlsUrl: "/sys/user/exportXls", exportXlsUrl: "/sys/user/exportXls",
importExcelUrl: "sys/user/importExcel" importExcelUrl: "sys/user/importExcel",
downTemplateUrl:'sys/user/exportTemplate'
} }
}; };
}, },
@@ -257,8 +254,8 @@ export default {
* 角色下拉数据 * 角色下拉数据
* */ * */
initAllRole() { initAllRole() {
getAction('/sys/role/treeListPage').then(res => { getAction('/sys/role/treeList').then(res => {
this.treeRoleData = res.result.records this.treeRoleData = res.result
}) })
}, },
/* /*
@@ -277,6 +274,6 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped lang="less">
@import '~@assets/less/common.less'; @import '~@assets/less/common.less';
</style> </style>
+3 -3
View File
@@ -159,7 +159,7 @@
}, },
hasSelectDept() { hasSelectDept() {
if (this.currentDeptId == '') { if (this.currentDeptId == '') {
this.$message.error("请选择一个部门!") this.$message.warn("请选择一个部门!")
return false; return false;
} }
return true; return true;
@@ -172,7 +172,7 @@
}, },
handleAdd: function () { handleAdd: function () {
if (this.currentDeptId == '') { if (this.currentDeptId == '') {
this.$message.error("请选择一个部门!") this.$message.warn("请选择一个部门!")
} else { } else {
this.$refs.modalForm.departDisabled = true; this.$refs.modalForm.departDisabled = true;
this.$refs.modalForm.add(this.currentDeptId); this.$refs.modalForm.add(this.currentDeptId);
@@ -188,4 +188,4 @@
<style scoped> <style scoped>
</style> </style>
+3 -3
View File
@@ -270,14 +270,14 @@ export default {
}, },
hasSelectDept() { hasSelectDept() {
if (this.currentDeptId == '') { if (this.currentDeptId == '') {
this.$message.error("请选择一个部门!") this.$message.warn("请选择一个部门!")
return false; return false;
} }
return true; return true;
}, },
handleAddUserDepart() { handleAddUserDepart() {
if (this.currentDeptId == '') { if (this.currentDeptId == '') {
this.$message.error("请选择一个部门!") this.$message.warn("请选择一个部门!")
} else { } else {
this.$refs.selectUserModal.add() this.$refs.selectUserModal.add()
} }
@@ -290,7 +290,7 @@ export default {
}, },
handleAdd: function () { handleAdd: function () {
if (this.currentDeptId == '') { if (this.currentDeptId == '') {
this.$message.error("请选择一个部门!") this.$message.warn("请选择一个部门!")
} else { } else {
this.$refs.modalForm.departDisabled = true; this.$refs.modalForm.departDisabled = true;
//初始化负责部门 //初始化负责部门
+106 -81
View File
@@ -34,7 +34,7 @@
</a-form-item> </a-form-item>
<a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input type="password" @blur="handleConfirmBlur" :maxLength="50" placeholder="请重新输入登录密码" :disabled="disableSubmit" <a-input type="password" @blur="handleConfirmBlur" :maxLength="50" placeholder="请输入确认密码" :disabled="disableSubmit"
@change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/> @change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/>
</a-form-item> </a-form-item>
</template> </template>
@@ -51,20 +51,20 @@
<!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>--> <!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>-->
<!--</a-form-item>--> <!--</a-form-item>-->
<a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled"> <!-- <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">-->
<a-select <!-- <a-select-->
mode="multiple" <!-- mode="multiple"-->
:disabled="departDisabled || disableSubmit" <!-- :disabled="departDisabled || disableSubmit"-->
style="width: 100%" <!-- style="width: 100%"-->
placeholder="请选择用户角色" <!-- placeholder="请选择用户角色"-->
optionFilterProp="children" <!-- optionFilterProp="children"-->
v-model="selectedRole" <!-- v-model="selectedRole"-->
:getPopupContainer="(target) => target.parentNode"> <!-- :getPopupContainer="(target) => target.parentNode">-->
<a-select-option v-for="(role,roleindex) in roleList" :key="roleindex.toString()" :value="role.id"> <!-- <a-select-option v-for="(role,roleindex) in roleList" :key="roleindex.toString()" :value="role.id">-->
{{ role.roleName }} <!-- {{ role.roleName }}-->
</a-select-option> <!-- </a-select-option>-->
</a-select> <!-- </a-select>-->
</a-form-item> <!-- </a-form-item>-->
<!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ --> <!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
<!-- <a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">--> <!-- <a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
@@ -75,57 +75,59 @@
<!-- <a-radio value="2">上级</a-radio>--> <!-- <a-radio value="2">上级</a-radio>-->
<!-- </a-radio-group>--> <!-- </a-radio-group>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<a-form-item label="组织机构" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-form-item label="组织机构" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<a-select <!-- <a-select-->
mode="multiple" <!-- mode="multiple"-->
style="width: 100%" <!-- style="width: 100%"-->
placeholder="请选择组织机构" <!-- placeholder="请选择组织机构"-->
v-model="departIds" <!-- v-model="departIds"-->
optionFilterProp="children" <!-- optionFilterProp="children"-->
:getPopupContainer="(target) => target.parentNode" <!-- :getPopupContainer="(target) => target.parentNode"-->
:dropdownStyle="{maxHeight:'200px',overflow:'auto'}" <!-- :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"-->
:disabled="disableSubmit" <!-- :disabled="disableSubmit"-->
> <!-- >-->
<a-select-option v-for="item in resultDepartOptions" :key="item.key" :value="item.key" <!-- <a-select-option v-for="item in resultDepartOptions" :key="item.key" :value="item.key"-->
>{{ item.title }} <!-- >{{ item.title }}-->
</a-select-option <!-- </a-select-option-->
>
</a-select>
</a-form-item>
<a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol" v-has="'user:sex'">
<a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :disabled="disableSubmit" :getPopupContainer="(target) => target.parentNode">
<a-select-option :value="1">男</a-select-option>
<a-select-option :value="2">女</a-select-option>
</a-select>
</a-form-item>
<!-- <a-form-item-->
<!-- label="角色类型"-->
<!-- :labelCol="labelCol"-->
<!-- :wrapperCol="wrapperCol">-->
<!-- <a-tree-select-->
<!-- style="width:100%"-->
<!-- :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"-->
<!-- :treeData="treeRoleData"-->
<!-- v-decorator="[ 'roleParentId', validatorRules.roleParentId]"-->
<!-- placeholder="请选择角色类型"-->
<!-- >--> <!-- >-->
<!-- </a-tree-select>--> <!-- </a-select>-->
<!-- </a-form-item>--> <!-- </a-form-item>-->
<!-- <a-form-item--> <!-- <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol" v-has="'user:sex'">-->
<!-- label="组织机构"--> <!-- <a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :disabled="disableSubmit" :getPopupContainer="(target) => target.parentNode">-->
<!-- :labelCol="labelCol"--> <!-- <a-select-option :value="1">男</a-select-option>-->
<!-- :wrapperCol="wrapperCol">--> <!-- <a-select-option :value="2">女</a-select-option>-->
<!-- <a-tree-select--> <!-- </a-select>-->
<!-- style="width:100%"--> <!-- </a-form-item>-->
<!-- :dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"-->
<!-- :treeData="treeDepartData"--> <a-form-item
<!-- v-decorator="[ 'departId', validatorRules.name]"--> label="角色类型"
<!-- placeholder="请选择组织机构">--> :labelCol="labelCol"
<!-- </a-tree-select>--> :wrapperCol="wrapperCol">
<!-- </a-form-item>--> <a-tree-select
multiple
style="width:100%"
:dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
:treeData="treeRoleData"
v-decorator="[ 'selectedroles', validatorRules.selectedroles]"
placeholder="请选择角色类型"
>
</a-tree-select>
</a-form-item>
<a-form-item
label="组织机构"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-tree-select
multiple
style="width:100%"
:dropdownStyle="{ maxHeight: '200px',maxWidth:'100px','overflow-x':'hidden',' overflo-y': 'auto' }"
:treeData="treeDepartData"
v-decorator="[ 'selecteddeparts', validatorRules.selecteddeparts]"
placeholder="请选择组织机构">
</a-tree-select>
</a-form-item>
<a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -165,7 +167,7 @@ import moment from 'moment'
import Vue from 'vue' import Vue from 'vue'
import {ACCESS_TOKEN} from "@/store/mutation-types" import {ACCESS_TOKEN} from "@/store/mutation-types"
import {getAction} from '@/api/manage' import {getAction} from '@/api/manage'
import {addUser, editUser, queryUserRole, queryall, queryDepartTreeList} from '@/api/api' import {addUser, editUser, queryUserRole, queryall,queryallRoles, queryDepartTreeList} from '@/api/api'
import {disabledAuthFilter} from "@/utils/authFilter" import {disabledAuthFilter} from "@/utils/authFilter"
import {duplicateCheck} from '@/api/api' import {duplicateCheck} from '@/api/api'
import { isEmail, passwordReg} from "@/utils/validate"; import { isEmail, passwordReg} from "@/utils/validate";
@@ -188,8 +190,6 @@ export default {
treeDepartData:[], treeDepartData:[],
// 角色类型下拉数据 // 角色类型下拉数据
treeRoleData:[], treeRoleData:[],
selectedDepartKeys: [], //保存用户选择部门id selectedDepartKeys: [], //保存用户选择部门id
checkedDepartKeys: [], checkedDepartKeys: [],
checkedDepartNames: [], // 保存部门的名称 =>title checkedDepartNames: [], // 保存部门的名称 =>title
@@ -217,7 +217,7 @@ export default {
}, },
confirmpassword: { confirmpassword: {
rules: [{ rules: [{
required: true, message: '请重新输入登录密码!', required: true, message: '请输入确认密码!',
}, { }, {
validator: this.compareToFirstPassword, validator: this.compareToFirstPassword,
}], }],
@@ -232,7 +232,8 @@ export default {
},], },],
validateTrigger: 'blur' validateTrigger: 'blur'
}, },
roles: {}, selectedroles:{rules: [{required: true, message:"请选择角色类型"}], validateTrigger: ['blur','change']},
selecteddeparts:{rules: [{required: true, message:"请选择组织机构"}], validateTrigger: ['blur','change']}
// sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))} // sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))}
}, },
departIdShow: false, departIdShow: false,
@@ -311,13 +312,15 @@ export default {
}); });
}, },
loadUserRoles(userid) { loadUserRoles(userid) {
queryUserRole({userid: userid}).then((res) => { return new Promise(resolve => {
if (res.success) { queryUserRole({userid: userid}).then((res) => {
this.selectedRole = res.result; if (res.success) {
} else { resolve(res.result)
console.log(res.message); } else {
} console.log(res.message);
}); }
});
})
}, },
refresh() { refresh() {
this.selectedDepartKeys = []; this.selectedDepartKeys = [];
@@ -336,9 +339,12 @@ export default {
this.edit({activitiSync: '1'}); this.edit({activitiSync: '1'});
}, },
edit(record) { edit(record) {
this.resetScreenSize(); // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度 this.resetScreenSize(); // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
// 加载组织机构数据 // 加载组织机构数据
this.loadDepartTreeData() this.loadDepartTreeData()
// 加载角色数据
this.loadRolesTreeData()
// 获取公钥 // 获取公钥
this.getPublicKey() this.getPublicKey()
let that = this; let that = this;
@@ -346,7 +352,9 @@ export default {
that.checkedDepartNameString = ""; that.checkedDepartNameString = "";
that.form.resetFields(); that.form.resetFields();
if (record.hasOwnProperty("id")) { if (record.hasOwnProperty("id")) {
that.loadUserRoles(record.id); that.loadUserRoles(record.id).then(res => {
that.form.setFieldsValue({selectedroles:res})
});
setTimeout(() => { setTimeout(() => {
this.fileList = record.avatar; this.fileList = record.avatar;
}, 5) }, 5)
@@ -354,8 +362,11 @@ export default {
that.userId = record.id; that.userId = record.id;
that.visible = true; that.visible = true;
that.model = Object.assign({}, record); that.model = Object.assign({}, record);
if(record.departIds !== '' && record.id){
that.model.selecteddeparts = record.departIds.split(',')
}
that.$nextTick(() => { that.$nextTick(() => {
that.form.setFieldsValue(pick(this.model, 'username', 'sex', 'realname', 'email', 'phone', 'post')) that.form.setFieldsValue(pick(this.model, 'username', 'realname', 'email', 'phone', 'post','selecteddeparts'))
}); });
//身份为上级显示负责部门,否则不显示 //身份为上级显示负责部门,否则不显示
if (this.model.userIdentity == "2") { if (this.model.userIdentity == "2") {
@@ -392,7 +403,21 @@ export default {
} }
}) })
}, },
// // 角色下拉数据
loadRolesTreeData() {
const that = this
queryallRoles().then((res) => {
if(res.success){
that.treeRoleData = [];
let treeList = res.result
for(let a=0;a<treeList.length;a++){
let temp = treeList[a];
temp.isLeaf = temp.leaf;
that.treeRoleData.push(temp);
}
}
})
},
getPublicKey() { getPublicKey() {
// 获取公钥 // 获取公钥
getRSAPublicKey().then(res => { getRSAPublicKey().then(res => {
@@ -473,8 +498,8 @@ export default {
//update-begin-author:taoyan date:2020710 for:多租户配置 //update-begin-author:taoyan date:2020710 for:多租户配置
formData.relTenantIds = this.currentTenant.length > 0 ? this.currentTenant.join(',') : '' formData.relTenantIds = this.currentTenant.length > 0 ? this.currentTenant.join(',') : ''
//update-end-author:taoyan date:2020710 for:多租户配置 //update-end-author:taoyan date:2020710 for:多租户配置
formData.selectedroles = this.selectedRole.length > 0 ? this.selectedRole.join(",") : ''; formData.selectedroles = values.selectedroles.length > 0 ? values.selectedroles.join(",") : '';
formData.selecteddeparts = this.userDepartModel.departIdList.length > 0 ? this.userDepartModel.departIdList.join(",") : ''; formData.selecteddeparts = values.selecteddeparts.length > 0 ? values.selecteddeparts.join(",") : '';
formData.userIdentity = this.identity; formData.userIdentity = this.identity;
//如果是上级择传入departIds,否则为空 //如果是上级择传入departIds,否则为空
if (this.identity === "2") { if (this.identity === "2") {