This commit is contained in:
dhr
2025-09-23 20:36:47 +08:00
parent fc3abeb4c0
commit 80cca114a9
19 changed files with 5107 additions and 1195 deletions

View File

@ -48,8 +48,8 @@
<el-date-picker v-model="dispatchDate" type="date" placeholder="派单日期" format="yyyy/MM/dd" value-format="yyyy/MM/dd"></el-date-picker>
</div>
<div class="filter-actions">
<el-button type="primary" class="search-btn" @click="handleSearch">搜索</el-button>
<el-button type="primary" class="create-btn" @click="handleExport">导出记录</el-button>
<el-button type="primary" icon="Search" class="search-btn" @click="handleSearch"> 搜索 </el-button>
<el-button type="primary" icon="Export" class="create-btn" @click="handleExport">导出记录</el-button>
</div>
</div>
</div>
@ -59,15 +59,25 @@
<div class="stat-card">
<div class="stat-value">{{ totalDispatches }}</div>
<div class="stat-label">本月派单总数</div>
<div class="stat-trend">较上月 <span class="trend-up"> 12%</span></div>
<div class="stat-trend">
较上月
<span :class="dispatchGrowthRate.includes('-') ? 'trend-down' : 'trend-up'">
{{ dispatchGrowthRate.includes('-') ? '↓' : '↑' }} {{ dispatchGrowthRate }}
</span>
</div>
<div class="stat-icon">
<img src="@/assets/images/paidan.png" alt="时间" class="stat-img" />
<img src="@/assets/images/paidan.png" alt="派单" class="stat-img" />
</div>
</div>
<div class="stat-card">
<div class="stat-value">{{ avgResponseTime }}</div>
<div class="stat-label">平均响应时间</div>
<div class="stat-trend">较上月 <span class="trend-down"> 5分钟</span></div>
<div class="stat-trend">
较上月
<span :class="responseGrowthRate.includes('-') ? 'trend-up' : 'trend-down'">
{{ responseGrowthRate.includes('-') ? '↓' : '↑' }} {{ responseGrowthRate }}
</span>
</div>
<div class="stat-icon">
<img src="@/assets/images/shijian.png" alt="时间" class="stat-img" />
</div>
@ -83,7 +93,12 @@
<div class="stat-card">
<div class="stat-value">{{ completionRate }}</div>
<div class="stat-label">按时完成率</div>
<div class="stat-trend">较上月 <span class="trend-up"> 3%</span></div>
<div class="stat-trend">
较上月
<span :class="completionGrowthRate.includes('-') ? 'trend-down' : 'trend-up'">
{{ completionGrowthRate.includes('-') ? '↓' : '↑' }} {{ completionGrowthRate }}
</span>
</div>
<div class="stat-icon success">
<img src="@/assets/images/wancheng.png" alt="完成" class="stat-img" />
</div>
@ -165,7 +180,7 @@
import { ref, computed, reactive } from 'vue';
import router from '@/router';
import TitleComponent from './TitleComponent.vue';
import { gongdanRecord } from '@/api/zhinengxunjian/gongdan/index';
// 激活的选项卡,默认显示派单记录
const activeTab = ref('dispatch');
@ -175,10 +190,47 @@ const executor = ref('all');
const dispatchDate = ref('');
// 统计数据
const totalDispatches = ref(56);
const avgResponseTime = ref('42分钟');
const pendingDispatches = ref(7);
const completionRate = ref('92%');
const totalDispatches = ref('');
const avgResponseTime = ref('');
const pendingDispatches = ref('');
const completionRate = ref('');
// 增长率数据
const dispatchGrowthRate = ref('');
const responseGrowthRate = ref('');
const completionGrowthRate = ref('');
// 初始化加载数据
const fetchStatisticsData = async () => {
try {
const response = await gongdanRecord();
if (response.code === 200 && response.data) {
// 更新统计数据处理null值
totalDispatches.value = response.data.bypds || '0';
avgResponseTime.value = response.data.pjxysj ? `${response.data.pjxysj}分钟` : '0分钟';
pendingDispatches.value = response.data.djsgd || '0';
completionRate.value = response.data.aswcl ? `${response.data.aswcl}%` : '0%';
// 更新增长率数据处理null值
dispatchGrowthRate.value = response.data.pdzzl || '0%';
responseGrowthRate.value = response.data.xysjzzl || '0分钟';
completionGrowthRate.value = response.data.wczzl || '0%';
}
} catch (error) {
console.error('获取统计数据失败:', error);
// 发生错误时使用默认值
totalDispatches.value = '56';
avgResponseTime.value = '42分钟';
pendingDispatches.value = '7';
completionRate.value = '92%';
dispatchGrowthRate.value = '12%';
responseGrowthRate.value = '-5分钟';
completionGrowthRate.value = '3%';
}
};
// 页面加载时获取数据
fetchStatisticsData();
// 派单记录数据
const rawTableData = ref([