You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
2.8 KiB

2 years ago
<template>
<div>
2 years ago
<vxe-modal
:value="isShow"
show-footer
title="部门"
show-confirm-button
:width="600"
:height="400"
esc-closable
@input="e => $emit('update:isShow',e)"
>
2 years ago
<el-form ref="elForm" :model="form" :rules="rules" label-position="top" label-width="100">
<el-form-item label="部门名称" prop="name" required>
2 years ago
<el-input v-model="form.name" clearable />
2 years ago
</el-form-item>
<el-form-item label="父级部门" prop="pid">
2 years ago
<Treeselect
v-model="form.pid"
:options="formatList"
no-children-text="无子部门"
:normalizer="node => ({
id: node.id,
label: node.name,
children: node.children,
isDefaultExpanded: true
})"
/>
2 years ago
</el-form-item>
2 years ago
<el-form-item label="分管负责人" prop="manager_id">
<user-picker v-model="form.manager_id" width="100%" />
2 years ago
</el-form-item>
2 years ago
<el-form-item label="主要领导" prop="leader_id">
<user-picker v-model="form.leader_id" width="100%" />
2 years ago
</el-form-item>
<el-form-item label="排序" prop="sortnumber">
2 years ago
<el-input-number v-model="form.sortnumber" controls-position="right" :precision="0" />
2 years ago
</el-form-item>
</el-form>
<template #footer>
<el-button type="primary" :loading="loading" @click="submit"></el-button>
</template>
</vxe-modal>
</div>
</template>
<script>
import UserPicker from '@/components/UserPicker/index.vue'
2 years ago
import { save } from '@/api/department'
2 years ago
export default {
components: {
UserPicker
},
props: {
list: {
type: Array,
default: () => []
},
isShow: {
type: Boolean,
default: false,
required: true
}
},
data() {
return {
loading: false,
form: {
2 years ago
name: '',
2 years ago
pid: 0,
2 years ago
manager_id: '',
leader_id: '',
2 years ago
sortnumber: 0
},
rules: {
name: [
2 years ago
{ required: true, message: '请输入模块名称' }
2 years ago
]
}
}
},
2 years ago
computed: {
formatList() {
return [
{
name: '#根部门',
id: 0
},
...this.list
]
}
},
2 years ago
methods: {
2 years ago
submit() {
this.$refs['elForm'].validate(async valid => {
2 years ago
if (valid) {
this.loading = true
try {
await save(this.form)
2 years ago
this.$message.success('新增成功')
2 years ago
this.$emit('refresh')
2 years ago
this.$emit('update:isShow', false)
2 years ago
this.loading = false
2 years ago
this.$refs['elForm'].resetFields()
2 years ago
} catch (err) {
this.loading = false
}
}
})
}
}
}
</script>
<style scoped lang="scss">
</style>