下载地址:www.pan38.com/share.php?c… 提取码:8888 以下是基于HTML5+CSS3+JavaScript实现的银行转账凭证生成器完整代码,包含数据生成、样式定制和导出功能
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>银行转账凭证生成器</title>
<style>
:root {
--primary-color: #1890ff;
--success-color: #52c41a;
--error-color: #f5222d;
--warning-color: #faad14;
--font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: var(--font-family);
background-color: #f5f5f5;
padding: 20px;
color: #333;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
padding: 30px;
}
h1 {
text-align: center;
margin-bottom: 30px;
color: var(--primary-color);
font-weight: 500;
}
.control-panel {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
margin-bottom: 30px;
padding: 20px;
background: #fafafa;
border-radius: 6px;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: 500;
}
input, select {
width: 100%;
padding: 8px 12px;
border: 1px solid #d9d9d9;
border-radius: 4px;
font-size: 14px;
transition: all 0.3s;
}
input:focus, select:focus {
border-color: var(--primary-color);
outline: none;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
button {
padding: 8px 16px;
background: var(--primary-color);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
transition: all 0.3s;
}
button:hover {
background: #40a9ff;
}
button.secondary {
background: white;
color: var(--primary-color);
border: 1px solid var(--primary-color);
}
button.secondary:hover {
color: #40a9ff;
border-color: #40a9ff;
}
.btn-group {
display: flex;
gap: 10px;
margin-top: 20px;
}
.receipt {
margin-top: 30px;
border: 1px solid #e8e8e8;
border-radius: 6px;
padding: 30px;
position: relative;
background: white;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.receipt::before {
content: "虚拟凭证 - 仅供测试";
position: absolute;
top: 10px;
right: 10px;
font-size: 12px;
color: #999;
transform: rotate(15deg);
opacity: 0.5;
}
.receipt-header {
text-align: center;
margin-bottom: 30px;
padding-bottom: 15px;
border-bottom: 2px solid #e8e8e8;
}
.receipt-header h2 {
font-size: 24px;
color: var(--primary-color);
margin-bottom: 5px;
}
.receipt-header p {
color: #666;
font-size: 14px;
}
.receipt-body {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.receipt-section {
margin-bottom: 20px;
}
.receipt-section h3 {
font-size: 16px;
margin-bottom: 10px;
color: #444;
border-bottom: 1px dashed #e8e8e8;
padding-bottom: 5px;
}
.receipt-row {
display: flex;
margin-bottom: 8px;
}
.receipt-label {
width: 100px;
color: #666;
font-size: 14px;
}
.receipt-value {
flex: 1;
font-weight: 500;
}
.receipt-value.amount {
font-size: 18px;
color: var(--primary-color);
}
.receipt-footer {
margin-top: 30px;
padding-top: 15px;
border-top: 2px solid #e8e8e8;
text-align: right;
font-size: 14px;
color: #666;
}
.watermark {
position: absolute;
bottom: 10px;
left: 10px;
font-size: 12px;
color: #ccc;
}
@media print {
body * {
visibility: hidden;
}
.receipt, .receipt * {
visibility: visible;
}
.receipt {
position: absolute;
left: 0;
top: 0;
width: 100%;
box-shadow: none;
border: none;
}
.no-print {
display: none;
}
}
@media (max-width: 768px) {
.receipt-body {
grid-template-columns: 1fr;
}
.control-panel {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<div class="container">
<h1>银行转账凭证生成器</h1>
<div class="control-panel no-print">
<div class="form-group">
<label for="bank-from">付款银行</label>
<select id="bank-from">
<option value="中国工商银行">中国工商银行</option>
<option value="中国建设银行">中国建设银行</option>
<option value="中国银行">中国银行</option>
<option value="中国农业银行">中国农业银行</option>
<option value="交通银行">交通银行</option>
</select>
</div>
<div class="form-group">
<label for="account-from">付款账号</label>
<input type="text" id="account-from" placeholder="请输入付款账号">
</div>
<div class="form-group">
<label for="name-from">付款人姓名</label>
<input type="text" id="name-from" placeholder="请输入付款人姓名">
</div>
<div class="form-group">
<label for="bank-to">收款银行</label>
<select id="bank-to">
<option value="中国工商银行">中国工商银行</option>
<option value="中国建设银行">中国建设银行</option>
<option value="中国银行">中国银行</option>
<option value="中国农业银行">中国农业银行</option>
<option value="交通银行">交通银行</option>
</select>
</div>
<div class="form-group">
<label for="account-to">收款账号</label>
<input type="text" id="account-to" placeholder="请输入收款账号">
</div>
<div class="form-group">
<label for="name-to">收款人姓名</label>
<input type="text" id="name-to" placeholder="请输入收款人姓名">
</div>
<div class="form-group">
<label for="amount">转账金额</label>
<input type="number" id="amount" placeholder="请输入转账金额" min="0.01" step="0.01">
</div>
<div class="form-group">
<label for="date">交易日期</label>
<input type="date" id="date">
</div>
<div class="form-group">
<label for="remark">备注</label>
<input type="text" id="remark" placeholder="请输入备注信息">
</div>
<div class="btn-group">
<button id="generate-btn">生成凭证</button>
<button id="random-btn" class="secondary">随机生成</button>
<button id="print-btn" class="secondary">打印凭证</button>
<button id="save-btn" class="secondary">保存为图片</button>
</div>
</div>
<div class="receipt" id="receipt" style="display: none;">
<div class="receipt-header">
<h2 id="receipt-title">银行转账凭证</h2>
<p id="receipt-number">凭证编号: <span id="receipt-number-value"></span></p>
</div>
<div class="receipt-body">
<div>
<div class="receipt-section">
<h3>付款方信息</h3>
<div class="receipt-row">
<div class="receipt-label">银行名称:</div>
<div class="receipt-value" id="receipt-bank-from"></div>
</div>
<div class="receipt-row">
<div class="receipt-label">账号:</div>
<div class="receipt-value" id="receipt-account-from"></div>
</div>
<div class="receipt-row">
<div class="receipt-label">户名:</div>
<div class="receipt-value" id="receipt-name-from"></div>
</div>
</div>
<div class="receipt-section">
<h3>交易信息</h3>
<div class="receipt-row">
<div class="receipt-label">交易日期:</div>
<div class="receipt-value" id="receipt-date"></div>
</div>
<div class="receipt-row">
<div class="receipt-label">交易类型:</div>
<div class="receipt-value">转账</div>
</div>
<div class="receipt-row">
<div class="receipt-label">交易金额:</div>
<div class="receipt-value amount" id="receipt-amount"></div>
</div>
</div>
</div>
<div>
<div class="receipt-section">
<h3>收款方信息</h3>
<div class="receipt-row">
<div class="receipt-label">银行名称:</div>
<div class="receipt-value" id="receipt-bank-to"></div>
</div>
<div class="receipt-row">
<div class="receipt-label">账号:</div>
<div class="receipt-value" id="receipt-account-to"></div>
</div>
<div class="receipt-row">
<div class="receipt-label">户名:</div>
<div class="receipt-value" id="receipt-name-to"></div>
</div>
</div>
<div class="receipt-section">
<h3>其他信息</h3>
<div class="receipt-row">
<div class="receipt-label">交易状态:</div>
<div class="receipt-value" style="color: var(--success-color);">交易成功</div>
</div>
<div class="receipt-row">
<div class="receipt-label">手续费:</div>
<div class="receipt-value">0.00元</div>
</div>
<div class="receipt-row">
<div class="receipt-label">备注:</div>
<div class="receipt-value" id="receipt-remark"></div>
</div>
</div>
</div>
</div>
<div class="receipt-footer">
<p>经办: 电子系统自动处理</p>
<p id="receipt-time"></p>
</div>
<div class="watermark">虚拟凭证 - 仅供测试使用</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
// 设置默认日期为今天
const today = new Date();
const dateStr = today.toISOString().split('T')[0];
document.getElementById('date').value = dateStr;
// 生成随机账号
function generateRandomAccount() {
return '62' + Math.floor(Math.random() * 10000000000).toString().padStart(10, '0');
}
// 生成随机姓名
function generateRandomName() {
const surnames = ['张', '王', '李', '赵', '刘', '陈', '杨', '黄', '吴', '周'];
const givenNames = ['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军'];
return surnames[Math.floor(Math.random() * surnames.length)] +
givenNames[Math.floor(Math.random() * givenNames.length)];
}
// 生成随机金额
function generateRandomAmount() {
return (Math.random() * 10000 + 1).toFixed(2);
}
// 随机生成按钮点击事件
document.getElementById('random-btn').addEventListener('click', function() {
document.getElementById('account-from').value = generateRandomAccount();
document.getElementById('name-from').value = generateRandomName();
document.getElementById