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-select>
</div>
<div class="filter-actions">
<el-button type="primary" class="search-btn" @click="handleSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-plus" class="create-btn" @click="handleCreate">手动创建计划</el-button>
<el-button type="primary" icon="Search" class="search-btn" @click="handleSearch"> 搜索 </el-button>
<el-button type="primary" icon="Plus" class="create-btn" @click="handleCreate">手动创建计划</el-button>
</div>
</div>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -43,7 +43,7 @@
<div class="form-container">
<div class="form-header">
<h2>今日待办</h2>
<el-button type="primary" size="small" icon="el-icon-plus" @click="openAddTaskDialog">添加</el-button>
<el-button type="primary" icon="Plus" @click="openAddTaskDialog">添加</el-button>
</div>
<!-- 待办事项列表 - 动态渲染 -->

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([

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -49,8 +49,8 @@
></el-date-picker>
</div>
<div class="action-buttons">
<el-button type="primary" class="search-btn"> 搜索 </el-button>
<el-button type="primary" class="create-btn" @click="openRecordDialog"> <i class="fas fa-plus"></i> 新增实验记录 </el-button>
<el-button type="primary" icon="Search" class="search-btn"> 搜索 </el-button>
<el-button type="primary" icon="Plus" class="create-btn" @click="openRecordDialog"> <i class="fas fa-plus"></i> 新增实验记录 </el-button>
</div>
</div>

View File

@ -54,7 +54,7 @@
class="date-picker"
></el-date-picker>
<el-button type="primary" class="search-btn"> 搜索 </el-button>
<el-button type="primary" icon="Search" class="search-btn"> 搜索 </el-button>
</div>
</div>

View File

@ -49,8 +49,8 @@
</el-select>
</div>
<div class="filter-actions">
<el-button type="primary" class="search-btn" @click="handleSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-plus" class="create-btn" @click="handleCreateTask"> 手动创建任务 </el-button>
<el-button type="primary" icon="Search" class="search-btn" @click="handleSearch"> 搜索 </el-button>
<el-button type="primary" icon="Plus" class="create-btn" @click="handleCreateTask"> 手动创建任务 </el-button>
</div>
</div>
</div>

View File

@ -12,7 +12,7 @@
<div class="header-container">
<div class="header-actions">
<el-button type="primary" class="export-btn">筛选</el-button>
<el-button type="primary" class="create-btn">导出数据</el-button>
<el-button type="primary" icon="UploadFilled" class="create-btn">导出数据</el-button>
</div>
</div>
@ -54,7 +54,7 @@
></el-date-picker>
</div>
<div class="filter-actions">
<el-button type="primary" class="search-btn" @click="fetchDashboardData">搜索</el-button>
<el-button type="primary" icon="Search" class="search-btn" @click="fetchDashboardData">搜索</el-button>
</div>
</div>

View File

@ -42,8 +42,8 @@
<el-input v-model="executor" placeholder="执行人"></el-input>
</div>
<div class="filter-actions">
<el-button type="primary" class="search-btn" @click="handleSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-plus" class="create-btn" @click="handleCreateTask"> 手动创建任务 </el-button>
<el-button type="primary" icon="Search" class="search-btn" @click="handleSearch"> 搜索 </el-button>
<el-button type="primary" icon="Plus" class="create-btn" @click="handleCreateTask"> 手动创建任务 </el-button>
</div>
</div>
</div>