diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 6597112..2731b22 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -113,23 +113,83 @@ export default { } }, methods: { + getDeptDatas(tree, treeNode, resolve) { + const params = { pid: tree.id } + setTimeout(() => { + crudDept.getDepts(params).then(res => { + resolve(res.content) + }) + }, 100) + }, // 新增与编辑前做的操作 [CRUD.HOOK.afterToCU](crud, form) { + if (form.pid !== null) { + form.isTop = '0' + } else if (form.id !== null) { + form.isTop = '1' + } form.enabled = `${form.enabled}` - // 获取所有部门 + if (form.id != null) { + this.getSupDepts(form.id) + } else { + this.getDepts() + } + }, + getSupDepts(id) { + crudDept.getDeptSuperior(id).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 + } + }) + }, + getDepts() { crudDept.getDepts({ enabled: true }).then(res => { - this.depts = res.content + this.depts = res.content.map(function(obj) { + if (obj.hasChildren) { + obj.children = null + } + return obj + }) }) }, + // 获取弹窗内部门数据 + loadDepts({ action, parentNode, callback }) { + if (action === LOAD_CHILDREN_OPTIONS) { + crudDept.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() + }, 100) + }) + } + }, // 提交前的验证 [CRUD.HOOK.afterValidateCU]() { - if (!this.form.pid) { + if (this.form.pid !== null && this.form.pid === this.form.id) { this.$message({ message: '上级部门不能为空', type: 'warning' }) return false } + if (this.form.isTop === '1') { + this.form.pid = null + } return true }, // 改变状态 @@ -156,5 +216,14 @@ export default { } - +