新增员工

This commit is contained in:
jiutianzhiyu 2021-03-30 12:14:23 +08:00
parent 3a566de9d3
commit 4c5b831c22
3 changed files with 158 additions and 3 deletions

View File

@ -25,3 +25,14 @@ export function delEmployee(id) {
method: 'delete'
})
}
/** **
* 新增员工的接口
* **/
export function addEmployee(data) {
return request({
method: 'post',
url: '/sys/user',
data
})
}

View File

@ -0,0 +1,136 @@
<template>
<el-dialog title="新增员工" :visible="showDialog" @close="btnCancel">
<!-- 表单 -->
<el-form ref="addEmployee" label-width="120px" :model="formData" :rules="rules">
<el-form-item label="姓名" prop="username">
<el-input v-model="formData.username" style="width:50%" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="手机" prop="mobile">
<el-input v-model="formData.mobile" style="width:50%" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="入职时间" prop="timeOfEntry">
<el-date-picker v-model="formData.timeOfEntry" style="width:50%" placeholder="请选择入职时间" />
</el-form-item>
<el-form-item label="聘用形式" prop="formOfEmployment">
<el-select v-model="formData.formOfEmployment" style="width:50%" placeholder="请选择">
<!-- 遍历枚举类型 -->
<el-option v-for="item in EmployeeEnum.hireType" :key="item.id" :label="item.value" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="工号" prop="workNumber">
<el-input v-model="formData.workNumber" style="width:50%" placeholder="请输入工号" />
</el-form-item>
<el-form-item label="部门" prop="departmentName">
<el-input v-model="formData.departmentName" style="width:50%" placeholder="请选择部门" @focus="getDepartments" />
<!-- 树形控件 -->
<el-tree v-if="treeData.length > 0 " :data="treeData" :props="{ label: 'name' }" :default-expand-all="true" @node-click="selectNode" />
</el-form-item>
<el-form-item label="转正时间" prop="correctionTime">
<el-date-picker v-model="formData.correctionTime" style="width:50%" placeholder="请选择转正时间" />
</el-form-item>
</el-form>
<!-- footer插槽 -->
<template v-slot:footer>
<el-row type="flex" justify="center">
<el-col :span="6">
<el-button size="small" @click="btnCancel">取消</el-button>
<el-button type="primary" size="small" @click="btnOK">确定</el-button>
</el-col>
</el-row>
</template>
</el-dialog>
</template>
<script>
import { addEmployee } from '@/api/employees'
import { getDepartments } from '@/api/departments'
import { listToTreeData } from '@/utils/list-to-treedata'
import EmployeeEnum from '@/api/constant/employees'
export default {
props: {
showDialog: {
type: Boolean,
default: false
}
},
data() {
return {
EmployeeEnum, //
loading: false,
formData: {
username: '',
mobile: '',
formOfEmployment: '',
workNumber: '',
departmentName: '',
timeOfEntry: '',
correctionTime: ''
},
treeData: [], //
rules: {
username: [
{ required: true, message: '用户姓名不能为空', trigger: 'blur' },
{ min: 1, max: 4, message: '用户姓名为1-4位' }
],
mobile: [
{ required: true, message: '手机号不能为空', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' }
],
formOfEmployment: [{ required: true, message: '聘用形式不能为空', trigger: 'blur' }],
workNumber: [{ required: true, message: '工号不能为空', trigger: 'blur' }],
departmentName: [{ required: true, message: '部门不能为空', trigger: 'change' }],
timeOfEntry: [{ required: true, message: '入职时间', trigger: 'blur' }]
}
}
},
methods: {
async getDepartments() {
this.showTree = true
this.loading = true
const { depts } = await getDepartments()
this.treeData = listToTreeData(depts, '')
this.loading = false
},
//
selectNode(node) {
this.formData.departmentName = node.name
this.treeData = {}
},
//
async btnOK() {
try {
await this.$refs.addEmployee.validate()
//
await addEmployee(this.formData) //
//
// this.$parent this
// this.$emit
this.$parent.getEmployeeList()
this.$parent.showDialog = false
this.$message.success('添加员工成功')
} catch (error) {
console.log(error)
}
},
btnCancel() {
//
this.formData = {
username: '',
mobile: '',
formOfEmployment: '',
workNumber: '',
departmentName: '',
timeOfEntry: '',
correctionTime: ''
}
this.$refs.addEmployee.resetFields() //
this.$emit('update:showDialog', false)
}
}
}
</script>
<style>
</style>

View File

@ -6,7 +6,7 @@
<template slot="after">
<el-button size="small" type="warning">导入</el-button>
<el-button size="small" type="danger">导出</el-button>
<el-button size="small" type="primary">新增员工</el-button>
<el-button size="small" type="primary" @click="showDialog = true">新增员工</el-button>
</template>
</page-tools>
<!-- 放置表格和分页 -->
@ -45,13 +45,17 @@
</el-row>
</el-card>
</div>
<!-- 新增/编辑 弹窗 -->
<add-employee :show-dialog.sync="showDialog" />
</div>
</template>
<script>
import { getEmployeeList, delEmployee } from '@/api/employees'
import EmployeeEnum from '@/api/constant/employees'
import AddEmployee from './components/add-employee'
export default {
components: { AddEmployee },
data() {
return {
list: [], //
@ -59,7 +63,8 @@ export default {
page: 1, //
size: 10, //
total: 0 //
}
},
showDialog: false //
}
},
created() {
@ -81,7 +86,6 @@ export default {
},
//
formatEmployment(row, column, cellValue, index) {
console.log(column)
// 1
const obj = EmployeeEnum.hireType.find(item => item.id === cellValue)
// return
@ -92,6 +96,10 @@ export default {
try {
await this.$confirm('确定删除该员工吗?')
await delEmployee(id)
// ,
if (this.list.length === 1 && this.page.page > 1) {
this.page.page -= 1
}
this.getEmployeeList()
this.$message.success('删除员工成功')
} catch (err) {