总项目数
{{ stats.totalProjects || 0 }}
本月项目数
{{ stats.monthProjects || 0 }}
今日项目数
{{ stats.todayProjects || 0 }}
今日配单数
{{ stats.todayOrders || 0 }}
应收总款
¥{{ fmtNum(stats.totalReceivable) }}
应付总款
¥{{ fmtNum(stats.totalPayable) }}
本月已收款
¥{{ fmtNum(stats.monthReceived) }}
报销总金额
¥{{ fmtNum(stats.totalReimbursement) }}
本月报销金额
¥{{ fmtNum(stats.monthReimbursement) }}
📊 报销类型统计
| 报销类型 | 历史总金额 | 本月金额 |
|---|---|---|
| {{ item.type }} | ¥{{ fmtNum(item.historyAmount) }} | ¥{{ fmtNum(item.monthAmount) }} |
| 序号 | {{ col.label }} | 操作 | |
|---|---|---|---|
| {{ (projectPage - 1) * projectPageSize + idx + 1 }} | {{ row.projectName }} {{ row.manager || '-' }} {{ row.projectLocation || '-' }} {{ row.contactPerson || '-' }} {{ row.contactPhone || '-' }} ¥{{ fmtNum(row.totalAmount) }} ¥{{ fmtNum(row.receivedAmount) }} ¥{{ fmtNum((row.totalAmount||0)-(row.receivedAmount||0)) }} ¥{{ fmtNum(row.totalPurchase) }} ¥{{ fmtNum(row.totalSale) }} ¥{{ fmtNum(row.reimbursementTotal) }} ¥{{ fmtNum(row.paidAmount) }} ¥{{ fmtNum(row.unpaidAmount) }} {{ formatDate(row.projectDate) }} {{ formatDate(row.scheduleStart) }} ~ {{ formatDate(row.scheduleEnd) }} - {{ projectStatusMap[row.projectStatus] || '未知' }} {{ getPaymentMethodDisplay(row) }} {{ row.createdByName || '-' }} {{ formatDateTime(row.createTime) }} |
|
|
{{ projectKeyword ? '未找到匹配数据' : '暂无项目记录,点击新增开始' }} |
共 {{ projectTotal }} 条
…
每页条
配单详情:{{ orderDetail.projectName }}
采购总价
¥{{ fmtNum(orderDetail.totalPurchase) }}
销售总价
¥{{ fmtNum(orderDetail.totalSale) }}
毛利润
¥{{ fmtNum(orderDetail.grossProfit) }}
毛利率
{{ fmtRate(orderDetail.grossMargin) }}
纯利润
¥{{ fmtNum(orderDetail.netProfit) }}
纯利率
{{ fmtRate(orderDetail.netMargin) }}
| 序号 | 货品信息 | 规格型号 | 所属品牌 | 数量 | 采购单价 | 采购税点 | 采购总价 | 销售单价 | 销售税点 | 销售总价 | 毛利润 | 毛利率 | 纯利润 | 纯利率 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ row.productName }} | {{ row.spec }} | {{ row.brand }} | {{ row.qty }} | {{ fmtNum(row.purchasePrice) }} | {{ row.purchaseTax }}% | {{ fmtNum(row.purchaseTotal) }} | {{ fmtNum(row.salePrice) }} | {{ row.saleTax }}% | {{ fmtNum(row.saleTotal) }} | {{ fmtNum(row.grossProfit) }} | {{ fmtRate(row.grossMargin) }} | {{ fmtNum(row.netProfit) }} | {{ fmtRate(row.netMargin) }} | ||
暂无货品数据 |
| 序号 | {{ col.label }} | 操作 | ||
|---|---|---|---|---|
| {{ (reimPage - 1) * reimPageSize + idx + 1 }} | {{ row.reimburser }} ¥{{ fmtNum(row.amount) }} {{ row.projectName || '-' }} {{ row.description || '查看明细' }} {{ formatDate(row.reimburseTime) }} {{ reimburseStatusMap[row.reimburseStatus] || '未知' }} {{ row.paymentMethod || '-' }} {{ row.paymentDetail || '-' }} |
|
||
| 本页合计 | ¥{{ fmtNum(reimPageAmountSum) }} | |||
暂无报销记录 |
共 {{ reimTotal }} 条
…
每页条
| 序号 | 所属项目 | 任务名称 | 负责人 | 进度 | 预计时间 | 实际时间 | 子任务 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|
| {{ (constructionPage-1)*constructionPageSize+idx+1 }} | {{ getProjectName(row.projectId) }} | {{ row.itemName }} | {{ row.personInCharge || '-' }} | {{ row.estimatedStartTime ? formatDate(row.estimatedStartTime) : '-' }} ~ {{ formatDate(row.estimatedEndTime) }} | {{ row.actualStartTime ? formatDate(row.actualStartTime) : '-' }} ~ {{ formatDate(row.actualEndTime) }} | {{ row.subtaskCount != null ? row.subtaskCount : 0 }} 项 | |||
暂无任务数据 |
共 {{ constructionTotal }} 条
…
| 序号 | 账号 | 姓名 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ (userPage-1)*userPageSize+idx+1 }} | {{ row.username }} | {{ row.realName || '-' }} | {{ getRoleName(row.roleId) }} | {{ row.enabled===1?'启用':'禁用' }} | {{ formatDateTime(row.createTime) }} | |
暂无用户数据 |
共 {{ userTotal }} 条
…
| 序号 | 角色名称 | 角色编码 | 描述 | 后台登陆 | 移动端 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.roleName }} | {{ row.roleCode }} | {{ row.description || '-' }} | {{ (row.backendEnabled===null||row.backendEnabled===1)?'已开启':'已关闭' }} | {{ row.mobileEnabled===1?'已开启':'已关闭' }} | {{ formatDateTime(row.createTime) }} | |
暂无角色数据 |
| 名称 | 权限标识 | 类型 | 路径 | 图标 | 排序 | 操作 |
|---|---|---|---|---|---|---|
| {{ item.permissionName }} | {{ item.permissionCode || '-' }} | {{ item.permissionType===1?'菜单':'按钮' }} | {{ item.path || '-' }} | {{ item.icon || '-' }} | {{ item.sortOrder }} | |
| ├ {{ child.permissionName }} | {{ child.permissionCode || '-' }} | {{ child.permissionType===1?'菜单':'按钮' }} | {{ child.path || '-' }} | {{ child.icon || '-' }} | {{ child.sortOrder }} | |
| └ {{ gc.permissionName }} | {{ gc.permissionCode || '-' }} | {{ gc.permissionType===1?'菜单':'按钮' }} | {{ gc.path || '-' }} | {{ gc.icon || '-' }} | {{ gc.sortOrder }} | |
暂无菜单数据 |
| 序号 | 标题 | 副标题 | 按钮文字 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.title }} | {{ (row.subtitle||'').substring(0,30) }}{{ (row.subtitle||'').length>30?'...':'' }} | {{ row.btnText || '-' }} | {{ row.sortOrder }} | {{ row.enabled===1?'启用':'禁用' }} | |
暂无Banner数据 |
板块标题
副标题
公司简介
配图
| 序号 | 板块名称 | 内容摘要 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.title }} | {{ (row.content||'').substring(0,40) }}{{ (row.content||'').length>40?'...':'' }} | {{ row.sortOrder }} | {{ row.enabled===1?'启用':'禁用' }} | |
暂无业务板块数据 |
| 序号 | 行业名称 | 图标 | 描述 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.name }} | {{ (row.description||'').substring(0,30) }}{{ (row.description||'').length>30?'...':'' }} | {{ row.sortOrder }} | {{ row.enabled===1?'启用':'禁用' }} | ||
暂无产品分类数据 |
| 序号 | 方案名称 | 描述 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.title }} | {{ (row.description||'').substring(0,40) }}{{ (row.description||'').length>40?'...':'' }} | {{ row.sortOrder }} | {{ row.enabled===1?'启用':'禁用' }} | |
暂无解决方案数据 |
| 序号 | 项目名称 | 行业 | 年份 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ idx+1 }} | {{ row.title }} | {{ row.industry || '-' }} | {{ row.year || '-' }} | {{ row.sortOrder }} | {{ row.enabled===1?'启用':'禁用' }} | |
暂无案例数据 |
公司地址
联系电话
邮箱
工作时间
版权文字
ICP备案号
公安备案号
| # | 姓名 | 电话 | 邮箱 | 来源 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ (msgPage-1)*msgPageSize + idx + 1 }} | {{ row.name }} | {{ row.phone || '-' }} | {{ row.email || '-' }} | {{ row.source==='chatbot'?'🤖 智能客服':'📝 联系表单' }} | {{ row.isRead===0?'● 未读':'✓ 已读' }} | {{ formatDateTime(row.createTime) }} | |
| 暂无留言 | |||||||
共 {{ msgTotal }} 条
…
项目种类
{{ invInputTotalData.items || 0 }}
合计金额
¥{{ fmtNum(invInputTotalData.amount) }}
合计税额
¥{{ fmtNum(invInputTotalData.tax) }}
价税合计
¥{{ fmtNum(invInputTotalData.total) }}
⚠ 数量异常
{{ invInputTotalData.abnormalItems }}
数量异常
0
| # | 项目名称 | 规格型号 | 单位 | 数量 | 单价 | 金额 | 税率 | 税额 | 价税合计 | 发票号 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ (invInputPage-1)*invInputPageSize + idx + 1 }} | {{ row.itemName }} | {{ row.specModel || '-' }} | {{ row.unit || '-' }} | {{ row.quantity }} | {{ fmtNum(row.unitPrice) }} | {{ fmtNum(row.amount) }} | {{ row.taxRate }} | {{ fmtNum(row.taxAmount) }} | ¥{{ fmtNum(row.totalAmount) }} | {{ row.invoiceNo || '-' }} | 来源 编辑 删除 | |
| 暂无进项数据,请导入PDF发票 | ||||||||||||
共 {{ invInputTotal }} 条
…
| # | 申请编号/发票号 | 申请日期 | 购方名称 | 金额 | 税额 | 价税合计 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ (invOutputPage-1)*invOutputPageSize + idx + 1 }} | {{ row.invoiceNo || '-' }} | {{ formatDate(row.invoiceDate) }} | {{ row.buyerName }} | {{ fmtNum(row.totalAmount) }} | {{ fmtNum(row.totalTax) }} | ¥{{ fmtNum(row.totalPriceTax) }} | {{ row.status==='invoiced'?'已开票':'待开票' }} | 查看 上传发票 导出 删除 |
| 暂无出项发票数据 | ||||||||
共 {{ invOutputTotal }} 条
…
👥 客户资料
| # | 客户名称 | 纳税人识别号 | 地址 | 电话 | 开户行 | 账号 | 备注 | 更新时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ (customerPage-1)*customerPageSize + idx + 1 }} | {{ row.name }} | {{ row.taxNo || '-' }} | {{ row.address || '-' }} | {{ row.phone || '-' }} | {{ row.bankName || '-' }} | {{ row.bankAccount || '-' }} | {{ row.remark || '-' }} | {{ formatDateTime(row.updateTime) }} | 编辑 删除 |
| 暂无客户资料,请点击「新增客户」添加 | |||||||||
总打卡次数
{{ attStats.totalCount || 0 }}
打卡人数
{{ Object.keys(attStats.personCount || {}).length }}
关联项目数
{{ Object.keys(attStats.projectCount || {}).length }}
| 序号 | 人员名称 | 关联项目 | 工作日期 | 上班打卡 | 下班打卡 | 工作内容 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ (attPage - 1) * attPageSize + idx + 1 }} | {{ row.personName }} | {{ row.projectName || '-' }} | {{ formatDate(row.workDate) }} |
{{ formatDateTime(row.checkInTime) }}
未拍照
|
{{ formatDateTime(row.checkOutTime) }}
未拍照
|
{{ row.workContent || '-' }} | {{ row.remark || '-' }} |
|
暂无考勤记录 | ||||||||
共 {{ attTotal }} 条
…
| # | 单位名称 | 项目地址 | 联系人 | 联系电话 | 附件 | 联系状态 | 报修时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ (frPage - 1) * frPageSize + idx + 1 }} | {{ item.unitName || '-' }} | {{ item.projectAddress || '-' }} | {{ item.contactPerson || '-' }} | {{ item.contactPhone || '-' }} | 查看 - | {{ item.contactStatus === 1 ? '已联系' : '未联系' }} | {{ formatDate(item.createTime) }} | |
| 暂无故障报修记录 | ||||||||
共 {{ frTotal }} 条
✕
| # | 合同编号 | 合同名称 | 甲方 | 乙方 | 合同金额 | 签订日期 | 状态 | 实际合同 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ (ctPage - 1) * ctPageSize + idx + 1 }} | {{ item.contractNo || '-' }} | {{ item.contractName || '-' }} | {{ item.partyA || '-' }} | {{ item.partyB || '-' }} | {{ item.contractAmount != null ? fmtNum(item.contractAmount) : '-' }} | {{ formatDate(item.signDate) }} | {{ item.status===1?'执行中':item.status===2?'已完成':'已终止' }} | 已上传 未上传 | 下载 |
| 暂无合同记录 | |||||||||
共 {{ ctTotal }} 条
| # | 编号类型 | 前缀 | 当前序号 | 位数 | 下一个编号 | 说明 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ item.numberType }} | {{ item.prefix || '-' }} |
{{ item.currentSeq }} | {{ item.padding }} |
{{ (item.prefix||'') + String(item.currentSeq + 1).padStart(item.padding, '0') }}
|
{{ item.description || '-' }} | |
| 暂无编号规则 | |||||||