// 员工管理API
|
|
// 员工相关的 GraphQL 查询和变更
|
export const EMPLOYEE_QUERIES = {
|
// 获取所有员工
|
GET_EMPLOYEES: `
|
query GetEmployees {
|
employees {
|
id
|
name
|
phone
|
roleId
|
description
|
createTime
|
updateTime
|
}
|
}
|
`,
|
|
// 根据姓名搜索员工
|
SEARCH_EMPLOYEES: `
|
query SearchEmployees($name: String) {
|
employeesByName(name: $name) {
|
id
|
name
|
phone
|
roleId
|
description
|
createTime
|
updateTime
|
}
|
}
|
`,
|
|
// 获取员工详情
|
GET_EMPLOYEE: `
|
query GetEmployee($id: Long!) {
|
employee(id: $id) {
|
id
|
name
|
phone
|
roleId
|
description
|
createTime
|
updateTime
|
}
|
}
|
`
|
}
|
|
export const EMPLOYEE_MUTATIONS = {
|
// 保存员工(新增或更新)
|
SAVE_EMPLOYEE: `
|
mutation SaveEmployee($input: EmployeeInput!) {
|
saveEmployee(input: $input) {
|
id
|
name
|
phone
|
roleId
|
description
|
createTime
|
updateTime
|
}
|
}
|
`,
|
|
// 删除员工
|
DELETE_EMPLOYEE: `
|
mutation DeleteEmployee($id: Long!) {
|
deleteEmployee(id: $id)
|
}
|
`
|
}
|
|
// 类型定义
|
export interface Employee {
|
id: string
|
name: string
|
phone: string
|
roleId: string
|
description?: string
|
createTime?: string
|
updateTime?: string
|
}
|
|
export interface EmployeeInput {
|
id?: string
|
name: string
|
phone: string
|
password?: string
|
roleId: string
|
description?: string
|
}
|
|
// API 函数
|
export const employeeApi = {
|
// 获取所有员工
|
async getEmployees(): Promise<Employee[]> {
|
try {
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
body: JSON.stringify({
|
query: EMPLOYEE_QUERIES.GET_EMPLOYEES
|
})
|
})
|
const result = await response.json()
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
return result.data?.employees || []
|
} catch (error: any) {
|
throw new Error(error.message || '获取员工列表失败')
|
}
|
},
|
|
// 根据名称搜索员工
|
async searchEmployees(name?: string): Promise<Employee[]> {
|
try {
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
body: JSON.stringify({
|
query: EMPLOYEE_QUERIES.SEARCH_EMPLOYEES,
|
variables: { name }
|
})
|
})
|
const result = await response.json()
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
return result.data?.employeesByName || []
|
} catch (error: any) {
|
throw new Error(error.message || '搜索员工失败')
|
}
|
},
|
|
// 获取员工详情
|
async getEmployee(id: string): Promise<Employee | null> {
|
try {
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
body: JSON.stringify({
|
query: EMPLOYEE_QUERIES.GET_EMPLOYEE,
|
variables: { id }
|
})
|
})
|
const result = await response.json()
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
return result.data?.employee || null
|
} catch (error: any) {
|
throw new Error(error.message || '获取员工详情失败')
|
}
|
},
|
|
// 保存员工
|
async saveEmployee(input: EmployeeInput): Promise<Employee> {
|
try {
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
body: JSON.stringify({
|
query: EMPLOYEE_MUTATIONS.SAVE_EMPLOYEE,
|
variables: { input }
|
})
|
})
|
const result = await response.json()
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
return result.data?.saveEmployee
|
} catch (error: any) {
|
throw new Error(error.message || '保存员工失败')
|
}
|
},
|
|
// 删除员工
|
async deleteEmployee(id: string): Promise<boolean> {
|
try {
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: {
|
'Content-Type': 'application/json',
|
},
|
body: JSON.stringify({
|
query: EMPLOYEE_MUTATIONS.DELETE_EMPLOYEE,
|
variables: { id }
|
})
|
})
|
const result = await response.json()
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
return result.data?.deleteEmployee || false
|
} catch (error: any) {
|
throw new Error(error.message || '删除员工失败')
|
}
|
}
|
}
|