MULTI TENANT

选择公司

您属于多个公司,请选择要登录的公司

{{ t.name }}
角色: {{ t.member_role === 'owner' ? '所有者' : (t.member_role === 'admin' ? '管理员' : '成员') }}
确认后将继续使用当前账号进入所选公司的云端账本。
{{ authMode === 'login' ? 'CLOUD EDITION' : 'CREATE ACCOUNT' }}

{{ authMode === 'login' ? '欢迎登录' : '注册账号' }}

工程收支管理系统 V18.0 云端版

登录后将进入当前选择的公司与账套;如账号属于多个公司,系统会先引导你选择公司。
已选择公司,接下来请选择要进入的账套。
正在加载账套列表...
正在准备账套列表,请稍候后重新点击登录。
本次将进入:{{ selectedLoginBooksetDisplayName }}
{{ authMode === 'login' ? '没有账号?点击注册' : '已有账号?点击登录' }}
建议使用公司管理员分配的正式账号登录,业务数据会统一保存在云端。
DEVICE AUTH

设备未授权

当前设备未绑定卡密,或卡密已过期

验证成功后会自动绑定当前设备,并继续进入云端业务数据。
{{ activationMessage }}
退出登录
{{ toastType === 'success' ? '✓' : toastType === 'error' ? '✕' : toastType === 'warning' ? '⚠' : 'ℹ' }} {{ toastMessage }}
处理中...

{{ currentTabLabel }}

