新增员工
This commit is contained in:
		
							parent
							
								
									3a566de9d3
								
							
						
					
					
						commit
						4c5b831c22
					
				@ -25,3 +25,14 @@ export function delEmployee(id) {
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** **
 | 
			
		||||
 *  新增员工的接口
 | 
			
		||||
 * **/
 | 
			
		||||
export function addEmployee(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    url: '/sys/user',
 | 
			
		||||
    data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										136
									
								
								src/views/employees/components/add-employee.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								src/views/employees/components/add-employee.vue
									
									
									
									
									
										Normal 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>
 | 
			
		||||
@ -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) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user