feat: 数字员工财务报告体系与定时提醒及看板快照调度
- 新增数字员工财务报告生成、邮件投递与渲染调度器 - 引入员工画像扫描调度与定时提醒任务 - 完善财务看板快照、排行口径与部门人员占比计算 - 优化数字员工工作看板仪表盘与技能目录 - 增强前端总览页图表、工作台摘要与顶部导航栏交互 - 新增差旅申请规划推动提醒与报销创建会话状态管理 - 补充财务报告、看板调度、数字员工工作记录测试覆盖
This commit is contained in:
@@ -69,7 +69,7 @@
|
||||
<div class="content-grid bottom-grid">
|
||||
<article class="panel dashboard-card rank-panel">
|
||||
<div class="card-head">
|
||||
<h3>部门报销排行(费用金额)<i class="mdi mdi-information-outline"></i></h3>
|
||||
<h3>部门报销排行 <i class="mdi mdi-information-outline"></i></h3>
|
||||
<EnterpriseSelect
|
||||
v-model="activeDepartmentRange"
|
||||
class="card-select"
|
||||
@@ -84,7 +84,14 @@
|
||||
|
||||
<article class="panel dashboard-card employee-rank-panel">
|
||||
<div class="card-head">
|
||||
<h3>个人报销排行(本月)<i class="mdi mdi-information-outline"></i></h3>
|
||||
<h3>个人报销排行 <i class="mdi mdi-information-outline"></i></h3>
|
||||
<EnterpriseSelect
|
||||
v-model="activeDepartmentRange"
|
||||
class="card-select"
|
||||
:options="departmentRangeOptions"
|
||||
aria-label="个人排行时间范围"
|
||||
size="small"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<BarChart :items="rankedEmployees" />
|
||||
@@ -92,22 +99,33 @@
|
||||
|
||||
<article class="panel dashboard-card top-claim-panel">
|
||||
<div class="card-head">
|
||||
<h3>本月高额单据 <i class="mdi mdi-information-outline"></i></h3>
|
||||
<h3>高额单据 <i class="mdi mdi-information-outline"></i></h3>
|
||||
<span class="card-range-chip">{{ activeDepartmentRange }}</span>
|
||||
</div>
|
||||
|
||||
<div class="top-claim-list">
|
||||
<div
|
||||
v-for="item in topClaims"
|
||||
:key="item.claimNo"
|
||||
class="top-claim-row"
|
||||
>
|
||||
<div>
|
||||
<strong>{{ item.claimNo }}</strong>
|
||||
<span>{{ item.employeeName }} · {{ item.departmentName || '未归属部门' }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<strong>{{ item.amountLabel }}</strong>
|
||||
<span>{{ item.expenseTypeLabel }} · {{ item.statusLabel }}</span>
|
||||
<div class="top-claim-split">
|
||||
<div class="department-employee-mix">
|
||||
<DonutChart
|
||||
:items="departmentEmployeeLegend"
|
||||
:center-value="departmentEmployeeCenterValue"
|
||||
center-label="人员占比"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="top-claim-list">
|
||||
<div
|
||||
v-for="item in topClaims"
|
||||
:key="item.claimNo"
|
||||
class="top-claim-row"
|
||||
>
|
||||
<div>
|
||||
<strong>{{ item.claimNo }}</strong>
|
||||
<span>{{ item.employeeName }} · {{ item.departmentName || '未归属部门' }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<strong>{{ item.amountLabel }}</strong>
|
||||
<span>{{ item.expenseTypeLabel }} · {{ item.statusLabel }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,6 +176,7 @@
|
||||
:dashboard="riskDashboard"
|
||||
:loading="riskDashboardLoading"
|
||||
:error="riskDashboardError"
|
||||
:last-updated-at="riskDashboardLastUpdatedAt"
|
||||
:level-legend="riskLevelLegend"
|
||||
:source-legend="riskSourceLegend"
|
||||
:signal-ranking="riskSignalRanking"
|
||||
@@ -358,6 +377,8 @@ const {
|
||||
activeTrendRange,
|
||||
budgetMetrics,
|
||||
budgetSummary,
|
||||
departmentEmployeeCenterValue,
|
||||
departmentEmployeeLegend,
|
||||
departmentRangeOptions,
|
||||
digitalEmployeeCategoryRows,
|
||||
digitalEmployeeDashboard,
|
||||
@@ -371,6 +392,7 @@ const {
|
||||
rankedEmployees,
|
||||
riskDashboard,
|
||||
riskDashboardError,
|
||||
riskDashboardLastUpdatedAt,
|
||||
riskDashboardLoading,
|
||||
riskDailyTrendRows,
|
||||
riskKpiMetrics,
|
||||
|
||||
Reference in New Issue
Block a user