This commit is contained in:
menxipeng
2025-10-25 15:08:45 +08:00
parent 6432ce7b04
commit b7fd1eadbb

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect } from "react"
import { useState, useEffect } from "react"
import { Button } from "../ui/button"
import { Input } from "../ui/input"
import { Card, CardContent, CardHeader, CardTitle } from "../ui/card"
@@ -14,7 +14,6 @@ import {
} from "../ui/dialog"
import { Label } from "../ui/label"
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select"
import { Textarea } from "../ui/textarea"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table"
import {
Users,
@@ -28,7 +27,6 @@ import {
Edit,
Trash2,
Phone,
Calendar,
Award,
Wrench,
CheckCircle,
@@ -36,7 +34,6 @@ import {
import { apiPost, apiGet, apiPut, apiDelete } from "../../lib/services/api"
import { getProvinces } from '../../lib/services/region'
import { getDealers } from '../../lib/services/dealer'
import { getSkillLevels } from '../../lib/services/skill'
import { Province } from '../../lib/types/region'
import { Dealer } from '../../lib/types/dealer'
import { SkillLevel, SKILL_LEVEL_MAP } from '../../lib/types/skill'
@@ -45,10 +42,8 @@ export default function WorkersPage() {
const [workers, setWorkers] = useState<any[]>([])
const [provinces, setProvinces] = useState<Province[]>([])
const [dealers, setDealers] = useState<Dealer[]>([])
const [skillLevels, setSkillLevels] = useState<SkillLevel[]>([])
const [searchTerm, setSearchTerm] = useState("")
const [provinceFilter, setProvinceFilter] = useState("all")
const [skillFilter, setSkillFilter] = useState("all")
const [isAddDialogOpen, setIsAddDialogOpen] = useState(false)
const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)
@@ -62,7 +57,6 @@ export default function WorkersPage() {
specialties: "",
jobNum: "",
})
const [editingWorker, setEditingWorker] = useState<any>(null)
const [editWorker, setEditWorker] = useState({
id: "",
name: "",
@@ -129,7 +123,7 @@ export default function WorkersPage() {
workerId: worker.jobNum || worker.workersId || `W${worker.id}`,
phone: worker.phone,
dealerId: worker.distributorUserId,
dealerName: getDealerName(worker.distributorUserId),
dealerName: worker.distributorUser || '未知经销商',
province: worker.province,
skillLevel: mapAPISkillLevelToDisplay(worker.skillLevel),
joinDate: worker.createdAt,
@@ -157,12 +151,6 @@ export default function WorkersPage() {
}
}
// 根据经销商ID获取经销商名称
const getDealerName = (dealerId: string) => {
const dealer = dealers.find(d => d.userId === dealerId)
return dealer ? dealer.userName : '未知经销商'
}
// 将API技能等级映射到显示格式
const mapAPISkillLevelToDisplay = (apiSkillLevel: string) => {
return SKILL_LEVEL_MAP[apiSkillLevel as SkillLevel] || apiSkillLevel
@@ -218,24 +206,6 @@ export default function WorkersPage() {
loadDealers()
}, [])
// 加载技能等级数据
useEffect(() => {
const loadSkillLevels = async () => {
try {
const response = await getSkillLevels()
if (response.code === 200) {
setSkillLevels(response.data)
} else {
console.error('获取技能等级数据失败:', response.msg)
}
} catch (err) {
console.error('Error loading skill levels:', err)
}
}
loadSkillLevels()
}, [])
// 组件挂载时获取数据
useEffect(() => {
fetchWorkersList()
@@ -264,8 +234,7 @@ export default function WorkersPage() {
worker.dealerName.toLowerCase().includes(searchTerm.toLowerCase())
const matchesProvince = provinceFilter === "all" || worker.province === provinceFilter ||
provinces.find(p => p.code === provinceFilter)?.name === worker.province
const matchesSkill = skillFilter === "all" || worker.skillLevel === skillFilter
return matchesSearch && matchesProvince && matchesSkill
return matchesSearch && matchesProvince
})
const handleAddWorker = async () => {
@@ -315,8 +284,6 @@ export default function WorkersPage() {
// 处理编辑工人
const handleEditWorker = (worker: any) => {
setEditingWorker(worker)
// 尝试根据省份名称查找省份代码
let provinceValue = worker.province
const provinceByName = provinces.find(p => p.name === worker.province)
@@ -376,7 +343,6 @@ export default function WorkersPage() {
fetchWorkersList(currentPage, pageSize)
setEditWorker({ id: "", name: "", phone: "", dealerId: "", province: "", skillLevel: "", specialties: "", jobNum: "", job: "1" })
setEditingWorker(null)
setIsEditDialogOpen(false)
} else {
console.error('编辑工人失败:', result)
@@ -527,32 +493,6 @@ export default function WorkersPage() {
}
}
const getStatusBadge = (status: string) => {
switch (status) {
case "active":
return <Badge className="bg-green-100 text-green-800"></Badge>
case "inactive":
return <Badge variant="secondary"></Badge>
case "suspended":
return <Badge variant="destructive"></Badge>
default:
return <Badge variant="outline"></Badge>
}
}
const getSkillBadge = (skill: string) => {
switch (skill) {
case "高级技师":
return <Badge className="bg-purple-100 text-purple-800"></Badge>
case "中级技师":
return <Badge className="bg-blue-100 text-blue-800"></Badge>
case "初级技师":
return <Badge className="bg-green-100 text-green-800"></Badge>
default:
return <Badge variant="outline">{skill}</Badge>
}
}
const getWorkOrderStatusBadge = (status: string) => {
switch (status) {
case "pending-accept":
@@ -898,23 +838,12 @@ export default function WorkersPage() {
))}
</SelectContent>
</Select>
<Select value={skillFilter} onValueChange={setSkillFilter}>
<SelectTrigger className="w-32">
<SelectValue placeholder="技能等级" />
</SelectTrigger>
<SelectContent className="max-h-[300px]">
<SelectItem value="all"></SelectItem>
<SelectItem value="高级技师"></SelectItem>
<SelectItem value="中级技师"></SelectItem>
<SelectItem value="初级技师"></SelectItem>
</SelectContent>
</Select>
<Select value={selectedWorkOrder} onValueChange={setSelectedWorkOrder}>
<SelectTrigger className="w-64">
<SelectValue placeholder="选择工单" />
<SelectValue placeholder="筛选工人" />
</SelectTrigger>
<SelectContent className="max-h-[300px]">
<SelectItem value="all"></SelectItem>
<SelectItem value="all"></SelectItem>
{workOrders.map((order) => (
<SelectItem key={order.value} value={order.value}>
{order.label}