This commit is contained in:
zhangzhiqiang
2022-12-02 15:39:16 +08:00
parent 3c69896a03
commit 06cd3b453c
18 changed files with 395 additions and 90 deletions

View File

@@ -8,7 +8,7 @@ export function getDepts(params) {
})
}
export function getDeptTreee(params) {
export function getDeptTree(params) {
return request({
url: '/api/dept/allTree',
method: 'get',
@@ -57,4 +57,4 @@ export function edit(data) {
})
}
export default { add, edit, del, getDepts, getDeptSuperior, getDeptvo }
export default { add, edit, del, getDepts, getDeptSuperior, getDeptvo, getDeptTree }

View File

@@ -61,7 +61,7 @@
<el-radio label="0">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="状态" prop="enabled">
<el-form-item label="状态" prop="is_uesd">
<el-switch
v-model="form.is_used"
active-color="#409EFF"

View File

@@ -55,7 +55,7 @@
</div>
<crudOperation show="" :permission="permission" />
</div>
<!--表单渲染-->
<!--新增跟修改表单渲染-->
<el-dialog
append-to-body
:close-on-click-modal="false"
@@ -77,12 +77,16 @@
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" style="width: 200px;" />
</el-form-item>
<el-form-item label="部门" prop="dept.id" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
<el-tree-select
v-model="form.dept.id"
:data="deptDatas"
style="width: 200px"
placeholder="选择部门"
<el-form-item label="部门" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
<treeselect
v-model="form.depts"
:load-options="loadDepts"
:options="deptDatas"
style="width: 370px;"
:multiple="true"
:flat="true"
:normalizer="normalizer"
placeholder="选择部门类目"
/>
</el-form-item>
<br v-if="!crud.status.add">
@@ -95,15 +99,14 @@
<el-radio label="">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.is_used" :disabled="form.id === user.id">
<el-radio
v-for="item in dict.user_status"
:key="item.id"
:label="item.value"
>{{ item.label }}
</el-radio>
</el-radio-group>
<el-form-item label="状态" prop="is_uesd">
<el-switch
v-model="form.is_used"
active-color="#409EFF"
inactive-color="#F56C6C"
active-value="1"
inactive-value="0"
/>
</el-form-item>
<el-form-item style="margin-bottom: 0;" label="角色" prop="roles">
<el-select
@@ -116,12 +119,12 @@
@remove-tag="deleteTag"
@change="changeRole"
>
<!--:disabled="level !== 1 && item.level <= level"-->
<el-option
v-for="item in roles"
:key="item.name"
:disabled="level !== 1 && item.level <= level"
:key="item.role_id"
:label="item.name"
:value="item.id"
:value="item.role_id"
/>
</el-select>
</el-form-item>
@@ -150,7 +153,7 @@
<template slot-scope="scope">
<el-switch
v-model="scope.row.is_used"
:disabled="user.id === scope.row.id"
:disabled="scope.row.id === 1"
active-color="#409EFF"
inactive-color="#F56C6C"
active-value="1"
@@ -198,34 +201,33 @@
<script>
import crudUser from '@/api/system/user'
import { getDepts, getDeptSuperior, getDeptTreee } from '@/api/system/dept'
import crudDept from '@/api/system/dept'
import { getAll, getLevel } from '@/api/system/role'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import { mapGetters } from 'vuex'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
let userRoles = []
const defaultForm = {
id: null,
dept_id: null,
depts: [],
username: null,
person_name: null,
gender: '男',
email: null,
enabled: 'true',
roles: [],
dept: { id: 2 },
phone: null,
password: null
}
export default {
name: 'User',
components: { Treeselect, crudOperation, rrOperation, udOperation, pagination, DateRangePicker },
components: { Treeselect, crudOperation, rrOperation, udOperation, pagination },
cruds() {
return CRUD({ title: '用户', url: 'api/users', crudMethod: { ...crudUser }})
},
@@ -265,7 +267,7 @@ export default {
])
},
beforeMount() {
this.getDeptTree()
this.deptTree()
},
created() {
this.crud.msg.add = '新增成功'
@@ -278,7 +280,7 @@ export default {
},
methods: {
changeRole(value) {
userRoles = []
userRoles = [],
value.forEach(function(data, index) {
const role = { id: data }
userRoles.push(role)
@@ -294,13 +296,13 @@ export default {
// 新增与编辑前做的操作
[CRUD.HOOK.afterToCU](crud, form) {
this.getRoles()
if (form.id == null) {
this.getDepts()
if (form.dept_id == null) {
crudDept.getDepts()
} else {
this.getSupDepts(form.dept.id)
this.getSupDepts(form.dept_id)
}
this.getRoleLevel()
form.enabled = form.enabled.toString()
form.is_used = form.enabled.toString()
},
// 新增前将多选的值设置为空
[CRUD.HOOK.beforeToAdd]() {
@@ -321,7 +323,7 @@ export default {
},
// 提交前做的操作
[CRUD.HOOK.afterValidateCU](crud) {
if (!crud.form.dept.id) {
if (!crud.form.depts) {
this.$message({
message: '部门不能为空',
type: 'warning'
@@ -334,14 +336,18 @@ export default {
})
return false
}
crud.form.roles = userRoles
const roles = []
userRoles.forEach(function(data, index) {
roles.push(data.id)
})
crud.form.roles = roles.toString()
crud.form.depts = crud.form.depts.toString()
return true
},
// 获取左侧部门数据
getDeptDatas(node, resolve) {
debugger
setTimeout(() => {
getDeptTreee({ name: node }).then(res => {
crudDept.getDeptTree({ name: node }).then(res => {
console.log('res', res)
if (resolve) {
resolve(res.content)
@@ -352,16 +358,16 @@ export default {
}, 100)
},
getDeptTree() {
deptTree() {
setTimeout(() => {
getDeptTreee().then(res => {
crudDept.getDeptTree().then(res => {
this.deptDatas = res.content
})
}, 100)
},
getDepts() {
console.log('获取部门')
getDepts({ is_used: 1 }).then(res => {
crudDept.getDepts({ is_used: 1 }).then(res => {
console.log('获取的部门信息', res)
this.depts = res.content.map(function(obj) {
@@ -373,7 +379,7 @@ export default {
})
},
getSupDepts(deptId) {
getDeptSuperior(deptId).then(res => {
crudDept.getDeptSuperior(deptId).then(res => {
console.log('父部门', res)
const date = res.content
this.buildDepts(date)
@@ -392,21 +398,25 @@ export default {
},
// 获取弹窗内部门数据
loadDepts({ action, parentNode, callback }) {
debugger
if (action === LOAD_CHILDREN_OPTIONS) {
getDepts({ is_used: 1, pid: parentNode.id }).then(res => {
crudDept.getDeptvo({ is_used: '1', pid: parentNode.dept_id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
obj.children = null
return obj
})
setTimeout(() => {
callback()
}, 200)
}, 100)
})
}
},
normalizer(node) {
return {
id: node.dept_id,
label: node.name,
children: node.children
}
},
// 切换部门
handleNodeClick(data) {
this.query.deptId = data.dept_id