| AWB主单号 | 客户 | 航线 | 货物 | 计费重 | 收入 | 成本 | 毛利 | 毛利率 | 发票 | 状态 | 追踪 |
|---|
| 提单号 | 客户 | 船名/航次 | 装港→卸港 | ETA | 收入 | 毛利率 | 发票 | 状态 | 追踪 |
|---|
| 发票号 | 关联订单 | 客户 | 开票日 | 到期日 | 含税金额 | 已收 | 状态 | 操作 |
|---|
| 客户名称 | 类型 | 负责人 | 本月营收 | 信用额度 | 已用 | 使用率 | 评级 | 操作 |
|---|
| 收货单号 | 收货日期 | 客户 | 关联订单 | 货物名称 | 数量 | 重量(kg) | 库位 | 状态 | 照片 | 操作 |
基本信息
货物信息
📷 货物照片
请先在「新建收货」填写信息,点击「预览收货单」后在此显示
🔐 基于角色的访问控制 (RBAC) · Supabase RLS 行级安全 · 所有操作写入审计日志
⚠ 创建/删除用户需要配置 Service Role Key。
请打开 Supabase → Project Settings → API → service_role,复制后填入文件顶部的 SUPABASE_SERVICE_KEY。
📋 运营操作员:只能看到自己创建/负责的订单和客户,其他人的数据完全隔离。
创建成功后,账号信息将显示在下方,请手动告知对方。
✅ 用户创建成功!请告知对方以下账号信息:
邮箱:
密码:
角色:
网址:https://opac.radairexpress.com
| 功能模块 | 管理员 | 运营 | 财务 |
| 总览仪表盘 | ✅ 全部 | ✅ 自己 | ✅ 全部 |
| 空运/海运/专线 | ✅ 全部 | ✅ 自己 | 👁 只读 |
| 货物追踪 | ✅ | ✅ | ✅ |
| 报关单据 | ✅ | ✅ 自己 | ❌ |
| 发票管理 | ✅ | ❌ | ✅ |
| 财务对账 | ✅ | ❌ | ✅ |
| 利润分析 | ✅ | ❌ | ✅ |
| 多币种汇率 | ✅ | ❌ | ✅ |
| 客户 CRM | ✅ 全部 | ✅ 自己 | ✅ 全部 |
| 用户权限管理 | ✅ | ❌ | ❌ |
| 数据范围 (RLS) |
全部数据 |
仅本人数据 |
全部财务 |
🔑 系统管理员 (Admin)
查看全部数据,管理用户权限,访问所有模块。适合公司负责人/IT管理员。
✈ 运营操作员 (Ops)
只能看到自己负责的订单和客户,数据完全隔离。适合业务员/操作员。
💰 财务人员 (Finance)
查看全部财务数据(发票/对账/利润),不可修改运营订单。适合财务/会计。
📇 客户信息(自动填充)
📞 —
📧 —
💳 信用额度 —
.em-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;opacity:0;pointer-events:none;transition:opacity .25s;display:flex;align-items:center;justify-content:center;padding:20px;}
.em-overlay.open{opacity:1;pointer-events:all;}
.em-panel{background:var(--c0);border-radius:var(--r12);width:100%;max-width:860px;max-height:94vh;display:flex;flex-direction:column;box-shadow:0 32px 80px rgba(0,0,0,.25);transform:translateY(20px) scale(.97);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s;}
.em-overlay.open .em-panel{transform:translateY(0) scale(1);opacity:1;}
.em-hdr{padding:20px 28px 16px;border-bottom:1px solid var(--c3);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.em-hdr-title{font-size:16px;font-weight:700;}
.em-hdr-sub{font-size:12px;color:var(--t3);margin-top:2px;}
.em-close{width:32px;height:32px;border-radius:50%;border:none;background:var(--c2);cursor:pointer;font-size:16px;color:var(--t2);display:flex;align-items:center;justify-content:center;}
.em-close:hover{background:var(--c3);}
.em-body{display:flex;flex:1;overflow:hidden;}
/* 左栏:设置 */
.em-left{width:260px;flex-shrink:0;border-right:1px solid var(--c3);padding:20px;overflow-y:auto;}
.em-section{margin-bottom:20px;}
.em-section-label{font-size:11px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px;}
.em-field{margin-bottom:12px;}
.em-field label{font-size:12px;color:var(--t2);display:block;margin-bottom:4px;font-weight:600;}
.em-input{width:100%;padding:8px 10px;border:1.5px solid var(--c3);border-radius:var(--r6);font-size:13px;font-family:inherit;color:var(--t1);background:var(--c1);}
.em-input:focus{outline:none;border-color:var(--air);}
.em-textarea{width:100%;padding:8px 10px;border:1.5px solid var(--c3);border-radius:var(--r6);font-size:13px;font-family:inherit;color:var(--t1);background:var(--c1);resize:vertical;min-height:70px;}
.em-textarea:focus{outline:none;border-color:var(--air);}
.em-tpl-btn{display:block;width:100%;text-align:left;padding:9px 12px;border:1.5px solid var(--c3);border-radius:var(--r6);font-size:12px;font-weight:600;cursor:pointer;background:var(--c0);color:var(--t2);margin-bottom:6px;font-family:inherit;transition:all .13s;}
.em-tpl-btn:hover{border-color:var(--air);color:var(--air);background:var(--air-l);}
.em-tpl-btn.active{border-color:var(--air);color:var(--air);background:var(--air-l);}
.em-tpl-btn .em-tpl-desc{font-size:10px;font-weight:400;color:var(--t3);display:block;margin-top:2px;}
.em-check-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--c2);font-size:13px;cursor:pointer;}
.em-check-row:last-child{border-bottom:none;}
.em-check-row input{width:15px;height:15px;cursor:pointer;accent-color:var(--air);}
/* 右栏:预览 */
.em-right{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.em-preview-hdr{padding:14px 20px;border-bottom:1px solid var(--c3);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.em-preview-hdr-label{font-size:12px;font-weight:700;color:var(--t2);}
.em-lang-toggle{display:flex;border:1px solid var(--c3);border-radius:6px;overflow:hidden;}
.em-lang-btn{padding:5px 12px;font-size:11px;font-weight:700;cursor:pointer;border:none;background:var(--c0);color:var(--t2);font-family:inherit;}
.em-lang-btn.on{background:var(--t1);color:#fff;}
.em-preview-body{flex:1;overflow-y:auto;padding:20px;}
.em-preview-frame{background:#fff;border:1px solid var(--c3);border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;}
.em-preview-header{background:#1A1A1A;padding:24px 28px;color:#fff;}
.em-preview-logo{font-size:16px;font-weight:800;letter-spacing:-.3px;margin-bottom:2px;}
.em-preview-tagline{font-size:11px;opacity:.6;}
.em-preview-content{padding:28px;}
.em-preview-greeting{font-size:15px;font-weight:700;color:#1A1A1A;margin-bottom:16px;}
.em-preview-body-text{font-size:14px;color:#3A3A3A;line-height:1.8;margin-bottom:20px;}
.em-preview-info-box{background:#F4F3F0;border-radius:8px;padding:16px 20px;margin-bottom:20px;}
.em-preview-info-row{display:flex;padding:6px 0;border-bottom:1px solid #E2E1DD;font-size:13px;}
.em-preview-info-row:last-child{border-bottom:none;}
.em-preview-info-label{color:#5A5955;min-width:100px;font-weight:600;}
.em-preview-info-value{color:#1A1A1A;font-weight:500;}
.em-preview-track-btn{display:block;background:#1A1A1A;color:#fff;text-decoration:none;padding:13px 24px;border-radius:8px;font-size:14px;font-weight:700;text-align:center;margin:20px 0;}
.em-preview-doc-list{margin-bottom:20px;}
.em-preview-doc-item{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#F4F3F0;border-radius:6px;margin-bottom:6px;font-size:13px;color:#1A1A1A;}
.em-preview-footer{background:#F4F3F0;padding:16px 28px;font-size:11px;color:#9A9895;line-height:1.7;border-top:1px solid #E2E1DD;}
.em-footer-bar{padding:16px 20px;border-top:1px solid var(--c3);display:flex;gap:10px;flex-shrink:0;background:var(--c0);}
.em-send-btn{flex:1;padding:12px;background:var(--air);color:#fff;border:none;border-radius:var(--r6);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;}
.em-send-btn:hover{opacity:.9;}
.em-copy-btn{padding:12px 18px;background:var(--c0);color:var(--t1);border:1.5px solid var(--c3);border-radius:var(--r6);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;}
.em-copy-btn:hover{background:var(--c1);}
.em-wechat-btn{padding:12px 18px;background:#07C160;color:#fff;border:none;border-radius:var(--r6);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;}
邮件模板