Files
TakeoutSaaS.Prototypes/Tenant-Admin-UI-Prototype/pages/fin-invoice.html

269 lines
12 KiB
HTML
Raw 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.
<!-- 发票管理页 -->
<style>
.fi-seg-wrap{margin-bottom:16px;}
.fi-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px;}
.fi-stat-card{background:#fff;border-radius:var(--g-radius);padding:18px 20px;box-shadow:var(--g-shadow-sm);transition:var(--g-transition);}
.fi-stat-card:hover{box-shadow:var(--g-shadow-md);}
.fi-stat-label{font-size:13px;color:var(--g-text-secondary);margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.fi-stat-label i{width:16px;height:16px;}
.fi-stat-val{font-size:24px;font-weight:700;color:var(--g-text);}
.fi-stat-sub{font-size:12px;color:var(--g-text-muted);margin-top:4px;}
.fi-stat-card.warn .fi-stat-val{color:var(--g-warning);}
.fi-stat-card.danger .fi-stat-val{color:var(--g-danger);}
.fi-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;background:#fff;padding:12px 16px;border-radius:var(--g-radius);box-shadow:var(--g-shadow-sm);flex-wrap:wrap;}
.fi-toolbar input[type=date],.fi-toolbar select{height:34px;padding:0 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;outline:none;background:#fff;transition:var(--g-transition);}
.fi-toolbar input[type=date]:focus,.fi-toolbar select:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent);}
.fi-toolbar .fi-search{height:34px;padding:0 10px 0 32px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;outline:none;width:200px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") 10px center no-repeat;transition:var(--g-transition);}
.fi-toolbar .fi-search:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent);}
.fi-date-sep{color:var(--g-text-muted);font-size:13px;}
.fi-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;}
.fi-tag-purple{background:#f9f0ff;color:#722ed1;}
.fi-section-hd{font-size:15px;font-weight:600;color:var(--g-text);padding-left:10px;border-left:3px solid var(--primary);margin-bottom:16px;}
.fi-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;}
.fi-toggle-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.fi-toggle-label{font-size:13px;font-weight:500;color:var(--g-text);}
.fi-toggle-hint{font-size:12px;color:var(--g-text-muted);margin-left:4px;}
.fi-save-bar{margin-top:20px;display:flex;justify-content:flex-end;gap:8px;}
@media(max-width:768px){.fi-stats{grid-template-columns:1fr;}.fi-form-grid{grid-template-columns:1fr;}}
</style>
<!-- 分段控制器 -->
<div class="fi-seg-wrap">
<div class="g-seg">
<div class="g-seg-item active" onclick="switchFiTab(this)" data-tab="records">开票记录</div>
<div class="g-seg-item" onclick="switchFiTab(this)" data-tab="settings">发票设置</div>
</div>
</div>
<!-- Tab1: 开票记录 -->
<div id="fiTabRecords">
<!-- 统计卡片 -->
<div class="fi-stats">
<div class="fi-stat-card">
<div class="fi-stat-label"><i data-lucide="receipt-text"></i>本月开票</div>
<div class="fi-stat-val">&yen;12,400</div>
<div class="fi-stat-sub">共 32 张</div>
</div>
<div class="fi-stat-card warn">
<div class="fi-stat-label"><i data-lucide="clock"></i>待开票</div>
<div class="fi-stat-val">5</div>
<div class="fi-stat-sub">张待处理</div>
</div>
<div class="fi-stat-card danger">
<div class="fi-stat-label"><i data-lucide="ban"></i>已作废</div>
<div class="fi-stat-val">2</div>
<div class="fi-stat-sub">张已作废</div>
</div>
</div>
<!-- 筛选工具栏 -->
<div class="fi-toolbar">
<input type="date" value="2026-01-01" />
<span class="fi-date-sep"></span>
<input type="date" value="2026-01-31" />
<select>
<option>全部状态</option>
<option>待开票</option>
<option>已开票</option>
<option>已作废</option>
</select>
<select>
<option>全部类型</option>
<option>普通发票</option>
<option>专用发票</option>
</select>
<div style="flex:1;"></div>
<input class="fi-search" type="text" placeholder="搜索发票号码/公司名" />
</div>
<!-- 发票记录表格 -->
<div class="g-card" style="padding:0;">
<table class="g-table">
<thead>
<tr>
<th>发票号码</th>
<th>申请人 / 公司名</th>
<th>发票类型</th>
<th>金额</th>
<th>关联订单</th>
<th>状态</th>
<th>申请时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="fi-mono">INV20260115001</span></td>
<td>北京鼎盛餐饮有限公司</td>
<td><span class="g-tag g-tag-blue">普票</span></td>
<td>&yen;860.00</td>
<td><span class="fi-mono">ORD20260115032</span></td>
<td><span class="g-tag g-tag-orange">待开票</span></td>
<td>2026-01-15 14:30</td>
<td><a class="g-action" href="javascript:;">开票</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260114008</span></td>
<td>上海云帆科技有限公司</td>
<td><span class="g-tag fi-tag-purple">专票</span></td>
<td>&yen;2,400.00</td>
<td><span class="fi-mono">ORD20260114021</span></td>
<td><span class="g-tag g-tag-green">已开票</span></td>
<td>2026-01-14 10:15</td>
<td><a class="g-action" href="javascript:;">查看</a><a class="g-action g-action-danger" href="javascript:;">作废</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260113005</span></td>
<td>张伟</td>
<td><span class="g-tag g-tag-blue">普票</span></td>
<td>&yen;156.00</td>
<td><span class="fi-mono">ORD20260113044</span></td>
<td><span class="g-tag g-tag-green">已开票</span></td>
<td>2026-01-13 18:42</td>
<td><a class="g-action" href="javascript:;">查看</a><a class="g-action g-action-danger" href="javascript:;">作废</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260112003</span></td>
<td>深圳市万达商贸有限公司</td>
<td><span class="g-tag fi-tag-purple">专票</span></td>
<td>&yen;5,200.00</td>
<td><span class="fi-mono">ORD20260112018</span></td>
<td><span class="g-tag g-tag-orange">待开票</span></td>
<td>2026-01-12 09:20</td>
<td><a class="g-action" href="javascript:;">开票</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260111007</span></td>
<td>李明</td>
<td><span class="g-tag g-tag-blue">普票</span></td>
<td>&yen;88.50</td>
<td><span class="fi-mono">ORD20260111055</span></td>
<td><span class="g-tag g-tag-gray">已作废</span></td>
<td>2026-01-11 20:10</td>
<td><a class="g-action" href="javascript:;">查看</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260110002</span></td>
<td>广州天河餐饮管理有限公司</td>
<td><span class="g-tag g-tag-blue">普票</span></td>
<td>&yen;1,320.00</td>
<td><span class="fi-mono">ORD20260110009</span></td>
<td><span class="g-tag g-tag-green">已开票</span></td>
<td>2026-01-10 11:35</td>
<td><a class="g-action" href="javascript:;">查看</a><a class="g-action g-action-danger" href="javascript:;">作废</a></td>
</tr>
<tr>
<td><span class="fi-mono">INV20260109006</span></td>
<td>王芳</td>
<td><span class="g-tag g-tag-blue">普票</span></td>
<td>&yen;45.00</td>
<td><span class="fi-mono">ORD20260109071</span></td>
<td><span class="g-tag g-tag-gray">已作废</span></td>
<td>2026-01-09 16:50</td>
<td><a class="g-action" href="javascript:;">查看</a></td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="g-pagination" style="margin-top:16px;">
<button class="g-page-btn" disabled>&laquo;</button>
<button class="g-page-btn active">1</button>
<button class="g-page-btn">2</button>
<button class="g-page-btn">3</button>
<button class="g-page-btn">&raquo;</button>
</div>
</div>
<!-- Tab2: 发票设置 -->
<div id="fiTabSettings" style="display:none;">
<!-- 企业信息 -->
<div class="g-card" style="margin-bottom:16px;">
<div class="fi-section-hd">企业开票信息</div>
<div class="fi-form-grid">
<div class="g-form-group">
<label class="g-form-label required">企业名称</label>
<input class="g-input" value="北京老三家餐饮管理有限公司" placeholder="请输入企业全称" />
</div>
<div class="g-form-group">
<label class="g-form-label required">纳税人识别号</label>
<input class="g-input" value="91110105MA01ABCD5X" placeholder="请输入统一社会信用代码" />
</div>
<div class="g-form-group">
<label class="g-form-label">注册地址</label>
<input class="g-input" value="北京市朝阳区建国路88号" placeholder="请输入注册地址" />
</div>
<div class="g-form-group">
<label class="g-form-label">注册电话</label>
<input class="g-input" value="010-88886666" placeholder="请输入注册电话" />
</div>
<div class="g-form-group">
<label class="g-form-label">开户银行</label>
<input class="g-input" value="中国工商银行北京朝阳支行" placeholder="请输入开户银行名称" />
</div>
<div class="g-form-group">
<label class="g-form-label">银行账号</label>
<input class="g-input" value="0200 0461 1920 1234 567" placeholder="请输入银行账号" />
</div>
</div>
</div>
<!-- 发票类型设置 -->
<div class="g-card" style="margin-bottom:16px;">
<div class="fi-section-hd">发票类型设置</div>
<div class="fi-toggle-row">
<button class="g-toggle on" onclick="toggleSwitch(this)"></button>
<span class="fi-toggle-label">电子普通发票</span>
</div>
<div class="fi-toggle-row">
<button class="g-toggle" onclick="toggleSwitch(this)"></button>
<span class="fi-toggle-label">电子专用发票</span>
<span class="fi-toggle-hint">(需先完成税务资质认证)</span>
</div>
</div>
<!-- 自动开票设置 -->
<div class="g-card" style="margin-bottom:16px;">
<div class="fi-section-hd">自动开票设置</div>
<div class="fi-toggle-row">
<button class="g-toggle" onclick="toggleSwitch(this)"></button>
<span class="fi-toggle-label">自动开票</span>
<span class="fi-toggle-hint">开启后,顾客申请发票将自动开具</span>
</div>
<div class="g-divider" style="margin:14px 0;"></div>
<div class="g-form-group" style="max-width:320px;">
<label class="g-form-label">单张发票最大金额</label>
<div style="display:flex;align-items:center;gap:6px;">
<span style="font-size:13px;color:var(--g-text-secondary);">&yen;</span>
<input class="g-input" type="number" value="10000" placeholder="如10000" />
</div>
<span class="g-hint">超过此金额的发票需人工审核后开具</span>
</div>
</div>
<!-- 保存按钮 -->
<div class="fi-save-bar">
<button class="g-btn">重置</button>
<button class="g-btn g-btn-primary">保存设置</button>
</div>
</div>
<script>
function switchFiTab(el) {
var tab = el.getAttribute('data-tab');
el.parentElement.querySelectorAll('.g-seg-item').forEach(function(item) {
item.classList.remove('active');
});
el.classList.add('active');
document.getElementById('fiTabRecords').style.display = tab === 'records' ? '' : 'none';
document.getElementById('fiTabSettings').style.display = tab === 'settings' ? '' : 'none';
}
function toggleSwitch(el) {
el.classList.toggle('on');
}
if (typeof lucide !== 'undefined') { lucide.createIcons(); }
</script>