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

188 lines
7.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; }
.page-title { font-size: 20px; font-weight: 500; }
.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-invoiced { background: #f0f5ff; color: #2f54eb; }
.status-paid { background: #f6ffed; color: #52c41a; }
.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 active">回款管理</div>
<div class="menu-item" onclick="window.location.href='finance-request.html'">请款管理</div>
</div>
<div class="content">
<div class="page-header">
<div class="page-title">回款管理</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">
<select class="form-select">
<option>全部状态</option>
<option>已开票</option>
<option>已回款</option>
</select>
</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>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>25-1</td>
<td>XX工程项目</td>
<td>XX公司</td>
<td>¥100,000</td>
<td>2025-01-15</td>
<td>¥100,000</td>
<td>2025-01-20</td>
<td><span class="status-badge status-paid">已回款</span></td>
<td>
<span class="action-link" onclick="recordPayment('25-1')">录入回款</span>
<span class="action-link" onclick="viewDetail('25-1')">查看</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script>
function recordPayment(id) {
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="number" id="payment-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>
<input type="date" id="payment-date" class="form-input" value="${new Date().toISOString().split('T')[0]}">
</div>
<div style="margin-bottom: 16px;">
<label style="display: block; margin-bottom: 8px; color: #606266;">备注</label>
<textarea id="payment-note" class="form-textarea" placeholder="请输入备注信息"></textarea>
</div>
</form>
`;
CommonUtils.createModal('录入回款', content, () => {
const amount = document.getElementById('payment-amount').value;
if (!amount || parseFloat(amount) <= 0) {
CommonUtils.showMessage('请输入有效的回款金额', 'error');
return false;
}
CommonUtils.showMessage('回款记录已保存:¥' + parseFloat(amount).toLocaleString());
return true;
});
}
function viewDetail(id) {
window.location.href = 'invoice-detail.html?id=' + id;
}
</script>
<script src="unified-layout.js"></script>
<script>
initUnifiedLayout('finance');
</script>
</div>
</body>
</html>