登录设备: {{ currentLicenseDeviceCount }} 台 / 1台
☁️
{{ currentUser?.username || '已登录' }}
当前账套 {{ currentBookset?.name || '默认账套' }} 默认
年份 项目 合同
账套:{{ currentBooksetDisplayName }} {{ reportFilterPeriodLabel }} {{ reportFilterProjectLabel }} {{ reportFilterContractLabel }}
正在刷新当前账套的年度统计与科目分布,请稍候…
{{ reportDashboardError }}
年度总收入
¥ {{ formatAmount(yearStats.income) }}
按当前账套与筛选条件汇总
年度总支出
¥ {{ formatAmount(yearStats.expense) }}
含当前筛选范围内全部支出科目
年度净利润
¥ {{ formatAmount(yearStats.income - yearStats.expense) }}
收入减支出后的即时利润表现
当前资金余额
¥ {{ formatAmount(balance) }}
当前账套下账户资金合计余额
{{ currentYear }}年 收支走势图 账套:{{ currentBooksetDisplayName }}
正在加载当前账套的年度走势…
📊
该筛选条件下暂无数据
收入科目占比
{{ item.label }}
科目 金额 占比
{{ item.label }} ¥{{ formatAmount(item.value) }} {{ item.percent }}%
暂无数据
💸 支出科目占比
{{ item.label }}
科目 金额 占比
{{ item.label }} ¥{{ formatAmount(item.value) }} {{ item.percent }}%
暂无数据
报表当前账套 账套:{{ currentBooksetDisplayName }} 切换上方“账号与账套”中的当前账套后,这里的报表与利润表会同步刷新到对应账套。
📅 科目日报表(透视表)
项目/合同沿用顶部筛选 {{ reportFilterProjectLabel }} {{ reportFilterContractLabel }}
正在准备科目日报表
当前账套的日报透视表正在刷新,请稍候…
日报表加载失败
{{ reportDashboardError }}
🗂
当前筛选条件下暂无日报表数据
可以调整年份、月份、顶部项目或合同筛选后再查看。
科目 {{ date.slice(5) }} 合计
收入总计 {{ reportIncomeTotalByDate[date] ? '¥' + formatAmount(reportIncomeTotalByDate[date]) : '-' }} ¥{{ formatAmount(reportTotal.income) }}
支出总计 {{ reportExpenseTotalByDate[date] ? '¥' + formatAmount(reportExpenseTotalByDate[date]) : '-' }} ¥{{ formatAmount(reportTotal.expense) }}
总计 ¥{{ formatAmount((reportIncomeTotalByDate[date] || 0) - (reportExpenseTotalByDate[date] || 0)) }} ¥{{ formatAmount(reportTotal.income - reportTotal.expense) }}
利润表
统计维度
快捷区间
{{ reportFilterPeriodLabel }} {{ reportPeriodStart }} ~ {{ reportPeriodEnd }}
收支利润情况
正在整理利润汇总
当前账套的收入、支出与盈亏汇总正在刷新,请稍候…
利润汇总加载失败
{{ reportDashboardError }}
收入
¥{{ formatAmount(profitTotal.income) }}
支出
¥{{ formatAmount(profitTotal.expense) }}
盈亏
{{ profitTotal.profit >= 0 ? '+' : '' }}¥{{ formatAmount(profitTotal.profit) }}
📉 主要成本费用
正在整理主要成本费用
当前账套的支出排名正在刷新,请稍候…
主要成本费用加载失败
{{ reportDashboardError }}
🧾
当前筛选条件下暂无支出数据
待本期有支出发生后,这里会自动展示主要成本费用排行。
📗 收入详情
正在整理收入详情
当前账套的收入结构与同比对比正在刷新,请稍候…
收入详情加载失败
{{ reportDashboardError }}
科目名称 本期金额 占比 上期金额 同比增长金额 同比增长比例
当前筛选条件下暂无收入明细,可切换年份、月份或顶部项目/合同后再查看。
序号 日期时间 类型 项目 科目 关联合同 摘要 账户 金额 最近编辑日期 编辑人员 操作
{{ (ledgerCurrentPage - 1) * ledgerPageSize + index + 1 }} {{ formatDateTime(t.createdAt || t.date) }} {{ t.type }} {{ t.project }} {{ t.category }} {{ getContractById(t.contractId)?.name || '-' }} - {{ t.remark || '-' }} {{ t.account }} {{ t.type === '支出' ? '-' : '+' }}{{ formatAmount(t.amount) }} {{ formatDateTime(t.updatedAt) }} {{ t.updatedBy || t.createdBy || '-' }}
{{ (isLoggedIn && !showActivationModal) ? cloudLedgerTotalCount : ledgerFilteredTransactions.length }} 条记录, 第 {{ ledgerCurrentPage }} / {{ ledgerTotalPages }}
{{ ledgerPageSize }}条/页
销售合同总额
¥ {{ formatAmount(contractStats.salesTotal) }}
已回款: ¥{{ formatAmount(contractStats.salesDone) }} ({{ contractStats.salesRate }}%)
已开票: ¥{{ formatAmount(contractStats.salesInvoiced) }} 未开票: ¥{{ formatAmount(contractStats.salesUninvoiced) }}
采购合同总额
¥ {{ formatAmount(contractStats.purchaseTotal) }}
已付款: ¥{{ formatAmount(contractStats.purchaseDone) }} ({{ contractStats.purchaseRate }}%)
已开票: ¥{{ formatAmount(contractStats.purchaseInvoiced) }} 未开票: ¥{{ formatAmount(contractStats.purchaseUninvoiced) }}
{{ c.name }} ({{ Math.min(100, Math.round(getContractExecAmount(c.id) / c.amount * 100)) }}%) {{ c.project }}
{{ c.no }}
合同额: {{ formatAmount(c.amount) }} 已{{ contractView === 'sales' ? '收' : '付' }}: {{ formatAmount(getContractExecAmount(c.id)) }}
已开票: {{ formatAmount(getContractInvoicedAmount(c.id)) }} 未开票: {{ formatAmount(getContractUninvoicedAmount(c.id)) }}
销售合同已开票
¥ {{ formatAmount(contractStats.salesInvoiced) }}
未开票: ¥{{ formatAmount(contractStats.salesUninvoiced) }}
采购合同已开票
¥ {{ formatAmount(contractStats.purchaseInvoiced) }}
未开票: ¥{{ formatAmount(contractStats.purchaseUninvoiced) }}
提示
{{ invoiceLoadError }}
序号 创建时间 合同名称 项目 合同类型 本次开票 累计已开票 未开票 发票号 附件 最近编辑时间 编辑人员 备注 操作
当前后端尚未启用发票接口
请重启本地后端服务后再使用发票管理。
暂无发票记录
你可以先录入一张发票,系统会自动按销售/采购合同统计已开票与未开票金额。
{{ index + 1 }} {{ formatDateTime(invoice.created_at || invoice.createdAt) }} {{ getInvoiceContractName(invoice) }} ¥ {{ formatAmount(getInvoiceContractAmount(invoice)) }} {{ getInvoiceProjectName(invoice) }} {{ getInvoiceContractType(invoice) === 'sales' ? '销售合同' : '采购合同' }} ¥ {{ formatAmount(invoice.amount) }} ¥ {{ formatAmount(getContractInvoicedAmount(getInvoiceContractId(invoice))) }} ¥ {{ formatAmount(getContractUninvoicedAmount(getInvoiceContractId(invoice))) }} {{ invoice.invoice_no || invoice.invoiceNo || '-' }}
{{ invoice.attachments.length }} 张
-
{{ formatDateTime(invoice.updated_at || invoice.updatedAt || invoice.created_at || invoice.createdAt) }} {{ invoice.updated_by || invoice.updatedBy || invoice.created_by || invoice.createdBy || '-' }} {{ invoice.remark || '-' }}
应收应付数据存在异常记录,页面已自动兜底避免白屏。{{ arapRenderError }}
{{ arapView === 'sales' ? '应收总额' : '应付总额' }}
¥ {{ formatAmount(arapStats.totalAmount) }}
共 {{ arapStats.count }} 份合同
{{ arapView === 'sales' ? '已收金额' : '已付金额' }}
¥ {{ formatAmount(arapStats.settledAmount) }}
已完成 {{ arapStats.completedCount }} 份
{{ arapView === 'sales' ? '待收金额' : '待付金额' }}
¥ {{ formatAmount(arapStats.pendingAmount) }}
部分完成 {{ arapStats.partialCount }} 份
逾期待处理
¥ {{ formatAmount(arapStats.overdueAmount) }}
逾期 {{ arapStats.overdueCount }} 份,7 天内到期 {{ arapStats.soonCount }} 份
合同名称 合同编号 项目 类型 到期日期 提醒 合同金额 {{ arapView === 'sales' ? '已收金额' : '已付金额' }} {{ arapView === 'sales' ? '待收金额' : '待付金额' }} 已开票 未开票 状态 操作
暂无{{ arapView === 'sales' ? '应收' : '应付' }}记录
当前页基于合同金额、流水回款/付款和发票数据自动汇总。
{{ row.contractName }} {{ row.contractNo }} {{ row.projectName }} {{ row.typeLabel }} {{ formatDateOnlyDisplay(row.dueDate) }} {{ row.reminderLabel }} ¥ {{ formatAmount(row.totalAmount) }} ¥ {{ formatAmount(row.settledAmount) }} ¥ {{ formatAmount(row.pendingAmount) }} ¥ {{ formatAmount(row.invoicedAmount) }} ¥ {{ formatAmount(row.uninvoicedAmount) }} {{ row.statusLabel }}
总收入
¥ {{ formatAmount(accountStats.totalIncome) }}
总支出
¥ {{ formatAmount(accountStats.totalExpense) }}
总余额
¥ {{ formatAmount(accountStats.totalBalance) }}
账户数量
{{ accountsList.length }} 个
账户列表
账户名称 收入 支出 余额 记录数 操作
{{ acc.name }} + {{ formatAmount(accountBalances[acc.id]?.income || 0) }} - {{ formatAmount(accountBalances[acc.id]?.expense || 0) }} ¥ {{ formatAmount(accountBalances[acc.id]?.balance || 0) }} {{ accountBalances[acc.id]?.count || 0 }} 0 有记录 删除
暂无账户,请点击"新增账户"添加
⚠️ 重要提示:数据存储风险警告

