Compare commits
2 Commits
c38fa31c9b
...
c1280737eb
| Author | SHA1 | Date |
|---|---|---|
|
|
c1280737eb | 1 month ago |
|
|
aa0c7ed6ea | 1 month ago |
@ -1,563 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力资源管理系统 - 多维统计</title>
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA'
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
[type="number"]::-webkit-inner-spin-button,
|
|
||||||
[type="number"]::-webkit-outer-spin-button {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.chart-container {
|
|
||||||
width: 100%;
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
.fa-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="min-h-[1024px] bg-secondary font-sans">
|
|
||||||
<!-- 顶部导航 -->
|
|
||||||
<!-- <header class="w-full bg-primary text-white shadow-md">
|
|
||||||
<div class="container mx-auto px-6 h-16 flex items-center justify-between">
|
|
||||||
<div class="flex items-center space-x-8">
|
|
||||||
<a href="#" class="text-2xl font-['Pacifico']">人力</a>
|
|
||||||
<nav class="hidden md:flex space-x-6">
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" placeholder="搜索..." class="bg-white/20 text-sm px-4 py-2 rounded-button w-48 focus:outline-none focus:ring-2 focus:ring-white/50">
|
|
||||||
<i class="fa-icon fa-solid fa-magnifying-glass absolute right-3 top-1/2 transform -translate-y-1/2 text-white/70"></i>
|
|
||||||
</div>
|
|
||||||
<button class="flex items-center space-x-1 bg-white/10 hover:bg-white/20 px-3 py-1 rounded-button transition">
|
|
||||||
<i class="fa-icon fa-solid fa-robot"></i>
|
|
||||||
<span class="text-sm">AI助手</span>
|
|
||||||
</button>
|
|
||||||
<div class="w-8 h-8 rounded-full bg-white/20 flex items-center justify-center cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-user"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
|
|
||||||
<!-- 主要内容 -->
|
|
||||||
<main class="container mx-auto px-6 py-8">
|
|
||||||
<!-- 数据卡片行 -->
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
|
|
||||||
<div class="flex justify-between items-start">
|
|
||||||
<div>
|
|
||||||
<p class="text-gray-500 text-sm">员工总数</p>
|
|
||||||
<p class="text-3xl font-bold mt-2">1,248</p>
|
|
||||||
</div>
|
|
||||||
<div class="bg-green-100 text-green-800 px-2 py-1 rounded-button text-xs flex items-center">
|
|
||||||
<i class="fa-icon fa-solid fa-arrow-up mr-1"></i>
|
|
||||||
<span>5.2%</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="text-gray-500 text-xs mt-2">较上月增加 62 人</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
|
|
||||||
<div>
|
|
||||||
<p class="text-gray-500 text-sm">本月入职</p>
|
|
||||||
<p class="text-3xl font-bold mt-2">87</p>
|
|
||||||
</div>
|
|
||||||
<p class="text-gray-500 text-xs mt-2">其中社招 52 人,校招 35 人</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
|
|
||||||
<div>
|
|
||||||
<p class="text-gray-500 text-sm">本月离职</p>
|
|
||||||
<p class="text-3xl font-bold mt-2">25</p>
|
|
||||||
</div>
|
|
||||||
<p class="text-gray-500 text-xs mt-2">主动离职 18 人,被动离职 7 人</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
|
|
||||||
<div>
|
|
||||||
<p class="text-gray-500 text-sm">平均工龄</p>
|
|
||||||
<p class="text-3xl font-bold mt-2">3.2</p>
|
|
||||||
</div>
|
|
||||||
<p class="text-gray-500 text-xs mt-2">年,较行业平均高 0.8 年</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 图表行1 -->
|
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">部门人员分布</h3>
|
|
||||||
<div class="chart-container" id="departmentChart"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">职位分布</h3>
|
|
||||||
<div class="chart-container" id="positionChart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 图表行2 -->
|
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">员工年龄分布</h3>
|
|
||||||
<div class="chart-container" id="ageChart"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">员工工龄分布</h3>
|
|
||||||
<div class="chart-container" id="seniorityChart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 图表行3 -->
|
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">员工绩效分布</h3>
|
|
||||||
<div class="chart-container" id="performanceChart"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="bg-white p-6 rounded-lg shadow-sm">
|
|
||||||
<h3 class="text-lg font-semibold mb-4">招聘渠道分布</h3>
|
|
||||||
<div class="chart-container" id="recruitmentChart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- 页脚 -->
|
|
||||||
<footer class="w-full bg-gray-800 text-white py-8 mt-auto">
|
|
||||||
<div class="container mx-auto px-6">
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-semibold mb-4">关于我们</h3>
|
|
||||||
<p class="text-sm text-gray-400 mb-4">人力科技是一家专注于企业人力资源数字化解决方案的高科技公司,致力于为企业提供智能化的人力资源管理工具。</p>
|
|
||||||
<div class="flex space-x-4">
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-weixin"></i></a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-weibo"></i></a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-linkedin"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-semibold mb-4">快速链接</h3>
|
|
||||||
<ul class="space-y-2">
|
|
||||||
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">产品介绍</a></li>
|
|
||||||
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">解决方案</a></li>
|
|
||||||
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">客户案例</a></li>
|
|
||||||
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">价格方案</a></li>
|
|
||||||
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">帮助中心</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-semibold mb-4">联系我们</h3>
|
|
||||||
<ul class="space-y-2 text-sm text-gray-400">
|
|
||||||
<li class="flex items-start">
|
|
||||||
<i class="fa-icon fa-solid fa-map-marker-alt mt-1 mr-2"></i>
|
|
||||||
<span>北京市海淀区中关村软件园 12 号楼 3 层</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fa-icon fa-solid fa-phone mr-2"></i>
|
|
||||||
<span>400-888-8888</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fa-icon fa-solid fa-envelope mr-2"></i>
|
|
||||||
<span>contact@hrtech.com</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="border-t border-gray-700 mt-8 pt-6 text-center text-sm text-gray-400">
|
|
||||||
<p>© 2023 人力科技 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802023456号</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// 部门分布图表
|
|
||||||
const departmentChart = echarts.init(document.getElementById('departmentChart'));
|
|
||||||
departmentChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
orient: 'vertical',
|
|
||||||
right: 10,
|
|
||||||
top: 'center',
|
|
||||||
data: ['技术部', '产品部', '市场部', '销售部', '人力资源', '财务部', '行政部']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '部门分布',
|
|
||||||
type: 'pie',
|
|
||||||
radius: ['40%', '70%'],
|
|
||||||
avoidLabelOverlap: false,
|
|
||||||
itemStyle: {
|
|
||||||
borderRadius: 4,
|
|
||||||
borderColor: '#fff',
|
|
||||||
borderWidth: 2
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
position: 'center'
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
fontSize: '18',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labelLine: {
|
|
||||||
show: false
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
{ value: 320, name: '技术部' },
|
|
||||||
{ value: 240, name: '产品部' },
|
|
||||||
{ value: 149, name: '市场部' },
|
|
||||||
{ value: 180, name: '销售部' },
|
|
||||||
{ value: 98, name: '人力资源' },
|
|
||||||
{ value: 56, name: '财务部' },
|
|
||||||
{ value: 105, name: '行政部' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 职位分布图表
|
|
||||||
const positionChart = echarts.init(document.getElementById('positionChart'));
|
|
||||||
positionChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
orient: 'vertical',
|
|
||||||
right: 10,
|
|
||||||
top: 'center',
|
|
||||||
data: ['工程师', '产品经理', '设计师', '市场专员', '销售代表', 'HRBP', '财务专员', '行政专员']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '职位分布',
|
|
||||||
type: 'pie',
|
|
||||||
radius: ['40%', '70%'],
|
|
||||||
avoidLabelOverlap: false,
|
|
||||||
itemStyle: {
|
|
||||||
borderRadius: 4,
|
|
||||||
borderColor: '#fff',
|
|
||||||
borderWidth: 2
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
position: 'center'
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
fontSize: '18',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labelLine: {
|
|
||||||
show: false
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
{ value: 280, name: '工程师' },
|
|
||||||
{ value: 120, name: '产品经理' },
|
|
||||||
{ value: 90, name: '设计师' },
|
|
||||||
{ value: 80, name: '市场专员' },
|
|
||||||
{ value: 150, name: '销售代表' },
|
|
||||||
{ value: 60, name: 'HRBP' },
|
|
||||||
{ value: 40, name: '财务专员' },
|
|
||||||
{ value: 80, name: '行政专员' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 年龄分布图表
|
|
||||||
const ageChart = echarts.init(document.getElementById('ageChart'));
|
|
||||||
ageChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'axis',
|
|
||||||
axisPointer: {
|
|
||||||
type: 'shadow'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
left: '3%',
|
|
||||||
right: '4%',
|
|
||||||
bottom: '3%',
|
|
||||||
containLabel: true
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
type: 'category',
|
|
||||||
data: ['20-25岁', '26-30岁', '31-35岁', '36-40岁', '41岁以上'],
|
|
||||||
axisTick: {
|
|
||||||
alignWithLabel: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
type: 'value'
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '人数',
|
|
||||||
type: 'bar',
|
|
||||||
barWidth: '60%',
|
|
||||||
itemStyle: {
|
|
||||||
color: '#2D5CF6'
|
|
||||||
},
|
|
||||||
data: [120, 480, 360, 180, 108]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 工龄分布图表
|
|
||||||
const seniorityChart = echarts.init(document.getElementById('seniorityChart'));
|
|
||||||
seniorityChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
orient: 'vertical',
|
|
||||||
right: 10,
|
|
||||||
top: 'center',
|
|
||||||
data: ['1年以内', '1-3年', '3-5年', '5-10年', '10年以上']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '工龄分布',
|
|
||||||
type: 'pie',
|
|
||||||
radius: ['40%', '70%'],
|
|
||||||
avoidLabelOverlap: false,
|
|
||||||
itemStyle: {
|
|
||||||
borderRadius: 4,
|
|
||||||
borderColor: '#fff',
|
|
||||||
borderWidth: 2
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
position: 'center'
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
fontSize: '18',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labelLine: {
|
|
||||||
show: false
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
{ value: 280, name: '1年以内' },
|
|
||||||
{ value: 420, name: '1-3年' },
|
|
||||||
{ value: 300, name: '3-5年' },
|
|
||||||
{ value: 180, name: '5-10年' },
|
|
||||||
{ value: 68, name: '10年以上' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 绩效分布图表
|
|
||||||
const performanceChart = echarts.init(document.getElementById('performanceChart'));
|
|
||||||
performanceChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
orient: 'vertical',
|
|
||||||
right: 10,
|
|
||||||
top: 'center',
|
|
||||||
data: ['A(优秀)', 'B(良好)', 'C(合格)', 'D(待改进)']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '绩效分布',
|
|
||||||
type: 'pie',
|
|
||||||
radius: ['40%', '70%'],
|
|
||||||
avoidLabelOverlap: false,
|
|
||||||
itemStyle: {
|
|
||||||
borderRadius: 4,
|
|
||||||
borderColor: '#fff',
|
|
||||||
borderWidth: 2
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
position: 'center'
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
fontSize: '18',
|
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
labelLine: {
|
|
||||||
show: false
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
{ value: 180, name: 'A(优秀)' },
|
|
||||||
{ value: 420, name: 'B(良好)' },
|
|
||||||
{ value: 480, name: 'C(合格)' },
|
|
||||||
{ value: 68, name: 'D(待改进)' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 招聘渠道图表
|
|
||||||
const recruitmentChart = echarts.init(document.getElementById('recruitmentChart'));
|
|
||||||
recruitmentChart.setOption({
|
|
||||||
animation: false,
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'axis',
|
|
||||||
axisPointer: {
|
|
||||||
type: 'shadow'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
data: ['猎头', '招聘网站', '内部推荐', '校园招聘', '社交媒体']
|
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
left: '3%',
|
|
||||||
right: '4%',
|
|
||||||
bottom: '3%',
|
|
||||||
containLabel: true
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
type: 'value'
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
type: 'category',
|
|
||||||
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '猎头',
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'total',
|
|
||||||
label: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
focus: 'series'
|
|
||||||
},
|
|
||||||
data: [5, 3, 7, 4, 6, 8]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '招聘网站',
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'total',
|
|
||||||
label: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
focus: 'series'
|
|
||||||
},
|
|
||||||
data: [12, 10, 15, 18, 14, 16]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '内部推荐',
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'total',
|
|
||||||
label: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
focus: 'series'
|
|
||||||
},
|
|
||||||
data: [8, 6, 10, 7, 9, 11]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '校园招聘',
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'total',
|
|
||||||
label: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
focus: 'series'
|
|
||||||
},
|
|
||||||
data: [0, 0, 0, 15, 12, 10]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '社交媒体',
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'total',
|
|
||||||
label: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
focus: 'series'
|
|
||||||
},
|
|
||||||
data: [3, 5, 4, 6, 5, 7]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 窗口大小变化时重新调整图表大小
|
|
||||||
window.addEventListener('resize', function() {
|
|
||||||
departmentChart.resize();
|
|
||||||
positionChart.resize();
|
|
||||||
ageChart.resize();
|
|
||||||
seniorityChart.resize();
|
|
||||||
performanceChart.resize();
|
|
||||||
recruitmentChart.resize();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,400 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力管理系统 - 知识库</title>
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA',
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.fa-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.scroll-container {
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.scroll-content {
|
|
||||||
display: inline-block;
|
|
||||||
animation: scroll 20s linear infinite;
|
|
||||||
}
|
|
||||||
@keyframes scroll {
|
|
||||||
0% { transform: translateX(0); }
|
|
||||||
100% { transform: translateX(-100%); }
|
|
||||||
}
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="min-h-[1024px] flex flex-col bg-secondary">
|
|
||||||
<!-- 顶部导航栏 -->
|
|
||||||
<!-- <header class="w-full bg-primary text-white shadow-md">
|
|
||||||
<div class="container mx-auto px-6 h-[60px] flex items-center justify-between">
|
|
||||||
<div class="flex items-center space-x-8">
|
|
||||||
<a href="#" class="text-2xl font-['Pacifico']">人力</a>
|
|
||||||
<nav class="hidden md:flex space-x-6">
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">多维统计</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">人员管理</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">组织管理</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">考勤管理</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">绩效管理</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">薪酬管理</a>
|
|
||||||
<a href="#" class="text-sm font-semibold hover:opacity-80">知识库</a>
|
|
||||||
<a href="#" class="text-sm hover:opacity-80">后台管理</a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
<div class="relative hidden md:block">
|
|
||||||
<input type="text" placeholder="搜索..." class="py-1 pl-8 pr-4 text-sm rounded-button bg-white bg-opacity-20 placeholder-white focus:outline-none focus:ring-1 focus:ring-white">
|
|
||||||
<i class="fas fa-search fa-icon text-sm absolute left-2 top-1/2 transform -translate-y-1/2"></i>
|
|
||||||
</div>
|
|
||||||
<button class="flex items-center space-x-1 bg-white bg-opacity-20 px-3 py-1 rounded-button hover:bg-opacity-30">
|
|
||||||
<i class="fas fa-robot fa-icon text-sm"></i>
|
|
||||||
<span class="text-sm whitespace-nowrap">AI 助手</span>
|
|
||||||
</button>
|
|
||||||
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20profile20photo20of20a20young20asian20female20executive20with20short20hair20wearing20formal20attire20against20a20neutral20light20gray20background&width=80&height=80&orientation=squarish&flag=7fe686c57027aca4551bef56744d5fdf" alt="用户头像" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
|
|
||||||
<!-- 主内容区域 -->
|
|
||||||
<main class="flex-1 container mx-auto px-6 py-8">
|
|
||||||
<!-- 面包屑导航 -->
|
|
||||||
<!-- <div class="flex items-center text-sm text-gray-600 mb-4">
|
|
||||||
<a href="#" class="hover:text-primary">首页</a>
|
|
||||||
<i class="fas fa-chevron-right fa-icon mx-2 text-xs"></i>
|
|
||||||
<span>知识库</span>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<!-- 页面标题和操作区 -->
|
|
||||||
<div class="flex justify-between items-center mb-6">
|
|
||||||
<h1 class="text-2xl font-bold text-gray-800">知识库管理</h1>
|
|
||||||
<div class="flex space-x-3">
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" placeholder="搜索知识..." class="py-2 pl-10 pr-4 text-sm rounded-button border border-gray-300 focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<i class="fas fa-search fa-icon text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2"></i>
|
|
||||||
</div>
|
|
||||||
<button class="bg-primary text-white px-4 py-2 rounded-button hover:bg-opacity-90 flex items-center space-x-2">
|
|
||||||
<i class="fas fa-plus fa-icon text-sm"></i>
|
|
||||||
<span class="whitespace-nowrap">新建知识</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 公告栏 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm p-3 mb-6">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<div class="bg-yellow-100 text-yellow-800 px-2 py-1 rounded-button text-xs font-medium mr-3">公告</div>
|
|
||||||
<div class="scroll-container w-full">
|
|
||||||
<div class="scroll-content text-sm text-gray-700">
|
|
||||||
<span class="mr-8">系统将于 2023 年 12 月 15 日 00:00 - 02:00 进行维护升级</span>
|
|
||||||
<span class="mr-8">新员工入职指南已更新,请及时查阅</span>
|
|
||||||
<span class="mr-8">2023 年度绩效考核标准已发布</span>
|
|
||||||
<span class="mr-8">系统将于 2023 年 12 月 15 日 00:00 - 02:00 进行维护升级</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分类筛选 -->
|
|
||||||
<div class="flex items-center space-x-4 mb-6 overflow-x-auto pb-2">
|
|
||||||
<button class="px-4 py-2 bg-primary text-white rounded-button whitespace-nowrap">全部</button>
|
|
||||||
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">政策制度</button>
|
|
||||||
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">操作手册</button>
|
|
||||||
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">培训资料</button>
|
|
||||||
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">常见问题</button>
|
|
||||||
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">模板下载</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 知识卡片列表 -->
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
|
|
||||||
<!-- 卡片1 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20modern20business20document20with20clean20design20and20minimalist20layout20on20a20white20desk20with20a20pen20and20coffee20cup20in20the20background&width=400&height=200&orientation=landscape&flag=1e4cf2beacde2cc80fc63a0f89a9703a" alt="文档封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">2023 年员工手册</h3>
|
|
||||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-button">政策制度</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">包含公司文化、行为规范、考勤制度、福利政策等最新修订版员工手册,适用于全体员工。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-11-20</span>
|
|
||||||
<span>下载 128 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 预览
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i> 下载
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 卡片2 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20step20by20step20illustration20of20HR20software20interface20with20clear20numbering20and20annotations20on20a20light20gray20background&width=400&height=200&orientation=landscape&flag=108451af3b1eb2058f31b710d4071080" alt="操作手册封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">考勤系统操作指南</h3>
|
|
||||||
<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded-button">操作手册</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">详细说明如何使用公司考勤系统,包括打卡、请假申请、加班申请、考勤异常处理等操作步骤。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-10-15</span>
|
|
||||||
<span>下载 256 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 预览
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i> 下载
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 卡片3 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20professional20training20presentation20slide20with20bullet20points20and20infographics20on20a20projector20screen20in20a20meeting20room&width=400&height=200&orientation=landscape&flag=91a52e2f3cc2550ca2a643ea105f2d4b" alt="培训资料封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">新员工入职培训</h3>
|
|
||||||
<span class="bg-purple-100 text-purple-800 text-xs px-2 py-1 rounded-button">培训资料</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">新员工入职培训全套资料,包含公司介绍、部门职能、产品知识、安全规范等内容。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-09-28</span>
|
|
||||||
<span>下载 189 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 预览
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i> 下载
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 卡片4 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20frequently20asked20questions20list20with20question20marks20and20answers20in20a20modern20digital20interface20design&width=400&height=200&orientation=landscape&flag=923ef06f9362683938111ad04bb8643c" alt="FAQ封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">HR 系统常见问题</h3>
|
|
||||||
<span class="bg-orange-100 text-orange-800 text-xs px-2 py-1 rounded-button">常见问题</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">整理了员工在使用 HR 系统过程中遇到的常见问题及解决方案,持续更新中。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-11-05</span>
|
|
||||||
<span>浏览 342 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 查看
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-bookmark fa-icon mr-1"></i> 收藏
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 卡片5 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20collection20of20office20document20templates20including20forms20and20contracts20neatly20stacked20on20a20desk20with20a20laptop&width=400&height=200&orientation=landscape&flag=2a11c867bb72b869508c9cbccb7f198c" alt="模板封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">人力资源常用模板</h3>
|
|
||||||
<span class="bg-red-100 text-red-800 text-xs px-2 py-1 rounded-button">模板下载</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">包含劳动合同、离职申请表、转正申请表、调岗申请表等常用人力资源表格模板。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-08-12</span>
|
|
||||||
<span>下载 421 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 预览
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i> 下载
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 卡片6 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
|
|
||||||
<div class="h-40 overflow-hidden">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=a20performance20management20framework20diagram20with20key20metrics20and20evaluation20criteria20presented20in20a20modern20corporate20style&width=400&height=200&orientation=landscape&flag=72c9f106f07f07f22208f2c8edfd99fb" alt="绩效封面" class="w-full h-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div class="p-4">
|
|
||||||
<div class="flex justify-between items-start mb-2">
|
|
||||||
<h3 class="font-medium text-gray-800">绩效考核标准与流程</h3>
|
|
||||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-button">政策制度</span>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-600 mb-3 line-clamp-2">详细说明公司绩效考核的标准、流程、时间节点及评分细则,适用于管理人员参考。</p>
|
|
||||||
<div class="flex justify-between items-center text-xs text-gray-500">
|
|
||||||
<span>更新于 2023-07-30</span>
|
|
||||||
<span>下载 178 次</span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 flex space-x-2">
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-eye fa-icon mr-1"></i> 预览
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i> 下载
|
|
||||||
</button>
|
|
||||||
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
|
|
||||||
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分页 -->
|
|
||||||
<div class="flex justify-center mt-8">
|
|
||||||
<nav class="inline-flex rounded-md shadow-sm">
|
|
||||||
<button class="px-3 py-1 rounded-l-md border border-gray-300 bg-white text-gray-700 hover:bg-gray-50">
|
|
||||||
<i class="fas fa-chevron-left fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="px-3 py-1 border-t border-b border-gray-300 bg-primary text-white">1</button>
|
|
||||||
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">2</button>
|
|
||||||
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">3</button>
|
|
||||||
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">4</button>
|
|
||||||
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">5</button>
|
|
||||||
<button class="px-3 py-1 rounded-r-md border border-gray-300 bg-white text-gray-700 hover:bg-gray-50">
|
|
||||||
<i class="fas fa-chevron-right fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- 页脚 -->
|
|
||||||
<footer class="w-full bg-gray-800 text-white py-8">
|
|
||||||
<div class="container mx-auto px-6">
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-6">
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-medium mb-4">关于我们</h3>
|
|
||||||
<ul class="space-y-2 text-sm text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">公司简介</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">发展历程</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">企业文化</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">团队介绍</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-medium mb-4">帮助中心</h3>
|
|
||||||
<ul class="space-y-2 text-sm text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">使用指南</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">常见问题</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">视频教程</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">在线客服</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-medium mb-4">联系我们</h3>
|
|
||||||
<ul class="space-y-2 text-sm text-gray-300">
|
|
||||||
<li><i class="fas fa-map-marker-alt fa-icon mr-2"></i> 北京市海淀区中关村南大街5号</li>
|
|
||||||
<li><i class="fas fa-phone fa-icon mr-2"></i> 400-888-8888</li>
|
|
||||||
<li><i class="fas fa-envelope fa-icon mr-2"></i> hr@company.com</li>
|
|
||||||
<li><i class="fas fa-clock fa-icon mr-2"></i> 周一至周五 9:00-18:00</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-lg font-medium mb-4">关注我们</h3>
|
|
||||||
<div class="flex space-x-4 mb-4">
|
|
||||||
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
|
|
||||||
<i class="fab fa-weixin fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
|
|
||||||
<i class="fab fa-weibo fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
|
|
||||||
<i class="fab fa-linkedin-in fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
|
|
||||||
<i class="fab fa-github fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<p class="text-sm text-gray-300">订阅我们的新闻通讯</p>
|
|
||||||
<div class="mt-2 flex">
|
|
||||||
<input type="email" placeholder="您的邮箱" class="py-2 px-3 text-sm rounded-l-md border-none focus:outline-none focus:ring-1 focus:ring-primary w-full">
|
|
||||||
<button class="bg-primary text-white px-3 py-2 rounded-r-md hover:bg-opacity-90">
|
|
||||||
<i class="fas fa-paper-plane fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pt-6 border-t border-gray-700 text-center text-sm text-gray-400">
|
|
||||||
<p>© 2023 人力管理系统 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802012345号</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,566 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力资源管理系统</title>
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA'
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.marquee {
|
|
||||||
animation: marquee 15s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes marquee {
|
|
||||||
0% {
|
|
||||||
transform: translateX(100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateX(-100%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-item {
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-item:hover {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-row:hover {
|
|
||||||
background-color: #f0f4ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-input:focus {
|
|
||||||
outline: none;
|
|
||||||
box-shadow: 0 0 0 2px rgba(45, 92, 246, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown:hover .dropdown-menu {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
i.fa-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="bg-gray-50 min-h-screen flex flex-col">
|
|
||||||
<!-- 顶部导航栏 -->
|
|
||||||
<!-- <header class="w-full bg-primary text-white">
|
|
||||||
<div class="container mx-auto px-4">
|
|
||||||
<div class="flex items-center justify-between h-16">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<span class="font-['Pacifico'] text-xl">人力</span>
|
|
||||||
</div>
|
|
||||||
<nav class="hidden md:flex space-x-6">
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
|
|
||||||
<a href="#" class="text-sm font-medium">人员管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
|
|
||||||
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
|
|
||||||
</nav>
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" placeholder="搜索..."
|
|
||||||
class="search-input bg-white bg-opacity-20 text-sm rounded-button pl-8 pr-4 py-1 w-40 focus:w-56 transition-all duration-300 placeholder-white">
|
|
||||||
<i
|
|
||||||
class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 text-white text-sm"></i>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="bg-white bg-opacity-20 hover:bg-opacity-30 text-white text-xs px-3 py-1 rounded-button flex items-center space-x-1 transition">
|
|
||||||
<i class="fas fa-robot text-sm"></i>
|
|
||||||
<span>AI助手</span>
|
|
||||||
</button>
|
|
||||||
<div class="dropdown relative">
|
|
||||||
<button class="flex items-center space-x-1">
|
|
||||||
<div class="w-8 h-8 rounded-full bg-white bg-opacity-20 flex items-center justify-center">
|
|
||||||
<i class="fas fa-user text-sm"></i>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
<div class="dropdown-menu absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg z-10 hidden">
|
|
||||||
<div class="py-1">
|
|
||||||
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">个人中心</a>
|
|
||||||
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">系统设置</a>
|
|
||||||
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">退出登录</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="bg-yellow-50 h-10 flex items-center overflow-hidden">
|
|
||||||
<div class="container mx-auto px-4">
|
|
||||||
<div class="relative">
|
|
||||||
<div class="marquee whitespace-nowrap text-xs text-gray-900">
|
|
||||||
<span class="inline-block mr-8">【公告】2023年度绩效考核工作将于12月1日正式启动</span>
|
|
||||||
<span class="inline-block mr-8">【通知】关于2024年春节放假安排的通知</span>
|
|
||||||
<span class="inline-block mr-8">【提醒】请各部门及时更新员工信息</span>
|
|
||||||
<span class="inline-block">【培训】新员工入职培训将于下周一举行</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
<!-- 主内容区 -->
|
|
||||||
<main class="flex-1 container mx-auto px-4 py-6">
|
|
||||||
<div class="flex">
|
|
||||||
<!-- 左侧组织架构树 -->
|
|
||||||
<div class="w-1/5 pr-4">
|
|
||||||
<div class="bg-white rounded-md shadow p-4 h-full">
|
|
||||||
<div class="flex items-center justify-between mb-4">
|
|
||||||
<h3 class="text-sm font-medium">组织架构</h3>
|
|
||||||
<button class="text-primary text-xs hover:text-primary-dark">
|
|
||||||
<i class="fas fa-sync-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="space-y-1">
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-building fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">集团公司</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pl-6">
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">人力资源部</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pl-6">
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-users fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">招聘组</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-chart-line fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">绩效组</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-money-bill-wave fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">薪酬组</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">财务部</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
|
|
||||||
<span class="text-sm">技术研发中心</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 右侧内容区 -->
|
|
||||||
<div class="w-4/5">
|
|
||||||
<div class="bg-white rounded-md shadow p-6">
|
|
||||||
<!-- 筛选区 -->
|
|
||||||
<div class="mb-6">
|
|
||||||
<h2 class="text-lg font-medium mb-4">人员筛选</h2>
|
|
||||||
<div class="grid grid-cols-4 gap-4">
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">姓名</label>
|
|
||||||
<input type="text"
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">电话</label>
|
|
||||||
<input type="text"
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">身份证号</label>
|
|
||||||
<input type="text"
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">部门</label>
|
|
||||||
<div class="relative">
|
|
||||||
<select
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm appearance-none bg-white">
|
|
||||||
<option>全部部门</option>
|
|
||||||
<option>人力资源部</option>
|
|
||||||
<option>财务部</option>
|
|
||||||
<option>技术研发中心</option>
|
|
||||||
</select>
|
|
||||||
<div class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
|
|
||||||
<i class="fas fa-chevron-down fa-icon text-gray-400"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">性别</label>
|
|
||||||
<div class="flex space-x-2">
|
|
||||||
<label class="inline-flex items-center">
|
|
||||||
<input type="radio" name="gender" class="text-primary focus:ring-primary">
|
|
||||||
<span class="ml-1 text-sm">男</span>
|
|
||||||
</label>
|
|
||||||
<label class="inline-flex items-center">
|
|
||||||
<input type="radio" name="gender" class="text-primary focus:ring-primary">
|
|
||||||
<span class="ml-1 text-sm">女</span>
|
|
||||||
</label>
|
|
||||||
<label class="inline-flex items-center">
|
|
||||||
<input type="radio" name="gender" class="text-primary focus:ring-primary">
|
|
||||||
<span class="ml-1 text-sm">不限</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">年龄范围</label>
|
|
||||||
<div class="flex space-x-2">
|
|
||||||
<input type="number" placeholder="最小"
|
|
||||||
class="w-1/2 border border-gray-300 rounded-button px-3 py-1 text-sm">
|
|
||||||
<input type="number" placeholder="最大"
|
|
||||||
class="w-1/2 border border-gray-300 rounded-button px-3 py-1 text-sm">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm text-gray-600 mb-1">绩效状态</label>
|
|
||||||
<div class="relative">
|
|
||||||
<select
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm appearance-none bg-white">
|
|
||||||
<option>全部状态</option>
|
|
||||||
<option>新建</option>
|
|
||||||
<option>已审批</option>
|
|
||||||
<option>审批中</option>
|
|
||||||
<option>已确认</option>
|
|
||||||
</select>
|
|
||||||
<div class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
|
|
||||||
<i class="fas fa-chevron-down fa-icon text-gray-400"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-end">
|
|
||||||
<button
|
|
||||||
class="bg-primary hover:bg-primary-dark text-white px-4 py-1 rounded-button text-sm flex items-center">
|
|
||||||
<i class="fas fa-search fa-icon mr-1"></i>
|
|
||||||
<span>搜索</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="ml-2 border border-gray-300 hover:bg-gray-50 px-4 py-1 rounded-button text-sm">
|
|
||||||
重置
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 操作按钮区 -->
|
|
||||||
<div class="flex justify-between items-center mb-4">
|
|
||||||
<h2 class="text-lg font-medium">人员绩效列表</h2>
|
|
||||||
<div class="flex space-x-2">
|
|
||||||
<button
|
|
||||||
class="bg-primary hover:bg-primary-dark text-white px-3 py-1 rounded-button text-sm flex items-center">
|
|
||||||
<i class="fas fa-plus fa-icon mr-1"></i>
|
|
||||||
<span>新增</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="border border-gray-300 hover:bg-gray-50 px-3 py-1 rounded-button text-sm flex items-center">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i>
|
|
||||||
<span>导出</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="border border-gray-300 hover:bg-gray-50 px-3 py-1 rounded-button text-sm flex items-center">
|
|
||||||
<i class="fas fa-print fa-icon mr-1"></i>
|
|
||||||
<span>打印</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 表格区 -->
|
|
||||||
<div class="overflow-x-auto">
|
|
||||||
<table class="min-w-full divide-y divide-gray-200">
|
|
||||||
<thead class="bg-gray-50">
|
|
||||||
<tr>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
序号</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
姓名</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
性别</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
年龄</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
部门</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
职位</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
绩效总分</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
绩效状态</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="bg-white divide-y divide-gray-200">
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">1</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">张明远</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">男</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">32</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">人力资源部</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">招聘主管</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">92.5</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<span
|
|
||||||
class="px-2 py-1 text-xs rounded-full bg-green-100 text-green-800">已确认</span>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<button class="text-primary hover:text-primary-dark mr-2">
|
|
||||||
<i class="fas fa-edit fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-500 hover:text-red-700">
|
|
||||||
<i class="fas fa-trash-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">2</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">李思雨</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">女</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">28</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">财务部</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">会计</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">88.0</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<span
|
|
||||||
class="px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800">审批中</span>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<button class="text-primary hover:text-primary-dark mr-2">
|
|
||||||
<i class="fas fa-edit fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-500 hover:text-red-700">
|
|
||||||
<i class="fas fa-trash-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">3</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">王建国</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">男</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">45</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">技术研发中心</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">技术总监</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">95.5</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<span
|
|
||||||
class="px-2 py-1 text-xs rounded-full bg-green-100 text-green-800">已确认</span>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<button class="text-primary hover:text-primary-dark mr-2">
|
|
||||||
<i class="fas fa-edit fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-500 hover:text-red-700">
|
|
||||||
<i class="fas fa-trash-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">4</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">赵雪</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">女</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">26</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">人力资源部</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">薪酬专员</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">85.0</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<span
|
|
||||||
class="px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800">已审批</span>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<button class="text-primary hover:text-primary-dark mr-2">
|
|
||||||
<i class="fas fa-edit fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-500 hover:text-red-700">
|
|
||||||
<i class="fas fa-trash-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">5</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">陈志强</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">男</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">35</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">技术研发中心</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">高级工程师</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">90.5</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<span class="px-2 py-1 text-xs rounded-full bg-gray-100 text-gray-800">新建</span>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-2 whitespace-nowrap text-sm">
|
|
||||||
<button class="text-primary hover:text-primary-dark mr-2">
|
|
||||||
<i class="fas fa-edit fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-500 hover:text-red-700">
|
|
||||||
<i class="fas fa-trash-alt fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<!-- 分页区 -->
|
|
||||||
<div class="flex items-center justify-between mt-4">
|
|
||||||
<div class="text-sm text-gray-500">
|
|
||||||
每页显示 <span class="font-medium">10</span> 条,当前 <span class="font-medium">1-10</span> 条,共
|
|
||||||
<span class="font-medium">128</span> 条记录
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-1">
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">
|
|
||||||
<i class="fas fa-angle-left fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-primary text-white">1</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">2</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">3</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">4</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">5</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">
|
|
||||||
<i class="fas fa-angle-right fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
<!-- 页脚 -->
|
|
||||||
<footer class="w-full bg-gray-800 text-white py-8">
|
|
||||||
<div class="container mx-auto px-4">
|
|
||||||
<div class="grid grid-cols-4 gap-8">
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">关于我们</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">公司简介</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">发展历程</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">企业文化</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">联系我们</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">产品服务</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">人力资源管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">考勤管理系统</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">使用指南</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">常见问题</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">更新日志</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">API文档</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">联系我们</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li class="flex items-start">
|
|
||||||
<i class="fas fa-map-marker-alt fa-icon mr-2 mt-1"></i>
|
|
||||||
<span>北京市海淀区中关村软件园2号楼</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-phone fa-icon mr-2"></i>
|
|
||||||
<span>400-888-8888</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-envelope fa-icon mr-2"></i>
|
|
||||||
<span>contact@hrsystem.com</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-700 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
|
|
||||||
<div class="text-xs text-gray-400 mb-4 md:mb-0">
|
|
||||||
© 2023 人力资源管理系统 版权所有
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-4">
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-weixin fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-weibo fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-github fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-linkedin-in fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="text-xs text-gray-400 mt-4 md:mt-0">
|
|
||||||
京ICP备12345678号-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@ -1,738 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力管理系统 - 数据字典</title>
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA'
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.tree-item {
|
|
||||||
padding-left: 20px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-item::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
left: 8px;
|
|
||||||
top: 0;
|
|
||||||
height: 100%;
|
|
||||||
border-left: 1px solid #e5e7eb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-item:last-child::before {
|
|
||||||
height: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-item::after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
left: 8px;
|
|
||||||
top: 50%;
|
|
||||||
width: 8px;
|
|
||||||
border-bottom: 1px solid #e5e7eb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-container {
|
|
||||||
scrollbar-width: thin;
|
|
||||||
scrollbar-color: #cbd5e1 #f1f5f9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-container::-webkit-scrollbar {
|
|
||||||
width: 6px;
|
|
||||||
height: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-container::-webkit-scrollbar-track {
|
|
||||||
background: #f1f5f9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-container::-webkit-scrollbar-thumb {
|
|
||||||
background-color: #cbd5e1;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-card:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
i.fa-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="min-h-[1024px] bg-gray-50 flex flex-col">
|
|
||||||
<!-- 顶部导航 -->
|
|
||||||
<!-- <header class="bg-primary text-white shadow-md">
|
|
||||||
<div class="container mx-auto px-6 py-3 flex items-center justify-between">
|
|
||||||
<div class="flex items-center space-x-8">
|
|
||||||
<a href="#" class="text-xl font-['Pacifico']">人力</a>
|
|
||||||
<nav class="hidden md:flex space-x-6 text-sm">
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">多维统计</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">人员管理</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">组织管理</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">考勤管理</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">绩效管理</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">薪酬管理</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">知识库</a>
|
|
||||||
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">后台管理</a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" placeholder="搜索..."
|
|
||||||
class="bg-white/20 text-white placeholder-white/70 text-sm rounded-button px-3 py-1 pl-8 w-40 focus:w-60 transition-all duration-300 focus:outline-none focus:ring-1 focus:ring-white/50">
|
|
||||||
<i
|
|
||||||
class="fa-icon fa-solid fa-magnifying-glass absolute left-2 top-1/2 transform -translate-y-1/2 text-white/70 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="bg-white/10 hover:bg-white/20 rounded-button px-3 py-1 text-sm flex items-center space-x-1 transition">
|
|
||||||
<i class="fa-icon fa-solid fa-robot text-xs"></i>
|
|
||||||
<span>AI 助手</span>
|
|
||||||
</button>
|
|
||||||
<div class="relative">
|
|
||||||
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20profile20photo20of20a20young20asian20male20executive20with20white20background&width=32&height=32&orientation=squarish&flag=a6d20992702c7a888c93eb051f248a43"
|
|
||||||
alt="用户头像" class="w-8 h-8 rounded-full object-cover cursor-pointer">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
<!-- 主内容区域 -->
|
|
||||||
<main class="flex-grow container mx-auto px-6 py-8">
|
|
||||||
<div class="flex flex-col space-y-6">
|
|
||||||
<!-- 面包屑导航 -->
|
|
||||||
<!-- <div class="flex items-center text-sm text-gray-600">
|
|
||||||
<a href="#" class="hover:text-primary">首页</a>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-right mx-2 text-xs"></i>
|
|
||||||
<a href="#" class="hover:text-primary">系统管理</a>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-right mx-2 text-xs"></i>
|
|
||||||
<span class="text-gray-800">数据字典管理</span>
|
|
||||||
</div> -->
|
|
||||||
<!-- 页面标题和操作按钮 -->
|
|
||||||
<div class="flex justify-between items-center">
|
|
||||||
<h1 class="text-2xl font-bold text-gray-800">数据字典管理</h1>
|
|
||||||
<div class="flex space-x-3">
|
|
||||||
<button
|
|
||||||
class="bg-primary hover:bg-blue-700 text-white rounded-button px-4 py-2 text-sm flex items-center space-x-2 transition">
|
|
||||||
<i class="fa-icon fa-solid fa-plus text-xs"></i>
|
|
||||||
<span>新增元数据域</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="bg-white border border-gray-300 hover:bg-gray-50 text-gray-700 rounded-button px-4 py-2 text-sm flex items-center space-x-2 transition">
|
|
||||||
<i class="fa-icon fa-solid fa-download text-xs"></i>
|
|
||||||
<span>导出配置</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 数据字典内容区域 -->
|
|
||||||
<div class="bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden">
|
|
||||||
<div class="flex h-[1200px]">
|
|
||||||
<!-- 左侧树形结构 -->
|
|
||||||
<div class="w-1/4 border-r border-gray-200 overflow-y-auto scroll-container">
|
|
||||||
<div class="p-4 space-y-2">
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
<h3 class="font-medium text-gray-700">员工模型</h3>
|
|
||||||
<button class="text-gray-400 hover:text-gray-600">
|
|
||||||
<i class="fa-icon fa-solid fa-ellipsis-vertical text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="mt-2 space-y-1">
|
|
||||||
<!-- 树形结构项 -->
|
|
||||||
<div class="tree-item">
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<div class="flex items-center space-x-2">
|
|
||||||
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
|
|
||||||
<span class="text-sm">基础信息</span>
|
|
||||||
</div>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-down text-gray-400 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
<div class="ml-4 mt-1 space-y-1">
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">员工编号</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">姓名</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">性别</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item">
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<div class="flex items-center space-x-2">
|
|
||||||
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
|
|
||||||
<span class="text-sm">技术职务</span>
|
|
||||||
</div>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item">
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer bg-blue-50">
|
|
||||||
<div class="flex items-center space-x-2">
|
|
||||||
<i class="fa-icon fa-solid fa-folder-open text-yellow-400 text-sm"></i>
|
|
||||||
<span class="text-sm font-medium text-primary">绩效参数</span>
|
|
||||||
</div>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-down text-gray-400 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
<div class="ml-4 mt-1 space-y-1">
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">代码量</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">文档字数</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">出勤时长</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">项目金额</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">培训时长</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">会议次数</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">会议时长</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">千行 bug 数</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">运维响应时间</span>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
|
|
||||||
<span class="text-sm">员工满意度</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item">
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<div class="flex items-center space-x-2">
|
|
||||||
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
|
|
||||||
<span class="text-sm">联系方式</span>
|
|
||||||
</div>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item">
|
|
||||||
<div
|
|
||||||
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
|
|
||||||
<div class="flex items-center space-x-2">
|
|
||||||
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
|
|
||||||
<span class="text-sm">其他信息</span>
|
|
||||||
</div>
|
|
||||||
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 右侧属性配置面板 -->
|
|
||||||
<div class="w-3/4 overflow-y-auto scroll-container">
|
|
||||||
<div class="p-6">
|
|
||||||
<div class="flex justify-between items-center mb-6">
|
|
||||||
<h2 class="text-lg font-semibold text-gray-800">绩效参数属性配置</h2>
|
|
||||||
<button
|
|
||||||
class="bg-primary hover:bg-blue-700 text-white rounded-button px-3 py-1 text-sm flex items-center space-x-2 transition">
|
|
||||||
<i class="fa-icon fa-solid fa-plus text-xs"></i>
|
|
||||||
<span>新增属性</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="bg-gray-50 rounded-lg p-4 mb-6">
|
|
||||||
<div class="grid grid-cols-2 gap-4">
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-1">元数据域名称</label>
|
|
||||||
<input type="text" value="绩效参数"
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-1">元数据域编码</label>
|
|
||||||
<input type="text" value="performance_params"
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
</div>
|
|
||||||
<div class="col-span-2">
|
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-1">描述</label>
|
|
||||||
<textarea
|
|
||||||
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary"
|
|
||||||
rows="2">用于记录员工各项绩效指标的参数集合</textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="overflow-x-auto">
|
|
||||||
<table class="min-w-full divide-y divide-gray-200">
|
|
||||||
<thead class="bg-gray-50">
|
|
||||||
<tr>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
属性名称</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
编码</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
数据类型</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
单位</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
必填</th>
|
|
||||||
<th scope="col"
|
|
||||||
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
|
||||||
操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="bg-white divide-y divide-gray-200">
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
代码量</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">code_amount
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">行</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
文档字数</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">doc_words</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">字</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
出勤时长</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
attendance_hours</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">小时</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
项目金额</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">project_amount
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">元</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox"
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
培训时长</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">training_hours
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">小时</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox"
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
会议次数</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">meeting_count
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">次</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
会议时长</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">meeting_hours
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">分钟</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox"
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">千行
|
|
||||||
bug 数</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">bug_count</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">个/千行</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
运维响应时间</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">response_time
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">分钟</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox" checked
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
|
|
||||||
员工满意度</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">satisfaction
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<select
|
|
||||||
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
|
|
||||||
<option>数字</option>
|
|
||||||
<option>文本</option>
|
|
||||||
<option>日期</option>
|
|
||||||
<option selected>列表</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">分</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<input type="checkbox"
|
|
||||||
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
|
||||||
</td>
|
|
||||||
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
|
|
||||||
<button class="text-blue-600 hover:text-blue-900 mr-2">
|
|
||||||
<i class="fa-icon fa-solid fa-pen text-xs"></i>
|
|
||||||
</button>
|
|
||||||
<button class="text-red-600 hover:text-red-900">
|
|
||||||
<i class="fa-icon fa-solid fa-trash text-xs"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="mt-6 flex items-center justify-between">
|
|
||||||
<div class="text-sm text-gray-500">
|
|
||||||
显示 <span class="font-medium">1</span> 到 <span class="font-medium">10</span> 条,共
|
|
||||||
<span class="font-medium">10</span> 条记录
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-1">
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
|
|
||||||
上一页
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-primary bg-primary text-white rounded-button text-sm">
|
|
||||||
1
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
|
|
||||||
2
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
|
|
||||||
下一页
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
<!-- 页脚 -->
|
|
||||||
<footer class="w-full bg-gray-800 text-white py-8">
|
|
||||||
<div class="container mx-auto px-4">
|
|
||||||
<div class="grid grid-cols-4 gap-8">
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">关于我们</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">公司简介</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">发展历程</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">企业文化</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">联系我们</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">产品服务</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">人力资源管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">考勤管理系统</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li><a href="#" class="hover:text-white">使用指南</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">常见问题</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">更新日志</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white">API文档</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-sm font-medium mb-4">联系我们</h3>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-300">
|
|
||||||
<li class="flex items-start">
|
|
||||||
<i class="fas fa-map-marker-alt fa-icon mr-2 mt-1"></i>
|
|
||||||
<span>北京市海淀区中关村软件园2号楼</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-phone fa-icon mr-2"></i>
|
|
||||||
<span>400-888-8888</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-envelope fa-icon mr-2"></i>
|
|
||||||
<span>contact@hrsystem.com</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-700 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
|
|
||||||
<div class="text-xs text-gray-400 mb-4 md:mb-0">
|
|
||||||
© 2023 人力资源管理系统 版权所有
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-4">
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-weixin fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-weibo fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-github fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="text-gray-400 hover:text-white">
|
|
||||||
<i class="fab fa-linkedin-in fa-icon"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="text-xs text-gray-400 mt-4 md:mt-0">
|
|
||||||
京ICP备12345678号-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@ -1,366 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力资源管理系统</title>
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA',
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.fa-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
.scroll-container {
|
|
||||||
scrollbar-width: none;
|
|
||||||
}
|
|
||||||
.scroll-container::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="min-h-[1024px] bg-secondary font-sans text-sm text-gray-800">
|
|
||||||
|
|
||||||
<!-- <header class="w-full h-[60px] bg-primary text-white fixed top-0 z-50 shadow-md">
|
|
||||||
<div class="w-[1200px] h-full mx-auto flex items-center justify-between">
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<span class="font-['Pacifico'] text-2xl mr-10">人力</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<nav class="flex-1 flex items-center">
|
|
||||||
<ul class="flex space-x-6">
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">多维统计</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">人员管理</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">组织管理</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition font-semibold">考勤管理</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">绩效管理</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">薪酬管理</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">知识库</a></li>
|
|
||||||
<li><a href="#" class="hover:text-gray-200 transition">后台管理</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" placeholder="搜索..." class="pl-8 pr-3 py-1 rounded-button bg-white bg-opacity-20 text-white placeholder-white focus:outline-none focus:ring-1 focus:ring-white w-[180px]">
|
|
||||||
<i class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 fa-icon"></i>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<button class="flex items-center space-x-1 bg-white bg-opacity-20 hover:bg-opacity-30 px-3 py-1 rounded-button transition">
|
|
||||||
<i class="fas fa-robot fa-icon"></i>
|
|
||||||
<span>AI助手</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center overflow-hidden">
|
|
||||||
<i class="fas fa-user fa-icon text-primary"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
|
|
||||||
<!-- 主内容区 -->
|
|
||||||
<main class="w-[1200px] mx-auto px-4 py-6">
|
|
||||||
<div class="flex space-x-4">
|
|
||||||
<!-- 左侧组织架构树 -->
|
|
||||||
<div class="w-1/5 bg-white rounded-md shadow-sm p-4">
|
|
||||||
<h2 class="font-medium text-gray-700 mb-4">组织架构</h2>
|
|
||||||
<div class="space-y-2">
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-building fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">公司总部</span>
|
|
||||||
</div>
|
|
||||||
<div class="ml-6 space-y-2">
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-users fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">人力资源部</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-users fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">财务部</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-users fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">技术研发部</span>
|
|
||||||
</div>
|
|
||||||
<div class="ml-6 space-y-2">
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-user fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">前端开发组</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-user fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">后端开发组</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-user fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">测试组</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-users fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">产品部</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<i class="fas fa-users fa-icon text-gray-500"></i>
|
|
||||||
<span class="hover:text-primary">市场部</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 右侧考勤管理区 -->
|
|
||||||
<div class="w-4/5 bg-white rounded-md shadow-sm p-4">
|
|
||||||
<h2 class="font-medium text-gray-700 mb-4">考勤管理</h2>
|
|
||||||
|
|
||||||
<!-- 筛选区 -->
|
|
||||||
<div class="grid grid-cols-4 gap-4 mb-6">
|
|
||||||
<div>
|
|
||||||
<label class="block text-gray-600 mb-1">员工ID</label>
|
|
||||||
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-gray-600 mb-1">员工姓名</label>
|
|
||||||
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-gray-600 mb-1">日期范围</label>
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary" placeholder="选择日期">
|
|
||||||
<i class="fas fa-calendar-alt absolute right-2 top-1/2 transform -translate-y-1/2 fa-icon text-gray-400"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-gray-600 mb-1">考勤状态</label>
|
|
||||||
<div class="relative">
|
|
||||||
<select class="w-full border rounded-button px-3 py-1 appearance-none focus:outline-none focus:ring-1 focus:ring-primary">
|
|
||||||
<option>全部</option>
|
|
||||||
<option>正常</option>
|
|
||||||
<option>迟到</option>
|
|
||||||
<option>早退</option>
|
|
||||||
<option>缺勤</option>
|
|
||||||
</select>
|
|
||||||
<i class="fas fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 fa-icon text-gray-400"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
|
||||||
<div class="flex justify-between mb-4">
|
|
||||||
<div class="flex space-x-2">
|
|
||||||
<button class="bg-primary text-white px-3 py-1 rounded-button hover:bg-opacity-90 transition">
|
|
||||||
<i class="fas fa-search fa-icon mr-1"></i>
|
|
||||||
<span>查询</span>
|
|
||||||
</button>
|
|
||||||
<button class="border border-gray-300 px-3 py-1 rounded-button hover:bg-gray-50 transition">
|
|
||||||
<i class="fas fa-redo fa-icon mr-1"></i>
|
|
||||||
<span>重置</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="bg-primary text-white px-3 py-1 rounded-button hover:bg-opacity-90 transition">
|
|
||||||
<i class="fas fa-download fa-icon mr-1"></i>
|
|
||||||
<span>导出</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 数据表格 -->
|
|
||||||
<div class="overflow-x-auto">
|
|
||||||
<table class="w-full">
|
|
||||||
<thead class="bg-secondary">
|
|
||||||
<tr>
|
|
||||||
<th class="px-4 py-2 text-left">员工ID</th>
|
|
||||||
<th class="px-4 py-2 text-left">员工姓名</th>
|
|
||||||
<th class="px-4 py-2 text-left">日期</th>
|
|
||||||
<th class="px-4 py-2 text-left">单位</th>
|
|
||||||
<th class="px-4 py-2 text-left">部门</th>
|
|
||||||
<th class="px-4 py-2 text-left">考勤状态</th>
|
|
||||||
<th class="px-4 py-2 text-left">上班时间</th>
|
|
||||||
<th class="px-4 py-2 text-left">下班时间</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="divide-y divide-gray-200">
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10001</td>
|
|
||||||
<td class="px-4 py-2">张伟</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">技术研发部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10002</td>
|
|
||||||
<td class="px-4 py-2">王芳</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">人力资源部</td>
|
|
||||||
<td class="px-4 py-2 text-yellow-500">迟到</td>
|
|
||||||
<td class="px-4 py-2">09:30:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10003</td>
|
|
||||||
<td class="px-4 py-2">李娜</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">财务部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10004</td>
|
|
||||||
<td class="px-4 py-2">赵明</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">产品部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10005</td>
|
|
||||||
<td class="px-4 py-2">刘强</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">市场部</td>
|
|
||||||
<td class="px-4 py-2 text-red-500">早退</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">17:30:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10006</td>
|
|
||||||
<td class="px-4 py-2">陈静</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">技术研发部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10007</td>
|
|
||||||
<td class="px-4 py-2">杨光</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">人力资源部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="hover:bg-gray-50">
|
|
||||||
<td class="px-4 py-2">10008</td>
|
|
||||||
<td class="px-4 py-2">周涛</td>
|
|
||||||
<td class="px-4 py-2">2023-06-01</td>
|
|
||||||
<td class="px-4 py-2">总部</td>
|
|
||||||
<td class="px-4 py-2">财务部</td>
|
|
||||||
<td class="px-4 py-2 text-green-500">正常</td>
|
|
||||||
<td class="px-4 py-2">09:00:00</td>
|
|
||||||
<td class="px-4 py-2">18:00:00</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分页 -->
|
|
||||||
<div class="flex justify-between items-center mt-4">
|
|
||||||
<div class="text-gray-500">
|
|
||||||
显示 1 到 8 条,共 120 条记录
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-1">
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">
|
|
||||||
<i class="fas fa-angle-left fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center bg-primary text-white">1</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">2</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">3</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">4</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">5</button>
|
|
||||||
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">
|
|
||||||
<i class="fas fa-angle-right fa-icon"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- 页脚 -->
|
|
||||||
<footer class="w-full bg-gray-800 text-gray-400 py-6">
|
|
||||||
<div class="w-[1200px] mx-auto">
|
|
||||||
<div class="grid grid-cols-3 gap-8">
|
|
||||||
<div>
|
|
||||||
<h3 class="text-white text-sm font-medium mb-3">关于我们</h3>
|
|
||||||
<p class="text-xs leading-6">人力资源管理系统致力于为企业提供专业的人力资源管理解决方案,帮助企业提升管理效率,优化人力资源配置。</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-white text-sm font-medium mb-3">快速链接</h3>
|
|
||||||
<ul class="space-y-2 text-xs">
|
|
||||||
<li><a href="#" class="hover:text-white transition">帮助中心</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white transition">API文档</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white transition">系统更新</a></li>
|
|
||||||
<li><a href="#" class="hover:text-white transition">联系我们</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h3 class="text-white text-sm font-medium mb-3">联系方式</h3>
|
|
||||||
<ul class="space-y-2 text-xs">
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-phone fa-icon mr-2"></i>
|
|
||||||
<span>400-888-8888</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-envelope fa-icon mr-2"></i>
|
|
||||||
<span>service@hrms.com</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-map-marker-alt fa-icon mr-2"></i>
|
|
||||||
<span>北京市海淀区科技园路88号</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-700 mt-6 pt-4 text-xs text-center">
|
|
||||||
<p>© 2023 人力资源管理系统 版权所有 | 京ICP备12345678号</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,451 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-CN">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>人力资源管理系统</title>
|
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<script>
|
|
||||||
tailwind.config = {
|
|
||||||
theme: {
|
|
||||||
extend: {
|
|
||||||
colors: {
|
|
||||||
primary: '#2D5CF6',
|
|
||||||
secondary: '#F5F6FA'
|
|
||||||
},
|
|
||||||
borderRadius: {
|
|
||||||
'none': '0px',
|
|
||||||
'sm': '2px',
|
|
||||||
DEFAULT: '4px',
|
|
||||||
'md': '8px',
|
|
||||||
'lg': '12px',
|
|
||||||
'xl': '16px',
|
|
||||||
'2xl': '20px',
|
|
||||||
'3xl': '24px',
|
|
||||||
'full': '9999px',
|
|
||||||
'button': '4px'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
min-height: 1024px;
|
|
||||||
}
|
|
||||||
.nav-item:hover {
|
|
||||||
background-color: rgba(255,255,255,0.1);
|
|
||||||
}
|
|
||||||
.tree-item:hover {
|
|
||||||
background-color: rgba(45,92,246,0.1);
|
|
||||||
}
|
|
||||||
.table-row:hover {
|
|
||||||
background-color: #F5F6FA;
|
|
||||||
}
|
|
||||||
.search-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
.user-avatar {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
}
|
|
||||||
.ai-icon {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="bg-white font-sans text-gray-800">
|
|
||||||
<!-- 顶部导航栏 -->
|
|
||||||
<!-- <header class="w-full bg-primary text-white fixed top-0 left-0 z-50 shadow-md">
|
|
||||||
<div class="container mx-auto px-4 h-16 flex items-center justify-between">
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<div class="font-['Pacifico'] text-xl mr-8">人力</div>
|
|
||||||
|
|
||||||
|
|
||||||
<nav class="hidden md:flex space-x-5">
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">多维统计</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">人员管理</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">组织管理</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">考勤管理</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">绩效管理</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">薪酬管理</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">知识库</a>
|
|
||||||
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">后台管理</a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center space-x-4">
|
|
||||||
|
|
||||||
<div class="relative hidden md:block">
|
|
||||||
<input type="text" placeholder="搜索..." class="bg-white bg-opacity-20 text-white text-sm pl-8 pr-4 py-1 rounded-full border-none focus:ring-2 focus:ring-white focus:ring-opacity-50 placeholder-white placeholder-opacity-70 w-48">
|
|
||||||
<i class="fas fa-search search-icon absolute left-3 top-1/2 transform -translate-y-1/2 text-white text-opacity-70"></i>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<button class="flex items-center space-x-1 bg-white bg-opacity-20 hover:bg-opacity-30 px-3 py-1 rounded-button text-sm whitespace-nowrap">
|
|
||||||
<i class="fas fa-robot ai-icon text-white"></i>
|
|
||||||
<span>AI助手</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="flex items-center space-x-2 cursor-pointer">
|
|
||||||
<div class="user-avatar rounded-full bg-white text-primary flex items-center justify-center font-semibold">张</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header> -->
|
|
||||||
|
|
||||||
<!-- 主体内容 -->
|
|
||||||
<main class="container mx-auto px-4 pb-10">
|
|
||||||
<div class="flex mt-6">
|
|
||||||
<!-- 左侧组织架构树 -->
|
|
||||||
<div class="w-1/5 pr-4">
|
|
||||||
<div class="bg-secondary rounded-md shadow-sm p-4 h-full">
|
|
||||||
<h3 class="text-sm font-semibold mb-4 text-gray-700">组织架构</h3>
|
|
||||||
<div class="space-y-1">
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center">
|
|
||||||
<i class="fas fa-building mr-2 text-gray-500"></i>
|
|
||||||
<span>集团公司</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
|
|
||||||
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
|
|
||||||
<span>技术中心</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8 bg-primary bg-opacity-10 text-primary">
|
|
||||||
<i class="fas fa-code-branch mr-2"></i>
|
|
||||||
<span>研发部</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
|
|
||||||
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
|
|
||||||
<span>测试部</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
|
|
||||||
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
|
|
||||||
<span>市场中心</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
|
|
||||||
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
|
|
||||||
<span>市场部</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
|
|
||||||
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
|
|
||||||
<span>品牌部</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
|
|
||||||
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
|
|
||||||
<span>运营中心</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
|
|
||||||
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
|
|
||||||
<span>客服部</span>
|
|
||||||
</div>
|
|
||||||
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
|
|
||||||
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
|
|
||||||
<span>运营部</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 右侧内容区 -->
|
|
||||||
<div class="w-4/5">
|
|
||||||
<!-- 筛选区域 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm p-4 mb-4">
|
|
||||||
<h3 class="text-sm font-semibold mb-4 text-gray-700">薪酬查询</h3>
|
|
||||||
<div class="grid grid-cols-4 gap-4">
|
|
||||||
<div>
|
|
||||||
<label class="block text-xs text-gray-500 mb-1">姓名</label>
|
|
||||||
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-xs text-gray-500 mb-1">电话</label>
|
|
||||||
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label class="block text-xs text-gray-500 mb-1">月份</label>
|
|
||||||
<div class="relative">
|
|
||||||
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary" placeholder="选择月份">
|
|
||||||
<i class="fas fa-calendar-alt absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-sm"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-end">
|
|
||||||
<button class="bg-primary text-white px-4 py-1 rounded-button text-sm whitespace-nowrap hover:bg-opacity-90">查询</button>
|
|
||||||
<button class="ml-2 border border-gray-200 px-4 py-1 rounded-button text-sm whitespace-nowrap hover:bg-gray-50">重置</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 薪酬列表 -->
|
|
||||||
<div class="bg-white rounded-md shadow-sm overflow-hidden">
|
|
||||||
<div class="overflow-x-auto">
|
|
||||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
|
||||||
<thead class="bg-secondary">
|
|
||||||
<tr>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">序号</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">姓名</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">性别</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">年龄</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">部门</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">岗位</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">月份</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">税前工资</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">税后工资</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">基本工资</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">浮动工资</th>
|
|
||||||
<th class="px-4 py-2 text-left font-medium text-gray-700">详情</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="divide-y divide-gray-200">
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">1</td>
|
|
||||||
<td class="px-4 py-2">张明远</td>
|
|
||||||
<td class="px-4 py-2">男</td>
|
|
||||||
<td class="px-4 py-2">32</td>
|
|
||||||
<td class="px-4 py-2">研发部</td>
|
|
||||||
<td class="px-4 py-2">高级工程师</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥28,500</td>
|
|
||||||
<td class="px-4 py-2">¥24,225</td>
|
|
||||||
<td class="px-4 py-2">¥18,000</td>
|
|
||||||
<td class="px-4 py-2">¥10,500</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">2</td>
|
|
||||||
<td class="px-4 py-2">李思雨</td>
|
|
||||||
<td class="px-4 py-2">女</td>
|
|
||||||
<td class="px-4 py-2">28</td>
|
|
||||||
<td class="px-4 py-2">市场部</td>
|
|
||||||
<td class="px-4 py-2">市场经理</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥25,800</td>
|
|
||||||
<td class="px-4 py-2">¥22,170</td>
|
|
||||||
<td class="px-4 py-2">¥16,000</td>
|
|
||||||
<td class="px-4 py-2">¥9,800</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">3</td>
|
|
||||||
<td class="px-4 py-2">王建国</td>
|
|
||||||
<td class="px-4 py-2">男</td>
|
|
||||||
<td class="px-4 py-2">45</td>
|
|
||||||
<td class="px-4 py-2">技术中心</td>
|
|
||||||
<td class="px-4 py-2">技术总监</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥42,000</td>
|
|
||||||
<td class="px-4 py-2">¥34,860</td>
|
|
||||||
<td class="px-4 py-2">¥25,000</td>
|
|
||||||
<td class="px-4 py-2">¥17,000</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">4</td>
|
|
||||||
<td class="px-4 py-2">赵雪</td>
|
|
||||||
<td class="px-4 py-2">女</td>
|
|
||||||
<td class="px-4 py-2">26</td>
|
|
||||||
<td class="px-4 py-2">运营部</td>
|
|
||||||
<td class="px-4 py-2">运营专员</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥15,000</td>
|
|
||||||
<td class="px-4 py-2">¥13,350</td>
|
|
||||||
<td class="px-4 py-2">¥10,000</td>
|
|
||||||
<td class="px-4 py-2">¥5,000</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">5</td>
|
|
||||||
<td class="px-4 py-2">陈志强</td>
|
|
||||||
<td class="px-4 py-2">男</td>
|
|
||||||
<td class="px-4 py-2">35</td>
|
|
||||||
<td class="px-4 py-2">测试部</td>
|
|
||||||
<td class="px-4 py-2">测试经理</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥22,500</td>
|
|
||||||
<td class="px-4 py-2">¥19,575</td>
|
|
||||||
<td class="px-4 py-2">¥15,000</td>
|
|
||||||
<td class="px-4 py-2">¥7,500</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">6</td>
|
|
||||||
<td class="px-4 py-2">刘芳</td>
|
|
||||||
<td class="px-4 py-2">女</td>
|
|
||||||
<td class="px-4 py-2">30</td>
|
|
||||||
<td class="px-4 py-2">品牌部</td>
|
|
||||||
<td class="px-4 py-2">品牌主管</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥19,800</td>
|
|
||||||
<td class="px-4 py-2">¥17,406</td>
|
|
||||||
<td class="px-4 py-2">¥12,000</td>
|
|
||||||
<td class="px-4 py-2">¥7,800</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">7</td>
|
|
||||||
<td class="px-4 py-2">周伟</td>
|
|
||||||
<td class="px-4 py-2">男</td>
|
|
||||||
<td class="px-4 py-2">29</td>
|
|
||||||
<td class="px-4 py-2">研发部</td>
|
|
||||||
<td class="px-4 py-2">前端工程师</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥20,000</td>
|
|
||||||
<td class="px-4 py-2">¥17,600</td>
|
|
||||||
<td class="px-4 py-2">¥13,000</td>
|
|
||||||
<td class="px-4 py-2">¥7,000</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">8</td>
|
|
||||||
<td class="px-4 py-2">吴晓梅</td>
|
|
||||||
<td class="px-4 py-2">女</td>
|
|
||||||
<td class="px-4 py-2">27</td>
|
|
||||||
<td class="px-4 py-2">客服部</td>
|
|
||||||
<td class="px-4 py-2">客服主管</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥16,500</td>
|
|
||||||
<td class="px-4 py-2">¥14,685</td>
|
|
||||||
<td class="px-4 py-2">¥11,000</td>
|
|
||||||
<td class="px-4 py-2">¥5,500</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">9</td>
|
|
||||||
<td class="px-4 py-2">郑阳</td>
|
|
||||||
<td class="px-4 py-2">男</td>
|
|
||||||
<td class="px-4 py-2">33</td>
|
|
||||||
<td class="px-4 py-2">研发部</td>
|
|
||||||
<td class="px-4 py-2">后端工程师</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥23,000</td>
|
|
||||||
<td class="px-4 py-2">¥19,910</td>
|
|
||||||
<td class="px-4 py-2">¥15,000</td>
|
|
||||||
<td class="px-4 py-2">¥8,000</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-row">
|
|
||||||
<td class="px-4 py-2">10</td>
|
|
||||||
<td class="px-4 py-2">林静</td>
|
|
||||||
<td class="px-4 py-2">女</td>
|
|
||||||
<td class="px-4 py-2">31</td>
|
|
||||||
<td class="px-4 py-2">市场部</td>
|
|
||||||
<td class="px-4 py-2">市场策划</td>
|
|
||||||
<td class="px-4 py-2">2023-10</td>
|
|
||||||
<td class="px-4 py-2">¥18,500</td>
|
|
||||||
<td class="px-4 py-2">¥16,315</td>
|
|
||||||
<td class="px-4 py-2">¥12,000</td>
|
|
||||||
<td class="px-4 py-2">¥6,500</td>
|
|
||||||
<td class="px-4 py-2">
|
|
||||||
<button class="text-primary hover:underline">查看</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分页 -->
|
|
||||||
<div class="px-4 py-3 flex items-center justify-between border-t border-gray-200">
|
|
||||||
<div class="text-xs text-gray-500">
|
|
||||||
显示 1 到 10 条,共 128 条记录
|
|
||||||
</div>
|
|
||||||
<div class="flex space-x-1">
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">«</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm bg-primary text-white">1</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">2</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">3</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">...</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">13</button>
|
|
||||||
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">»</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- 底部页脚 -->
|
|
||||||
<footer class="w-full bg-secondary border-t border-gray-200 mt-10">
|
|
||||||
<div class="container mx-auto px-4 py-8">
|
|
||||||
<div class="grid grid-cols-4 gap-8">
|
|
||||||
<div>
|
|
||||||
<h4 class="text-sm font-semibold mb-4">关于我们</h4>
|
|
||||||
<p class="text-xs text-gray-600 mb-4">人力科技是一家专注于企业人力资源数字化解决方案的高科技企业,致力于为企业提供专业、高效的人力资源管理服务。</p>
|
|
||||||
<div class="flex space-x-4">
|
|
||||||
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-weixin"></i></a>
|
|
||||||
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-weibo"></i></a>
|
|
||||||
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-linkedin"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="text-sm font-semibold mb-4">产品服务</h4>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-600">
|
|
||||||
<li><a href="#" class="hover:text-primary">人力资源管理系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">薪酬计算系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">绩效考核系统</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">招聘管理系统</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="text-sm font-semibold mb-4">帮助中心</h4>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-600">
|
|
||||||
<li><a href="#" class="hover:text-primary">使用文档</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">视频教程</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">常见问题</a></li>
|
|
||||||
<li><a href="#" class="hover:text-primary">在线客服</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4 class="text-sm font-semibold mb-4">联系我们</h4>
|
|
||||||
<ul class="space-y-2 text-xs text-gray-600">
|
|
||||||
<li class="flex items-start">
|
|
||||||
<i class="fas fa-map-marker-alt mr-2 mt-0.5"></i>
|
|
||||||
<span>北京市海淀区中关村软件园二期</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-phone-alt mr-2"></i>
|
|
||||||
<span>400-888-8888</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-center">
|
|
||||||
<i class="fas fa-envelope mr-2"></i>
|
|
||||||
<span>service@hrtech.com</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-200 mt-8 pt-6 text-center text-xs text-gray-500">
|
|
||||||
<p>© 2023 人力科技 版权所有 京ICP备12345678号</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 526 B |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 48 KiB |
@ -0,0 +1,83 @@
|
|||||||
|
import React, { PureComponent } from 'react';
|
||||||
|
import { connect } from '@umijs/max';
|
||||||
|
import { Tabs } from 'antd';
|
||||||
|
|
||||||
|
// 导入子组件
|
||||||
|
import BasicInfoManagement from './components/BasicInfoManagement';
|
||||||
|
import QualificationManagement from './components/QualificationManagement';
|
||||||
|
import PersonnelBasicInfo from './components/PersonnelBasicInfo';
|
||||||
|
|
||||||
|
import styles from './BasicInformation.less';
|
||||||
|
|
||||||
|
@connect(({ staffsheet, loading }) => ({
|
||||||
|
staffsheet,
|
||||||
|
loading: loading.models.staffsheet,
|
||||||
|
}))
|
||||||
|
|
||||||
|
class BasicInformation extends PureComponent {
|
||||||
|
state = {
|
||||||
|
activeTab: '1',
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渲染Tab内容
|
||||||
|
renderTabContent = () => {
|
||||||
|
const { activeTab } = this.state;
|
||||||
|
const { staffsheet, loading, dispatch } = this.props;
|
||||||
|
|
||||||
|
const childProps = {
|
||||||
|
staffsheet,
|
||||||
|
loading,
|
||||||
|
dispatch
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (activeTab) {
|
||||||
|
case '1':
|
||||||
|
return <BasicInfoManagement {...childProps} />;
|
||||||
|
case '2':
|
||||||
|
return <QualificationManagement {...childProps} />;
|
||||||
|
case '3':
|
||||||
|
return <PersonnelBasicInfo {...childProps} />;
|
||||||
|
default:
|
||||||
|
return <BasicInfoManagement {...childProps} />;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { activeTab } = this.state;
|
||||||
|
|
||||||
|
const tabItems = [
|
||||||
|
{
|
||||||
|
key: '1',
|
||||||
|
label: '基本信息管理',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '2',
|
||||||
|
label: '资质证照管理',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '3',
|
||||||
|
label: '人员基础信息',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{/* 顶部标签页 */}
|
||||||
|
<div style={{ marginBottom: 0, background: '#EEEFF7', padding: '0 24px' }}>
|
||||||
|
<Tabs
|
||||||
|
activeKey={activeTab}
|
||||||
|
onChange={(key) => this.setState({ activeTab: key })}
|
||||||
|
items={tabItems}
|
||||||
|
className="custom-tabs"
|
||||||
|
style={{ marginBottom: 0 }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* 根据选中的Tab渲染对应的子组件 */}
|
||||||
|
{this.renderTabContent()}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default BasicInformation;
|
||||||
@ -0,0 +1,836 @@
|
|||||||
|
/* Tabs导航条样式 - 简洁风格 */
|
||||||
|
:global(.custom-tabs) {
|
||||||
|
:global(.ant-tabs-nav) {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
background-color: #EEEFF7;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除默认的下划线动画 */
|
||||||
|
:global(.ant-tabs-ink-bar) {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 未选中状态 - 简洁样式 */
|
||||||
|
:global(.ant-tabs-tab) {
|
||||||
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
margin-right: 32px !important;
|
||||||
|
padding: 12px 0 !important;
|
||||||
|
transition: all 0.3s ease !important;
|
||||||
|
position: relative !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 未选中状态文字 */
|
||||||
|
:global(.ant-tabs-tab) :global(.ant-tabs-tab-btn) {
|
||||||
|
color: #333 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-weight: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 选中状态 */
|
||||||
|
:global(.ant-tabs-tab-active) {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 选中状态文字 */
|
||||||
|
:global(.ant-tabs-tab-active) :global(.ant-tabs-tab-btn) {
|
||||||
|
color: #2E4CD4 !important;
|
||||||
|
font-weight: 500 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 选中状态底部蓝色边框 */
|
||||||
|
:global(.ant-tabs-tab-active)::after {
|
||||||
|
content: '' !important;
|
||||||
|
position: absolute !important;
|
||||||
|
bottom: 0 !important;
|
||||||
|
left: 0 !important;
|
||||||
|
right: 0 !important;
|
||||||
|
height: 2px !important;
|
||||||
|
background: #2E4CD4 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部分隔线 */
|
||||||
|
:global(.ant-tabs-nav)::before {
|
||||||
|
// border-bottom: 1px solid red !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 悬停效果 */
|
||||||
|
:global(.ant-tabs-tab):hover :global(.ant-tabs-tab-btn) {
|
||||||
|
color: #2E4CD4 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-container {
|
||||||
|
margin: 0;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 0;
|
||||||
|
|
||||||
|
:global(.ant-card-body) {
|
||||||
|
padding: 15px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 主要卡片样式 */
|
||||||
|
.ant-card {
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-card-head-title {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-card-body {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 功能区域图表样式 */
|
||||||
|
.chart-container {
|
||||||
|
position: relative;
|
||||||
|
height: 240px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-full-size {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-chart {
|
||||||
|
position: relative;
|
||||||
|
height: 240px;
|
||||||
|
|
||||||
|
.org-top-button {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 36px;
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
background: #5470c6;
|
||||||
|
border: none;
|
||||||
|
box-shadow: 0 2px 8px rgba(84, 112, 198, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-level-1 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding-left: 8%;
|
||||||
|
padding-right: 8%;
|
||||||
|
|
||||||
|
.org-department {
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.dept-icon {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 0 auto 8px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 20px;
|
||||||
|
color: white;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
||||||
|
|
||||||
|
&.safety {
|
||||||
|
background-color: #52c41a;
|
||||||
|
box-shadow: 0 2px 8px rgba(82, 196, 26, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.production {
|
||||||
|
background-color: #1890ff;
|
||||||
|
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.equipment {
|
||||||
|
background-color: #13c2c2;
|
||||||
|
box-shadow: 0 2px 8px rgba(19, 194, 194, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dept-name {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #374151;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-level-2 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding-left: 4%;
|
||||||
|
padding-right: 4%;
|
||||||
|
|
||||||
|
.dept-group {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
|
||||||
|
.sub-department {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.sub-dept-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 0 auto 6px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 16px;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
&.safety {
|
||||||
|
background-color: #52c41a;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.production {
|
||||||
|
background-color: #1890ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.equipment {
|
||||||
|
background-color: #13c2c2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub-dept-name {
|
||||||
|
font-size: 10px;
|
||||||
|
color: #6b7280;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 连接线样式
|
||||||
|
.connect-line {
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
&.vertical {
|
||||||
|
width: 1px;
|
||||||
|
border-left: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.horizontal {
|
||||||
|
height: 1px;
|
||||||
|
border-top: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主连接线
|
||||||
|
&.main-vertical {
|
||||||
|
top: 56px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.main-horizontal {
|
||||||
|
top: 76px;
|
||||||
|
left: 20%;
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 第一层连接线
|
||||||
|
&.level1-left {
|
||||||
|
top: 70px;
|
||||||
|
left: 20%;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.level1-center {
|
||||||
|
top: 70px;
|
||||||
|
left: 50%;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.level1-right {
|
||||||
|
top: 70px;
|
||||||
|
left: 80%;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 风险警告图标 */
|
||||||
|
.risk-icon {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: linear-gradient(135deg, #ff6b6b, #ff8e8e);
|
||||||
|
margin: 0 auto 12px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
box-shadow: 0 4px 12px rgba(255, 107, 107, 0.3);
|
||||||
|
font-size: 32px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 提示框样式 */
|
||||||
|
.risk-tips {
|
||||||
|
background-color: #fff2f0;
|
||||||
|
padding: 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #ffccc7;
|
||||||
|
|
||||||
|
.tips-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
|
||||||
|
.tips-icon {
|
||||||
|
color: #ff4d4f;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-label {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-content {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #666;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格工具栏 */
|
||||||
|
.table-toolbar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
padding: 16px 0;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式设计 */
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
.function-block {
|
||||||
|
height: auto;
|
||||||
|
min-height: 250px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.custom-tabs .ant-tabs-tab {
|
||||||
|
padding: 6px 12px !important;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-button {
|
||||||
|
padding: 2px;
|
||||||
|
|
||||||
|
.org-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-label {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-toolbar {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.function-block {
|
||||||
|
padding: 16px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 新增样式类 - 实时风险评估 */
|
||||||
|
.risk-assessment-container {
|
||||||
|
border: 1px solid #FFE8E8;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 20px;
|
||||||
|
height: 300px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
background-image: url('~@/assets/basic_information/risk-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
// background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-background-top {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 60%;
|
||||||
|
background: radial-gradient(ellipse at top right, rgba(255, 107, 53, 0.08) 0%, transparent 70%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-background-bottom {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 50%;
|
||||||
|
background: radial-gradient(ellipse at bottom left, rgba(239, 68, 68, 0.06) 0%, transparent 60%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-title-indicator {
|
||||||
|
display: inline-block;
|
||||||
|
width: 2px;
|
||||||
|
height: 16px;
|
||||||
|
background: #FF2526;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-title-text {
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-content-area {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
height: calc(100% - 60px);
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-shield-container {
|
||||||
|
// flex: 0 0 120px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-shield {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: linear-gradient(135deg, #ff6b35 0%, #f7931e 50%, #ffb347 100%);
|
||||||
|
border-radius: 12px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
box-shadow: 0 8px 20px rgba(255, 107, 53, 0.3), inset 0 2px 4px rgba(255, 255, 255, 0.3);
|
||||||
|
position: relative;
|
||||||
|
transform: perspective(200px) rotateX(5deg) rotateY(-5deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-shield-icon {
|
||||||
|
color: white;
|
||||||
|
font-size: 40px;
|
||||||
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-shield-shadow {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -8px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 80px;
|
||||||
|
height: 16px;
|
||||||
|
background: linear-gradient(90deg, rgba(255, 107, 53, 0.2) 0%, rgba(255, 107, 53, 0.4) 50%, rgba(255, 107, 53, 0.2) 100%);
|
||||||
|
border-radius: 50%;
|
||||||
|
filter: blur(2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-info-container {
|
||||||
|
flex: 1;
|
||||||
|
// padding-left: 16px;
|
||||||
|
margin-top: 50px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-level-alert {
|
||||||
|
background: #FFD0D0;
|
||||||
|
backdrop-filter: blur(4px);
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
// margin-bottom: 20px;
|
||||||
|
// border: 1px solid rgba(255, 196, 209, 0.6);
|
||||||
|
// box-shadow: 0 2px 8px rgba(255, 107, 53, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-level-text {
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-level-danger {
|
||||||
|
color: #FF2626;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-tip-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 12px 0;
|
||||||
|
background: rgba(255, 255, 255, 0.4);
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-tip-icon {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
// background: linear-gradient(135deg, #ff6b35, #f7931e);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 8px;
|
||||||
|
margin-top: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
// box-shadow: 0 2px 6px rgba(255, 107, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-tip-emoji {
|
||||||
|
color: white;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-tip-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.risk-tip-text {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #666;
|
||||||
|
line-height: 1.6;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 组织架构样式 */
|
||||||
|
.org-chart-container {
|
||||||
|
position: relative;
|
||||||
|
height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-top-button-container {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-top-button {
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 36px;
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
background: #2E4CD4;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-vertical {
|
||||||
|
position: absolute;
|
||||||
|
top: 56px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 1px;
|
||||||
|
height: 20px;
|
||||||
|
background: #d1d5db;
|
||||||
|
border-left: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-horizontal {
|
||||||
|
position: absolute;
|
||||||
|
top: 76px;
|
||||||
|
left: 20%;
|
||||||
|
width: 60%;
|
||||||
|
height: 1px;
|
||||||
|
border-top: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-branch {
|
||||||
|
position: absolute;
|
||||||
|
top: 70px;
|
||||||
|
width: 1px;
|
||||||
|
height: 12px;
|
||||||
|
border-left: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-branch-left {
|
||||||
|
left: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-branch-center {
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-connect-line-branch-right {
|
||||||
|
left: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-departments-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding-left: 8%;
|
||||||
|
padding-right: 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department {
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-icon {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 0 auto 8px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-icon-safety {
|
||||||
|
background-color: #52c41a;
|
||||||
|
box-shadow: 0 2px 8px rgba(82, 196, 26, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-icon-production {
|
||||||
|
background-color: #1890ff;
|
||||||
|
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-icon-equipment {
|
||||||
|
background-color: #13c2c2;
|
||||||
|
box-shadow: 0 2px 8px rgba(19, 194, 194, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-label {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #374151;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-connect-v {
|
||||||
|
position: absolute;
|
||||||
|
top: 58px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 1px;
|
||||||
|
height: 20px;
|
||||||
|
border-left: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-connect-h {
|
||||||
|
position: absolute;
|
||||||
|
top: 78px;
|
||||||
|
left: 10%;
|
||||||
|
width: 80%;
|
||||||
|
height: 1px;
|
||||||
|
border-top: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-connect-sub {
|
||||||
|
position: absolute;
|
||||||
|
top: 72px;
|
||||||
|
width: 1px;
|
||||||
|
height: 12px;
|
||||||
|
border-left: 1px dashed #9ca3af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-connect-sub-left {
|
||||||
|
left: 10%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.org-department-connect-sub-right {
|
||||||
|
left: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-style {
|
||||||
|
border-color: #DFE4F6;
|
||||||
|
color: #2E4CD4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格工具栏样式 */
|
||||||
|
.table-toolbar-container {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operateStyle {
|
||||||
|
color: #2E4CD4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-input {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-select {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.func-area-bg {
|
||||||
|
background-image: url('~@/assets/basic_information/func-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
// background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.organ-area-bg {
|
||||||
|
background-image: url('~@/assets/basic_information/organ-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
// background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warn-area-bg {
|
||||||
|
background-image: url('~@/assets/basic_information/warn-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card {
|
||||||
|
background: #F6F7FF;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 15px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card-label {
|
||||||
|
color: #666;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card-value {
|
||||||
|
color: #222;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card-icon {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
// background: rgba(46, 76, 212, 0.08);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ryzz-area-bg {
|
||||||
|
background-image: url('~@/assets/basic_information/ryzz-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
// background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dqtx-area-bg {
|
||||||
|
background-image: url('~@/assets/basic_information/dqtx-area-bg.png');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
// background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表单组件公共样式
|
||||||
|
.createForm {
|
||||||
|
:global(.ant-modal-content) {
|
||||||
|
background: linear-gradient(180deg, #EAEEFF 0%, #FFFFFF 20%, #FFFFFF 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.ant-modal-header) {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.ant-modal-title) {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.ant-modal-footer) {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global {
|
||||||
|
.ant-form {
|
||||||
|
margin-right: 24px;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-picker,
|
||||||
|
.ant-input-number {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-cancel-btn {
|
||||||
|
background: #B6BBD9;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 88px;
|
||||||
|
height: 36px;
|
||||||
|
margin-right: 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-ok-btn {
|
||||||
|
background: #2E4CD4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 88px;
|
||||||
|
height: 36px;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.view-label {
|
||||||
|
color: #666;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
margin-right: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.view-value {
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
word-break: break-all;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
@ -0,0 +1,167 @@
|
|||||||
|
import { useState, useEffect } from 'react'
|
||||||
|
import { Col, DatePicker, Form, Input, Modal, Row, Select } from 'antd'
|
||||||
|
import SelectDeptTree from '@/components/SelectDeptTree'
|
||||||
|
import SelectOrganTree from '@/components/SelectOrganTree'
|
||||||
|
import datadictionary from '@/utils/dataDictionary'
|
||||||
|
import { formatDictOptions, verifyPhone } from '@/utils/globalCommon'
|
||||||
|
import { NumberInput } from '@/components/NumberInput'
|
||||||
|
import styles from '../BasicInformation.less'
|
||||||
|
import style from '@/global.less'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { formatDate } from '@/utils/formatUtils'
|
||||||
|
|
||||||
|
const { Item: FormItem } = Form
|
||||||
|
const { TextArea } = Input
|
||||||
|
const dictData = datadictionary
|
||||||
|
|
||||||
|
//新增表单
|
||||||
|
let getDeptTreeBySelectTree
|
||||||
|
let getOrganTreeBySelectTree
|
||||||
|
|
||||||
|
const BasicInfoCreateForm = (props => {
|
||||||
|
const [form] = Form.useForm()
|
||||||
|
|
||||||
|
const {
|
||||||
|
modalVisible,
|
||||||
|
handleAdd,
|
||||||
|
handleModalVisible,
|
||||||
|
loading,
|
||||||
|
dispatch,
|
||||||
|
selectDeptTree,
|
||||||
|
selectOrganTree
|
||||||
|
} = props
|
||||||
|
|
||||||
|
// 清空和初始化逻辑可保留
|
||||||
|
useEffect(() => {
|
||||||
|
form.resetFields();
|
||||||
|
}, [modalVisible])
|
||||||
|
|
||||||
|
const okHandle = () => {
|
||||||
|
form.validateFields()
|
||||||
|
.then(fieldsValue => {
|
||||||
|
form.resetFields()
|
||||||
|
handleAdd(fieldsValue)
|
||||||
|
})
|
||||||
|
.catch(() => { })
|
||||||
|
}
|
||||||
|
|
||||||
|
const afterClose = () => {
|
||||||
|
form.resetFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
width={550}
|
||||||
|
bodyStyle={{ minHeight: '200px' }}
|
||||||
|
className={styles.createForm}
|
||||||
|
centered
|
||||||
|
destroyOnClose
|
||||||
|
title='新建项目'
|
||||||
|
open={modalVisible}
|
||||||
|
onOk={okHandle}
|
||||||
|
onCancel={() => handleModalVisible()}
|
||||||
|
afterClose={afterClose}
|
||||||
|
confirmLoading={loading}
|
||||||
|
footer={[
|
||||||
|
<button
|
||||||
|
key="cancel"
|
||||||
|
onClick={() => handleModalVisible()}
|
||||||
|
className={styles['modal-cancel-btn']}
|
||||||
|
>取消</button>,
|
||||||
|
<button
|
||||||
|
key="submit"
|
||||||
|
onClick={okHandle}
|
||||||
|
className={styles['modal-ok-btn']}
|
||||||
|
>确定</button>
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Form
|
||||||
|
form={form}
|
||||||
|
// layout='vertical'
|
||||||
|
requiredMark={false}
|
||||||
|
style={{ marginTop: 30 }}
|
||||||
|
>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={24}>
|
||||||
|
<Form.Item
|
||||||
|
label="项目名称"
|
||||||
|
name="projectName"
|
||||||
|
rules={[{ required: true, message: '请输入项目名称' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="输入项目名称" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={24}>
|
||||||
|
<Form.Item
|
||||||
|
label="地理信息"
|
||||||
|
name="location"
|
||||||
|
rules={[{ required: true, message: '请输入位置信息' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="请输入位置信息" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="占地面积"
|
||||||
|
name="area"
|
||||||
|
rules={[{ required: true, message: '请输入面积信息' }]}
|
||||||
|
>
|
||||||
|
<Input
|
||||||
|
placeholder="面积信息"
|
||||||
|
addonAfter="m²"
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="职业人数"
|
||||||
|
name="peopleCount"
|
||||||
|
rules={[{ required: true, message: '请输入人数' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="输入数量" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="组织机构"
|
||||||
|
name="org"
|
||||||
|
rules={[{ required: true, message: '请选择组织机构' }]}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
placeholder="请选择"
|
||||||
|
options={[
|
||||||
|
{ label: '机构A', value: 'A' },
|
||||||
|
{ label: '机构B', value: 'B' }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="安全等级"
|
||||||
|
name="safeLevel"
|
||||||
|
rules={[{ required: true, message: '请选择安全等级' }]}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
placeholder="请选择"
|
||||||
|
options={[
|
||||||
|
{ label: '一级', value: '1' },
|
||||||
|
{ label: '二级', value: '2' },
|
||||||
|
{ label: '三级', value: '3' }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Form>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
export default BasicInfoCreateForm
|
||||||
@ -0,0 +1,149 @@
|
|||||||
|
import { useEffect } from 'react'
|
||||||
|
import { Col, Form, Input, Modal, Row, Select } from 'antd'
|
||||||
|
import styles from '../BasicInformation.less'
|
||||||
|
|
||||||
|
const BasicInfoUpdateForm = (props => {
|
||||||
|
const [form] = Form.useForm()
|
||||||
|
|
||||||
|
const {
|
||||||
|
updateModalVisible,
|
||||||
|
handleUpdate,
|
||||||
|
handleUpdateModalVisible,
|
||||||
|
loading,
|
||||||
|
values = {}
|
||||||
|
} = props
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (updateModalVisible) {
|
||||||
|
form.setFieldsValue(values)
|
||||||
|
}
|
||||||
|
}, [updateModalVisible, values, form])
|
||||||
|
|
||||||
|
const okHandle = () => {
|
||||||
|
form.validateFields()
|
||||||
|
.then(fieldsValue => {
|
||||||
|
form.resetFields()
|
||||||
|
handleUpdate(fieldsValue)
|
||||||
|
})
|
||||||
|
.catch(() => { })
|
||||||
|
}
|
||||||
|
|
||||||
|
const afterClose = () => {
|
||||||
|
form.resetFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
width={550}
|
||||||
|
bodyStyle={{ minHeight: '200px' }}
|
||||||
|
className={styles.createForm}
|
||||||
|
centered
|
||||||
|
destroyOnClose
|
||||||
|
title='修改项目'
|
||||||
|
open={updateModalVisible}
|
||||||
|
onOk={okHandle}
|
||||||
|
onCancel={() => handleUpdateModalVisible()}
|
||||||
|
afterClose={afterClose}
|
||||||
|
confirmLoading={loading}
|
||||||
|
footer={[
|
||||||
|
<button
|
||||||
|
key="cancel"
|
||||||
|
onClick={() => handleUpdateModalVisible()}
|
||||||
|
className={styles['modal-cancel-btn']}
|
||||||
|
>取消</button>,
|
||||||
|
<button
|
||||||
|
key="submit"
|
||||||
|
onClick={okHandle}
|
||||||
|
className={styles['modal-ok-btn']}
|
||||||
|
>确定</button>
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Form
|
||||||
|
form={form}
|
||||||
|
requiredMark={false}
|
||||||
|
style={{ marginTop: 30 }}
|
||||||
|
>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={24}>
|
||||||
|
<Form.Item
|
||||||
|
label="项目名称"
|
||||||
|
name="projectName"
|
||||||
|
rules={[{ required: true, message: '请输入项目名称' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="输入项目名称" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={24}>
|
||||||
|
<Form.Item
|
||||||
|
label="地理信息"
|
||||||
|
name="location"
|
||||||
|
rules={[{ required: true, message: '请输入位置信息' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="请输入位置信息" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="占地面积"
|
||||||
|
name="area"
|
||||||
|
rules={[{ required: true, message: '请输入面积信息' }]}
|
||||||
|
>
|
||||||
|
<Input
|
||||||
|
placeholder="面积信息"
|
||||||
|
addonAfter="m²"
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="职业人数"
|
||||||
|
name="peopleCount"
|
||||||
|
rules={[{ required: true, message: '请输入人数' }]}
|
||||||
|
>
|
||||||
|
<Input placeholder="输入数量" />
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row gutter={16}>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="组织机构"
|
||||||
|
name="org"
|
||||||
|
rules={[{ required: true, message: '请选择组织机构' }]}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
placeholder="请选择"
|
||||||
|
options={[
|
||||||
|
{ label: '机构A', value: 'A' },
|
||||||
|
{ label: '机构B', value: 'B' }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<Form.Item
|
||||||
|
label="安全等级"
|
||||||
|
name="safeLevel"
|
||||||
|
rules={[{ required: true, message: '请选择安全等级' }]}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
placeholder="请选择"
|
||||||
|
options={[
|
||||||
|
{ label: '一级', value: '1' },
|
||||||
|
{ label: '二级', value: '2' },
|
||||||
|
{ label: '三级', value: '3' }
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Form>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
export default BasicInfoUpdateForm
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { Modal, Row, Col } from 'antd';
|
||||||
|
import styles from '../BasicInformation.less';
|
||||||
|
|
||||||
|
const BasicInfoViewForm = (props) => {
|
||||||
|
const { viewModalVisible, handleViewModalVisible, values = {} } = props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
width={500}
|
||||||
|
bodyStyle={{ minHeight: '180px'}}
|
||||||
|
className={styles.createForm}
|
||||||
|
centered
|
||||||
|
destroyOnClose
|
||||||
|
title="详情"
|
||||||
|
open={viewModalVisible}
|
||||||
|
footer={null}
|
||||||
|
onCancel={() => handleViewModalVisible(false)}
|
||||||
|
>
|
||||||
|
<Row gutter={0} style={{ marginTop: 30 }}>
|
||||||
|
<Col span={12} style={{ marginBottom: 18 }}>
|
||||||
|
<div className={styles['view-label']}>项目名称</div>
|
||||||
|
<div className={styles['view-value']}>{values.projectName || '-'}</div>
|
||||||
|
</Col>
|
||||||
|
<Col span={12} style={{ marginBottom: 18 }}>
|
||||||
|
<div className={styles['view-label']}>地理信息</div>
|
||||||
|
<div className={styles['view-value']}>{values.location || '-'}</div>
|
||||||
|
</Col>
|
||||||
|
<Col span={12} style={{ marginBottom: 18 }}>
|
||||||
|
<div className={styles['view-label']}>占地面积</div>
|
||||||
|
<div className={styles['view-value']}>
|
||||||
|
{values.area ? `${values.area}` : '-'}
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
<Col span={12} style={{ marginBottom: 18 }}>
|
||||||
|
<div className={styles['view-label']}>职业人数</div>
|
||||||
|
<div className={styles['view-value']}>{values.staffCount || '-'}</div>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<div className={styles['view-label']}>组织机构</div>
|
||||||
|
<div className={styles['view-value']}>{values.organization || '-'}</div>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<div className={styles['view-label']}>安全等级</div>
|
||||||
|
<div className={styles['view-value']}>{values.safetyLevel || '-'}</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BasicInfoViewForm;
|
||||||
@ -0,0 +1,113 @@
|
|||||||
|
import { useEffect } from 'react'
|
||||||
|
import { Button, Col, Form, Input, Row } from 'antd'
|
||||||
|
import { UpOutlined, SearchOutlined, RedoOutlined } from '@ant-design/icons'
|
||||||
|
import SelectDeptTree from '@/components/SelectDeptTree'
|
||||||
|
import SelectOrganTree from '@/components/SelectOrganTree'
|
||||||
|
import style from '@/global.less'
|
||||||
|
|
||||||
|
const { Item: FormItem } = Form
|
||||||
|
let getDeptTreeBySelectTree
|
||||||
|
let getOrganTreeBySelectTree
|
||||||
|
|
||||||
|
const StaffSheetRenderAdvancedForm = (props) => {
|
||||||
|
const [form] = Form.useForm()
|
||||||
|
const { dispatch, handleSearch, handleFormReset, toggleForm, selectDeptTree, selectOrganTree, params } = props
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
user_name: params?.user_name,
|
||||||
|
user_name_cn: params?.user_name_cn,
|
||||||
|
deptname: params?.deptname,
|
||||||
|
orgname: params?.orgname,
|
||||||
|
})
|
||||||
|
}, [params])
|
||||||
|
|
||||||
|
const onFinish = values => {
|
||||||
|
// if (getDeptTreeBySelectTree) {
|
||||||
|
// values.dept_code = getDeptTreeBySelectTree.dept_code
|
||||||
|
// values.deptname = getDeptTreeBySelectTree.title
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (getOrganTreeBySelectTree) {
|
||||||
|
values.org_code = getOrganTreeBySelectTree.org_code
|
||||||
|
values.orgname = getOrganTreeBySelectTree.title
|
||||||
|
}
|
||||||
|
|
||||||
|
handleSearch(values)
|
||||||
|
}
|
||||||
|
|
||||||
|
const myHandleFormReset = () => {
|
||||||
|
form.resetFields()
|
||||||
|
handleFormReset()
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectedDeptTreeValue = (deptRecord) => {
|
||||||
|
getDeptTreeBySelectTree = deptRecord
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectedOrganTreeValue = (orgRecord) => {
|
||||||
|
getOrganTreeBySelectTree = orgRecord
|
||||||
|
}
|
||||||
|
|
||||||
|
const parentDeptTreeMethod = {
|
||||||
|
dispatch: dispatch,
|
||||||
|
selectDeptTree: selectDeptTree,
|
||||||
|
selectedDeptTreeValue: selectedDeptTreeValue
|
||||||
|
}
|
||||||
|
|
||||||
|
const parentOrganTreeMethod = {
|
||||||
|
dispatch: dispatch,
|
||||||
|
selectOrganTree: selectOrganTree,
|
||||||
|
selectedOrganTreeValue: selectedOrganTreeValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Form form={form} onFinish={onFinish} layout='inline'>
|
||||||
|
<Row gutter={{ md: 8, lg: 24, xl: 48 }} className={style.searchInput}>
|
||||||
|
<Col md={8} sm={24}>
|
||||||
|
<FormItem label='用户名' name='user_name'>
|
||||||
|
<Input placeholder='请输入' />
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={8} sm={24}>
|
||||||
|
<FormItem label='用户名称' name='user_name_cn'>
|
||||||
|
<Input placeholder='请输入' />
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={8} sm={24}>
|
||||||
|
<FormItem label='机构代码' name='orgname'>
|
||||||
|
<SelectOrganTree {...parentOrganTreeMethod} />
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
|
||||||
|
<Row gutter={{md: 8, lg: 24, xl: 48}} className={style.searchBox}>
|
||||||
|
{/*<Col md={8} sm={24}>*/}
|
||||||
|
{/* <FormItem label='部门名称' name='deptname'>*/}
|
||||||
|
{/* <SelectDeptTree placeholder={'请选择部门'} {...parentDeptTreeMethod} />*/}
|
||||||
|
{/* </FormItem>*/}
|
||||||
|
{/*</Col>*/}
|
||||||
|
|
||||||
|
<Col md={24} sm={24}>
|
||||||
|
<div className={style.searchBtn}>
|
||||||
|
<Button type='primary' htmlType='submit'>
|
||||||
|
查询
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button onClick={myHandleFormReset}>
|
||||||
|
重置
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<a onClick={() => toggleForm(form)}>
|
||||||
|
收起 <UpOutlined />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Form>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default StaffSheetRenderAdvancedForm
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
import { useEffect } from 'react'
|
||||||
|
import {Button, Col, Form, Input, Row, DatePicker, Select} from 'antd'
|
||||||
|
import {DownOutlined, RedoOutlined, SearchOutlined} from '@ant-design/icons'
|
||||||
|
import style from '@/global.less'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
const { Item: FormItem } = Form
|
||||||
|
|
||||||
|
const StaffSheetRenderSimpleForm = (props) => {
|
||||||
|
const [form] = Form.useForm()
|
||||||
|
const { handleSearch, handleFormReset, toggleForm, params } = props
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
user_name: params?.user_name,
|
||||||
|
user_name_cn: params?.user_name_cn,
|
||||||
|
})
|
||||||
|
}, [params])
|
||||||
|
|
||||||
|
const onFinish = values => {
|
||||||
|
handleSearch(values)
|
||||||
|
}
|
||||||
|
|
||||||
|
const myHandleFormReset = () => {
|
||||||
|
form.resetFields()
|
||||||
|
handleFormReset()
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Form form={form} onFinish={onFinish} layout='inline'>
|
||||||
|
<Row gutter={{ md: 8, lg: 24, xl: 48 }} className={style.searchInput}>
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<FormItem label='我的查询条件' name='wdcxtj'>
|
||||||
|
<Select
|
||||||
|
placeholder='请选择'
|
||||||
|
options={[]}
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<FormItem label='日期' name='rq' rules={[{ required: true, message: '请选择日期!' }]}>
|
||||||
|
<DatePicker defaultValue={dayjs('2025-04-10', 'YYYY-MM-DD')} format='YYYY-MM-DD' />
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<FormItem label='工作地点' name='gzdd'>
|
||||||
|
<Input placeholder='请输入' />
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<FormItem label='工号' name='gh'>
|
||||||
|
<Input placeholder='请输入' defaultValue="123456"/>
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<FormItem label='名称' name='gh'>
|
||||||
|
<Input placeholder='请输入'/>
|
||||||
|
</FormItem>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col md={4} sm={24}>
|
||||||
|
<div className={style.searchBtn}>
|
||||||
|
<Button type='primary' htmlType='submit'>
|
||||||
|
查询
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button onClick={myHandleFormReset}>
|
||||||
|
重置
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Form>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default StaffSheetRenderSimpleForm
|
||||||