‘首次‘

This commit is contained in:
fz
2023-08-30 09:54:42 +08:00
parent 52cc2a705e
commit 584d8e454f
93 changed files with 20380 additions and 2 deletions
+332
View File
@@ -0,0 +1,332 @@
/**
* 系统管理 公司管理
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>公司管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">
<el-input size="small" v-model="formInline.deptName" placeholder="输入部门名称"></el-input>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.deptNo" placeholder="输入部门代码"></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button>
</el-form-item>
</el-form>
<!--列表-->
<el-table size="small" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" style="width: 100%;">
<el-table-column align="center" type="selection" width="60">
</el-table-column>
<el-table-column sortable prop="deptName" label="部门名称" width="300">
</el-table-column>
<el-table-column sortable prop="deptNo" label="部门代码" width="300">
</el-table-column>
<el-table-column sortable prop="editTime" label="修改时间" width="300">
<template slot-scope="scope">
<div>{{scope.row.editTime|timestampToTime}}</div>
</template>
</el-table-column>
<el-table-column sortable prop="editUser" label="修改人" width="300">
</el-table-column>
<el-table-column align="center" label="操作" min-width="300">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
<!-- 编辑界面 -->
<el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="closeDialog">
<el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm">
<el-form-item label="部门名称" prop="deptName">
<el-input size="small" v-model="editForm.deptName" auto-complete="off" placeholder="请输入部门名称"></el-input>
</el-form-item>
<el-form-item label="部门代码" prop="deptNo">
<el-input size="small" v-model="editForm.deptNo" auto-complete="off" placeholder="请输入部门代码"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="closeDialog">取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { deptList, deptSave, deptDelete } from '../../api/userMG'
import Pagination from '../../components/Pagination'
export default {
data() {
return {
nshow: true, //switch开启
fshow: false, //switch关闭
loading: false, //是显示加载
editFormVisible: false, //控制编辑页面显示与隐藏
title: '添加',
editForm: {
deptId: '',
deptName: '',
deptNo: '',
token: localStorage.getItem('logintoken')
},
// rules表单验证
rules: {
deptName: [
{ required: true, message: '请输入部门名称', trigger: 'blur' }
],
deptNo: [{ required: true, message: '请输入部门代码', trigger: 'blur' }]
},
formInline: {
page: 1,
limit: 10,
varLable: '',
varName: '',
token: localStorage.getItem('logintoken')
},
// 删除部门
seletedata: {
ids: '',
token: localStorage.getItem('logintoken')
},
userparm: [], //搜索权限
listData: [], //用户数据
// 分页参数
pageparm: {
currentPage: 1,
pageSize: 10,
total: 10
}
}
},
// 注册组件
components: {
Pagination
},
/**
* 数据发生改变
*/
/**
* 创建完毕
*/
created() {
this.getdata(this.formInline)
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取公司列表
getdata(parameter) {
this.loading = true
// 模拟数据
let res = {
code: 0,
msg: null,
count: 5,
data: [
{
addUser: null,
editUser: null,
addTime: 1521062371000,
editTime: 1526700200000,
deptId: 2,
deptName: '上海分公司',
deptNo: '1',
parentId: 1
},
{
addUser: null,
editUser: null,
addTime: 1521063247000,
editTime: 1526652291000,
deptId: 3,
deptName: '上海测试',
deptNo: '02',
parentId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526349555000,
editTime: 1526349565000,
deptId: 12,
deptName: '1',
deptNo: '11',
parentId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526373178000,
editTime: 1526373178000,
deptId: 13,
deptName: '5',
deptNo: '5',
parentId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526453107000,
editTime: 1526453107000,
deptId: 17,
deptName: 'v',
deptNo: 'v',
parentId: 1
}
]
}
this.loading = false
this.listData = res.data
// 分页赋值
this.pageparm.currentPage = this.formInline.page
this.pageparm.pageSize = this.formInline.limit
this.pageparm.total = res.count
// 模拟数据结束
/***
* 调用接口,注释上面模拟数据 取消下面注释
*/
// deptList(parameter)
// .then(res => {
// this.loading = false
// if (res.success == false) {
// this.$message({
// type: 'info',
// message: res.msg
// })
// } else {
// this.listData = res.data
// // 分页赋值
// this.pageparm.currentPage = this.formInline.page
// this.pageparm.pageSize = this.formInline.limit
// this.pageparm.total = res.count
// }
// })
// .catch(err => {
// this.loading = false
// this.$message.error('菜单加载失败,请稍后再试!')
// })
},
// 分页插件事件
callFather(parm) {
this.formInline.page = parm.currentPage
this.formInline.limit = parm.pageSize
this.getdata(this.formInline)
},
// 搜索事件
search() {
this.getdata(this.formInline)
},
//显示编辑界面
handleEdit: function(index, row) {
this.editFormVisible = true
if (row != undefined && row != 'undefined') {
this.title = '修改'
this.editForm.deptId = row.deptId
this.editForm.deptName = row.deptName
this.editForm.deptNo = row.deptNo
} else {
this.title = '添加'
this.editForm.deptId = ''
this.editForm.deptName = ''
this.editForm.deptNo = ''
}
},
// 编辑、增加页面保存方法
submitForm(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
deptSave(this.editForm)
.then(res => {
this.editFormVisible = false
this.loading = false
if (res.success) {
this.getdata(this.formInline)
this.$message({
type: 'success',
message: '公司保存成功!'
})
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.editFormVisible = false
this.loading = false
this.$message.error('公司保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 删除公司
deleteUser(index, row) {
this.$confirm('确定要删除吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deptDelete(row.deptId)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '公司已删除!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('公司删除失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 关闭编辑、增加弹出框
closeDialog() {
this.editFormVisible = false
}
}
}
</script>
<style scoped>
.user-search {
margin-top: 20px;
}
.userRole {
width: 100%;
}
</style>
+331
View File
@@ -0,0 +1,331 @@
/**
* 系统管理 菜单管理
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>菜单管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 主体内容 -->
<el-row>
<!-- title -->
<div class="modt-box">用户管理</div>
<el-col :span="4"> </el-col>
<el-col :span="6">
<div class="mod-btnbox">
<el-button size="small" type="primary">全部展开</el-button>
<el-button size="small" type="primary">全部压缩</el-button>
</div>
<el-tree class="treeclass" ref="tree" :data="treeData" default-expand-all="" :props="defaultProps" @node-click="nodeclick" @check-change="handleClick" check-strictly node-key="id" show-checkbox></el-tree>
</el-col>
<el-col :span="18">
<div class="mod-btnbox">
<el-button size="small" type="primary" icon="el-icon-plus" @click="addModule">添加</el-button>
</div>
<el-form ref="form" :model="form" label-width="80px" :rules="rules">
<el-form-item label="父级菜单" prop="parentId">
<el-select size="small" v-model="form.parentId" placeholder="请选择" class="selectw">
<el-option v-for="parm in fmenu" :key="parm.id" :label="parm.name" :value="parm.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="菜单名称" prop="moduleName">
<el-input size="small" v-model="form.moduleName"></el-input>
</el-form-item>
<el-form-item label="图标" prop="moduleIcon">
<el-input size="small" v-model="form.moduleIcon"></el-input>
</el-form-item>
<el-form-item label="URL" prop="moduleUrl">
<el-input size="small" v-model="form.moduleUrl"></el-input>
</el-form-item>
<el-form-item label="顺序" prop="moduleOrder">
<el-input size="small" v-model="form.moduleOrder"></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" @click="saveModule('form')">保存</el-button>
<el-button size="small" type="primary" v-show="showdelete" @click="deleteModule">删除</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</template>
<script>
import {
ModuleList,
ModuleGet,
ModuleNodes,
ModuleSave,
ModuleDelete
} from '../../api/userMG'
export default {
data() {
return {
showdelete: false,
treeData: [],
defaultProps: {
children: 'children',
label: 'name'
},
form: {
addUser: '',
editUser: '',
addTime: '',
editTime: '',
moduleId: '',
parentId: '',
moduleLevel: '',
systemNo: '',
isLeaf: '',
fullIndex: '',
moduleIcon: '',
moduleOrder: '',
moduleName: '',
moduleNotes: '',
moduleUrl: ''
},
// rules表单验证
rules: {
parentId: [
{ required: true, message: '请选择父级菜单', trigger: 'blur' }
],
moduleName: [
{ required: true, message: '请输入菜单名称', trigger: 'blur' }
],
moduleIcon: [
{ required: true, message: '请输入菜单图标', trigger: 'blur' }
],
moduleUrl: [{ required: true, message: '请输入URL', trigger: 'blur' }],
moduleOrder: [
{ required: true, message: '请输入菜单顺序', trigger: 'blur' }
]
},
fmenu: []
}
},
/**
* 创建完毕
*/
created() {
this.getdata()
this.getmenu()
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取数据
getdata() {
ModuleList()
.then(res => {
this.treeData = [
{
id: 1,
pId: 0,
name: '平台顶级',
open: true,
checked: false
},
{
id: 2,
pId: 1,
name: '一层',
open: true,
checked: false
},
{
id: 3,
pId: 1,
name: '一层',
open: true,
checked: false
},
{
id: 12,
pId: 1,
name: '一层',
open: true,
checked: false
},
{
id: 13,
pId: 1,
name: '一层',
open: true,
checked: false
},
{
id: 17,
pId: 1,
name: '一层',
open: true,
checked: false
},
{
id: 4,
pId: 2,
name: '一层',
open: true,
checked: false
},
{
id: 5,
pId: 2,
name: '一层',
open: true,
checked: false
},
{
id: 6,
pId: 2,
name: '一层',
open: true,
checked: false
},
{
id: 7,
pId: 2,
name: '一层',
open: true,
checked: false
}
]
})
.catch(err => {
this.loading = false
this.$message.error('菜单管理列表失败,请稍后再试!')
})
},
// 添加
addModule() {
this.showdelete = false
this.form.addUser = ''
this.form.editUser = ''
this.form.addTime = ''
this.form.editTime = ''
this.form.moduleId = ''
this.form.parentId = ''
this.form.moduleLevel = ''
this.form.systemNo = ''
this.form.isLeaf = ''
this.form.fullIndex = ''
this.form.moduleIcon = ''
this.form.moduleOrder = ''
this.form.moduleName = ''
this.form.moduleNotes = ''
this.form.moduleUrl = ''
},
// 获取父级菜单
getmenu() {
let parm = {
page: '1',
limit: '10'
}
ModuleNodes(parm)
.then(res => {
this.fmenu = res.data
})
.catch(err => {
this.loading = false
this.$message.error('父级菜单列表获取失败,请稍后再试!')
})
},
// 复选变单选
handleClick(data, checked, node) {
if (checked) {
this.$refs.tree.setCheckedNodes([])
this.$refs.tree.setCheckedNodes([data])
this.showdelete = true
} else {
}
},
// 点击节点
nodeclick(arr, node, self) {
ModuleGet(arr.id)
.then(res => {
console.log(JSON.stringify(res))
this.form = res.data.data
this.$refs.tree.setCheckedNodes([])
this.$refs.tree.setCheckedNodes([arr])
})
.catch(err => {
this.loading = false
this.$message.error('用户管理获取失败,请稍后再试!')
})
},
// 保存菜单
saveModule(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
ModuleSave(this.form)
.then(res => {
this.getdata()
this.getmenu()
})
.catch(err => {
this.$message.error('菜单管理列表保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 删除菜单
deleteModule() {
ModuleDelete(this.form.moduleId)
.then(res => {
this.getdata()
this.getmenu()
this.$message.error('菜单管理列表删除成功!')
})
.catch(err => {
this.$message.error('菜单管理列表删除失败,请稍后再试!')
})
}
}
}
</script>
<style>
.user-search {
margin-top: 20px !important;
}
.user-search td {
margin-top: 20px !important;
}
.userRole {
width: 100%;
}
.el-table__expanded-cell {
padding: 0px !important;
margin: 0px !important;
}
.modt-box {
width: 100%;
height: 60px;
line-height: 60px;
background-color: #f0f2f5;
text-align: center;
color: #334157;
margin-top: 20px;
margin-bottom: 20px;
font-size: 24px;
}
.mod-btnbox {
margin-bottom: 20px;
}
.treeclass {
border: 1px solid #f3f3f3;
padding-top: 20px;
padding-bottom: 20px;
}
.selectw {
width: 100%;
}
</style>
+465
View File
@@ -0,0 +1,465 @@
/**
* 系统管理 权限管理
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>权限管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">
<el-input size="small" v-model="formInline.permissionName" placeholder="输入权限名称"></el-input>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.permission" placeholder="输入权限CODE"></el-input>
</el-form-item>
<el-form-item label="角色:">
<el-select size="small" v-model="formInline.roleId" placeholder="请选择">
<el-option selected label="请选择" value="0"></el-option>
<el-option v-for="parm in userparm" :key="parm.roleId" :label="parm.roleName" :value="parm.roleId"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="RolePermission()">配置权限</el-button>
</el-form-item>
</el-form>
<!--列表-->
<el-table size="small" @selection-change="selectChange" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" style="width: 100%;">
<el-table-column align="center" type="selection" width="60">
</el-table-column>
<el-table-column sortable prop="permissionName" label="权限名称" width="300">
</el-table-column>
<el-table-column sortable prop="permission" label="权限CODE" width="300">
</el-table-column>
<el-table-column sortable prop="editTime" label="修改时间" width="300">
<template slot-scope="scope">
<div>{{scope.row.editTime|timestampToTime}}</div>
</template>
</el-table-column>
<el-table-column sortable prop="editUser" label="修改人" width="300">
</el-table-column>
<el-table-column align="center" label="操作" min-width="300">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
<!-- 编辑界面 -->
<el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="closeDialog">
<el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm">
<el-form-item label="权限名称" prop="permissionName">
<el-input size="small" v-model="editForm.permissionName" auto-complete="off" placeholder="权限名称"></el-input>
</el-form-item>
<el-form-item label="权限CODE" prop="permission">
<el-input size="small" v-model="editForm.permission" auto-complete="off" placeholder="权限CODE"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="closeDialog">取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
permissionList,
ermissionSave,
ermissionDelete,
roleDropDown,
RolePermission
} from '../../api/userMG'
import Pagination from '../../components/Pagination'
export default {
data() {
return {
nshow: true, //switch开启
fshow: false, //switch关闭
loading: false, //是显示加载
editFormVisible: false, //控制编辑页面显示与隐藏
title: '添加',
editForm: {
permissionId: '',
permissionName: '',
permission: '',
token: localStorage.getItem('logintoken')
},
// rules表单验证
rules: {
permissionName: [
{ required: true, message: '请输入权限名称', trigger: 'blur' }
],
permission: [
{ required: true, message: '请输入权限CODE', trigger: 'blur' }
]
},
formInline: {
page: 1,
limit: 10,
permissionName: '',
permission: '',
roleId: '0',
token: localStorage.getItem('logintoken')
},
// 选择数据
selectdata: [],
userparm: [], //搜索权限
listData: [], //用户数据
// 分页参数
pageparm: {
currentPage: 1,
pageSize: 10,
total: 10
}
}
},
// 注册组件
components: {
Pagination
},
/**
* 数据发生改变
*/
watch: {},
/**
* 创建完毕
*/
created() {
this.getdata(this.formInline)
this.getAccsee()
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取数据方法
getdata(parameter) {
this.loading = true
// 模拟数据
let res = {
code: 0,
msg: null,
count: 0,
data: [
{
addUser: null,
editUser: null,
addTime: 1519728609000,
editTime: 1522585700000,
permissionId: 1,
permissionName: '用户-列表',
permission: 'system:User:list',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: null,
editUser: null,
addTime: 1519728667000,
editTime: 1522585706000,
permissionId: 3,
permissionName: '用户-修改',
permission: 'system:User:save',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: null,
editUser: null,
addTime: 1519728669000,
editTime: 1522256096000,
permissionId: 4,
permissionName: '用户-删除',
permission: 'system:User:delete',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520249365000,
editTime: 1522256085000,
permissionId: 5,
permissionName: '系统管理:角色:列表',
permission: 'system:Role:list',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520249588000,
editTime: 1520249588000,
permissionId: 7,
permissionName: 'system:Role:save',
permission: 'system:Role:save',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520249588000,
editTime: 1520249588000,
permissionId: 8,
permissionName: 'system:Role:delete',
permission: 'system:Role:delete',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520251014000,
editTime: 1520251014000,
permissionId: 9,
permissionName: 'system:Variable:列表',
permission: 'system:Variable:list',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520251014000,
editTime: 1520251014000,
permissionId: 11,
permissionName: 'system:Variable:修改',
permission: 'system:Variable:save',
lay_CHECKED: false,
LAY_CHECKED: false
},
{
addUser: 'root',
editUser: 'root',
addTime: 1520251014000,
editTime: 1520251014000,
permissionId: 12,
permissionName: 'system:Variable:删除',
permission: 'system:Variable:delete',
lay_CHECKED: false,
LAY_CHECKED: false
}
]
}
this.loading = false
this.listData = res.data
// 分页赋值
this.pageparm.currentPage = this.formInline.page
this.pageparm.pageSize = this.formInline.limit
this.pageparm.total = res.count
// 模拟数据结束
/***
* 调用接口,注释上面模拟数据 取消下面注释
*/
// 获取权限列表
// permissionList(parameter)
// .then(res => {
// this.loading = false
// if (res.success == false) {
// this.$message({
// type: 'info',
// message: res.msg
// })
// } else {
// this.listData = res.data
// // 分页赋值
// this.pageparm.currentPage = this.formInline.page
// this.pageparm.pageSize = this.formInline.limit
// this.pageparm.total = res.count
// }
// })
// .catch(err => {
// this.loading = false
// this.$message.error('权限管理列表获取失败,请稍后再试!')
// })
},
// 获取权限
getAccsee() {
roleDropDown()
.then(res => {
if (res.success == false) {
this.$message({
type: 'info',
message: res.msg
})
} else {
this.userparm = res.data
}
})
.catch(err => {
this.$message.error('权限获取失败,请稍后再试!')
})
},
// 分页插件事件
callFather(parm) {
this.formInline.page = parm.currentPage
this.formInline.limit = parm.pageSize
this.getdata(this.formInline)
},
// 搜索事件
search() {
this.getdata(this.formInline)
},
//显示编辑界面
handleEdit: function(index, row) {
this.editFormVisible = true
// 深拷贝并赋值
//this.editForm = Object.assign({}, row)
if (row != undefined && row != 'undefined') {
this.title = '修改'
this.editForm.permissionId = row.permissionId
this.editForm.permissionName = row.permissionName
this.editForm.permission = row.permission
} else {
this.title = '添加'
this.editForm.permissionId = ''
this.editForm.permissionName = ''
this.editForm.permission = ''
}
},
// 编辑、增加页面保存方法
submitForm(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
ermissionSave(this.editForm)
.then(res => {
this.editFormVisible = false
this.loading = false
if (res.success) {
this.getdata(this.formInline)
this.$message({
type: 'success',
message: '权限管理保存成功!'
})
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.editFormVisible = false
this.loading = false
this.$message.error('权限管理保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 删除权限
deleteUser(index, row) {
this.$confirm('确定要删除吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
ermissionDelete(row.permissionId)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '权限管理已删除!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('权限管理删除失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 选择复选框事件
selectChange(val) {
this.selectdata = val
},
// 配置权限
RolePermission() {
let parms = {
roleId: '',
permissionIds: ''
}
if (this.formInline.roleId == '0') {
this.$message({
type: 'info',
message: '请选择角色'
})
return false
}
parms.roleId = this.formInline.roleId
let len = this.selectdata
let ids = []
if (len != 0) {
for (let i = 0; i < len.length; i++) {
ids.push(len[i].permissionId)
}
}
parms.permissionIds = ids.join(',')
RolePermission(parms)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '配置权限成功!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('配置权限失败,请稍后再试!')
})
},
// 关闭编辑、增加弹出框
closeDialog() {
this.editFormVisible = false
}
}
}
</script>
<style scoped>
.user-search {
margin-top: 20px;
}
.userRole {
width: 100%;
}
</style>
+500
View File
@@ -0,0 +1,500 @@
/**
* 系统管理 角色管理
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>角色管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">
<el-input size="small" v-model="formInline.roleName" placeholder="输入角色名称"></el-input>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.roleNo" placeholder="输入角色代码"></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button>
</el-form-item>
</el-form>
<!--列表-->
<el-table size="small" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" style="width: 100%;">
<el-table-column align="center" type="selection" width="60">
</el-table-column>
<el-table-column sortable prop="roleName" label="角色名称" width="300">
</el-table-column>
<el-table-column sortable prop="roleNo" label="角色代码" width="300">
</el-table-column>
<el-table-column sortable prop="editTime" label="修改时间" width="300">
<template slot-scope="scope">
<div>{{scope.row.editTime|timestampToTime}}</div>
</template>
</el-table-column>
<el-table-column sortable prop="editUser" label="修改人" width="300">
</el-table-column>
<el-table-column align="center" label="操作" min-width="300">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
<el-button size="mini" type="success" @click="menuAccess(scope.$index, scope.row)">菜单权限</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
<!-- 编辑界面 -->
<el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click='closeDialog("edit")'>
<el-form label-width="120px" :model="editForm" ref="editForm" :rules="rules">
<el-form-item label="系统编码" prop="systemNo">
<el-input size="small" v-model="editForm.systemNo" auto-complete="off" placeholder="请输入系统编码"></el-input>
</el-form-item>
<el-form-item label="角色名称" prop="roleName">
<el-input size="small" v-model="editForm.roleName" auto-complete="off" placeholder="请输入角色名称"></el-input>
</el-form-item>
<el-form-item label="角色代码" prop="roleNo">
<el-input size="small" v-model="editForm.roleNo" auto-complete="off" placeholder="请输入角色代码"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click='closeDialog("edit")'>取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
</div>
</el-dialog>
<!-- 菜单权限 -->
<el-dialog title="菜单权限" :visible.sync="menuAccessshow" width="30%" @click='closeDialog("perm")'>
<el-tree ref="tree" default-expand-all="" :data="RoleRight" :props="RoleRightProps" :default-checked-keys="checkmenu" node-key="id" show-checkbox>
</el-tree>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click='closeDialog("perm")'>取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="menuPermSave">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
roleList,
roleSave,
roleDelete,
rolePwd,
RoleRightTree,
RoleRightSave
} from '../../api/userMG'
import Pagination from '../../components/Pagination'
export default {
data() {
return {
nshow: true, //switch开启
fshow: false, //switch关闭
loading: false, //是显示加载
editFormVisible: false, //控制编辑页面显示与隐藏
menuAccessshow: false, //控制数据权限显示与隐藏
title: '添加',
editForm: {
roleId: '',
systemNo: '',
roleNo: '',
roleName: '',
token: localStorage.getItem('logintoken')
},
// rules 表单验证
rules: {
systemNo: [
{ required: true, message: '请输入系统编码', trigger: 'blur' }
],
roleNo: [
{ required: true, message: '请输入角色代码', trigger: 'blur' }
],
roleName: [
{ required: true, message: '请输入角色名称', trigger: 'blur' }
]
},
formInline: {
page: 1,
limit: 10,
varLable: '',
varName: '',
token: localStorage.getItem('logintoken')
},
// 删除
seletedata: {
ids: '',
token: localStorage.getItem('logintoken')
},
userparm: [], //搜索权限
listData: [], //用户数据
// 数据权限
RoleRight: [],
RoleRightProps: {
children: 'children',
label: 'name'
},
// 选中
checkmenu: [],
//参数role
saveroleId: '',
// 分页参数
pageparm: {
currentPage: 1,
pageSize: 10,
total: 10
}
}
},
// 注册组件
components: {
Pagination
},
/**
* 数据发生改变
*/
watch: {},
/**
* 创建完毕
*/
created() {
this.getdata(this.formInline)
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取角色列表
getdata(parameter) {
// 模拟数据
let res = {
code: 0,
msg: null,
count: 6,
data: [
{
addUser: 'root',
editUser: 'root',
addTime: 1519182004000,
editTime: 1520288426000,
roleId: 1,
systemNo: 'pmd',
roleNo: 'Administrator',
roleName: '超级管理员'
},
{
addUser: null,
editUser: null,
addTime: 1521111376000,
editTime: 1520678191000,
roleId: 2,
systemNo: 'order',
roleNo: 'admin',
roleName: '公司管理员'
},
{
addUser: null,
editUser: null,
addTime: 1520678221000,
editTime: 1520678221000,
roleId: 95,
systemNo: 'pm',
roleNo: 'common',
roleName: '普通用户'
},
{
addUser: null,
editUser: null,
addTime: 1526349853000,
editTime: 1526349853000,
roleId: 96,
systemNo: '1',
roleNo: '1',
roleName: '1'
},
{
addUser: null,
editUser: null,
addTime: 1526349942000,
editTime: 1526437443000,
roleId: 97,
systemNo: '2',
roleNo: '2',
roleName: '2'
},
{
addUser: null,
editUser: null,
addTime: 1526652148000,
editTime: 1526652148000,
roleId: 101,
systemNo: 'test',
roleNo: 'demo',
roleName: '演示角色'
}
]
}
this.loading = false
this.listData = res.data
// 分页赋值
this.pageparm.currentPage = this.formInline.page
this.pageparm.pageSize = this.formInline.limit
this.pageparm.total = res.count
// 模拟数据结束
/***
* 调用接口,注释上面模拟数据 取消下面注释
*/
// roleList(parameter)
// .then(res => {
// this.loading = false
// if (res.success == false) {
// this.$message({
// type: 'info',
// message: res.msg
// })
// } else {
// this.listData = res.data
// // 分页赋值
// this.pageparm.currentPage = this.formInline.page
// this.pageparm.pageSize = this.formInline.limit
// this.pageparm.total = res.count
// }
// })
// .catch(err => {
// this.loading = false
// this.$message.error('获取角色列表失败,请稍后再试!')
// })
},
// 分页插件事件
callFather(parm) {
this.formInline.page = parm.currentPage
this.formInline.limit = parm.pageSize
this.getdata(this.formInline)
},
// 搜索事件
search() {
this.getdata(this.formInline)
},
//显示编辑界面
handleEdit: function(index, row) {
this.editFormVisible = true
if (row != undefined && row != 'undefined') {
this.title = '修改'
this.editForm.roleId = row.roleId
this.editForm.systemNo = row.systemNo
this.editForm.roleNo = row.roleNo
this.editForm.roleName = row.roleName
} else {
this.title = '添加'
this.editForm.roleId = ''
this.editForm.systemNo = ''
this.editForm.roleNo = ''
this.editForm.roleName = ''
}
},
// 编辑、增加页面保存方法
submitForm(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
roleSave(this.editForm)
.then(res => {
this.editFormVisible = false
this.loading = false
if (res.success) {
this.getdata(this.formInline)
this.$message({
type: 'success',
message: '角色保存成功!'
})
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.editFormVisible = false
this.loading = false
this.$message.error('角色保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 删除角色
deleteUser(index, row) {
this.$confirm('确定要删除吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
roleDelete(row.roleId)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '角色已删除!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('角色删除失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 数据权限
menuAccess: function(index, row) {
this.menuAccessshow = true
this.saveroleId = row.roleId
RoleRightTree(row.roleId)
.then(res => {
if (res.data.success) {
this.$message({
type: 'success',
message: '获取权限成功'
})
this.changemenu(res.data.data)
this.RoleRight = this.changeArr(res.data.data)
} else {
this.$message({
type: 'info',
message: res.data.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('获取权限失败,请稍后再试!')
})
},
// 选中菜单
changemenu(arr) {
let change = []
for (let i = 0; i < arr.length; i++) {
if (arr[i].checked) {
change.push(arr[i].id)
}
}
this.checkmenu = change
},
// tree 递归
changeArr(list) {
var temptree = [],
tree = [],
items = []
for (var i in list) {
if (!temptree[list[i].id]) {
var trow = {
id: list[i].id,
pId: list[i].pId,
name: list[i].name,
open: list[i].open,
checked: list[i].checked,
children: []
}
temptree[list[i].id] = trow
items.push(trow)
}
if (list[i].uid > 0) {
temptree[list[i].id]['children'].push({
id: list[i].id,
pId: list[i].pId,
name: list[i].name,
open: list[i].open,
checked: list[i].checked,
children: []
})
}
}
for (var j in items) {
if (temptree[items[j].pId]) {
temptree[items[j].pId]['children'].push(temptree[items[j].id])
} else {
tree.push(temptree[items[j].id])
}
}
temptree = null
items = null
return tree
},
// 菜单权限-保存
menuPermSave() {
let parm = {
roleId: this.saveroleId,
moduleIds: ''
}
let node = this.$refs.tree.getCheckedNodes()
let moduleIds = []
if (node.length != 0) {
for (let i = 0; i < node.length; i++) {
moduleIds.push(node[i].id)
}
parm.moduleIds = JSON.stringify(moduleIds)
}
RoleRightSave(parm)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '权限保存成功'
})
this.menuAccessshow = false
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('权限保存失败,请稍后再试!')
})
},
// 关闭编辑、增加弹出框
closeDialog(dialog) {
if (dialog == 'edit') {
this.editFormVisible = false
} else if (dialog == 'perm') {
this.menuAccessshow = false
}
}
}
}
</script>
<style scoped>
.user-search {
margin-top: 20px;
}
.userRole {
width: 100%;
}
</style>
+367
View File
@@ -0,0 +1,367 @@
/**
* 系统管理 系统环境变量
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>系统环境变量</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">
<el-input size="small" v-model="formInline.varLable" placeholder="输入变量描述"></el-input>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.varName" placeholder="输入变量名称"></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button>
</el-form-item>
</el-form>
<!--列表-->
<el-table size="small" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" style="width: 100%;">
<el-table-column align="center" type="selection" width="60">
</el-table-column>
<el-table-column sortable prop="varLable" label="变量描述" width="200">
</el-table-column>
<el-table-column sortable prop="varName" label="变量名称" width="200">
</el-table-column>
<el-table-column sortable prop="varValue" label="变量名称" width="300">
</el-table-column>
<el-table-column sortable prop="editTime" label="修改时间" width="200">
<template slot-scope="scope">
<div>{{scope.row.editTime|timestampToTime}}</div>
</template>
</el-table-column>
<el-table-column sortable prop="editUser" label="修改人" width="200">
</el-table-column>
<el-table-column align="center" label="操作" min-width="300">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
<!-- 编辑界面 -->
<el-dialog title="修改" :visible.sync="editFormVisible" width="30%" @click="closeDialog">
<el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm">
<el-form-item label="变量描述" prop="varLable">
<el-input size="small" v-model="editForm.varLable" auto-complete="off" placeholder="变量描述"></el-input>
</el-form-item>
<el-form-item label="变量名称" prop="varName">
<el-input size="small" v-model="editForm.varName" auto-complete="off" placeholder="变量名称"></el-input>
</el-form-item>
<el-form-item label="变量名称" prop="varValue">
<el-input size="small" v-model="editForm.varValue" auto-complete="off" placeholder="变量名称"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="closeDialog">取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { variableList, variableSave, variableDelete } from '../../api/userMG'
import Pagination from '../../components/Pagination'
export default {
data() {
return {
nshow: true, //switch开启
fshow: false, //switch关闭
loading: false, //是显示加载
editFormVisible: false, //控制编辑页面显示与隐藏
title: '添加',
editForm: {
varId: '',
varLable: '',
varName: '',
varValue: '',
token: localStorage.getItem('logintoken')
},
// rules表单验证
rules: {
varLable: [
{ required: true, message: '请输入变量描述', trigger: 'blur' }
],
varName: [
{ required: true, message: '请输入变量名称', trigger: 'blur' }
],
varValue: [
{ required: true, message: '请输入变量名称', trigger: 'blur' }
]
},
formInline: {
page: 1,
limit: 10,
varLable: '',
varName: '',
token: localStorage.getItem('logintoken')
},
// 删除
seletedata: {
ids: '',
token: localStorage.getItem('logintoken')
},
userparm: [], //搜索权限
listData: [], //用户数据
// 分页参数
pageparm: {
currentPage: 1,
pageSize: 10,
total: 10
}
}
},
// 注册组件
components: {
Pagination
},
/**
* 数据发生改变
*/
watch: {},
/**
* 创建完毕
*/
created() {
this.getdata(this.formInline)
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取数据方法
getdata(parameter) {
this.loading = true
// 模拟数据
let res = {
code: 0,
msg: null,
count: 6,
data: [
{
addUser: 'root',
editUser: 'root',
addTime: 1519385529000,
editTime: 1520619747000,
varId: 190,
deptId: 1,
varLable: '支付访问域名',
varName: 'domainName',
varValue: 'http://127.0.0.1:8080/iot-service-pay'
},
{
addUser: 'root',
editUser: 'root',
addTime: 1519451541000,
editTime: 1519451547000,
varId: 191,
deptId: 1,
varLable: '商品图片地址',
varName: 'productImgURL',
varValue: 'http://ymwlw.com/pic'
},
{
addUser: 'root',
editUser: 'root',
addTime: 1519452658000,
editTime: 1519452661000,
varId: 192,
deptId: 1,
varLable: '手机支付广告地址',
varName: 'groupDomain',
varValue: 'http://ymwlwl.com'
},
{
addUser: null,
editUser: null,
addTime: 1519879624000,
editTime: 1519879628000,
varId: 193,
deptId: 1,
varLable: '下单接口测试模式',
varName: 'envType',
varValue: 'false'
},
{
addUser: null,
editUser: null,
addTime: 1526374014000,
editTime: 1526374031000,
varId: 198,
deptId: null,
varLable: 'sgh',
varName: 'jhjj',
varValue: 'jhjhgs'
},
{
addUser: null,
editUser: null,
addTime: 1526453243000,
editTime: 1526453243000,
varId: 199,
deptId: null,
varLable: 'v',
varName: 'v',
varValue: 'v'
}
]
}
this.loading = false
this.listData = res.data
// 分页赋值
this.pageparm.currentPage = this.formInline.page
this.pageparm.pageSize = this.formInline.limit
this.pageparm.total = res.count
// 模拟数据结束
/***
* 调用接口,注释上面模拟数据 取消下面注释
*/
// variableList(parameter)
// .then(res => {
// console.log(JSON.stringify(res))
// this.loading = false
// if (res.success == false) {
// this.$message({
// type: 'info',
// message: res.msg
// })
// } else {
// this.listData = res.data
// // 分页赋值
// this.pageparm.currentPage = this.formInline.page
// this.pageparm.pageSize = this.formInline.limit
// this.pageparm.total = res.count
// }
// })
// .catch(err => {
// this.loading = false
// this.$message.error('菜单加载失败,请稍后再试!')
// })
},
// 分页插件事件
callFather(parm) {
this.formInline.page = parm.currentPage
this.formInline.limit = parm.pageSize
this.getdata(this.formInline)
},
// 搜索事件
search() {
this.getdata(this.formInline)
},
//显示编辑界面
handleEdit: function(index, row) {
this.editFormVisible = true
if (row != undefined && row != 'undefined') {
this.title = '修改'
this.editForm.varId = row.varId
this.editForm.varLable = row.varLable
this.editForm.varName = row.varName
this.editForm.varValue = row.varValue
} else {
this.title = '添加'
this.editForm.varId = ''
this.editForm.varLable = ''
this.editForm.varName = ''
this.editForm.varValue = ''
}
},
// 编辑、增加页面保存方法
submitForm(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
variableSave(this.editForm)
.then(res => {
this.editFormVisible = false
this.loading = false
if (res.success) {
this.getdata(this.formInline)
this.$message({
type: 'success',
message: '系统环境变量保存成功!'
})
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.editFormVisible = false
this.loading = false
this.$message.error('系统环境变量保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 删除权限
deleteUser(index, row) {
this.$confirm('确定要删除吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
variableDelete(row.varId)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '系统环境变量已删除'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('系统环境变量删除失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 关闭编辑、增加弹出框
closeDialog() {
this.editFormVisible = false
}
}
}
</script>
<style scoped>
.user-search {
margin-top: 20px;
}
.userRole {
width: 100%;
}
</style>
+907
View File
@@ -0,0 +1,907 @@
/**
* 系统管理 用户管理
*/
<template>
<div>
<!-- 面包屑导航 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>用户管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">
<el-select size="small" v-model="formInline.isLock" placeholder="请选择">
<el-option label="全部" value=""></el-option>
<el-option label="正常" value="N"></el-option>
<el-option label="已锁定" value="Y"></el-option>
</el-select>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.userName" placeholder="输入用户名"></el-input>
</el-form-item>
<el-form-item label="">
<el-input size="small" v-model="formInline.userMobile" placeholder="输入手机号"></el-input>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button>
<el-button size="small" type="primary" @click="handleunit()">部门设置</el-button>
</el-form-item>
</el-form>
<!--列表-->
<el-table size="small" @selection-change="selectChange" :data="userData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" style="width: 100%;">
<el-table-column align="center" type="selection" width="50">
</el-table-column>
<el-table-column align="center" sortable prop="deptName" label="公司" width="120">
</el-table-column>
<el-table-column align="center" sortable prop="userName" label="用户名" width="120">
</el-table-column>
<el-table-column align="center" sortable prop="userRealName" label="姓名" width="120">
</el-table-column>
<el-table-column align="center" sortable prop="userMobile" label="手机号" width="120">
</el-table-column>
<el-table-column align="center" sortable prop="userSex" label="性别" min-width="50">
</el-table-column>
<el-table-column align="center" sortable prop="userEmail" label="邮件" min-width="120">
</el-table-column>
<el-table-column align="center" sortable prop="editTime" label="修改时间" min-width="120">
<template slot-scope="scope">
<div>{{scope.row.editTime|timestampToTime}}</div>
</template>
</el-table-column>
<el-table-column align="center" sortable prop="isLock" label="状态" min-width="50">
<template slot-scope="scope">
<el-switch v-model="scope.row.isLock=='N'?nshow:fshow" active-color="#13ce66" inactive-color="#ff4949" @change="editType(scope.$index, scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="操作" min-width="300">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
<el-button size="mini" type="success" @click="resetpwd(scope.$index, scope.row)">重置密码</el-button>
<el-button size="mini" type="success" @click="dataAccess(scope.$index, scope.row)">数据权限</el-button>
<el-button size="mini" type="success" @click="offlineUser(scope.$index, scope.row)">下线</el-button>
<el-button size="mini" type="success" @click="refreshCache(scope.$index, scope.row)">刷新缓存</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination>
<!-- 编辑界面 -->
<el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click='closeDialog("edit")'>
<el-form label-width="80px" ref="editForm" :model="editForm" :rules="rules">
<el-form-item label="用户名" prop="userName">
<el-input size="small" v-model="editForm.userName" auto-complete="off" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="userRealName">
<el-input size="small" v-model="editForm.userRealName" auto-complete="off" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="角色" prop="roleId">
<el-select size="small" v-model="editForm.roleId" placeholder="请选择" class="userRole">
<el-option label="公司管理员" value="1"></el-option>
<el-option label="普通用户" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="手机号" prop="userMobile">
<el-input size="small" v-model="editForm.userMobile" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="邮件" prop="userEmail">
<el-input size="small" v-model="editForm.userEmail" placeholder="请输入邮箱地址"></el-input>
</el-form-item>
<el-form-item label="性别" prop="userSex">
<el-radio v-model="editForm.userSex" label="男">男</el-radio>
<el-radio v-model="editForm.userSex" label="女">女</el-radio>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click='closeDialog("edit")'>取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button>
</div>
</el-dialog>
<!-- 数据权限 -->
<el-dialog title="数据权限" :visible.sync="dataAccessshow" width="30%" @click='closeDialog("perm")'>
<el-tree ref="tree" default-expand-all="" :data="UserDept" :props="defaultProps" :default-checked-keys="checkmenu" node-key="id" show-checkbox>
</el-tree>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click='closeDialog("perm")'>取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="menuPermSave">保存</el-button>
</div>
</el-dialog>
<!-- 所属单位 -->
<el-dialog title="所属单位" :visible.sync="unitAccessshow" width="30%" @click='closeDialog("unit")'>
<el-tree ref="tree" default-expand-all="" :data="UserDept" :props="defaultProps" @check-change="handleClick" :default-checked-keys="checkmenu" node-key="id" show-checkbox check-strictly>
</el-tree>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click='closeDialog("unit")'>取消</el-button>
<el-button size="small" type="primary" :loading="loading" class="title" @click="unitPermSave">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
// 导入请求方法
import {
userList,
userSave,
userDelete,
userPwd,
userExpireToken,
userFlashCache,
userLock,
UserDeptTree,
UserDeptSave,
UserDeptdeptTree,
UserChangeDept
} from '../../api/userMG'
import Pagination from '../../components/Pagination'
export default {
data() {
return {
nshow: true, //switch开启
fshow: false, //switch关闭
loading: false, //是显示加载
title: '添加用户',
editFormVisible: false, //控制编辑页面显示与隐藏
dataAccessshow: false, //控制数据权限显示与隐藏
unitAccessshow: false, //控制所属单位隐藏与显示
// 编辑与添加
editForm: {
userId: '',
userName: '',
userRealName: '',
roleId: '',
userMobile: '',
userEmail: '',
userSex: '',
token: localStorage.getItem('logintoken')
},
// 部门参数
unitparm: {
userIds: '',
deptId: '',
deptName: ''
},
// 选择数据
selectdata: [],
// rules表单验证
rules: {
userName: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
userRealName: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
],
roleId: [{ required: true, message: '请选择角色', trigger: 'blur' }],
userMobile: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
{
pattern: /^1(3\d|47|5((?!4)\d)|7(0|1|[6-8])|8\d)\d{8,8}$/,
required: true,
message: '请输入正确的手机号',
trigger: 'blur'
}
],
userEmail: [
{ required: true, message: '请输入邮箱', trigger: 'blur' },
{
pattern: /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
required: true,
message: '请输入正确的邮箱',
trigger: 'blur'
}
],
userSex: [{ required: true, message: '请选择性别', trigger: 'blur' }]
},
// 删除用户
seletedata: {
ids: '',
token: localStorage.getItem('logintoken')
},
// 重置密码
resetpsd: {
userId: '',
token: localStorage.getItem('logintoken')
},
// 用户下线
offline: {
token: localStorage.getItem('logintoken')
},
// 请求数据参数
formInline: {
page: 1,
limit: 10,
deptId: '',
userName: '',
userMobile: '',
isLock: ''
},
//用户数据
userData: [],
// 数据权限
UserDept: [],
defaultProps: {
children: 'children',
label: 'name'
},
// 选中
checkmenu: [],
//参数role
saveroleId: '',
// 分页参数
pageparm: {
currentPage: 1,
pageSize: 10,
total: 10
}
}
},
// 注册组件
components: {
Pagination
},
/**
* 数据发生改变
*/
watch: {},
/**
* 创建完毕
*/
created() {
this.getdata(this.formInline)
},
/**
* 里面的方法只有被调用才会执行
*/
methods: {
// 获取数据方法
getdata(parameter) {
this.loading = true
// 模拟数据开始
let res = {
code: 0,
msg: null,
count: 12,
data: [
{
addUser: '1',
editUser: '1',
addTime: null,
editTime: 1527411068000,
userId: 1,
systemNo: 'pmd',
userName: 'root',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '超级管理员',
userSex: '女',
userMobile: '138123456789',
userEmail: '111@qq.com',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 1
},
{
addUser: '1',
editUser: '1',
addTime: null,
editTime: 1527410579000,
userId: 3,
systemNo: 'mc',
userName: 'zengzhuo',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '系统管理员',
userSex: 'M',
userMobile: '18616988966',
userEmail: '222@qq.com',
isLock: 'N',
deptId: 2,
deptName: 'xxxx',
roleId: 101
},
{
addUser: '1',
editUser: '4',
addTime: null,
editTime: 1527411586000,
userId: 4,
systemNo: 'ec',
userName: 'admin',
userPassword: '59ba8b7dda9ff79186311a5a9fa155ca',
userRealName: '超级管理员',
userSex: '女',
userMobile: '138123456789',
userEmail: 'huangxuekun@founder.com',
isLock: 'N',
deptId: 2,
deptName: 'xxxx',
roleId: 3
},
{
addUser: null,
editUser: null,
addTime: 1526275128000,
editTime: 1526284402000,
userId: 28,
systemNo: null,
userName: 'eee111',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '123111',
userSex: '男',
userMobile: '12354342345',
userEmail: '111232@qq.com',
isLock: 'N',
deptId: 4,
deptName: 'zxxxxx',
roleId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526284533000,
editTime: 1526284533000,
userId: 37,
systemNo: null,
userName: 'ces',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: 'sesfg',
userSex: '男',
userMobile: '12312312312',
userEmail: '122111111',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526285228000,
editTime: 1526285228000,
userId: 43,
systemNo: null,
userName: '22',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '22',
userSex: '男',
userMobile: '222',
userEmail: '222',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526448593000,
editTime: 1526448593000,
userId: 58,
systemNo: null,
userName: '1',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '1',
userSex: '女',
userMobile: '13607118810',
userEmail: '1@qq.com',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526452698000,
editTime: 1526520341000,
userId: 60,
systemNo: null,
userName: '222222222',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '222222222222',
userSex: '男',
userMobile: '13607118810',
userEmail: '111@qq.com',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 1
},
{
addUser: null,
editUser: null,
addTime: 1526452731000,
editTime: 1526452731000,
userId: 61,
systemNo: null,
userName: '33333333333333',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '4444444444444444444',
userSex: '女',
userMobile: '13607118810',
userEmail: 'qqq@qq.com',
isLock: 'N',
deptId: 1,
deptName: 'xxxx',
roleId: 2
},
{
addUser: null,
editUser: null,
addTime: 1526452756000,
editTime: 1527128981000,
userId: 62,
systemNo: null,
userName: '211111111',
userPassword: 'e10adc3949ba59abbe56e057f20f883e',
userRealName: '21111111111',
userSex: '男',
userMobile: '13601478451',
userEmail: '222222@qq.com',
isLock: 'N',
deptId: 17,
deptName: 'v',
roleId: 2
}
]
}
this.loading = false
this.userData = res.data
// 分页赋值
this.pageparm.currentPage = this.formInline.page
this.pageparm.pageSize = this.formInline.limit
this.pageparm.total = res.count
// 模拟数据结束
/***
* 调用接口,注释上面模拟数据 取消下面注释
*/
// 获取用户列表
// userList(parameter).then(res => {
// this.loading = false
// if (res.success == false) {
// this.$message({
// type: 'info',
// message: res.msg
// })
// } else {
// this.userData = res.data
// // 分页赋值
// this.pageparm.currentPage = this.formInline.page
// this.pageparm.pageSize = this.formInline.limit
// this.pageparm.total = res.count
// }
// })
},
// 分页插件事件
callFather(parm) {
this.formInline.page = parm.currentPage
this.formInline.limit = parm.pageSize
this.getdata(this.formInline)
},
//搜索事件
search() {
this.getdata(this.formInline)
},
// 修改type
editType: function(index, row) {
this.loading = true
let parm = {
lock: '',
userId: '',
token: localStorage.getItem('logintoken')
}
parm.userId = row.userId
let lock = row.isLock
if (lock == 'N') {
parm.lock = 'Y'
} else {
parm.lock = 'N'
}
// 修改状态
userLock(parm).then(res => {
this.loading = false
if (res.success == false) {
this.$message({
type: 'info',
message: res.msg
})
} else {
this.$message({
type: 'success',
message: '状态修改成功'
})
this.getdata(this.formInline)
}
})
},
//显示编辑界面
handleEdit: function(index, row) {
this.editFormVisible = true
if (row != undefined && row != 'undefined') {
this.title = '修改用户'
this.editForm.userId = row.userId
this.editForm.userName = row.userName
this.editForm.userRealName = row.userRealName
this.editForm.roleId = row.roleId
this.editForm.userMobile = row.userMobile
this.editForm.userEmail = row.userEmail
this.editForm.userSex = row.userSex
} else {
this.title = '添加用户'
this.editForm.userId = ''
this.editForm.userName = ''
this.editForm.userRealName = ''
this.editForm.roleId = ''
this.editForm.userMobile = ''
this.editForm.userEmail = ''
this.editForm.userSex = ''
}
},
// 编辑、添加提交方法
submitForm(editData) {
this.$refs[editData].validate(valid => {
if (valid) {
// 请求方法
userSave(this.editForm)
.then(res => {
this.editFormVisible = false
this.loading = false
if (res.success) {
this.getdata(this.formInline)
this.$message({
type: 'success',
message: '数据保存成功!'
})
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.editFormVisible = false
this.loading = false
this.$message.error('保存失败,请稍后再试!')
})
} else {
return false
}
})
},
// 显示部门设置
handleunit: function(index, row) {
this.unitAccessshow = true
let parms = 0
UserDeptdeptTree(parms)
.then(res => {
if (res.data.success) {
this.UserDept = this.changeArr(res.data.data)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('配置权限失败,请稍后再试!')
})
},
handleClick(data, checked, node) {
if (checked) {
this.$refs.tree.setCheckedNodes([])
this.$refs.tree.setCheckedNodes([data])
this.unitparm.deptId = data.id
this.unitparm.deptName = data.name
//交叉点击节点
} else {
}
},
// 保存部门
unitPermSave() {
let len = this.selectdata
let ids = []
if (len != 0) {
for (let i = 0; i < len.length; i++) {
ids.push(len[i].userId)
}
}
this.unitparm.userIds = ids.join(',')
UserChangeDept(this.unitparm)
.then(res => {
this.unitAccessshow = false
if (res.success) {
this.$message({
type: 'success',
message: '部门设置成功!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('部门设置失败,请稍后再试!')
})
},
// 选择复选框事件
selectChange(val) {
this.selectdata = val
},
// 关闭编辑、增加弹出框
closeDialog(dialog) {
if (dialog == 'edit') {
this.editFormVisible = false
} else if (dialog == 'perm') {
this.dataAccessshow = false
} else if (dialog == 'unit') {
this.unitAccessshow = false
}
},
// 删除用户
deleteUser(index, row) {
this.$confirm('确定要删除吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
// 删除
userDelete(row.id)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '数据已删除!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('数据删除失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除!'
})
})
},
// 重置密码
resetpwd(index, row) {
this.resetpsd.userId = row.userId
this.$confirm('确定要重置密码吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
userPwd(this.resetpsd)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '重置密码成功!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('重置密码失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '取消重置密码!'
})
})
},
// 数据权限
dataAccess: function(index, row) {
this.dataAccessshow = true
this.saveroleId = row.userId
UserDeptTree(row.userId)
.then(res => {
if (res.data.success) {
this.checkmenu = this.changemenu(res.data.data)
this.UserDept = this.changeArr(res.data.data)
} else {
this.$message({
type: 'info',
message: res.data.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('获取权限失败,请稍后再试!')
})
},
//数据格式化
changeArr(data) {
var pos = {}
var tree = []
var i = 0
while (data.length != 0) {
if (data[i].pId == 0) {
tree.push({
id: data[i].id,
name: data[i].name,
pId: data[i].pId,
open: data[i].open,
checked: data[i].checked,
children: []
})
pos[data[i].id] = [tree.length - 1]
data.splice(i, 1)
i--
} else {
var posArr = pos[data[i].pId]
if (posArr != undefined) {
var obj = tree[posArr[0]]
for (var j = 1; j < posArr.length; j++) {
obj = obj.children[posArr[j]]
}
obj.children.push({
id: data[i].id,
name: data[i].name,
pId: data[i].pId,
open: data[i].open,
checked: data[i].checked,
children: []
})
pos[data[i].id] = posArr.concat([obj.children.length - 1])
data.splice(i, 1)
i--
}
}
i++
if (i > data.length - 1) {
i = 0
}
}
return tree
},
// 选中菜单
changemenu(arr) {
let change = []
for (let i = 0; i < arr.length; i++) {
if (arr[i].checked) {
change.push(arr[i].id)
}
}
return change
},
// 菜单权限-保存
menuPermSave() {
let parm = {
userId: this.saveroleId,
deptIds: ''
}
let node = this.$refs.tree.getCheckedNodes()
let moduleIds = []
if (node.length != 0) {
for (let i = 0; i < node.length; i++) {
moduleIds.push(node[i].id)
}
parm.deptIds = JSON.stringify(moduleIds)
}
UserDeptSave(parm)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '权限保存成功'
})
this.dataAccessshow = false
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('权限保存失败,请稍后再试!')
})
},
// 下线用户
offlineUser(index, row) {
this.$confirm('确定要让' + row.userName + '用户下线吗?', '信息', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
userExpireToken(row.userName)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '用户' + row.userName + '强制下线成功!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('用户下线失败,请稍后再试!')
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
},
// 刷新缓存
refreshCache(index, row) {
userFlashCache(row.userName)
.then(res => {
if (res.success) {
this.$message({
type: 'success',
message: '刷新成功!'
})
this.getdata(this.formInline)
} else {
this.$message({
type: 'info',
message: res.msg
})
}
})
.catch(err => {
this.loading = false
this.$message.error('刷新失败,请稍后再试!')
})
}
}
}
</script>
<style scoped>
.user-search {
margin-top: 20px;
}
.userRole {
width: 100%;
}
</style>