Files
X-Financial/mobile/design/android-expense-assistant-screens.html

1178 lines
40 KiB
HTML
Raw Permalink Normal View History

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>员工报销助手 Android 界面设计稿</title>
<style>
:root {
--ink: #111827;
--muted: #64748b;
--faint: #94a3b8;
--line: #e2e8f0;
--panel: #ffffff;
--canvas: #f6f7f4;
--warm: #ca8a04;
--warm-soft: #fff7df;
--blue: #1e40af;
--blue-soft: #e8eefc;
--teal: #0f766e;
--teal-soft: #e4f7f3;
--red: #dc2626;
--red-soft: #fee2e2;
--shadow: 0 20px 50px rgba(17, 24, 39, 0.14);
--radius: 8px;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
background:
linear-gradient(180deg, #faf7ef 0, #f6f7f4 360px),
var(--canvas);
color: var(--ink);
font-family: "Source Sans 3", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", sans-serif;
line-height: 1.5;
letter-spacing: 0;
}
.page {
max-width: 1680px;
margin: 0 auto;
padding: 36px 32px 64px;
}
.hero {
display: grid;
grid-template-columns: minmax(0, 1fr) 360px;
gap: 24px;
align-items: stretch;
margin-bottom: 28px;
}
.hero-main,
.hero-side {
border: 1px solid var(--line);
border-radius: 10px;
background: rgba(255, 255, 255, 0.84);
box-shadow: 0 16px 42px rgba(17, 24, 39, 0.08);
}
.hero-main {
padding: 28px;
}
.hero-side {
padding: 22px;
}
.label {
display: inline-flex;
min-height: 28px;
align-items: center;
border: 1px solid #ead28a;
border-radius: 999px;
padding: 3px 10px;
background: var(--warm-soft);
color: #8a5b00;
font-size: 12px;
font-weight: 800;
}
h1 {
max-width: 920px;
margin: 14px 0 10px;
font-family: "Lexend", "Microsoft YaHei UI", sans-serif;
font-size: 34px;
line-height: 1.18;
letter-spacing: 0;
}
.hero p {
max-width: 880px;
margin: 0;
color: var(--muted);
font-size: 15px;
}
.principles {
display: grid;
gap: 10px;
margin-top: 16px;
}
.principle {
display: grid;
grid-template-columns: 86px minmax(0, 1fr);
gap: 10px;
align-items: start;
padding: 11px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #fff;
font-size: 13px;
}
.principle strong {
color: var(--ink);
}
.principle span {
color: var(--muted);
}
.screen-grid {
display: grid;
grid-template-columns: repeat(5, minmax(300px, 1fr));
gap: 26px;
align-items: start;
}
.screen-card {
display: grid;
gap: 12px;
}
.screen-meta {
min-height: 92px;
padding: 14px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #fff;
}
.screen-meta h2 {
margin: 0 0 6px;
font-size: 17px;
font-family: "Lexend", "Microsoft YaHei UI", sans-serif;
}
.screen-meta p {
margin: 0;
color: var(--muted);
font-size: 13px;
}
.phone {
width: 300px;
height: 660px;
margin: 0 auto;
padding: 10px;
border-radius: 28px;
background: #111827;
box-shadow: var(--shadow);
}
.glass {
position: relative;
overflow: hidden;
width: 100%;
height: 100%;
border-radius: 22px;
background: #f8fafc;
}
.status {
display: flex;
justify-content: space-between;
align-items: center;
height: 28px;
padding: 0 16px;
color: var(--ink);
font-size: 11px;
font-weight: 800;
}
.system-icons {
display: flex;
gap: 5px;
align-items: center;
}
.signal,
.wifi,
.battery {
display: inline-block;
border: 1.7px solid var(--ink);
}
.signal {
width: 12px;
height: 10px;
border-top: 0;
border-left: 0;
transform: skew(-8deg);
}
.wifi {
width: 12px;
height: 8px;
border-bottom: 0;
border-left-color: transparent;
border-right-color: transparent;
border-radius: 12px 12px 0 0;
}
.battery {
width: 18px;
height: 10px;
border-radius: 2px;
background: linear-gradient(90deg, var(--ink) 65%, transparent 65%);
}
.app {
height: calc(100% - 28px);
display: flex;
flex-direction: column;
background: #f8fafc;
}
.content {
flex: 1;
overflow: hidden;
padding: 12px 14px 86px;
}
.content.no-tab {
padding-bottom: 18px;
}
.topbar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12px;
}
.top-title {
font-size: 18px;
font-weight: 900;
font-family: "Lexend", "Microsoft YaHei UI", sans-serif;
}
.small-action {
min-width: 34px;
height: 34px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #fff;
color: var(--muted);
font-size: 11px;
font-weight: 800;
display: grid;
place-items: center;
}
.brand-block {
padding: 18px 0 14px;
}
.brand-row {
display: flex;
align-items: center;
gap: 9px;
margin-bottom: 18px;
}
.brand-mark {
width: 34px;
height: 34px;
border-radius: 9px;
background: var(--ink);
color: #fff;
display: grid;
place-items: center;
font-weight: 900;
font-size: 12px;
}
.brand-name {
font-size: 16px;
font-weight: 900;
}
.headline {
font-family: "Lexend", "Microsoft YaHei UI", sans-serif;
font-size: 26px;
line-height: 1.18;
font-weight: 900;
margin: 0 0 8px;
}
.copy {
margin: 0;
color: var(--muted);
font-size: 13px;
line-height: 1.48;
}
.card {
border: 1px solid var(--line);
border-radius: var(--radius);
background: var(--panel);
padding: 12px;
box-shadow: 0 8px 18px rgba(17, 24, 39, 0.04);
}
.card + .card,
.field + .field,
.row + .row {
margin-top: 9px;
}
.card-title {
margin: 0 0 8px;
font-size: 14px;
font-weight: 900;
}
.muted {
color: var(--muted);
font-size: 12px;
}
.btn {
min-height: 44px;
border: 1px solid transparent;
border-radius: var(--radius);
padding: 10px 12px;
background: var(--warm);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
font-size: 14px;
font-weight: 900;
}
.btn.secondary {
background: #fff;
border-color: var(--line);
color: var(--ink);
}
.btn.blue {
background: var(--blue);
}
.btn.danger {
background: #fff;
border-color: #fecaca;
color: var(--red);
}
.btn-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 9px;
}
.field {
display: grid;
gap: 5px;
padding: 10px 0;
border-bottom: 1px solid var(--line);
}
.field:last-child {
border-bottom: 0;
}
.field label {
color: var(--muted);
font-size: 11px;
font-weight: 800;
}
.field-value {
display: flex;
justify-content: space-between;
align-items: center;
min-height: 22px;
color: var(--ink);
font-size: 14px;
font-weight: 800;
}
.placeholder {
color: var(--faint);
font-weight: 700;
}
.metric-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 9px;
margin: 13px 0;
}
.metric {
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #fff;
}
.metric strong {
display: block;
font-size: 20px;
line-height: 1;
}
.metric span {
color: var(--muted);
font-size: 11px;
font-weight: 800;
}
.quick-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 9px;
margin-bottom: 12px;
}
.quick {
min-height: 86px;
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #fff;
display: grid;
align-content: space-between;
}
.quick .line-icon {
margin-bottom: 6px;
}
.quick strong {
display: block;
font-size: 14px;
}
.quick span {
color: var(--muted);
font-size: 11px;
font-weight: 700;
}
.line-icon {
width: 24px;
height: 24px;
display: inline-grid;
place-items: center;
color: var(--ink);
}
.line-icon svg {
width: 22px;
height: 22px;
stroke: currentColor;
stroke-width: 2;
fill: none;
stroke-linecap: round;
stroke-linejoin: round;
}
.hero-panel {
border: 1px solid #ead28a;
border-radius: var(--radius);
background: linear-gradient(135deg, #fff, var(--warm-soft));
padding: 13px;
margin-bottom: 12px;
}
.hero-panel strong {
display: block;
font-size: 16px;
line-height: 1.25;
margin-bottom: 7px;
}
.list-item {
display: flex;
gap: 10px;
align-items: center;
padding: 11px 0;
border-bottom: 1px solid var(--line);
}
.list-item:last-child {
border-bottom: 0;
}
.avatar {
width: 38px;
height: 38px;
flex: none;
border-radius: var(--radius);
background: var(--blue-soft);
display: grid;
place-items: center;
color: var(--blue);
font-weight: 900;
font-size: 12px;
}
.avatar.teal {
background: var(--teal-soft);
color: var(--teal);
}
.avatar.warm {
background: var(--warm-soft);
color: #8a5b00;
}
.item-main {
min-width: 0;
flex: 1;
}
.item-title {
font-size: 14px;
font-weight: 900;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.item-sub {
color: var(--muted);
font-size: 11px;
margin-top: 2px;
}
.amount {
font-size: 15px;
font-weight: 900;
}
.chip {
display: inline-flex;
min-height: 24px;
align-items: center;
border-radius: 999px;
padding: 2px 8px;
background: var(--blue-soft);
color: var(--blue);
font-size: 11px;
font-weight: 900;
}
.chip.warm {
background: var(--warm-soft);
color: #8a5b00;
}
.chip.teal {
background: var(--teal-soft);
color: var(--teal);
}
.chip.red {
background: var(--red-soft);
color: var(--red);
}
.bottom-nav {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 70px;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2px;
border-top: 1px solid var(--line);
background: rgba(255, 255, 255, 0.96);
padding: 8px 8px 10px;
}
.nav-item {
display: grid;
place-items: center;
gap: 3px;
color: var(--muted);
font-size: 10px;
font-weight: 900;
}
.nav-item.active {
color: var(--warm);
}
.nav-item .line-icon {
width: 22px;
height: 22px;
}
.tab-row {
display: flex;
gap: 6px;
margin-bottom: 12px;
overflow: hidden;
}
.tab {
min-height: 32px;
display: inline-flex;
align-items: center;
border: 1px solid var(--line);
border-radius: 999px;
padding: 4px 10px;
background: #fff;
color: var(--muted);
font-size: 12px;
font-weight: 900;
white-space: nowrap;
}
.tab.active {
border-color: #ead28a;
background: var(--warm-soft);
color: #8a5b00;
}
.camera-box {
position: relative;
height: 240px;
border-radius: var(--radius);
background:
linear-gradient(90deg, rgba(255,255,255,0.14) 1px, transparent 1px),
linear-gradient(rgba(255,255,255,0.14) 1px, transparent 1px),
#101827;
background-size: 34px 34px;
overflow: hidden;
border: 1px solid #0f172a;
color: #fff;
}
.scan-frame {
position: absolute;
left: 32px;
right: 32px;
top: 54px;
height: 130px;
border: 2px solid #f8d873;
border-radius: 6px;
}
.scan-frame::after {
content: "";
position: absolute;
left: 12px;
right: 12px;
top: 62px;
height: 2px;
background: #f8d873;
box-shadow: 0 0 12px #f8d873;
}
.camera-copy {
position: absolute;
left: 0;
right: 0;
bottom: 18px;
text-align: center;
font-size: 12px;
font-weight: 800;
}
.shutter {
width: 56px;
height: 56px;
border-radius: 999px;
border: 6px solid #fff;
background: var(--warm);
margin: 14px auto 0;
box-shadow: 0 8px 18px rgba(17, 24, 39, 0.2);
}
.receipt-thumb-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.receipt-thumb {
height: 70px;
border: 1px solid var(--line);
border-radius: 6px;
background:
linear-gradient(135deg, #fff 0, #fff 48%, #f8fafc 48%, #f8fafc 100%);
display: grid;
place-items: center;
color: var(--muted);
font-size: 10px;
font-weight: 800;
}
.timeline {
position: relative;
display: grid;
gap: 0;
padding-left: 20px;
}
.timeline::before {
content: "";
position: absolute;
left: 7px;
top: 10px;
bottom: 14px;
width: 2px;
background: var(--line);
}
.step {
position: relative;
padding: 0 0 15px;
}
.step::before {
content: "";
position: absolute;
left: -19px;
top: 4px;
width: 12px;
height: 12px;
border-radius: 999px;
background: #fff;
border: 2px solid var(--line);
}
.step.done::before {
background: var(--teal);
border-color: var(--teal);
}
.step.current::before {
background: var(--warm);
border-color: var(--warm);
}
.step strong {
display: block;
font-size: 13px;
}
.step span {
color: var(--muted);
font-size: 11px;
}
.fixed-action {
position: absolute;
left: 14px;
right: 14px;
bottom: 82px;
display: grid;
gap: 8px;
background: linear-gradient(180deg, rgba(248,250,252,0), #f8fafc 25%);
padding-top: 16px;
}
.approval-bar {
grid-template-columns: 1fr 1fr 1.2fr;
}
.summary-row {
display: flex;
justify-content: space-between;
gap: 12px;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid var(--line);
font-size: 13px;
}
.summary-row:last-child {
border-bottom: 0;
}
.summary-row span {
color: var(--muted);
}
.summary-row strong {
text-align: right;
}
.amount-total {
font-size: 24px;
font-weight: 900;
font-family: "Lexend", "Microsoft YaHei UI", sans-serif;
}
@media (max-width: 1560px) {
.screen-grid {
grid-template-columns: repeat(4, minmax(300px, 1fr));
}
}
@media (max-width: 1280px) {
.screen-grid {
grid-template-columns: repeat(3, minmax(300px, 1fr));
}
}
@media (max-width: 980px) {
.hero {
grid-template-columns: 1fr;
}
.screen-grid {
grid-template-columns: repeat(2, minmax(300px, 1fr));
}
}
@media (max-width: 680px) {
.page {
padding: 22px 12px 40px;
}
.screen-grid {
grid-template-columns: 1fr;
}
.phone {
width: min(300px, 100%);
}
h1 {
font-size: 28px;
}
}
</style>
</head>
<body>
<svg width="0" height="0" style="position:absolute">
<symbol id="i-home" viewBox="0 0 24 24"><path d="M4 11.5 12 4l8 7.5"/><path d="M6.5 10.5V20h5v-5h3v5h5v-9.5"/></symbol>
<symbol id="i-doc" viewBox="0 0 24 24"><path d="M7 3h7l5 5v13H7z"/><path d="M14 3v5h5"/><path d="M9.5 13h7"/><path d="M9.5 17h5"/></symbol>
<symbol id="i-camera" viewBox="0 0 24 24"><path d="M5 7h3l1.5-2h5L16 7h3a2 2 0 0 1 2 2v10H3V9a2 2 0 0 1 2-2z"/><circle cx="12" cy="14" r="3.5"/></symbol>
<symbol id="i-user" viewBox="0 0 24 24"><circle cx="12" cy="8" r="4"/><path d="M4 21c1.6-4 4.2-6 8-6s6.4 2 8 6"/></symbol>
<symbol id="i-plane" viewBox="0 0 24 24"><path d="M3 11.5 21 4l-7.5 18-3-7.5z"/><path d="m10.5 14.5 5-5"/></symbol>
<symbol id="i-check" viewBox="0 0 24 24"><path d="m5 12 4 4L19 6"/></symbol>
<symbol id="i-money" viewBox="0 0 24 24"><path d="M4 7h16v12H4z"/><path d="M8 11h5a2 2 0 0 1 0 4H8"/><path d="M10 9v8"/></symbol>
<symbol id="i-approve" viewBox="0 0 24 24"><path d="M12 21s8-4 8-11V5l-8-3-8 3v5c0 7 8 11 8 11z"/><path d="m8.5 11.5 2.5 2.5 5-5"/></symbol>
</svg>
<main class="page">
<section class="hero">
<div class="hero-main">
<span class="label">Android-first UI proposal</span>
<h1>员工报销助手:面向普通员工的简洁移动报销应用设计稿</h1>
<p>
本稿舍弃旧版浅绿设计,改为低干扰的企业工具界面。核心路径是:
申请出差、记一笔、拍票据、提交报销、查看进度、移动审批。界面优先服务员工快速完成动作。
</p>
</div>
<div class="hero-side">
<span class="label">设计原则</span>
<div class="principles">
<div class="principle"><strong>单屏单目标</strong><span>每个页面只突出一个主操作,减少移动端误触。</span></div>
<div class="principle"><strong>先记账后报销</strong><span>员工可以随手记费用,后续合并提交申请。</span></div>
<div class="principle"><strong>拍照即暂存</strong><span>拍票据先识别和预览,不默认创建正式报销单。</span></div>
</div>
</div>
</section>
<section class="screen-grid">
<article class="screen-card">
<div class="screen-meta">
<h2>01 登录与身份确认</h2>
<p>进入 App 后确认当前员工身份,后续请求带用户上下文。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content no-tab">
<div class="brand-block">
<div class="brand-row"><div class="brand-mark">XF</div><div><div class="brand-name">X-Financial</div><div class="muted">员工报销助手</div></div></div>
<h3 class="headline">用手机完成报销,不再攒票据。</h3>
<p class="copy">申请出差、记账、拍票据、查看审批进度,都在一个入口完成。</p>
</div>
<div class="card">
<div class="field"><label>账号</label><div class="field-value">zhangsan</div></div>
<div class="field"><label>部门</label><div class="field-value">销售部</div></div>
<div class="field"><label>角色</label><div class="field-value">员工 / 可发起报销</div></div>
</div>
<div style="height:14px"></div>
<div class="btn">进入报销助手</div>
<div style="height:9px"></div>
<div class="btn secondary">切换账号</div>
</div></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>02 首页工作台</h2>
<p>首页只放员工最高频动作:申请出差、记账、拍票据、看进度。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div><div class="muted">上午好,张三</div><div class="top-title">报销助手</div></div><div class="small-action">消息</div></div>
<div class="hero-panel">
<strong>今天先处理哪件事?</strong>
<p class="copy">可先记账和拍票据,月底再合并提交。</p>
</div>
<div class="quick-grid">
<div class="quick"><span class="line-icon"><svg><use href="#i-plane"/></svg></span><div><strong>申请出差</strong><span>目的地与预算</span></div></div>
<div class="quick"><span class="line-icon"><svg><use href="#i-money"/></svg></span><div><strong>记一笔</strong><span>先记录费用</span></div></div>
<div class="quick"><span class="line-icon"><svg><use href="#i-camera"/></svg></span><div><strong>拍票据</strong><span>识别发票小票</span></div></div>
<div class="quick"><span class="line-icon"><svg><use href="#i-doc"/></svg></span><div><strong>看进度</strong><span>3 单审批中</span></div></div>
</div>
<div class="card">
<div class="card-title">最近单据</div>
<div class="list-item"><div class="avatar teal"></div><div class="item-main"><div class="item-title">上海客户拜访</div><div class="item-sub">REQ-2026-0422 · 主管审批中</div></div><div class="amount">¥3,280</div></div>
<div class="list-item"><div class="avatar warm"></div><div class="item-main"><div class="item-title">客户招待费</div><div class="item-sub">待补充同行人员</div></div><span class="chip warm">待补</span></div>
</div>
</div><nav class="bottom-nav">
<div class="nav-item active"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div>
<div class="nav-item"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div>
<div class="nav-item"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div>
<div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>03 出差申请</h2>
<p>员工先提交出差计划,行程和预算进入后续报销上下文。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">申请出差</div><div class="small-action">草稿</div></div>
<div class="card">
<div class="field"><label>出差事由</label><div class="field-value">上海客户拜访</div></div>
<div class="field"><label>目的地</label><div class="field-value">上海市 <span class="muted">更改</span></div></div>
<div class="field"><label>日期</label><div class="field-value">06-12 至 06-14</div></div>
<div class="field"><label>客户 / 项目</label><div class="field-value">Northstar 项目</div></div>
<div class="field"><label>同行人员</label><div class="field-value">李四、王五</div></div>
</div>
<div class="metric-grid">
<div class="metric"><strong>3 天</strong><span>预计行程</span></div>
<div class="metric"><strong>¥2,600</strong><span>预算合计</span></div>
</div>
<div class="card">
<div class="card-title">预算明细</div>
<div class="summary-row"><span>交通</span><strong>¥900</strong></div>
<div class="summary-row"><span>住宿</span><strong>¥1,200</strong></div>
<div class="summary-row"><span>餐补</span><strong>¥500</strong></div>
</div>
</div><div class="fixed-action"><div class="btn">提交出差申请</div></div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>04 记一笔费用</h2>
<p>随手记录费用,允许暂不上传票据,后续可补拍。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">记一笔</div><div class="small-action">保存</div></div>
<div class="card">
<div class="field"><label>金额</label><div class="field-value" style="font-size:28px">¥ 320.00</div></div>
<div class="field"><label>费用类型</label><div class="field-value">业务招待费 <span class="muted">选择</span></div></div>
<div class="field"><label>发生时间</label><div class="field-value">今天 18:30</div></div>
<div class="field"><label>商户</label><div class="field-value">海悦餐厅</div></div>
<div class="field"><label>说明</label><div class="field-value"><span class="placeholder">请输入招待对象与事由</span></div></div>
</div>
<div class="card">
<div class="card-title">票据</div>
<div class="btn secondary"><span class="line-icon"><svg><use href="#i-camera"/></svg></span>拍照或上传票据</div>
</div>
</div><div class="fixed-action"><div class="btn">保存这笔费用</div></div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>05 拍照上传票据</h2>
<p>移动端核心能力。取景框明确提示票据位置,底部保留相册入口。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content no-tab">
<div class="topbar"><div class="small-action">关闭</div><div class="top-title">拍票据</div><div class="small-action">闪光</div></div>
<div class="camera-box">
<div class="scan-frame"></div>
<div class="camera-copy">将发票或小票放入框内,保持文字清晰</div>
</div>
<div class="shutter"></div>
<div style="height:12px"></div>
<div class="btn-row">
<div class="btn secondary">从相册选择</div>
<div class="btn secondary">批量上传</div>
</div>
<div style="height:12px"></div>
<div class="card">
<div class="card-title">上传规则</div>
<p class="copy">支持发票、小票、行程单。单张不超过 20MB。</p>
</div>
</div></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>06 票据识别确认</h2>
<p>识别结果先展示给员工确认,不直接写入正式报销单。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">识别结果</div><div class="small-action">重识别</div></div>
<div class="receipt-thumb-row">
<div class="receipt-thumb">出租车票</div>
<div class="receipt-thumb">餐饮小票</div>
<div class="receipt-thumb">酒店发票</div>
</div>
<div style="height:10px"></div>
<div class="card">
<div class="card-title">AI 建议分类</div>
<div class="list-item"><div class="avatar teal"></div><div class="item-main"><div class="item-title">市内交通费</div><div class="item-sub">出租车票 · 置信度 92%</div></div><div class="amount">¥86</div></div>
<div class="list-item"><div class="avatar warm"></div><div class="item-main"><div class="item-title">业务招待费</div><div class="item-sub">餐饮小票 · 待补客户名称</div></div><div class="amount">¥320</div></div>
<div class="list-item"><div class="avatar"></div><div class="item-main"><div class="item-title">住宿费</div><div class="item-sub">酒店发票 · 已识别</div></div><div class="amount">¥900</div></div>
</div>
<div class="card">
<div class="card-title">需补充</div>
<span class="chip warm">业务招待对象</span>
<span class="chip warm" style="margin-left:5px">同行人员</span>
</div>
</div><div class="fixed-action"><div class="btn">确认并加入记账</div></div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>07 提交报销申请</h2>
<p>把记账项合并成报销申请,提交前展示缺失项和风险提示。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">提交报销</div><div class="small-action">草稿</div></div>
<div class="card">
<div class="summary-row"><span>报销类型</span><strong>差旅报销</strong></div>
<div class="summary-row"><span>关联出差</span><strong>上海客户拜访</strong></div>
<div class="summary-row"><span>费用条目</span><strong>5 项</strong></div>
<div class="summary-row"><span>附件票据</span><strong>5 张</strong></div>
<div class="summary-row"><span>合计金额</span><strong class="amount-total">¥3,280</strong></div>
</div>
<div class="card">
<div class="card-title">提交前检查</div>
<div class="list-item"><div class="avatar teal"><span class="line-icon"><svg><use href="#i-check"/></svg></span></div><div class="item-main"><div class="item-title">发票金额与明细一致</div><div class="item-sub">已通过</div></div><span class="chip teal">正常</span></div>
<div class="list-item"><div class="avatar warm">!</div><div class="item-main"><div class="item-title">餐费需补充同行人员</div><div class="item-sub">提交后可能被退回</div></div><span class="chip warm">需补</span></div>
</div>
</div><div class="fixed-action"><div class="btn-row"><div class="btn secondary">保存草稿</div><div class="btn">提交审批</div></div></div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>08 单据进度列表</h2>
<p>员工查看全部单据,按草稿、审批中、待补充、已完成筛选。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="top-title">单据进度</div><div class="small-action">筛选</div></div>
<div class="tab-row"><span class="tab active">全部</span><span class="tab">草稿</span><span class="tab">审批中</span><span class="tab">待补</span></div>
<div class="card">
<div class="list-item"><div class="avatar teal"></div><div class="item-main"><div class="item-title">上海客户拜访</div><div class="item-sub">REQ-2026-0422 · 财务复核</div></div><span class="chip">审批中</span></div>
<div class="list-item"><div class="avatar warm"></div><div class="item-main"><div class="item-title">客户招待费</div><div class="item-sub">REQ-2026-0458 · 部门经理退回</div></div><span class="chip warm">待补</span></div>
<div class="list-item"><div class="avatar"></div><div class="item-main"><div class="item-title">办公采购</div><div class="item-sub">REQ-2026-0431 · 已打款</div></div><span class="chip teal">完成</span></div>
<div class="list-item"><div class="avatar"></div><div class="item-main"><div class="item-title">市内交通</div><div class="item-sub">草稿 · 2 张票据</div></div><span class="chip warm">草稿</span></div>
</div>
</div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>09 单据进度详情</h2>
<p>突出当前节点和下一步动作,员工知道为什么卡住、该补什么。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">报销详情</div><div class="small-action">更多</div></div>
<div class="hero-panel">
<span class="chip">财务复核中</span>
<div style="height:8px"></div>
<strong>上海客户拜访</strong>
<p class="copy">REQ-2026-0422 · 合计 ¥3,280</p>
</div>
<div class="card">
<div class="card-title">审批进度</div>
<div class="timeline">
<div class="step done"><strong>已提交</strong><span>张三 · 06-02 10:20</span></div>
<div class="step done"><strong>主管审批通过</strong><span>李四 · 06-02 15:08</span></div>
<div class="step current"><strong>财务复核中</strong><span>预计今天 18:00 前处理</span></div>
<div class="step"><strong>待打款</strong><span>复核通过后自动进入</span></div>
</div>
</div>
<div class="card">
<div class="card-title">费用明细</div>
<div class="summary-row"><span>交通</span><strong>¥860</strong></div>
<div class="summary-row"><span>住宿</span><strong>¥900</strong></div>
<div class="summary-row"><span>餐饮</span><strong>¥520</strong></div>
</div>
</div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-doc"/></svg></span>单据</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
<article class="screen-card">
<div class="screen-meta">
<h2>10 移动审批详情</h2>
<p>审批人直接看到金额、风险、票据和流程,底部固定审批动作。</p>
</div>
<div class="phone"><div class="glass">
<div class="status"><span>9:41</span><span class="system-icons"><i class="signal"></i><i class="wifi"></i><i class="battery"></i></span></div>
<div class="app"><div class="content">
<div class="topbar"><div class="small-action">返回</div><div class="top-title">审批详情</div><div class="small-action">转交</div></div>
<div class="hero-panel">
<span class="chip warm">待我审批</span>
<div style="height:8px"></div>
<strong>差旅报销 · 李四</strong>
<p class="copy">销售部 · 上海客户拜访 · ¥3,280</p>
</div>
<div class="card">
<div class="card-title">AI 风控提示</div>
<div class="list-item"><div class="avatar warm">!</div><div class="item-main"><div class="item-title">酒店费用接近标准上限</div><div class="item-sub">建议关注住宿天数和城市标准</div></div><span class="chip warm">关注</span></div>
<div class="list-item"><div class="avatar teal"><span class="line-icon"><svg><use href="#i-check"/></svg></span></div><div class="item-main"><div class="item-title">未发现重复报销风险</div><div class="item-sub">票据号码未重复</div></div><span class="chip teal">正常</span></div>
</div>
<div class="card">
<div class="card-title">审批意见</div>
<div class="field"><label>输入意见</label><div class="field-value"><span class="placeholder">选填,驳回时建议填写原因</span></div></div>
</div>
</div><div class="fixed-action"><div class="btn-row approval-bar"><div class="btn danger">驳回</div><div class="btn secondary">转交</div><div class="btn blue">同意</div></div></div><nav class="bottom-nav">
<div class="nav-item"><span class="line-icon"><svg><use href="#i-home"/></svg></span>首页</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-money"/></svg></span>记账</div><div class="nav-item active"><span class="line-icon"><svg><use href="#i-approve"/></svg></span>审批</div><div class="nav-item"><span class="line-icon"><svg><use href="#i-user"/></svg></span>我的</div>
</nav></div>
</div></div>
</article>
</section>
</main>
</body>
</html>