当前系统已统一为云端业务数据模式:项目、账户、合同、流水、员工借支等业务数据仅保存在服务器数据库中。

  • 未登录时仅保留少量浏览器本地设置与登录凭证缓存,不再支持在本地浏览器录入或保存业务数据
  • 退出登录、Token 失效或更换电脑后,如需继续处理业务数据,请重新登录云端账号
  • 业务数据备份与恢复统一走云端数据库口径;未登录状态下不能导出或恢复业务备份

💡 建议登录后定期导出云端业务备份文件,并在需要时通过云端恢复入口进行回滚。

数据备份与恢复

{{ !isLoggedIn ? '当前未登录:业务数据仅支持云端备份,请先登录后再导出或恢复。' : (canExportCloudBackups ? '当前为云端模式:导出将备份数据库中的业务数据,并附带当前浏览器本地设置。' : (isTenantAdmin ? exportBackupPermissionHint : '当前账号为普通成员:仅当前公司管理员可导出或恢复云端业务备份。')) }} 恢复备份会覆盖当前云端业务数据,请谨慎操作。

提示:建议登录后定期导出云端业务备份。{{ isLoggedIn ? '恢复云端备份将完全覆盖当前数据库业务数据。' : '未登录时不能恢复业务备份。' }} 请谨慎操作。
最近云端备份记录
登录后可查看当前公司最近的云端备份记录。
仅当前公司管理员可查看云端备份记录。
{{ record.fileName || '未命名备份文件' }}
账套:{{ record.booksetName || '未命名账套' }} 当前账套 默认账套 {{ record.backupTypeLabel }}
{{ formatBackupTimestamp(record.createdAt) }}
{{ formatBackupSize(record.fileSize) }}
当前公司还没有可展示的云端备份记录。
收入科目管理
支出科目管理
基础资料
账号与账套:
当前用户: {{ currentUser?.username || '-' }} 账套: {{ currentBookset?.name || '默认账套' }} 默认 点击下方账套名称即可切换当前会话账套 {{ booksetMutationMessage || '多人协作公司暂不支持删除账套。' }}
全部账套: 共 {{ booksets.length }} 个
{{ item.name || `账套${item.id}` }} 默认 当前
系统标题:
当前标题:{{ systemTitle }} (双击标题也可修改)
项目列表:
{{ proj.name }} ×
团队管理
登录后可查看当前公司成员、邀请同事加入并管理角色。

