<template> <div> <el-form :model="searchForm" inline> <el-form-item> <el-input v-model="searchForm.name" placeholder="请输入员工姓名" clearable /> </el-form-item> <el-form-item> <el-radio-group v-model="searchForm.status"> <el-radio :label="0"> 在职 </el-radio> <el-radio :label="1"> 离职 </el-radio> </el-radio-group> </el-form-item> <el-form-item> <el-button @click="handleQuery" v-hasPermi="['pers:employee:search']">搜索</el-button> <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['pers:employee:add']" > 新增 </el-button> </el-form-item> </el-form> <el-table v-loading="loading" :data="tableList" border stripe> <el-table-column type="index" width="50" /> <el-table-column label="用户姓名" prop="name" /> <el-table-column label="职位" prop="post" /> <el-table-column label="手机号码" prop="mobile" width="120" /> <el-table-column label="考勤方案" prop="attendanceSettingName" /> <el-table-column label="已开通系统" prop="instanceName" /> <el-table-column label="在职状态" key="status" width="150"> <template #default="scope"> <el-switch v-model="scope.row.status" :active-value="0" :inactive-value="1" v-hasPermi="['pers:employee:update']" @change="handleStatusChange(scope.row)" /> </template> </el-table-column> <el-table-column label="操作" width="260"> <template #default="scope"> <el-button type="primary" link @click="openForm('update', scope.row.id)" v-hasPermi="['pers:employee:update']" > 修改 </el-button> <el-button type="primary" link @click="handleDelete(scope.row.id)" v-hasPermi="['pers:employee:delete']" > 删除 </el-button> </template> </el-table-column> </el-table> <Pagination :total="total" v-model:page="searchForm.pageNo" v-model:limit="searchForm.pageSize" @pagination="getList" /> <DialogEmployee ref="formRef" @success="getList" /> </div> </template> <script name="OAEmployee" setup> import DialogEmployee from './Comp/DialogEmployee.vue' import { removeNullField } from '@/utils' import * as EmployeeApi from '@/api/pers/employee' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 const searchForm = ref({ name: undefined, status: 0, pageNo: 1, pageSize: 20 }) onMounted(() => { handleQuery() }) /** 搜索按钮操作 */ const handleQuery = () => { searchForm.value.pageNo = 1 getList() } const loading = ref(false) const tableList = ref([]) const total = ref(0) /** 查询列表 */ const getList = async () => { loading.value = true try { const data = await EmployeeApi.getEmployeePage(removeNullField(searchForm.value)) tableList.value = data.list total.value = data.total } finally { loading.value = false } } /** 添加/修改操作 */ const formRef = ref() const openForm = (type, id = undefined) => { formRef.value.open(type, id) } /** 修改用户状态 */ const handleStatusChange = async (row) => { try { // 修改状态的二次确认 const text = row.status === 0 ? '启用' : '停用' await message.confirm('确认要"' + text + '""' + row.name + '"用户吗?') // 发起修改状态 await EmployeeApi.updateEmployeeStatus({ id: row.id, status: row.status }) // 刷新列表 await getList() } catch (err) { console.log(err) // 取消后,进行恢复按钮 row.status = row.status === 0 ? 1 : 0 } } /** 删除按钮操作 */ const handleDelete = async (id) => { try { // 删除的二次确认 await message.delConfirm() // 发起删除 await EmployeeApi.deleteEmployee(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() } catch {} } </script> <style lang="scss" scoped></style>