someone-oa/mobile/project.html
2025-12-11 18:08:46 +08:00

377 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>项目查询 - OA系统</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
background: #f5f5f5;
max-width: 414px;
margin: 0 auto;
min-height: 100vh;
padding-bottom: 60px;
}
.header {
background: #1890ff;
color: white;
padding: 12px 16px;
display: flex;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 100;
}
.header-title {
font-size: 18px;
font-weight: bold;
}
.search-box {
background: white;
padding: 12px 16px;
border-bottom: 1px solid #e5e5e5;
}
.search-input-wrapper {
position: relative;
}
.search-input {
width: 100%;
padding: 10px 40px 10px 16px;
border: 1px solid #e5e5e5;
border-radius: 20px;
font-size: 14px;
}
.search-icon {
position: absolute;
right: 16px;
top: 50%;
transform: translateY(-50%);
color: #999;
}
.filter-bar {
background: white;
padding: 12px 16px;
display: flex;
gap: 8px;
overflow-x: auto;
border-bottom: 1px solid #e5e5e5;
}
.filter-btn {
padding: 6px 16px;
border: 1px solid #e5e5e5;
border-radius: 16px;
background: white;
color: #666;
font-size: 14px;
white-space: nowrap;
cursor: pointer;
}
.filter-btn.active {
background: #1890ff;
color: white;
border-color: #1890ff;
}
.content {
padding: 16px;
background: #ffffff;
min-height: calc(100vh - 44px - 60px);
}
.project-item {
background: white;
border-radius: 8px;
padding: 16px;
margin-bottom: 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
cursor: pointer;
transition: background 0.2s;
}
.project-item:active {
background: #f5f5f5;
}
.project-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 12px;
}
.project-number {
font-size: 12px;
color: #999;
margin-bottom: 4px;
}
.project-name {
font-size: 16px;
font-weight: 500;
color: #333;
}
.status-badge {
padding: 4px 10px;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
}
.status-initiated {
background: #e6f7ff;
color: #1890ff;
}
.status-bidding {
background: #fff7e6;
color: #d46b08;
}
.status-won {
background: #fff1f0;
color: #ff4d4f;
}
.status-contract {
background: #f6ffed;
color: #52c41a;
}
.status-started {
background: #f0f5ff;
color: #2f54eb;
}
.project-info {
display: flex;
flex-direction: column;
gap: 8px;
}
.info-row {
display: flex;
justify-content: space-between;
font-size: 14px;
}
.info-label {
color: #999;
}
.info-value {
color: #333;
font-weight: 500;
}
.empty-state {
text-align: center;
padding: 60px 20px;
color: #999;
}
.empty-icon {
font-size: 48px;
margin-bottom: 16px;
}
.bottom-nav {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 414px;
background: white;
border-top: 1px solid #e5e5e5;
display: flex;
padding: 8px 0;
z-index: 100;
}
.nav-item {
flex: 1;
text-align: center;
padding: 8px;
color: #666;
font-size: 12px;
text-decoration: none;
}
.nav-item.active {
color: #1890ff;
}
.nav-icon {
font-size: 20px;
margin-bottom: 4px;
}
</style>
</head>
<body>
<div class="header">
<div class="header-title">项目查询</div>
</div>
<div class="search-box">
<div class="search-input-wrapper">
<input type="text" class="search-input" placeholder="搜索项目编号、项目名称" id="searchInput">
<span class="search-icon">🔍</span>
</div>
</div>
<div class="filter-bar">
<div class="filter-btn active" onclick="filterProjects('all')">全部</div>
<div class="filter-btn" onclick="filterProjects('initiated')">已立项</div>
<div class="filter-btn" onclick="filterProjects('bidding')">投标中</div>
<div class="filter-btn" onclick="filterProjects('won')">已中标</div>
<div class="filter-btn" onclick="filterProjects('contract')">已签合同</div>
<div class="filter-btn" onclick="filterProjects('started')">已启动</div>
</div>
<div class="content">
<div class="project-item" onclick="viewProjectDetail('25-1')">
<div class="project-header">
<div>
<div class="project-number">项目编号25-1</div>
<div class="project-name">XX工程项目</div>
</div>
<span class="status-badge status-started">已启动</span>
</div>
<div class="project-info">
<div class="info-row">
<span class="info-label">客户名称</span>
<span class="info-value">XX公司</span>
</div>
<div class="info-row">
<span class="info-label">服务内容</span>
<span class="info-value">工程咨询</span>
</div>
<div class="info-row">
<span class="info-label">预计金额</span>
<span class="info-value">¥500,000</span>
</div>
<div class="info-row">
<span class="info-label">负责人</span>
<span class="info-value">张三</span>
</div>
</div>
</div>
<div class="project-item" onclick="viewProjectDetail('25-2')">
<div class="project-header">
<div>
<div class="project-number">项目编号25-2</div>
<div class="project-name">YY工程项目</div>
</div>
<span class="status-badge status-bidding">投标中</span>
</div>
<div class="project-info">
<div class="info-row">
<span class="info-label">客户名称</span>
<span class="info-value">YY公司</span>
</div>
<div class="info-row">
<span class="info-label">服务内容</span>
<span class="info-value">跟踪审计</span>
</div>
<div class="info-row">
<span class="info-label">预计金额</span>
<span class="info-value">¥800,000</span>
</div>
<div class="info-row">
<span class="info-label">负责人</span>
<span class="info-value">李四</span>
</div>
</div>
</div>
<div class="project-item" onclick="viewProjectDetail('25-4')">
<div class="project-header">
<div>
<div class="project-number">项目编号25-4</div>
<div class="project-name">AA工程项目</div>
</div>
<span class="status-badge status-won">已中标</span>
</div>
<div class="project-info">
<div class="info-row">
<span class="info-label">客户名称</span>
<span class="info-value">AA公司</span>
</div>
<div class="info-row">
<span class="info-label">服务内容</span>
<span class="info-value">工程监理</span>
</div>
<div class="info-row">
<span class="info-label">预计金额</span>
<span class="info-value">¥1,200,000</span>
</div>
<div class="info-row">
<span class="info-label">负责人</span>
<span class="info-value">赵六</span>
</div>
</div>
</div>
<div class="project-item" onclick="viewProjectDetail('25-3')">
<div class="project-header">
<div>
<div class="project-number">项目编号25-3</div>
<div class="project-name">ZZ工程项目</div>
</div>
<span class="status-badge status-contract">已签合同</span>
</div>
<div class="project-info">
<div class="info-row">
<span class="info-label">客户名称</span>
<span class="info-value">ZZ公司</span>
</div>
<div class="info-row">
<span class="info-label">服务内容</span>
<span class="info-value">结算审计</span>
</div>
<div class="info-row">
<span class="info-label">合同金额</span>
<span class="info-value">¥600,000</span>
</div>
<div class="info-row">
<span class="info-label">负责人</span>
<span class="info-value">王五</span>
</div>
</div>
</div>
</div>
<div class="bottom-nav">
<a href="todo.html" class="nav-item">
<div class="nav-icon">📋</div>
<div>待办</div>
</a>
<a href="message.html" class="nav-item">
<div class="nav-icon">🔔</div>
<div>消息</div>
</a>
<a href="project.html" class="nav-item active">
<div class="nav-icon">📁</div>
<div>项目</div>
</a>
<a href="output.html" class="nav-item">
<div class="nav-icon">📝</div>
<div>成果</div>
</a>
<a href="profile.html" class="nav-item">
<div class="nav-icon">👤</div>
<div>我的</div>
</a>
</div>
<script>
function filterProjects(status) {
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.classList.remove('active');
});
event.target.classList.add('active');
// 实际应用中这里应该过滤项目列表
console.log('筛选状态:', status);
}
function viewProjectDetail(projectNo) {
window.location.href = 'project-detail.html?id=' + projectNo;
}
document.getElementById('searchInput').addEventListener('input', function(e) {
const keyword = e.target.value;
// 实际应用中这里应该搜索项目
console.log('搜索关键词:', keyword);
});
</script>
</body>
</html>