205 lines
5.2 KiB
JavaScript
205 lines
5.2 KiB
JavaScript
|
|
// 模拟员工数据
|
|||
|
|
const mockEmployees = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
name: '张伟',
|
|||
|
|
gender: '男',
|
|||
|
|
age: 28,
|
|||
|
|
education: '本科',
|
|||
|
|
department: '运营部',
|
|||
|
|
entry_date: '2023-03-15',
|
|||
|
|
position: '运营主管',
|
|||
|
|
salary: 8500.00,
|
|||
|
|
phone: '13800138001',
|
|||
|
|
email: 'zhangwei@mxbc.com',
|
|||
|
|
status: 1,
|
|||
|
|
remark: '负责门店日常运营',
|
|||
|
|
created_at: '2023-03-15 09:00:00',
|
|||
|
|
updated_at: '2023-03-15 09:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
name: '李娜',
|
|||
|
|
gender: '女',
|
|||
|
|
age: 25,
|
|||
|
|
education: '专科',
|
|||
|
|
department: '销售部',
|
|||
|
|
entry_date: '2023-06-01',
|
|||
|
|
position: '销售专员',
|
|||
|
|
salary: 6000.00,
|
|||
|
|
phone: '13800138002',
|
|||
|
|
email: 'lina@mxbc.com',
|
|||
|
|
status: 1,
|
|||
|
|
remark: '',
|
|||
|
|
created_at: '2023-06-01 09:00:00',
|
|||
|
|
updated_at: '2023-06-01 09:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
name: '王强',
|
|||
|
|
gender: '男',
|
|||
|
|
age: 32,
|
|||
|
|
education: '硕士',
|
|||
|
|
department: '技术部',
|
|||
|
|
entry_date: '2022-11-10',
|
|||
|
|
position: '技术总监',
|
|||
|
|
salary: 15000.00,
|
|||
|
|
phone: '13800138003',
|
|||
|
|
email: 'wangqiang@mxbc.com',
|
|||
|
|
status: 1,
|
|||
|
|
remark: '负责系统架构设计',
|
|||
|
|
created_at: '2022-11-10 09:00:00',
|
|||
|
|
updated_at: '2022-11-10 09:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 4,
|
|||
|
|
name: '刘洋',
|
|||
|
|
gender: '女',
|
|||
|
|
age: 23,
|
|||
|
|
education: '本科',
|
|||
|
|
department: '市场部',
|
|||
|
|
entry_date: '2024-01-20',
|
|||
|
|
position: '市场专员',
|
|||
|
|
salary: 5500.00,
|
|||
|
|
phone: '13800138004',
|
|||
|
|
email: 'liuyang@mxbc.com',
|
|||
|
|
status: 0,
|
|||
|
|
remark: '已离职',
|
|||
|
|
created_at: '2024-01-20 09:00:00',
|
|||
|
|
updated_at: '2025-03-01 17:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 5,
|
|||
|
|
name: '赵敏',
|
|||
|
|
gender: '女',
|
|||
|
|
age: 27,
|
|||
|
|
education: '本科',
|
|||
|
|
department: '财务部',
|
|||
|
|
entry_date: '2023-09-05',
|
|||
|
|
position: '财务会计',
|
|||
|
|
salary: 7000.00,
|
|||
|
|
phone: '13800138005',
|
|||
|
|
email: 'zhaomin@mxbc.com',
|
|||
|
|
status: 1,
|
|||
|
|
remark: '',
|
|||
|
|
created_at: '2023-09-05 09:00:00',
|
|||
|
|
updated_at: '2023-09-05 09:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 6,
|
|||
|
|
name: '陈刚',
|
|||
|
|
gender: '男',
|
|||
|
|
age: 35,
|
|||
|
|
education: '高中',
|
|||
|
|
department: '仓储部',
|
|||
|
|
entry_date: '2022-04-12',
|
|||
|
|
position: '仓库管理员',
|
|||
|
|
salary: 5000.00,
|
|||
|
|
phone: '13800138006',
|
|||
|
|
email: 'chengang@mxbc.com',
|
|||
|
|
status: 1,
|
|||
|
|
remark: '负责原料入库出库',
|
|||
|
|
created_at: '2022-04-12 09:00:00',
|
|||
|
|
updated_at: '2022-04-12 09:00:00'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// 模拟网络延迟
|
|||
|
|
const delay = (ms = 300) => new Promise(r => setTimeout(r, ms))
|
|||
|
|
|
|||
|
|
// Mock API
|
|||
|
|
export const mockEmployeeAPI = {
|
|||
|
|
// 获取列表
|
|||
|
|
async getList(params = {}) {
|
|||
|
|
await delay()
|
|||
|
|
let result = [...mockEmployees]
|
|||
|
|
|
|||
|
|
// 关键词搜索
|
|||
|
|
if (params.keyword) {
|
|||
|
|
const keyword = params.keyword.toLowerCase()
|
|||
|
|
const searchField = params.searchField || '1'
|
|||
|
|
|
|||
|
|
if (searchField === '1') {
|
|||
|
|
// ID:精确匹配
|
|||
|
|
result = result.filter(item => String(item.id) === keyword)
|
|||
|
|
} else if (searchField === '2') {
|
|||
|
|
// 姓名:模糊匹配
|
|||
|
|
result = result.filter(item => item.name.toLowerCase().includes(keyword))
|
|||
|
|
} else if (searchField === '3') {
|
|||
|
|
// 部门:模糊匹配
|
|||
|
|
result = result.filter(item => item.department.toLowerCase().includes(keyword))
|
|||
|
|
} else {
|
|||
|
|
result = result.filter(item =>
|
|||
|
|
String(item.id).includes(keyword) ||
|
|||
|
|
item.name.toLowerCase().includes(keyword) ||
|
|||
|
|
item.department.toLowerCase().includes(keyword)
|
|||
|
|
)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 在职状态筛选
|
|||
|
|
if (params.status !== undefined && params.status !== '') {
|
|||
|
|
result = result.filter(item => item.status === Number(params.status))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 部门筛选
|
|||
|
|
if (params.department) {
|
|||
|
|
result = result.filter(item => item.department === params.department)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return { code: 200, data: result, total: result.length }
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 获取详情
|
|||
|
|
async getDetail(id) {
|
|||
|
|
await delay()
|
|||
|
|
const employee = mockEmployees.find(item => item.id === id)
|
|||
|
|
if (employee) {
|
|||
|
|
return { code: 200, data: employee }
|
|||
|
|
}
|
|||
|
|
return { code: 404, message: '员工不存在' }
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 新增
|
|||
|
|
async create(data) {
|
|||
|
|
await delay()
|
|||
|
|
const maxId = mockEmployees.length > 0 ? Math.max(...mockEmployees.map(item => item.id)) : 0
|
|||
|
|
const now = new Date().toISOString().replace('T', ' ').slice(0, 19)
|
|||
|
|
const newEmployee = {
|
|||
|
|
id: maxId + 1,
|
|||
|
|
status: 1,
|
|||
|
|
...data,
|
|||
|
|
created_at: now,
|
|||
|
|
updated_at: now
|
|||
|
|
}
|
|||
|
|
mockEmployees.push(newEmployee)
|
|||
|
|
return { code: 200, data: newEmployee, message: '新增成功' }
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 更新
|
|||
|
|
async update(id, data) {
|
|||
|
|
await delay()
|
|||
|
|
const index = mockEmployees.findIndex(item => item.id === id)
|
|||
|
|
if (index !== -1) {
|
|||
|
|
mockEmployees[index] = {
|
|||
|
|
...mockEmployees[index],
|
|||
|
|
...data,
|
|||
|
|
updated_at: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
|||
|
|
}
|
|||
|
|
return { code: 200, data: mockEmployees[index], message: '更新成功' }
|
|||
|
|
}
|
|||
|
|
return { code: 404, message: '员工不存在' }
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 删除
|
|||
|
|
async delete(id) {
|
|||
|
|
await delay()
|
|||
|
|
const index = mockEmployees.findIndex(item => item.id === id)
|
|||
|
|
if (index !== -1) {
|
|||
|
|
mockEmployees.splice(index, 1)
|
|||
|
|
return { code: 200, message: '删除成功' }
|
|||
|
|
}
|
|||
|
|
return { code: 404, message: '员工不存在' }
|
|||
|
|
}
|
|||
|
|
}
|