优化
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user