运营中心
租赁业务总览
快速掌握出租、归还、租金与项目状态
今日出租
{{ todayRentals }}
单
今日归还
{{ todayReturns }}
单
当前日租金
¥{{ formatMoney(todayRentIncome) }}
超期预警
{{ overdueProjects }}
项目
租赁总览
当前筛选:
项目:{{ dashboardFilter.name }}
{{ dashboardFilter.year }}年
{{ dashboardFilter.status }}
租金:{{ dashboardFilter.rentMin || 0 }} - {{ dashboardFilter.rentMax || '∞' }}元
在租吨位:{{ dashboardFilter.weightMin || 0 }} - {{ dashboardFilter.weightMax || '∞' }}吨
🔍
项目总数
{{ formatNum(filteredProjects.length) }}
在租吨位
{{ formatWeight(filteredTotalWeight) }}
每日租金
¥{{ formatMoney(filteredDailyRentTotal || 0) }}
总租金
¥{{ formatMoney(filteredTotalRent || 0) }}
已支付
¥{{ formatMoney(filteredProjects.reduce((sum, p) => sum + (p.total_paid || 0), 0)) }}
进行中
{{ filteredProjects.filter(p => p.status === '进行中').length }}
| 项目名称 | 需方单位 | 起租日期 | 每日租金 | 总租金 | 已支付 | 待归还 | 在租吨位 | 状态 |
|---|---|---|---|---|---|---|---|---|
|
{{ p.name }}
⏱ 已扣{{ p.total_pause_days }}天
|
{{ p.customer_unit || '-' }} | {{ p.start_date || '-' }} | ¥{{ formatMoney(p.daily_rent_total || 0) }} | ¥{{ formatMoney(p.total_rent || 0) }} | ¥{{ formatMoney(p.total_paid || 0) }} | {{ formatNum(p.pending_qty || 0) }} | {{ formatWeight(getProjectInRentWeight(p)) }} | {{ p.status || '进行中' }} |
暂无项目数据
项目列表
| 项目名称 | 需方单位 | 价格表 | 负责人 | 电话 | 起租日期 | 现场吨位 | 总租金 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ p.name }} | {{ p.customer_unit || '-' }} | {{ p.rate_sheet_name || '默认' }} | {{ p.contact_person || '-' }} | {{ p.contact_phone || '-' }} | {{ p.start_date || '-' }} | {{ formatWeight(getProjectInRentWeight(p)) }} | ¥{{ formatMoney(p.total_rent || 0) }} |
|
客户协同
盘扣提料
审核客户提料需求,并直接生成现有出租单
待审核
{{ pickupStatusCount('待审核') + pickupStatusCount('变更待审核') }}
已审核
{{ pickupStatusCount('已审核') }}
部分出租
{{ pickupStatusCount('部分出租') }}
已完成
{{ pickupStatusCount('已完成') }}
客户提料单
共 {{ filteredPickupOrders.length }} 单| 提料单号 | 项目 | 客户 | 使用区域 | 计划日期 | 申请数量 | 已出租 | 本车申请 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ order.pickup_no }} {{ formatDateTime(order.submitted_at || order.created_at) }} |
{{ order.project_name }} | {{ order.requester_name }} {{ order.requester_phone }} |
{{ order.work_area || '-' }} | {{ order.required_date || '-' }} | {{ formatNum(order.requested_quantity) }} | {{ formatNum(order.fulfilled_quantity) }} | {{ formatNum(order.shipment_requested_quantity) }}- | {{ order.status }} | |
| 暂无符合条件的提料单 | |||||||||
提料客户授权
客户在小程序或电脑端使用手机号和授权码登录,只能查看已授权项目。
| 客户 | 手机号 | 授权项目 | 微信绑定 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ user.name }} | {{ user.phone }} | {{ project.name }}- | {{ user.wechat_bound ? '已绑定' : '未绑定' }} | {{ user.status }} | |
| 尚未创建提料客户 | |||||
租赁记录
共 {{ filteredRentals.length }} 条租赁记录
请先选择项目查看租赁记录
| 租赁单号 | 出租日期 | 车次信息 | 操作 |
|---|---|---|---|
| {{ r.rental_no }} | {{ r.start_date }} | {{ r.driver || '-' }} / {{ r.plate_number || '-' }} - |
租赁材料明细:
| 材料名称 | 型号 | 出租数量 | 日租金 | 重量(kg) |
|---|---|---|---|---|
| {{ item.material_name }} | {{ item.material_code }} | {{ formatNum(item.quantity) }} | ¥{{ item.daily_rate }} | {{ formatNum((item.quantity * (item.weight || 0)).toFixed(1)) }} |
暂无租赁记录
租金结算
默认为最后一次数据变动日期,可手动修改
结算单 #{{ settlement.settlement_no }}
盘扣式脚手架租赁结算单
结算单号: {{ settlement.settlement_no }}
项目名称: {{ settlement.project.name }}
项目地址: {{ settlement.project.address }}
联系人: {{ settlement.project.contact_person }} {{ settlement.project.contact_phone }}
结算期间: {{ settlement.period.start_date }} 至 {{ settlement.period.end_date }}
| 材料名称 | 规格 | 出租 | 归还 | 多还 | 待还 | 损坏 | 损坏赔偿 | 丢失赔偿 | 日租金 | 天数 | 租金 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ item.material_name }} | {{ item.spec }} | {{ formatNum(item.rented_qty) }} | {{ formatNum(item.returned_qty) }} | {{ formatNum(item.over_returned_qty || 0) }} | {{ formatNum(item.pending_qty) }} | {{ formatNum(item.damaged_qty || 0) }} | ¥{{ formatMoney(item.damage_fee) }} - | ¥{{ formatMoney(item.lost_fee) }} - | ¥{{ item.daily_rate }} | {{ formatNum(item.days) }} | ¥{{ formatMoney(item.rent_amount || 0) }} |
允许多还(不冲减租金):{{ formatNum(settlement.summary.total_over_returned) }}
应收租金:¥{{ formatMoney(settlement.summary?.total_rent || 0) }}
损坏赔偿:¥{{ formatMoney(settlement.summary?.total_damage_fee || 0) }}
丢失赔偿:¥{{ formatMoney(settlement.summary?.total_lost_fee || 0) }}
应收合计:¥{{ formatMoney(settlement.summary?.total_amount || 0) }}
已收金额:¥{{ formatMoney(settlement.summary?.paid || 0) }}
未结金额:¥{{ formatMoney(settlement.summary?.balance || 0) }}
生成时间: {{ new Date().toLocaleString('zh-CN') }}
付款记录
| 项目 | 金额 | 日期 | 类型 | 备注 |
|---|---|---|---|---|
| {{ p.project_name }} | ¥{{ formatMoney(p.amount) }} | {{ p.payment_date }} | {{ p.payment_type }} | {{ p.remark || '-' }} |
归还记录
共 {{ filteredReturns.length }} 条归还记录
请先选择项目查看归还记录
| 归还单号 | 归还日期 | 归还数量 | 损坏数量 | 赔偿金额 | 操作 |
|---|---|---|---|---|---|
| {{ group.return_no }} | {{ group.return_date }} | {{ group.totalQty }} | {{ group.totalDamaged }} 0 | ¥{{ formatMoney(group.totalDamageFee || 0) }} |
归还材料明细:
| 材料名称 | 型号 | 归还数量 | 损坏数量 | 赔偿金额 |
|---|---|---|---|---|
| {{ item.material_name || item.material_code }} | {{ item.material_code }} | {{ formatNum(item.quantity) }} | {{ formatNum(item.damaged_quantity) }} 0 | ¥{{ formatMoney(item.damage_fee) }} - |
该项目暂无归还记录
💲 租赁价格表
{{ sheet.name }} 🔒
默认
{{ sheet.description || '暂无描述' }}
{{ sheet.material_count }} 种材料
📊 {{ currentYear }}年度租金总览
年租金总额
¥{{ formatMoney(yearlyTotalRent) }}
月均租金
¥{{ formatMoney(yearlyTotalRent / 12) }}
活跃项目
{{ activeProjectCount }}
峰值月租金
¥{{ formatMoney(peakMonthlyRent) }}
年同比
{{ yearGrowth >= 0 ? '+' : '' }}{{ yearGrowth.toFixed(1) }}%
📈 月度走势
¥{{ formatMoneyShort(getMonthRent(idx)) }}
{{ idx + 1 }}月
📋 项目月度明细
| 项目名称 | 年月 | 月度租金 | 环比 |
|---|---|---|---|
| {{ item.project_name }} | {{ item.year }}年{{ item.month }}月 | ¥{{ formatMoney(item.rent || 0) }} | {{ item.change >= 0 ? '↑' : '↓' }}{{ Math.abs(item.change || 0).toFixed(1) }}% |
暂无月度租金数据,请先创建项目和租赁记录
该项目暂无月度租金记录
🏆 项目租金排行榜
| 排名 | 项目名称 | 总租金 | 已收款 | 待收款 | 占用吨位 | 状态 |
|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ p.name }} | ¥{{ formatMoney(p.total_rent || 0) }} | ¥{{ formatMoney(p.total_paid || 0) }} | ¥{{ formatMoney((p.total_rent || 0) - (p.total_paid || 0)) }} | {{ formatWeight(getProjectInRentWeight(p)) }} | {{ p.status || '进行中' }} |
📦 材料周转分析
{{ m.code }}
{{ m.category }}
{{ m.name }}
出租: {{ m.rent_times || 0 }}
在租: {{ m.rented || 0 }}
📥 数据导入
📂
点击或拖拽文件到此处上传
支持 Excel (.xlsx, .xls) 和 CSV 格式
{{ importResult.message }}
错误信息:
{{ err }}
导入说明
✨ 自动识别规则:
• 有「租赁日期」或「发货日期」列 → 租赁记录
• 有「返厂日期」或「归还日期」列 → 归还记录
• 有「材料编码」+「日租金」列 → 材料库
项目导入:项目名称、项目地址、联系人、联系电话、项目类型
租赁记录:项目名称、规格、数量、租赁日期/发货日期、司机、车牌号、运费
归还记录:项目名称、规格、数量、返厂日期/归还日期、司机、车牌号、运费、损坏数量
材料导入:材料编码、材料名称、分类、规格、单位、日租金、押金、重量
💡 提示:租赁导入会自动创建不存在的项目,同名项目自动合并
系统安全与运行中心
集中查看数据同步、备份、安全状态、操作日志和删除留痕
数据库状态
{{ systemStatus.database_integrity === 'ok' ? '正常' : '需检查' }}
物流同步成功
{{ systemStatus.freight_sync?.synced || 0 }}
待处理 {{ systemStatus.freight_sync?.pending || 0 }}
同步失败
{{ systemStatus.freight_sync?.failed || 0 }}
操作日志
{{ systemStatus.audit_count || 0 }}
删除留痕
{{ systemStatus.recycle_count || 0 }}
最近数据库备份
{{ systemStatus.database_backup?.available ? formatDateTime(systemStatus.database_backup.created_at) : '尚未检测到' }}
登录安全
客户连续输错5次将锁定15分钟;旧授权码成功登录后自动升级加密。
客户账号:{{ systemStatus.login_security?.customers || 0 }}当前锁定:{{ systemStatus.login_security?.locked || 0 }}待自动升级授权码:{{ systemStatus.login_security?.legacy_codes_pending_migration || 0 }}
最近操作日志
| 时间 | 操作人 | 方式 | 业务对象 | 访问路径 | 结果 |
|---|---|---|---|---|---|
| {{ formatDateTime(item.created_at) }} | {{ item.actor_type === 'customer' ? '客户:' : '管理员:' }}{{ item.actor_id }} | {{ item.method }} | {{ systemEntityLabel(item.entity_type) }} {{ item.entity_id || '' }} | {{ item.path }} | 成功 |
| 暂无操作记录 | |||||
删除留痕与恢复
删除的项目、出租单和归还单会保存完整快照;数据冲突时系统会拒绝恢复。
| 删除时间 | 类型 | 单号/名称 | 操作人 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ formatDateTime(item.deleted_at) }} | {{ systemEntityLabel(item.entity_type) }} | {{ item.reference_no || item.entity_id }} | {{ item.deleted_by }} | {{ item.restored_at ? '已恢复' : '已删除' }} | {{ formatDateTime(item.restored_at) }} |
| 暂无删除留痕 | |||||