Commit 1f000930 authored by Mac's avatar Mac

活动提成统计

parent 8e380c29
......@@ -303,6 +303,23 @@ export function setActivityCommissionSendEmployee(data) {
});
}
// 获取活动提成总统计
export function getActivityCommissionStatistics(data) {
return request({
url: '/Activity/GetActivityCommissionStatistics',
method: 'post',
data
});
}
// 获取活动期数下拉列表
export function getActivityCommissionPeriodsList(data) {
return request({
url: '/Activity/GetActivityCommissionPeriodsList',
method: 'post',
data
});
}
......@@ -1334,6 +1334,7 @@
gourlactive(item){
this.OpenNewUrl('/financial/reportform/activityCommissionForOrderList', {
ActivityId: item.ActivityId,
OrderId:item.Id
});
}
}
......
......@@ -106,7 +106,7 @@
//列表数据参数
msg: {
ActivityId: 0,
OrderId:0,
},
pageCount: 0,
persistent: false,
......@@ -123,6 +123,9 @@
if (this.$route.query && this.$route.query.ActivityId) {
this.msg.ActivityId = this.$route.query.ActivityId
}
if (this.$route.query && this.$route.query.OrderId) {
this.msg.OrderId = this.$route.query.OrderId
}
this.getList()
},
methods: {
......
......@@ -78,7 +78,7 @@
<div>{{activityobj.Type==1?'按人头':'百分比'}}</div>
</div>
<div class="Period_Spreate">
<div class="Period-rule-title">{{activityobj.Type==1?'提成金额':'比例'}}</div>
<div class="Period-rule-title">{{activityobj.Type==1?'活动提成金额':'活动提成比例'}}</div>
<div>{{activityobj.Type==1?activityobj.CommissionMoney+'元':activityobj.CommissionMoney+'%'}}</div>
</div>
</div>
......@@ -103,12 +103,12 @@
<q-radio v-model="addMsg.Type" val="1" label="人头" @input="getradio"/>
<q-radio v-model="addMsg.Type" val="2" label="百分比" @input="getradio"/>
</div>
<div class="Okr_Length" v-if="addMsg.Type==1">金额<span class="FormItem-asterisk">*</span></div>
<div class="Okr_Length" v-if="addMsg.Type==1">活动提成金额<span class="FormItem-asterisk">*</span></div>
<el-input v-if="addMsg.Type==1" type="text" v-model="addMsg.CommissionMoney" style="margin: 10px 0;" onkeyup="this.value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''" size="small">
<template slot="append"></template>
</el-input>
<div class="Okr_Length" v-if="addMsg.Type==2">百分比<span class="FormItem-asterisk">*</span></div>
<div class="Okr_Length" v-if="addMsg.Type==2">活动提成比例<span class="FormItem-asterisk">*</span></div>
<el-input v-if="addMsg.Type==2" type="number" :min='1' :max='100' v-model="addMsg.CommissionMoney" style="margin: 10px 0;" @input="getbaifenbi" size="small">
<template slot="append">%</template>
</el-input>
......
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.cycleOrderList .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.cycleOrderList .text-bottom{
height: 32px;line-height: 32px; margin-bottom: 10px;
}
.cycleOrderList ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.cycleOrderList ._icon_btn i {
width: 30px;
height: 30px;
display: inline-block;
color: white !important;
border-radius: 50%;
text-align: center;
line-height: 30px;
margin-right: 10px;
cursor: pointer;
outline: none;
}
.cycleOrderList .el-table td,.el-table th{
padding: 5px 0;
}
</style>
<template>
<div class="page-body cycleOrderList">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select filled stack-label @input="resetSearch()" option-value="Id"
option-label="Name" v-model="msg.PeriodId" :options="PeriodsList" label="周期"
:dense="false" emit-value map-options />
</div>
<q-select @input="resetSearch" filled stack-label option-value="Id" option-label="EmployeeName" use-input
v-model="msg.UserId" ref="DeptTier" :options="PersionList" label="销售" :dense="false"
class="col-3 " emit-value map-options @filter="filterFn2" >
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
<div class="col-3">
<q-input filled v-model="msg.ActivityName" @keyup.enter.native="resetSearch()" label="活动名称" />
</div>
<div class="col-3">
<q-input filled v-model="msg.OrderId" @keyup.enter.native="resetSearch()" label="订单号" />
</div>
<div class="col-3">
<q-input filled v-model="msg.DSUserId" @keyup.enter.native="resetSearch()" label="电商用户ID" />
</div>
<div class="col-3">
<q-input filled v-model="msg.DSUserName" @keyup.enter.native="resetSearch()" label="报名用户名称" />
</div>
</div>
</div>
<div class="page-search row items-center" style="justify-content: space-between;">
<span style="font-size: 20px;font-weight: 400;">提成统计 <span style="font-size: 16px;">(提成总计:{{TotalCommission}})</span> </span>
<q-btn  color="primary" size="11px" label="导出" @click="tcexport" style="margin-left:10px"/>
</div>
<template >
<el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="SchoolName" width='150' label="校区"></el-table-column>
<el-table-column prop="DeptName" label="部门"></el-table-column>
<el-table-column prop="UserName" label="销售"> </el-table-column>
<el-table-column prop="OrderId" label="订单号">
<template slot-scope="scope">
<div v-if="scope.row.OrderId" style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList('/sale/orderStatistics',scope.row)">
{{scope.row.OrderId}}
</div>
</template>
</el-table-column>
<el-table-column prop="ActivityName" label="活动名称"></el-table-column>
<el-table-column prop="ActivityTime" label="活动日期"></el-table-column>
<el-table-column prop="DSUserName" label="报名用户" >
<template slot-scope="scope">
<div v-if="scope.row.DSUserName">
{{scope.row.DSUserName}} <span>({{scope.row.DSUserId}})</span>
</div>
</template>
</el-table-column>
<el-table-column prop="CommissionMoney" label="提成金额" >
<template slot-scope="scope">
<div style="color: rgb(233, 82, 82);">{{scope.row.CommissionMoney}}</div>
</template>
</el-table-column>
<el-table-column width='90' prop="Periods" label="期数"> </el-table-column>
<el-table-column prop="Remark" width='160' label="备注"> </el-table-column>
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges" layout="total,prev, pager, next, jumper" :current-page.sync="msg.PageIndex"
:page-size="msg.PageSize" :total='total'>
</el-pagination>
</div>
</template>
</div>
</template>
<script>
import {
getSchoolDropdown
} from '../../../api/school/index'
import {
queryEmployee
} from '../../../api/users/user'
import{
getActivityCommissionStatistics,
getActivityCommissionPeriodsList
} from '../../../api/finance/index'
import {
getClassDropDownList,
} from "../../../api/school/index";
import {
EduDownLoad,
} from '../../../api/common/common';
export default {
meta: {
title: "活动提成统计"
},
props: {},
components: {
},
data() {
return {
loading: false,
//列表数据参数
msg: {
PageIndex:1,
PageSize:10,
PeriodId:0,
UserId:0,
ActivityName:'',
OrderId:'',
DSUserId:'',
DSUserName:'',
},
pageCount: 0,
persistent: false,
listData:{},
tableData:[],
total:0,
company:[],
department:[],
ClassList:[],
allClassList:[],
returnString: [], //默认岗位
see_tcdetailed:false,
schoolList:[],
PersionList: [], //员工列表
AllemployeeList: [], //所有员工
PeriodsList:[],//周期列表
TotalCommission:0,
}
},
created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "see_tcdetailed"){//判断是否可以查看其他明细
this.see_tcdetailed = true;
}
})
if(this.see_tcdetailed == false){
this.msg.UserId = userinfo.Id
}
},
mounted() {
if(this.$route.query && this.$route.query.OrderId){
this.msg.OrderId = this.$route.query.OrderId
}
this.getList()
// this.getBranchList()
this.getEmployee();
this.getPeriodList()
},
methods: {
resetSearch() {
this.msg.PageIndex = 1;
this.getList()
},
getList(){
if(this.msg)
this.loading = true;
getActivityCommissionStatistics(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData.List
this.TotalCommission = res.Data.PageData.TotalCommission
this.total = res.Data.Count
}
})
},
unique(arr,Name){//数组去重
const res = new Map();
return arr.filter(
(list) => !res.has(list.text) && res.set(list.text, 1)
);
},
handleCurrentChanges(val){
this.msg.PageIndex= val;
this.getList()
},
//筛选员工
filterFn(val, update) {
update(() => {
if (val === '') {
this.ClassList = JSON.parse(JSON.stringify(this.allClassList))
} else {
const needle = val.toLowerCase()
this.ClassList = this.allClassList.filter(v => v.ClassName.toLowerCase().indexOf(needle) > -1)
}
})
},
getBranchList(){//获取校区
getSchoolDropdown({}).then(res => {
this.schoolList = res.Data;
var obj = {
SName: '全部',
SId: '-1'
}
this.schoolList.unshift(obj);
}).catch(() => {
})
},
//筛选员工
filterFn2(val, update) {
update(() => {
if (val === '') {
this.PersionList = JSON.parse(JSON.stringify(this.AllemployeeList))
} else {
const needle = val.toLowerCase()
this.PersionList = this.AllemployeeList.filter(v => v.EmployeeName.toLowerCase().indexOf(needle) > -1)
}
})
},
//获取员工列表
getEmployee() {
var qMsg = {
EmployeeName: ""
}
queryEmployee(qMsg).then(res => {
if (res.Code == 1) {
let obj = {
EmployeeName: '不限',
Id: 0
}
res.Data.unshift(obj)
var jsonData = res.Data;
if (jsonData && jsonData.length > 0) {
this.AllemployeeList = JSON.parse(JSON.stringify(jsonData));
this.PersionList = JSON.parse(JSON.stringify(jsonData));;
}
}
})
},
getPeriodList(){//获取周期下拉列表
getActivityCommissionPeriodsList({}).then(res => {
if (res.Code == 1) {
this.PeriodsList = res.Data
let obj = {
Name: '不限',
Id: 0
}
this.PeriodsList.unshift(obj)
}
})
},
tcexport(){//导出
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/Activity/GetActivityCommissionStatisticsToExcel", msg, "活动提成统计.xls")
},
goUrlorderList(path,row){//订单跳转
this.OpenNewUrl("/sale/activeOrderStatistics", {
OrderId: row.OrderId,
});
},
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
......@@ -583,7 +583,11 @@ const routes = [{
component: () =>
import("pages/financial/reportform/activityCommissionUserList.vue")
},
{
path: "/financial/reportform/activityStatistics", //工作台 获取活动提成统计
component: () =>
import("pages/financial/reportform/activityStatistics.vue")
},
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment