240 lines
6.0 KiB
JavaScript
240 lines
6.0 KiB
JavaScript
// 模拟员工数据(单一数据源,同时包含用户字段)
|
||
export 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: '负责门店日常运营',
|
||
// 用户字段
|
||
username: 'zhangwei',
|
||
password: '123456',
|
||
user_type: 'admin',
|
||
user_status: '1',
|
||
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: '',
|
||
// 用户字段
|
||
username: 'lina',
|
||
password: '123456',
|
||
user_type: 'user',
|
||
user_status: '1',
|
||
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: '负责系统架构设计',
|
||
// 用户字段(无用户账号)
|
||
username: null,
|
||
password: null,
|
||
user_type: null,
|
||
user_status: null,
|
||
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: '已离职',
|
||
// 用户字段(无用户账号)
|
||
username: null,
|
||
password: null,
|
||
user_type: null,
|
||
user_status: null,
|
||
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: '',
|
||
// 用户字段
|
||
username: 'zhaomin',
|
||
password: '123456',
|
||
user_type: 'user',
|
||
user_status: '0',
|
||
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: '负责原料入库出库',
|
||
// 用户字段(无用户账号)
|
||
username: null,
|
||
password: null,
|
||
user_type: null,
|
||
user_status: null,
|
||
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,
|
||
// 用户字段初始为空
|
||
username: null,
|
||
password: null,
|
||
user_type: null,
|
||
user_status: null,
|
||
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: '员工不存在' }
|
||
}
|
||
}
|