钧发租赁 {{ simpleGroup ? simpleGroup.label + ' / ' : '' }}{{ simplePageLabel }}
{{ todayDate }}
本页保留了未提交的{{ simpleEntryReturn.kind === 'rental' ? '出租' : '归还' }}草稿。
{{ workspaceError }}
起租日期{{ overviewDetailProject.start_date || '未设置' }}
停租日期{{ overviewDetailProject.stop_date || '未停租' }}
扣除天数{{ overviewDetailProject.total_pause_days || 0 }} 天
项目状态
| 名称 |
型号 |
租赁 |
归还 |
损坏 |
待还 |
重量(kg) |
| {{ m.name }} |
{{ m.code }} |
{{ formatNum(m.rented_qty) }} |
{{ formatNum(m.returned_qty) }} |
{{ formatNum(m.damaged_qty) }} |
{{ formatNum(m.pending_qty) }} |
{{ formatNum(((m.pending_qty || 0) * (m.weight || 0)).toFixed(1)) }} |
| 暂无符合条件的材料 |
| 合计 |
{{ formatNum(overviewDetailProject.total_rented_qty || 0) }} |
{{ formatNum(overviewDetailProject.total_returned_qty || 0) }} |
{{ formatNum(overviewMaterials.reduce((s,m) => s + (m.damaged_qty || 0), 0)) }} |
{{ formatNum(overviewDetailProject.pending_qty || 0) }} |
{{ formatNum(getProjectInRentWeight(overviewDetailProject).toFixed(1)) }} |
显示 {{ workspaceFilteredMaterials.length }} / {{ overviewMaterials.length }} 种材料。合计保持项目全部材料口径,不随搜索变化。重量单位:kg。
{{ order.pickup_no }}计划日期:{{ order.required_date || '未填写' }}
{{ order.status }}
暂无提料计划
{{ r.rental_no }}{{ r.start_date }} · {{ r.driver || '司机未填写' }} · {{ r.plate_number || '车牌未填写' }}
发货
暂无发货记录
{{ r.return_no }}{{ r.return_date }} · {{ r.driver || '司机未填写' }} · {{ r.plate_number || '车牌未填写' }}
返货
暂无返货记录
累计租金沿用租赁总览的租金口径;正式结算请进入项目结算。
¥{{ formatMoney(overviewDetailProject.total_rent || 0) }}
{{ p.payment_type }}{{ p.payment_date }} · {{ p.remark || '无备注' }}
¥{{ formatMoney(p.amount) }}
工作台
今天的租赁业务
待办处理、项目进度与经营数据
{{ dashboardTodoLoading ? '正在更新…' : (dashboardTodoError || (dashboardTodoUpdatedAt ? `更新于 ${dashboardTodoUpdatedAt}` : '数据已就绪')) }}
今日出租
{{ todayRentals }}
单
今日归还
{{ todayReturns }}
单
当前日租金
¥{{ formatMoney(todayRentIncome) }}
当前筛选:
项目:{{ 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 || '进行中' }} |
暂无项目数据
客户协同
盘扣提料
审核客户提料需求,并直接生成现有出租单
待审核
{{ pickupStatusCount('待审核') + pickupStatusCount('变更待审核') }}
已审核
{{ pickupStatusCount('已审核') }}
部分出租
{{ pickupStatusCount('部分出租') }}
已完成
{{ pickupStatusCount('已完成') }}
| 提料单号 | 项目 | 客户 | 使用区域 |
计划日期 | 申请数量 |
已出租 | 本车申请 | 状态 | 操作 |
| {{ 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.unit || materialUnit(item.material_code) }} |
¥{{ item.daily_rate }} |
{{ formatNum((item.quantity * (item.weight || 0)).toFixed(1)) }} |
暂无租赁记录
正在读取结算数据…
{{ settlementError }}
结算确认与历史版本
未归还只列为待还;人工确认丢失后才计赔偿。确认结算会保存结果,修改历史单据前须先撤销确认。
历史版本为确认时的快照,不随后续数据变化。{{ settlement.saved_version?.revoke_reason ? '撤销原因:' + settlement.saved_version.revoke_reason : '' }}
盘扣式脚手架租赁结算单
结算单号: {{ 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.confirmed_lost_qty }} 件)
未计赔偿
|
¥{{ item.daily_rate }} |
{{ formatNum(item.days) }} |
¥{{ formatMoney(item.rent_amount || 0) }} |
超还待核对(不抵扣后续发货):{{ formatNum(settlement.summary.total_over_returned) }}
应收租金:¥{{ formatMoney(settlement.summary?.total_rent || 0) }}
损坏待核价(不计入应收,不能确认结算):{{ formatNum(settlement.summary.unpriced_damaged_qty) }} 件
损坏赔偿:¥{{ 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) }}
{{ settlementVersionId ? '确认时项目累计已收:' : '项目累计已收:' }}¥{{ formatMoney(settlement.summary?.paid_all_time || 0) }}
预计待确认赔偿(不计应收):¥{{ formatMoney(settlement.summary?.estimated_lost_fee || 0) }}
未结金额:¥{{ formatMoney(settlement.summary?.balance || 0) }}
{{ settlement.saved_version ? ('确认时间: ' + settlement.saved_version.confirmed_at) : '未确认试算;请核对后确认留存' }}
赔偿确认记录
| 型号 | 生效日 | 累计确认量 | 单价 | 原因 | 操作人 |
|---|
| {{ record.material_code }} | {{ record.effective_date }} | {{ record.quantity }} | {{ Number(record.unit_price).toFixed(2) }} | {{ record.reason }} | {{ record.actor }} |
| 项目 |
金额 |
日期 |
类型 |
备注 |
| {{ 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) }} {{ item.unit || materialUnit(item.material_code) }} |
{{ formatNum(item.damaged_quantity) }}
0
|
¥{{ formatMoney(item.damage_fee) }}
-
|
该项目暂无归还记录
{{ sheet.description || '暂无描述' }}
{{ sheet.material_count }} 种材料
年租金总额
¥{{ 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).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 }}
DATA IMPORT
数据导入
上传 Excel / CSV,自动识别业务类型并写入当前库;下方展示当前库规模概览。
当前库规模
内存已加载数据
{{ b.label }}
{{ b.value }}
暂无概览数据,点击刷新或先加载主数据
统计口径
/api/statistics
项目数{{ stats.projectCount ?? projects.length }}
进行中{{ stats.activeProjects ?? '—' }}
在租重量(kg){{ stats.totalWeight ?? '—' }}
累计租金{{ stats.totalRent != null ? ('¥' + formatMoney(stats.totalRent)) : '—' }}
上传仅预检。核对新增、更正、保持和系统独有记录后,点击确认才保存。错误会阻止整批导入。
不同业务使用不同固定记录编号。关联旧账请填写系统明细编号;遇到同日未关联旧记录但确为新业务,在“导入处理”列填写“新增”。系统不会按同量、同额自动合并。
📂
点击或拖拽文件到此处上传
支持 Excel (.xlsx, .xls) 和 CSV · 上传到本系统预检,最多10MB / 5000行
正在处理,请勿重复上传…
{{ safeImport.message }}{{ safeImport.warning }}
本批已保存,不会重复导入。
新增 {{ safeImport.added || 0 }} · 更正 {{ safeImport.updated || 0 }} · 保持 {{ safeImport.unchanged || 0 }} · 系统独有保留 {{ safeImport.system_only?.length || 0 }}
{{ error }}
| 来源行 / 记录编号 | 处理 | 类型 / 日期 / 型号 | 原数量 → 新数量 | 原损坏 → 新损坏 / 单价 |
|---|
{{ r.project_name }} · {{ r.where }} {{ r.source_id }} | {{ ({add:'新增',update:'更正',unchanged:'保持'})[r.action] }} | {{ ({rentals:'出租',returns:'归还',payments:'收款'})[r.kind] }} / {{ r.date }} / {{ r.code || '收款' }} | {{ r.before?.quantity ?? '无' }} → {{ r.quantity }} | {{ r.before?.extra ?? '无' }} → {{ r.damaged_quantity }} / {{ r.damage_unit_price==='preserve' ? '保留确认价' : (r.damage_unit_price ?? '待核价') }}租金 {{ r.daily_rate }} 元/单位/天 |
文件缺少、仍保留的系统记录(可复制系统明细编号建立关联)
| {{ r.kind }} / {{ r.date }} / {{ r.code }} | {{ r.quantity }} | {{ r.id }} |
{{ importResult.message }}
本次导入结果
{{ importResult.type || 'result' }}
{{ b.label }}
{{ b.value }}
出租表与归还表分别使用明确的出租日期、归还日期;收款使用付款日期。型号、单位、项目须准确匹配,不猜测、不自动新建项目或材料。
建议每条明细固定填写「记录编号」,每车填写「车次编号」,后续更正沿用原编号。首次与历史记录对比有歧义时,填写「系统明细编号」明确对应;不要改编号重复新增。
数量最多3位小数,不会自动取整。同项目同型号租金沿用项目统一历史价;文件中的租金不覆盖。旧损坏价保留;新损坏带入当前项目维修价,免收填0。
归还纠错修改原单并从原日期重算;不接受负数归还。文件缺行不会删除系统单据。运输信息修改请编辑原单,不用数量导入覆盖司机、车牌和运费。
项目、材料及价格表在对应管理页面维护;直接通过AI或SSH导入也应使用相同预检接口,避免删除后重建。
viewRentalDetails({id})">
viewRentalDetails({id})">
SYSTEM CENTER
系统安全与运行中心
集中查看数据同步、备份、安全状态与删除留痕;操作追溯请用审计日志
打开运费通
租赁与物流互联异常
传输失败可重试;待人工确认表示来源单据已变更,但物流端已确认的数据未覆盖,请核对后处理。以下显示最近20条。
{{ issue.document_type }} · {{ issue.document_no }} — {{ issue.status }} · {{ issue.updated_at }}
打开物流系统核对
服务与备份巡检
{{ systemStatus.business_health?.stale ? '状态待更新' : systemStatus.business_health?.ok ? '正常' : '需要检查' }}
{{ systemStatus.business_health?.checked_at || '尚无巡检结果' }}
{{ check.ok ? '正常' : '异常' }} · {{ check.name }}:{{ check.detail }}
数据库状态
{{ systemStatus.database_integrity === 'ok' ? '正常' : '需检查' }}
物流同步成功
{{ systemStatus.freight_sync?.synced || 0 }}
待传输 {{ systemStatus.freight_sync?.pending || 0 }} · 待人工确认 {{ systemStatus.freight_sync?.conflicts || 0 }}
来源单据发生变更,物流端数据未覆盖,请到物流系统核对。
同步失败
{{ systemStatus.freight_sync?.failed || 0 }}
删除留痕
{{ systemStatus.recycle_count || 0 }}
最近数据库备份
{{ systemStatus.database_backup?.available ? formatDateTime(systemStatus.database_backup.created_at) : '尚未检测到' }}
运费通 · freight_sync
已同步 {{ systemStatus.freight_sync?.synced || 0 }} · 待传输 {{ systemStatus.freight_sync?.pending || 0 }} · 待人工确认 {{ systemStatus.freight_sync?.conflicts || 0 }} · 失败 {{ systemStatus.freight_sync?.failed || 0 }}
打开运费通
物流同步概况
freight_sync
已同步 {{ systemStatus.freight_sync?.synced || 0 }}
待处理 {{ (systemStatus.freight_sync?.pending || 0) + (systemStatus.freight_sync?.conflicts || 0) }}(含待人工确认 {{ systemStatus.freight_sync?.conflicts || 0 }})
失败 {{ systemStatus.freight_sync?.failed || 0 }}
暂无同步数据
登录安全
login_security
{{ b.label }}
{{ b.value }}
暂无登录安全数据
客户连续输错 5 次将锁定 15 分钟;旧授权码成功登录后自动升级加密。
| 删除时间 | 类型 | 单号/名称 | 操作人 | 状态 | 操作 |
| {{ formatDateTime(item.deleted_at) }} |
{{ systemEntityLabel(item.entity_type) }} |
{{ item.reference_no || item.entity_id }} |
{{ item.deleted_by }} |
{{ item.restored_at ? '已恢复' : '已删除' }} |
{{ formatDateTime(item.restored_at) }}
|
| 暂无删除留痕 |
厂内库存盘点表
日期:{{ todayDate }} 盘点人:____________ 复核人:____________
当前筛选 {{ stockFilteredItems.length }} 个型号;账面数量按已保存库存打印,实盘数量由现场填写。
| 型号 | 材料 | 账面数量(按型号单位) | 实盘数量(按型号单位) | 差额(按型号单位) | 备注 |
|---|
| {{ r.code }} | {{ r.name }} | {{ formatNum(stockSavedQuantity(r)) }} | | | |
页面可见时每30秒核对 · 最近核对 {{ stockCheckedAt || '尚未读取' }} · 当前显示 {{ stockSyncedAt || '尚未读取' }}{{ stockBackgroundError }}
库存数据已变化正在编辑的输入未覆盖;汇总暂保留编辑前快照。完成或撤销编辑后会同步最新数据,冲突型号需重新核对。
{{ stockLoadError }}当前保留上次成功读取的数据。
{{ stockDirtyCount }} 个型号有未保存修改汇总仍按当前已保存快照计算;切换页面保留修改,自动核对不会覆盖输入。
总库存吨位{{ stockTons(stockMetrics.total) }}吨其中在租 {{ stockTons(stockMetrics.rented) }} 吨 · 损坏隔离 {{ stockTons(stockMetrics.damaged) }} 吨
厂内库存吨位{{ stockTons(stockMetrics.onsite) }}吨已保存的场内实物库存
提料预占吨位{{ stockTons(stockMetrics.reserved) }}吨来自现有提料预占规则
新提料可申请吨位{{ stockTons(stockMetrics.available) }}吨按各型号场内减预占,最低为零
{{ stockMetrics.missingWeight }} 个型号未配置有效单重,吨位汇总暂不包含这些型号;数量照常显示。
{{ simpleStockCode }} · 型号详情
正在读取调整记录…
{{ stockHistoryError }}
| 时间 / 操作账号 | 型号 | 原数量 | 新数量 | 差额(按型号单位) | 调整原因 |
|---|
| {{ formatDateTime(record.created_at) }}{{ record.actor_id }} | {{ record.material_code }}{{ record.material_name }} | {{ formatNum(record.before_quantity) }} | {{ formatNum(record.after_quantity) }} | {{ stockSigned(record.delta_quantity) }}{{ stockTons(record.delta_quantity * record.unit_weight / 1000) }} 吨 | {{ record.reason }} |
| 暂无库存人工调整记录 |
{{ stockMovementCode }} · 近期收发
正在读取收发记录…
{{ stockMovementError }}
| 业务日期 | 类型 | 项目 / 单号 | 数量(按型号单位) | 来源 |
|---|
| {{ r.business_date }} | {{ {rental:'发货', return:'返货', adjustment:'人工调整'}[r.kind] }} | {{ r.project_name || '—' }}{{ r.document_no }} | {{ stockSigned(r.quantity) }} | {{ r.reason }} |
| 暂无该型号收发记录 |
正在核对相关项目与待处理车次…
{{ stockImpactError }}
{{ stockImpactData.definition }}
| 项目 | 已审核未发预占(件) | 待审核预占(件) | 预占合计(件) | 提料单 |
|---|
| {{ p.name }} | {{ formatNum(p.approved) }} | {{ formatNum(p.pending) }} | {{ formatNum(p.total) }} | {{ o.pickup_no }} · {{ o.status }} |
| 该型号当前没有提料预占项目 |
包含该型号的待处理车次 · {{ stockImpactDispatches.total }} 车
| 项目 / 车次申请 | 申请日期 | 本型号申请量(件) | 客户备注 | 操作 |
|---|
| {{ r.project_name }}{{ r.request_no }} | {{ r.requested_date }} | {{ stockDispatchQuantity(r) }} | {{ r.remark || '无' }} | |
| 暂无包含该型号的待处理车次 |