权限管理

按角色管理当前公司的模块访问、编辑、修改和删除权限,保存后立即生效。
{{ currentUser?.tenantName || '当前公司' }} {{ currentUser?.memberRole === 'owner' ? '拥有者' : '管理员' }}
当前账号没有权限管理权限。

员工借支

统一登记员工借支、归还进度和剩余待收金额。
借支总额
¥ {{ formatAmount(employeeLoanOverview.totalAmount) }}
共 {{ employeeLoanOverview.totalCount }} 笔
待收回金额
¥ {{ formatAmount(employeeLoanOverview.outstandingAmount) }}
未结清 {{ employeeLoanOverview.openCount }} 笔
已归还金额
¥ {{ formatAmount(employeeLoanOverview.totalReturned) }}
已结清 {{ employeeLoanOverview.returnedCount }} 笔
部分归还待收
¥ {{ formatAmount(employeeLoanOverview.partialRemaining) }}
部分归还 {{ employeeLoanOverview.partialCount }} 笔
当前显示 {{ paginatedEmployeeLoans.length }} / {{ filteredEmployeeLoans.length }} 条
加载失败
{{ employeeLoanLoadError }}
序号 借支日期 员工姓名 借支金额 已归还 归还记录 待收回 状态 借支原因 备注 操作
员工借支数据加载中...
暂无员工借支记录
你可以先新增一笔借支,后续在这里登记归还和查看待收回金额。
{{ (employeeLoanCurrentPage - 1) * employeeLoanPageSize + index + 1 }} {{ formatDate(loan.loan_date) }} {{ loan.employee_name || '-' }} ¥ {{ formatAmount(loan.amount) }} ¥ {{ formatAmount(loan.returned_amount || 0) }} {{ getEmployeeLoanRepaymentSummary(loan) }} ¥ {{ formatAmount(getEmployeeLoanOutstanding(loan)) }} {{ getEmployeeLoanStatusLabel(loan.status) }} {{ loan.reason || '-' }} {{ loan.remark || '-' }}
{{ filteredEmployeeLoans.length }} 条记录, 第 {{ employeeLoanCurrentPage }} / {{ employeeLoanTotalPages }}
{{ employeeLoanPageSize }}条/页