235 lines
4.6 KiB
Vue
235 lines
4.6 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="statistics-container">
|
|||
|
|
<!-- 顶部导航栏 -->
|
|||
|
|
<view class="nav-bar">
|
|||
|
|
<text class="back-icon" @click="goBack">←</text>
|
|||
|
|
<view class="title-tabs">
|
|||
|
|
<text :class="['tab-item', activeTab === 'order' ? 'active' : '']" @click="switchTab('order')">
|
|||
|
|
工单统计
|
|||
|
|
</text>
|
|||
|
|
<text :class="['tab-item', activeTab === 'category' ? 'active' : '']" @click="switchTab('category')">
|
|||
|
|
分类统计
|
|||
|
|
</text>
|
|||
|
|
</view>
|
|||
|
|
<text class="filter-btn" @click="openFilter">筛选 ⏷</text>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<!-- 分类统计 -->
|
|||
|
|
<view v-if="activeTab === 'category'">
|
|||
|
|
<!-- 二级Tab -->
|
|||
|
|
<view class="sub-tabs">
|
|||
|
|
<text v-for="(tab, index) in subTabs" :key="index"
|
|||
|
|
:class="['sub-tab-item', activeSubTab === tab.value ? 'active' : '']"
|
|||
|
|
@click="switchSubTab(tab.value)">
|
|||
|
|
{{ tab.label }}
|
|||
|
|
</text>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<!-- 列表部分 -->
|
|||
|
|
<view v-if="activeSubTab === 'driver'" class="list-container">
|
|||
|
|
<view class="table-header">
|
|||
|
|
<text class="col-rank">排名</text>
|
|||
|
|
<text class="col-driver">司机</text>
|
|||
|
|
<text class="col-num">救援数量(辆)</text>
|
|||
|
|
<text class="col-distance">公里数(km)</text>
|
|||
|
|
<text class="col-money">金额(万)</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="table-row" v-for="(item, index) in driverList" :key="index">
|
|||
|
|
<text class="col-rank">{{ index + 1 }}</text>
|
|||
|
|
<view class="col-driver">
|
|||
|
|
<image :src="item.avatar" class="avatar" />
|
|||
|
|
<text>{{ item.name }}</text>
|
|||
|
|
</view>
|
|||
|
|
<text class="col-num">{{ item.count }}</text>
|
|||
|
|
<text class="col-distance">{{ item.distance }}</text>
|
|||
|
|
<text class="col-money">{{ item.money }}</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<view v-if="activeSubTab === 'vehicle'" class="list-container">
|
|||
|
|
<text>救援车辆列表(待实现)</text>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<view v-if="activeSubTab === 'dispatch'" class="list-container">
|
|||
|
|
<text>调度列表(待实现)</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
export default {
|
|||
|
|
name: "StatisticsInfo",
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
activeTab: "category", // 默认进入分类统计
|
|||
|
|
activeSubTab: "driver", // 默认进入救援司机
|
|||
|
|
subTabs: [{
|
|||
|
|
label: "救援司机",
|
|||
|
|
value: "driver"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
label: "救援车辆",
|
|||
|
|
value: "vehicle"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
label: "调度",
|
|||
|
|
value: "dispatch"
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
driverList: [{
|
|||
|
|
name: "张三三",
|
|||
|
|
count: 43,
|
|||
|
|
distance: 4342.1,
|
|||
|
|
money: 42.12,
|
|||
|
|
avatar: "/static/avatar1.png",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "何米有",
|
|||
|
|
count: 23,
|
|||
|
|
distance: 1342.5,
|
|||
|
|
money: 12.35,
|
|||
|
|
avatar: "/static/avatar2.png",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "晨虹剑",
|
|||
|
|
count: 11,
|
|||
|
|
distance: 980.3,
|
|||
|
|
money: 11.21,
|
|||
|
|
avatar: "/static/avatar3.png",
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
switchTab(tab) {
|
|||
|
|
this.activeTab = tab;
|
|||
|
|
},
|
|||
|
|
switchSubTab(tab) {
|
|||
|
|
this.activeSubTab = tab;
|
|||
|
|
},
|
|||
|
|
goBack() {
|
|||
|
|
uni.navigateBack();
|
|||
|
|
},
|
|||
|
|
openFilter() {
|
|||
|
|
uni.showToast({
|
|||
|
|
title: "筛选功能待实现",
|
|||
|
|
icon: "none",
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.statistics-container {
|
|||
|
|
background: #f6f8fc;
|
|||
|
|
min-height: 100vh;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 顶部导航 */
|
|||
|
|
.nav-bar {
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
background: linear-gradient(180deg, #3a8dff, #579dff);
|
|||
|
|
color: #fff;
|
|||
|
|
padding: 10px 16px;
|
|||
|
|
height: 56px;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.back-icon {
|
|||
|
|
font-size: 20px;
|
|||
|
|
font-weight: bold;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.title-tabs {
|
|||
|
|
display: flex;
|
|||
|
|
flex: 1;
|
|||
|
|
justify-content: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.tab-item {
|
|||
|
|
font-size: 16px;
|
|||
|
|
margin: 0 15px;
|
|||
|
|
padding-bottom: 4px;
|
|||
|
|
opacity: 0.8;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.tab-item.active {
|
|||
|
|
font-weight: bold;
|
|||
|
|
border-bottom: 3px solid #fff;
|
|||
|
|
opacity: 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.filter-btn {
|
|||
|
|
font-size: 14px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 二级Tab */
|
|||
|
|
.sub-tabs {
|
|||
|
|
display: flex;
|
|||
|
|
background: #fff;
|
|||
|
|
padding: 10px 0;
|
|||
|
|
justify-content: space-around;
|
|||
|
|
border-bottom: 1px solid #eee;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.sub-tab-item {
|
|||
|
|
font-size: 15px;
|
|||
|
|
color: #666;
|
|||
|
|
padding: 4px 10px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.sub-tab-item.active {
|
|||
|
|
font-weight: bold;
|
|||
|
|
color: #3a8dff;
|
|||
|
|
border-bottom: 2px solid #3a8dff;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 表格样式 */
|
|||
|
|
.list-container {
|
|||
|
|
margin: 10px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.table-header,
|
|||
|
|
.table-row {
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
background: #fff;
|
|||
|
|
border-radius: 8px;
|
|||
|
|
padding: 10px;
|
|||
|
|
margin-bottom: 6px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.table-header {
|
|||
|
|
font-weight: bold;
|
|||
|
|
background: #f0f3f8;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.col-rank {
|
|||
|
|
width: 40px;
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.col-driver {
|
|||
|
|
flex: 1;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.avatar {
|
|||
|
|
width: 28px;
|
|||
|
|
height: 28px;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
margin-right: 6px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.col-num,
|
|||
|
|
.col-distance,
|
|||
|
|
.col-money {
|
|||
|
|
width: 80px;
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
</style>
|