|
@ -15,7 +15,6 @@ |
|
|
/> |
|
|
/> |
|
|
<rrOperation /> |
|
|
<rrOperation /> |
|
|
</div> |
|
|
</div> |
|
|
<crudOperation :permission="permission" /> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<!-- 表单渲染 --> |
|
|
<!-- 表单渲染 --> |
|
|
<el-row :gutter="15"> |
|
|
<el-row :gutter="15"> |
|
@ -23,7 +22,7 @@ |
|
|
<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="17" style="margin-bottom: 10px"> |
|
|
<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="17" style="margin-bottom: 10px"> |
|
|
<el-card class="box-card" shadow="never"> |
|
|
<el-card class="box-card" shadow="never"> |
|
|
<div slot="header" class="clearfix"> |
|
|
<div slot="header" class="clearfix"> |
|
|
<span class="role-span">角色列表</span> |
|
|
<span class="role-span">用户列表</span> |
|
|
</div> |
|
|
</div> |
|
|
<el-table |
|
|
<el-table |
|
|
ref="table" |
|
|
ref="table" |
|
@ -37,11 +36,6 @@ |
|
|
<el-table-column show-overflow-tooltip prop="username" label="用户名" /> |
|
|
<el-table-column show-overflow-tooltip prop="username" label="用户名" /> |
|
|
<el-table-column show-overflow-tooltip prop="person_name" label="姓名" /> |
|
|
<el-table-column show-overflow-tooltip prop="person_name" label="姓名" /> |
|
|
<el-table-column prop="name" label="部门" /> |
|
|
<el-table-column prop="name" label="部门" /> |
|
|
<!--<el-table-column show-overflow-tooltip prop="dept" label="部门"> |
|
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
|
<div>{{ scope.row.dept.name }}</div> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column>--> |
|
|
|
|
|
</el-table> |
|
|
</el-table> |
|
|
<!--分页组件--> |
|
|
<!--分页组件--> |
|
|
<pagination /> |
|
|
<pagination /> |
|
@ -71,7 +65,6 @@ |
|
|
:data="tableData" |
|
|
:data="tableData" |
|
|
tooltip-effect="dark" |
|
|
tooltip-effect="dark" |
|
|
style="width: 100%" |
|
|
style="width: 100%" |
|
|
@selection-change="handleSelectionChange" |
|
|
|
|
|
> |
|
|
> |
|
|
<el-table-column |
|
|
<el-table-column |
|
|
type="selection" |
|
|
type="selection" |
|
@ -87,21 +80,14 @@ |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
import crudUserArea from '@/views/wms/basedata/product/userArea/userArea' |
|
|
import crudUserArea from '@/views/wms/basedata/product/userArea/userArea' |
|
|
import { getDepts, getDeptSuperior } from '@/views/system/dept/dept' |
|
|
import CRUD, { crud, header, presenter } from '@crud/crud' |
|
|
import { getChild, getMenusTree } from '@/views/system/menu/menu' |
|
|
|
|
|
import CRUD, { crud, form, header, presenter } from '@crud/crud' |
|
|
|
|
|
import rrOperation from '@crud/RR.operation' |
|
|
import rrOperation from '@crud/RR.operation' |
|
|
import crudOperation from '@crud/CRUD.operation' |
|
|
|
|
|
import udOperation from '@crud/UD.operation' |
|
|
|
|
|
import pagination from '@crud/Pagination' |
|
|
import pagination from '@crud/Pagination' |
|
|
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' |
|
|
|
|
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|
|
import DateRangePicker from '@/components/DateRangePicker/index' |
|
|
|
|
|
|
|
|
|
|
|
const defaultForm = { id: null, name: null, depts: [], description: null, dataScope: '全部', level: 3 } |
|
|
|
|
|
export default { |
|
|
export default { |
|
|
name: 'UserStor', |
|
|
name: 'UserArea', |
|
|
components: { Treeselect, pagination, crudOperation, rrOperation, udOperation, DateRangePicker }, |
|
|
components: { pagination, rrOperation }, |
|
|
cruds() { |
|
|
cruds() { |
|
|
return CRUD({ |
|
|
return CRUD({ |
|
|
title: '角色', |
|
|
title: '角色', |
|
@ -110,75 +96,18 @@ export default { |
|
|
optShow: { add: false, reset: false, edit: false, del: false } |
|
|
optShow: { add: false, reset: false, edit: false, del: false } |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
mixins: [presenter(), header(), form(defaultForm), crud()], |
|
|
mixins: [presenter(), header(), crud()], |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
level: 3, |
|
|
menuLoading: false, |
|
|
currentId: 0, menuLoading: false, showButton: false, |
|
|
showButton: false, |
|
|
menus: [], menuIds: [], depts: [], deptDatas: [], // 多选时使用 |
|
|
|
|
|
tableData: [{ 'product_area': 'A1' }, { 'product_area': 'A2' }, { 'product_area': 'A3' }, { 'product_area': 'A4' }, { 'product_area': 'LK' }, { 'product_area': 'B1' }, { 'product_area': 'B2' }, { 'product_area': 'B3' }, { 'product_area': 'B4' }, { 'product_area': 'BLK' }], |
|
|
tableData: [{ 'product_area': 'A1' }, { 'product_area': 'A2' }, { 'product_area': 'A3' }, { 'product_area': 'A4' }, { 'product_area': 'LK' }, { 'product_area': 'B1' }, { 'product_area': 'B2' }, { 'product_area': 'B3' }, { 'product_area': 'B4' }, { 'product_area': 'BLK' }], |
|
|
currentRow: null, |
|
|
currentRow: null, |
|
|
permission: { |
|
|
permission: { |
|
|
add: ['admin', 'roles:add'], |
|
|
|
|
|
edit: ['admin', 'roles:edit'], |
|
|
|
|
|
del: ['admin', 'roles:del'] |
|
|
|
|
|
}, |
|
|
|
|
|
rules: { |
|
|
|
|
|
name: [ |
|
|
|
|
|
{ required: true, message: '请输入名称', trigger: 'blur' } |
|
|
|
|
|
], |
|
|
|
|
|
permission: [ |
|
|
|
|
|
{ required: true, message: '请输入权限', trigger: 'blur' } |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
getMenuDatas(node, resolve) { |
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
getMenusTree(node.data.id ? node.data.id : 0).then(res => { |
|
|
|
|
|
resolve(res) |
|
|
|
|
|
}) |
|
|
|
|
|
}, 100) |
|
|
|
|
|
}, |
|
|
|
|
|
[CRUD.HOOK.afterRefresh]() { |
|
|
|
|
|
this.$refs.menu.setCheckedKeys([]) |
|
|
|
|
|
}, |
|
|
|
|
|
// 新增前初始化部门信息 |
|
|
|
|
|
[CRUD.HOOK.beforeToAdd]() { |
|
|
|
|
|
this.deptDatas = [] |
|
|
|
|
|
}, |
|
|
|
|
|
// 编辑前初始化自定义数据权限的部门信息 |
|
|
|
|
|
[CRUD.HOOK.beforeToEdit](crud, form) { |
|
|
|
|
|
this.deptDatas = [] |
|
|
|
|
|
if (form.dataScope === '自定义') { |
|
|
|
|
|
this.getSupDepts(form.depts) |
|
|
|
|
|
} |
|
|
|
|
|
const _this = this |
|
|
|
|
|
form.depts.forEach(function(dept) { |
|
|
|
|
|
_this.deptDatas.push(dept.id) |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 提交前做的操作 |
|
|
|
|
|
[CRUD.HOOK.afterValidateCU](crud) { |
|
|
|
|
|
if (crud.form.dataScope === '自定义' && this.deptDatas.length === 0) { |
|
|
|
|
|
this.$message({ |
|
|
|
|
|
message: '自定义数据权限不能为空', |
|
|
|
|
|
type: 'warning' |
|
|
|
|
|
}) |
|
|
|
|
|
return false |
|
|
|
|
|
} else if (crud.form.dataScope === '自定义') { |
|
|
|
|
|
const depts = [] |
|
|
|
|
|
this.deptDatas.forEach(function(data) { |
|
|
|
|
|
const dept = { id: data } |
|
|
|
|
|
depts.push(dept) |
|
|
|
|
|
}) |
|
|
|
|
|
crud.form.depts = depts |
|
|
|
|
|
} else { |
|
|
|
|
|
crud.form.depts = [] |
|
|
|
|
|
} |
|
|
|
|
|
return true |
|
|
|
|
|
}, |
|
|
|
|
|
// 触发单选 |
|
|
// 触发单选 |
|
|
handleCurrentChange(val) { |
|
|
handleCurrentChange(val) { |
|
|
if (val) { |
|
|
if (val) { |
|
@ -196,28 +125,6 @@ export default { |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
menuChange(menu) { |
|
|
|
|
|
// 获取该节点的所有子节点,id 包含自身 |
|
|
|
|
|
getChild(menu.id).then(childIds => { |
|
|
|
|
|
// 判断是否在 menuIds 中,如果存在则删除,否则添加 |
|
|
|
|
|
if (this.menuIds.indexOf(menu.id) !== -1) { |
|
|
|
|
|
for (let i = 0; i < childIds.length; i++) { |
|
|
|
|
|
const index = this.menuIds.indexOf(childIds[i]) |
|
|
|
|
|
if (index !== -1) { |
|
|
|
|
|
this.menuIds.splice(index, 1) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
for (let i = 0; i < childIds.length; i++) { |
|
|
|
|
|
const index = this.menuIds.indexOf(childIds[i]) |
|
|
|
|
|
if (index === -1) { |
|
|
|
|
|
this.menuIds.push(childIds[i]) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
this.$refs.menu.setCheckedKeys(this.menuIds) |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 保存菜单 |
|
|
// 保存菜单 |
|
|
saveMenu() { |
|
|
saveMenu() { |
|
|
const row = {} |
|
|
const row = {} |
|
@ -226,75 +133,6 @@ export default { |
|
|
crudUserArea.save(row).then(res => { |
|
|
crudUserArea.save(row).then(res => { |
|
|
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|
|
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
|
|
|
// 改变数据 |
|
|
|
|
|
update() { |
|
|
|
|
|
// 无刷新更新 表格数据 |
|
|
|
|
|
crudRoles.get(this.currentId).then(res => { |
|
|
|
|
|
for (let i = 0; i < this.crud.data.length; i++) { |
|
|
|
|
|
if (res.id === this.crud.data[i].id) { |
|
|
|
|
|
this.crud.data[i] = res |
|
|
|
|
|
break |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 获取部门数据 |
|
|
|
|
|
getDepts() { |
|
|
|
|
|
getDepts({ enabled: true }).then(res => { |
|
|
|
|
|
this.depts = res.content.map(function(obj) { |
|
|
|
|
|
if (obj.hasChildren) { |
|
|
|
|
|
obj.children = null |
|
|
|
|
|
} |
|
|
|
|
|
return obj |
|
|
|
|
|
}) |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
getSupDepts(depts) { |
|
|
|
|
|
const ids = [] |
|
|
|
|
|
depts.forEach(dept => { |
|
|
|
|
|
ids.push(dept.id) |
|
|
|
|
|
}) |
|
|
|
|
|
getDeptSuperior(ids).then(res => { |
|
|
|
|
|
const date = res.content |
|
|
|
|
|
this.buildDepts(date) |
|
|
|
|
|
this.depts = date |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
buildDepts(depts) { |
|
|
|
|
|
depts.forEach(data => { |
|
|
|
|
|
if (data.children) { |
|
|
|
|
|
this.buildDepts(data.children) |
|
|
|
|
|
} |
|
|
|
|
|
if (data.hasChildren && !data.children) { |
|
|
|
|
|
data.children = null |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
// 获取弹窗内部门数据 |
|
|
|
|
|
loadDepts({ action, parentNode, callback }) { |
|
|
|
|
|
if (action === LOAD_CHILDREN_OPTIONS) { |
|
|
|
|
|
getDepts({ enabled: true, pid: parentNode.id }).then(res => { |
|
|
|
|
|
parentNode.children = res.content.map(function(obj) { |
|
|
|
|
|
if (obj.hasChildren) { |
|
|
|
|
|
obj.children = null |
|
|
|
|
|
} |
|
|
|
|
|
return obj |
|
|
|
|
|
}) |
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
callback() |
|
|
|
|
|
}, 200) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
// 如果数据权限为自定义则获取部门数据 |
|
|
|
|
|
changeScope() { |
|
|
|
|
|
if (this.form.dataScope === '自定义') { |
|
|
|
|
|
this.getDepts() |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
checkboxT(row) { |
|
|
|
|
|
return row.level >= this.level |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|