添加排行榜功能

This commit is contained in:
yangjun 2024-07-15 22:14:25 +08:00
parent 05a4a8a0fb
commit 9b38be4697
2 changed files with 402 additions and 0 deletions

View File

@ -91,6 +91,7 @@ const mainRoutes = {
{ path: '/signIn', component: _import('applyList/signIn'), name: 'signIn', meta: { title: '签到记录', isTab: true } },
{ path: '/technician', component: _import('applyList/technician'), name: 'technician', meta: { title: '师傅列表', isTab: true } },
{ path: '/riderTop', component: _import('riderTop/riderTop'), name: 'riderTop', meta: { title: '收益排行榜', isTab: true } },
{ path: '/czlTop', component: _import('riderTop/czlTop'), name: 'czlTop', meta: { title: '排行榜', isTab: true } },
// 2023.02.27 4.5版本 新增
{ path: '/masterPosition', component: _import('business/masterPosition'), name: 'masterPosition', meta: { title: '师傅位置记录', isTab: true } },
@ -120,6 +121,7 @@ const mainRoutes = {
// 商家管理
{ path: '/merchantList', component: _import('business/merchantList'), name: 'merchantList', meta: { title: '商家管理', isTab: true } },
{ path: '/profitList', component: _import('business/profitList'), name: 'profitList', meta: { title: '商家收益统计', isTab: false } },
{ path: '/merchantDetailList', component: _import('business/merchantDetailList'), name: 'merchantDetailList', meta: { title: '商家信息', isTab: true } },
// 2023.03.13 新增
{ path: '/top', component: _import('riderTop/top'), name: 'top', meta: { title: '信用分排行榜', isTab: true } },
{ path: '/creditScore', component: _import('riderTop/creditScore'), name: 'creditScore', meta: { title: '信用分明细', isTab: true } },

View File

@ -0,0 +1,400 @@
<template>
<div>
<div style="display: inline-block;">
<div style="margin:5px;display: inline-block;">
<span>统计数据</span>
<el-select v-model="descType" style="width:150px;margin-left: 10px;" @change="select">
<el-option label="在线时长" value="1"></el-option>
<el-option label="业绩" value="2"></el-option>
<el-option label="加钟率" value="3"></el-option>
<el-option label="充值率" value="4"></el-option>
</el-select>
</div>
<div style="margin:5px;display: inline-block;">
<span>开始时间</span>
<el-date-picker style="width: 160px;margin-left: 10px;" v-model="startTime" align="right"
type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间">
</el-date-picker>&nbsp;&nbsp;&nbsp;
</div>
<div style="margin:5px;display: inline-block;">
<span>截止时间</span>
<el-date-picker style="width: 160px;margin-left: 10px;" v-model="endTime" align="right"
type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择截止时间">
</el-date-picker>
</div>
<el-button style='margin-left:15px;' size="mini" type="primary" icon="document" @click="select">查询
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="homeData.records">
<el-table-column label="编号" width="80">
<template slot-scope="scope">
<div>{{scope.$index+1}}</div>
</template>
</el-table-column>
<el-table-column prop="artificerName" label="师傅昵称">
<template slot-scope="scope">
<div style="color: #4f9dec;cursor: pointer;" @click="updatesvideo(scope.row.userId)">
{{scope.row.artificerName?scope.row.artificerName:'未绑定'}}
</div>
</template>
</el-table-column>
<el-table-column prop="typeval" label="在线时长" v-if="descType==1">
</el-table-column>
<el-table-column prop="typeval" label="业绩" v-if="descType==2">
</el-table-column>
<el-table-column prop="typeval" label="加钟率" v-if="descType==3">
</el-table-column>
<el-table-column prop="typeval" label="充值率" v-if="descType==4">
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange1" @current-change="handleCurrentChange1"
:page-sizes="[10, 20, 30, 40]" :page-size="size" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="homeData.total">
</el-pagination>
</div>
</div>
</template>
<script>
import {
quillEditor
} from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import quillConfig from '../locality/quill-config.js'
import axios from 'axios';
import {
jsonp
} from 'vue-jsonp'
import {
provinceAndCityData,
regionData,
provinceAndCityDataPlus,
regionDataPlus,
CodeToText,
TextToCode
} from 'element-china-area-data'
var cityOptions = []
var geocoder, map, markersArray = [];
export default {
components: {
quillEditor
},
data() {
return {
size: 10,
page: 1,
limit: 10,
classify: 6,
type: '',
method: 'false',
tableDataLoading: true,
homeData: {},
choicenData: [],
userId: '',
search: '',
myPhone: '',
classifyIds: 0,
statusId: 1,
quillOption: quillConfig,
// x
indentState: 0, //
info: {
stockDate: this.getNowTime(), //
},
info1: {
stockDate1: this.getNowTime1(), //
},
startTime: '',
endTime: '',
fwData:[],
classifyId:'',
artificerName:'',
descType:'1',
}
},
methods: {
//
getNowTime() {
var now = new Date()
var year = now.getFullYear() //
var month = now.getMonth() //
var date = now.getDate() //
var hh = now.getHours() < 10 ? '0' + now.getHours() : now.getHours()
var mm = now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes()
var ss = now.getSeconds() < 10 ? '0' + now.getSeconds() : now.getSeconds()
month = month + 1
month = month.toString().padStart(2, '0')
date = date.toString().padStart(2, '0')
var defaultDate = `${year}-${month}-${date} ${hh}:${mm}:${ss}`
return defaultDate
this.$set(this.info, 'stockDate', defaultDate)
},
//
getNowTime1() {
var now = new Date();
var year = now.getFullYear(); //
var month = now.getMonth(); //
var date = now.getDate(); //
var hh = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
var mm = now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
var ss = now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
month = month + 1;
month = month.toString().padStart(2, "0");
date = date.toString().padStart(2, "0");
var defaultDate = `${year}-${month}-${date} ${hh}:${mm}:${ss}`;
return defaultDate;
this.$set(this.info, "stockDate", defaultDate);
},
handleSizeChange1(val) {
this.limit = val
this.homeSelect()
},
handleCurrentChange1(val) {
this.page = val
this.homeSelect()
},
//
homeSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl('artificer/selectArtificerPhbList'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit,
'startTime': this.startTime,
'endTime': this.endTime,
'type': this.descType,
})
}).then(({ data }) => {
console.log("------>",data)
this.tableDataLoading = false
this.homeData = data.data
})
},
//
updatesvideo(userId) {
if (userId) {
this.$router.push({
path: '/userDetail',
query: {
userId: userId
}
})
} else {
this.$notify({
title: '提示',
duration: 1800,
message: '未绑定用户',
type: 'warning'
})
return
}
},
//
select() {
this.page = 1
this.limit = 10
this.homeSelect()
},
//
cleans() {
this.classifyId = ''
this.artificerName = ''
this.address = ''
this.flag = ''
this.info.stockDate = this.getNowTime()
this.homeSelect()
},
//
animeOrder() {
console.log('info', this.info)
this.homeSelect()
// this.colonel()
},
//
orderfenxi(value) {
this.page = 1
let vanumber = value
// if (vanumber === 1) {
this.flag = value
this.homeSelect()
// this.colonel()
// }
// if (vanumber === 2) {
// this.flag = 2
// this.taskData()
// this.colonel()
// }
// if (vanumber === 3) {
// this.flag = 3
// this.taskData()
// this.colonel()
// }
},
//
fwSelect() {
this.$http({
url: this.$http.adornUrl('sys/dict/selectDictList'),
method: 'get',
params: this.$http.adornParams({
'type': '服务类型'
})
}).then(({
data
}) => {
let returnData = data.data
this.fwData = returnData
})
},
},
mounted() {
this.homeSelect()
this.fwSelect()
}
}
</script>
<style>
.customWidth {
width: 80% !important;
}
.adver_main.box {
display: block;
max-width: 100%;
text-align: center;
border: 1px dotted rgba(67, 79, 103, .4);
}
.cards {
padding: 0 8px;
margin-bottom: 15px;
}
.adver_main.box a {
display: flex;
justify-content: center;
height: 150px;
line-height: 150px;
text-decoration: none
}
.bannerManin {
border: 1px solid #e8e8e8;
font-size: 14px;
padding: 0 24px;
display: flex;
justify-content: center;
align-items: center;
height: 113px;
color: rgba(0, 0, 0, .65);
}
.bannerManin span {
display: inline-block;
margin-left: 5px;
}
.bannerManin img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.bannerbtn {
display: flex;
border-top: none !important;
border: 1px solid #e8e8e8;
padding: 11px;
font-size: 14px;
color: #3E8EF7;
}
.bannerbtn a {
flex: 1;
text-align: center;
color: #3E8EF7 !important;
text-decoration: none;
}
.imgs {
position: relative;
border-radius: 6px;
width: 148px;
height: 148px;
margin-right: 10px;
display: inline-block;
}
.dels {
position: absolute;
top: 0;
left: 0;
display: none;
}
.dels .el-icon-delete {
line-height: 148px;
padding-left: 58px;
font-size: 25px;
color: #fff;
}
.imgs:hover .dels {
width: 100%;
height: 100%;
background: #000;
display: block;
opacity: 0.5;
}
.bqList {
padding: 4px 14px;
margin: 4px;
border: 1px solid #efefef;
font-size: 12px;
color: #999;
border-radius: 4px;
margin-right: 15px;
}
.delss {
display: none;
position: relative;
}
.delss .el-icon-delete {
position: absolute;
top: 0;
}
.bqList:hover .delss {
display: initial;
opacity: 0.5;
}
.tj {
padding: 6px !important;
margin: 4px;
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
}
</style>