someone-oa/pc/finance-request.html
2025-12-11 19:04:46 +08:00

197 lines
8.9 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. 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">
<title>请款管理 - OA系统</title>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 统一布局样式 -->
<link rel="stylesheet" href="unified-layout.css">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
background: #f0f2f5;
overflow: hidden;
}
.layout-container {
height: 100vh;
display: flex;
flex-direction: column;
}
 background: #409EFF; }
.main-container {
flex: 1;
display: flex;
overflow: hidden;
}
.app-main {
flex: 1;
overflow: hidden;
display: flex;
flex-direction: column;
background: #f0f2f5;
}
.sidebar {
width: 210px;
background: #fff;
border-right: 1px solid #e6e6e6;
overflow-y: auto;
}
.el-menu {
border-right: none;
}
.menu-item { padding: 12px 24px; cursor: pointer; }
.menu-item.active {
background: #409EFF;
color: #fff;
}
.content {
flex: 1;
padding: 20px;
overflow-y: auto;
background: #fff;
margin: 10px;
border-radius: 4px;
}
.page-header { margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid #f0f0f0; display: flex; justify-content: space-between; }
.page-title { font-size: 20px; font-weight: 500; }
.tab-nav { display: flex; gap: 8px; margin-bottom: 16px; border-bottom: 1px solid #f0f0f0; }
.tab-item { padding: 12px 24px; cursor: pointer; border-bottom: 2px solid transparent; }
.tab-item.active { color: #409EFF; border-bottom-color: #409EFF; }
.search-form { background: #fafafa; padding: 16px; border-radius: 4px; margin-bottom: 16px; }
.form-row { display: flex; gap: 16px; margin-bottom: 12px; }
.form-item { flex: 1; }
.form-input, .form-select { width: 100%; padding: 6px 12px; border: 1px solid #d9d9d9; border-radius: 4px; }
.btn { padding: 6px 16px; border: none; border-radius: 4px; cursor: pointer; }
.btn-primary { background: #409EFF; color: white; }
.btn-default { background: white; color: #333; border: 1px solid #d9d9d9; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 12px; text-align: left; border-bottom: 1px solid #f0f0f0; }
th { background: #fafafa; font-weight: 500; }
.status-badge { padding: 2px 8px; border-radius: 4px; font-size: 12px; }
.status-pending { background: #fff7e6; color: #d46b08; }
.status-approved { background: #f6ffed; color: #52c41a; }
.status-paid { background: #f0f5ff; color: #2f54eb; }
.action-link { color: #409EFF; cursor: pointer; margin-right: 12px; }
</style>
<!-- Vue.js -->
<script src="https://unpkg.com/vue@2/dist/vue.js"></script>
<!-- Element UI JS -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="common.js"></script>
<script src="common.js"></script>
</head>
<body>
<div id="app">
<div class="layout-container">
<div class="main-container">
<div class="sidebar">
<div class="menu-item" onclick="window.location.href='finance-invoice.html'">开票管理</div>
<div class="menu-item" onclick="window.location.href='finance-payment.html'">回款管理</div>
<div class="menu-item active">请款管理</div>
</div>
<div class="content">
<div class="page-header">
<div class="page-title">请款管理</div>
<button class="btn btn-primary" onclick="newRequest()">+ 请款申请</button>
</div>
<div class="tab-nav">
<div class="tab-item active" onclick="switchTab('all')">全部</div>
<div class="tab-item" onclick="switchTab('pending')">待审核</div>
<div class="tab-item" onclick="switchTab('approved')">已审核</div>
<div class="tab-item" onclick="switchTab('paid')">已付款</div>
</div>
<div class="search-form">
<div class="form-row">
<div class="form-item">
<input type="text" class="form-input" placeholder="请款单号/项目名称">
</div>
<div class="form-item" style="display: flex; gap: 8px;">
<button class="btn btn-primary">查询</button>
<button class="btn btn-default">重置</button>
</div>
</div>
</div>
<table>
<thead>
<tr>
<th>请款单号</th>
<th>请款事由</th>
<th>请款金额</th>
<th>申请人</th>
<th>申请时间</th>
<th>审核状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>QK202501001</td>
<td>项目材料采购</td>
<td>¥50,000</td>
<td>张三</td>
<td>2025-01-18 10:00</td>
<td><span class="status-badge status-pending">待审核</span></td>
<td>
<span class="action-link" onclick="window.location.href='request-detail.html?id=QK202501001'">查看详情</span>
<span class="action-link" onclick="window.location.href='approval-detail.html?type=request&id=QK202501001'">审核</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script>
function switchTab(tab) {
document.querySelectorAll('.tab-item').forEach(item => item.classList.remove('active'));
event.target.classList.add('active');
}
function newRequest() {
const content = `
<form style="padding: 10px 0;">
<div style="margin-bottom: 16px;">
<label style="display: block; margin-bottom: 8px; color: #606266;">请款事由 <span style="color: #f56c6c;">*</span></label>
<input type="text" id="request-reason" class="form-input" placeholder="请输入请款事由" required>
</div>
<div style="margin-bottom: 16px;">
<label style="display: block; margin-bottom: 8px; color: #606266;">请款金额 <span style="color: #f56c6c;">*</span></label>
<input type="number" id="request-amount" class="form-input" placeholder="请输入请款金额" step="0.01" required>
</div>
<div style="margin-bottom: 16px;">
<label style="display: block; margin-bottom: 8px; color: #606266;">请款说明</label>
<textarea id="request-note" class="form-textarea" placeholder="请输入请款说明"></textarea>
</div>
</form>
`;
CommonUtils.createModal('新建请款申请', content, () => {
const reason = document.getElementById('request-reason').value.trim();
const amount = document.getElementById('request-amount').value;
if (!reason || !amount || parseFloat(amount) <= 0) {
CommonUtils.showMessage('请填写完整信息', 'error');
return false;
}
CommonUtils.showMessage('请款申请已提交');
setTimeout(() => location.reload(), 1000);
return true;
});
}
function approve(id) {
CommonUtils.confirm('确认审核通过?', () => {
CommonUtils.showMessage('审核通过');
window.location.href = 'approval-detail.html?type=request&id=' + id;
});
}
</script>
<script src="unified-layout.js"></script>
<script>
initUnifiedLayout('finance');
</script>
</div>
</body>
</html>