sadjv3_admin/src/views/riderTop/riderTop.vue

620 lines
17 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<div style="display: inline-block;">
<div style="position: relative;display: inline-block;margin: 5px;">
<span>排序类型</span>
<el-select v-model="px" style="width:150px;margin-left: 10px;">
<el-option value="1" label="正序"></el-option>
<el-option value="2" label="倒叙"></el-option>
</el-select>&nbsp;&nbsp;
</div>
<div style="position: relative;display: inline-block;">
<span>排序字段:</span>
<el-select v-model="type" style="width:150px;margin-left: 10px;">
<el-option value="1" label="订单数量"></el-option>
<el-option value="2" label="总收益"></el-option>
<el-option value="3" label="业绩"></el-option>
<el-option value="4" label="在线时长"></el-option>
<el-option value="5" label="加钟金额"></el-option>
<el-option value="6" label="充值金额"></el-option>
<el-option value="7" label="积分"></el-option>
<el-option value="8" label="信用分"></el-option>
</el-select>&nbsp;&nbsp;
</div>
<div style="position: relative;display: inline-block;">
<span>技师状态:</span>
<el-select v-model="status" style="width:150px;margin-left: 10px;">
<el-option value="1" label="正常"></el-option>
<el-option value="2" label="停牌"></el-option>
</el-select>&nbsp;&nbsp;
</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>
<el-button style='margin-left:15px;' size="mini" type="primary" icon="document" @click="cleans">重置
</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="ddsl" label="订单数量">
</el-table-column>
<el-table-column prop="sy" label="总收益">
</el-table-column>
<el-table-column prop="yj" label="业绩">
</el-table-column>
<el-table-column prop="zxsc" label="在线时长(分钟)">
</el-table-column>
<el-table-column prop="jzl" label="加钟金额">
</el-table-column>
<el-table-column prop="czl" label="充值金额">
</el-table-column>
<el-table-column prop="xyf" label="信用分">
</el-table-column>
<el-table-column prop="jf" label="积分">
<template slot-scope="scope">
<span style="color: #4f9dec;cursor: pointer;" @click="showJfDetails(scope.row)">
{{scope.row.jf}}
</span>
<el-button size="mini" style="color: #4f9dec;background: #fff;border: none;"
@click="showInsertJfDetail(scope.row)">修改</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination
@size-change="handleSizeChange1"
@current-change="handleCurrentChange1"
:page-size="limit"
:current-page="page"
layout="total,prev,pager,next,jumper"
:total="homeData.total">
</el-pagination>
</div>
<!--技师积分详情列表-->
<el-dialog title="技师积分详情列表" :visible.sync="dialogJfDetailListFormVisible" width="80%" center>
<div style="display: inline-block">
<span>类型:</span>
<el-select
clearable
v-model="jfDetailClassify"
style="width: 150px; margin-left: 10px">
<el-option
v-for="item in dictData"
:key="item.id"
:label="item.value"
:value="item.id">
</el-option>
</el-select>&nbsp;&nbsp;
</div>
<div style="margin-left:10px;display: inline-block;">
<span>开始时间:</span>
<el-date-picker style="width: 160px;" v-model="jfDetailStartTime" align="right"
type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间">
</el-date-picker>&nbsp;&nbsp;&nbsp;
</div>
<div style="margin-left:10px;display: inline-block;">
<span>结束时间:</span>
<el-date-picker style="width: 160px;" v-model="jfDetailEndTime" align="right" type="datetime"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择结束时间">
</el-date-picker>
</div>
<el-button
style="margin-left: 10px;"
size="mini"
type="primary"
icon="document"
@click="selectJfDetails">查询
</el-button>
<el-button
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="cleanJfDetails">重置
</el-button>
<el-table :data="jfDetailData.records" style="width: 100%">
<el-table-column prop="artificerName" label="技师名称" align="center"></el-table-column>
<el-table-column prop="createTime" label="时间" align="center"></el-table-column>
<el-table-column prop="classify" label="类型" align="center">
<template slot-scope="scope">
{{ showDictValue(scope.row.classify, dictData) }}
</template>
</el-table-column>
<el-table-column prop="integral" label="积分" align="center">
<template slot-scope="scope">
<span v-if="scope.row.type==2">-</span>
{{scope.row.integral}}
</template>
</el-table-column>
<el-table-column prop="achievement" label="业绩" align="center"></el-table-column>
<el-table-column prop="ordersNo" label="订单号" align="center"></el-table-column>
<el-table-column prop="remarks" label="备注" align="center"></el-table-column>
</el-table>
<div style="text-align: center; margin-top: 10px">
<el-pagination
@size-change="handleJfSizeChange"
@current-change="handleJfCurrentChange"
:page-size="jfDetailLimit"
:current-page="jfDetailPage"
layout="total, prev, pager, next,jumper"
:total="jfDetailData.totalCount"
></el-pagination>
</div>
</el-dialog>
<!-- 修改积分 -->
<el-dialog title="修改积分" :visible.sync="dialogJfDetail" center>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">修改类型:</span>
<el-radio-group v-model="jfDetailType">
<el-radio :label="1">增加</el-radio>
<el-radio :label="2">减少</el-radio>
</el-radio-group>
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">积分</span>
<el-input style="width:50%;" v-model="jfDetailIntegral" type="number" :min="0" :max="100" :controls="false"
placeholder="请输入积分"></el-input>
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">备注:</span>
<el-input style="width:50%;"
v-model="jfDetailRemarks"
type="textarea"
:rows="4"
placeholder="请输入备注">
</el-input>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogJfDetail = false">取 消</el-button>
<el-button type="primary" @click="insertJfDetail()"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
page: 1,
limit: 10,
method: 'false',
tableDataLoading: true,
homeData: {},
info: {
stockDate: this.getNowTime(), //日期
},
info1: {
stockDate1: this.getNowTime1(), //日期
},
startTime: '',
endTime: '',
px: '',
type: '',
status: '',
jfDetailArtificerId: '',
jfDetailArtificerName: '',
jfDetailClassify: '',
jfDetailType: '',
jfDetailIntegral: 0,
jfDetailRemarks: '',
jfDetailStartTime: '',
jfDetailEndTime: '',
jfDetailPage: 1,
jfDetailLimit: 10,
jfDetailData: {},
jfDetailTableDataLoading: false,
dialogJfDetailListFormVisible: false,
dialogJfDetail: false,
dictData:[{id:1,value:'在线时长'},{id:2,value:'充值'},{id:3,value:'业绩'},{id:4,value:'系统调整'}],
}
},
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/selectArtificerMoneyList'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit,
'startTime': this.startTime,
'endTime': this.endTime,
'px':this.px,
'type':this.type,
'status':this.status,
})
}).then(({ data }) => {
console.log("------>",data)
this.tableDataLoading = false
this.homeData = data.data
console.log(this.homeData)
})
},
// 详情跳转
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.px = ''
this.type = ''
this.status = ''
this.startTime = ''
this.endTime = ''
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
})
},
showDictValue(data, datas){
const dictItem = datas.find(item => data === item.id);
return dictItem ? dictItem.value : '';
},
showJfDetails(row){
this.jfDetailArtificerId=row.artificerId;
this.dialogJfDetailListFormVisible = true;
this.selectJfDetails();
},
selectJfDetails(){
this.jfDetailTableDataLoading = true;
this.$http({
url: this.$http.adornUrl('artificer/getJfDetailList'),
method: 'get',
params: this.$http.adornParams({
'artificerId' : this.jfDetailArtificerId,
'classify': this.jfDetailClassify,
'startTime': this.jfDetailStartTime,
'endTime': this.jfDetailEndTime,
'page': this.jfDetailPage,
'limit': this.jfDetailLimit,
})
}).then(({ data }) => {
this.jfDetailTableDataLoading = false
this.jfDetailData = data.data
})
},
cleanJfDetails(){
this.jfDetailClassify='';
this.jfDetailStartTime='';
this.jfDetailEndTime='';
this.jfDetailPage=1;
this.jfDetailLimit=10;
this.selectJfDetails();
},
//分页
handleJfSizeChange(val) {
this.jfDetailLimit = val;
this.selectJfDetails();
},
//翻页
handleJfCurrentChange(val) {
this.jfDetailPage = val;
this.selectJfDetails();
},
showInsertJfDetail(row){
this.jfDetailArtificerId=row.artificerId;
this.jfDetailArtificerName=row.artificerName;
this.jfDetailType='';
this.jfDetailIntegral=0;
this.jfDetailRemarks='';
this.dialogJfDetail = true;
},
insertJfDetail(){
if (this.jfDetailType == "") {
this.$notify({
title: "提示",
duration: 1800,
message: "请选择型",
type: "warning",
});
return;
}
if (this.jfDetailIntegral == "") {
this.$notify({
title: "提示",
duration: 1800,
message: "请填写积分",
type: "warning",
});
return;
}
this.$http({
url: this.$http.adornUrl("artificer/insertJfDetail"),
method: "post",
params: this.$http.adornParams({
artificerId: this.jfDetailArtificerId,
artificerName: this.jfDetailArtificerName,
type: this.jfDetailType,
integral: this.jfDetailIntegral,
remarks : "系统调整积分:"+this.jfDetailRemarks,
}),
}).then(({data}) => {
if (data.code == 0) {
this.$message({
message: "修改成功",
type: "success",
duration: 1500,
onClose: () => {
this.homeSelect();
},
});
this.dialogJfDetail = false;
} else {
this.$message({
message: data.msg,
type: "warning",
duration: 1500,
onClose: () => {
},
});
}
});
},
},
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>