Commit 0546af81 authored by Mac's avatar Mac

业绩提成 相关页面

parent a23fbae5
......@@ -649,6 +649,100 @@ export function GetBonusPlan(data) {
data
});
}
/**
* 获取业绩期数分页列表
*/
export function getSellAchievementsPeriodsPageList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsPeriodsPageList',
method: 'post',
data
});
}
/**
* 生成业绩提成
*/
export function setAchievementsCommissionInfo(data) {
return request({
url: '/SellAchievements/SetAchievementsCommissionInfo',
method: 'post',
data
});
}
/**
* 业绩提成 获取提成可发放人员
*/
export function getSellAchievementsSendEmployeeList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsSendEmployeeList',
method: 'post',
data
});
}
/**
* 业绩提成 获取提成可发放人员
*/
export function setSellAchievementsSendEmployee(data) {
return request({
url: '/SellAchievements/SetSellAchievementsSendEmployee',
method: 'post',
data
});
}
/**
* 业绩提成 获取提成期数 员工提成
*/
export function getSellAchievementsUserList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsUserList',
method: 'post',
data
});
}
/**
* 业绩提成 获取期数提成 员工提成明细列表
*/
export function getSellAchievementsUserDetailList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsUserDetailList',
method: 'post',
data
});
}
/**
* 业绩提成 获取订单跳转 提成详情
*/
export function getSellAchievementsForOrderList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsForOrderList',
method: 'post',
data
});
}
/**
* 业绩提成 获取订单跳转 提成详情
*/
export function getSellAchievementsStatistics(data) {
return request({
url: '/SellAchievements/GetSellAchievementsStatistics',
method: 'post',
data
});
}
/**
* 业绩提成 获取提成期数下拉列表
*/
export function getSellAchievementsPeriodsList(data) {
return request({
url: '/SellAchievements/GetSellAchievementsPeriodsList',
method: 'post',
data
});
}
......
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.AchievementsForOrderList .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.AchievementsForOrderList .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.AchievementsForOrderList ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.AchievementsForOrderList ._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;
}
.AchievementsForOrderList .el-table td,
.el-table th {
padding: 5px 0;
}
</style>
<template>
<div class="page-body AchievementsForOrderList">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-btn  color="primary"  size="11px"  label="返回"  @click="goreturn"  style="margin-left:10px" />
</div>
</div>
</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" label="校区" width='150' :filters='SchoolNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="DeptName" label="部门" :filters='DeptNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="UserType" label="类型">
<template slot-scope="scope">
<span v-if="scope.row.UserType == 1">市场</span>
<span v-if="scope.row.UserType == 2">顾问</span>
<span v-if="scope.row.UserType == 3">教师</span>
</template>
</el-table-column>
<el-table-column prop="UserName" label="人员" :filters='UserNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="IsDept" label="业绩方式" >
<template slot-scope="scope">
<span v-if="scope.row.IsDept==1">部门</span>
<span v-if="scope.row.IsDept==2">个人</span>
</template>
</el-table-column>
<el-table-column width='170' prop="ClassName" label="班级信息">
<template slot-scope="scope">
<div><span style="cursor: pointer;text-decoration: underline;" @click="goUrlclass('/course/classManage',scope.row.ClassName)">{{scope.row.ClassName}}</span> {{scope.row.ClassTypeName}}<span style="color: #409EFF;"
v-if='scope.row.IsContinueClass==1'>(续)</span></div>
<div v-if="scope.row.StudentCount">学生数量:{{scope.row.StudentCount}}</div>
</template>
</el-table-column>
<el-table-column prop="OrderId" label="订单号">
<template slot-scope="scope">
<div style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList('/sale/orderStatistics',scope.row)">{{scope.row.OrderId}} </div>
</template>
</el-table-column>
<el-table-column width='130' prop="TotalCommissionMoney" label="订单发放信息">
<template slot-scope="scope">
<div v-if="scope.row.TotalCommissionMoney" style="color: rgb(255, 156, 0);">应发:{{scope.row.TotalCommissionMoney}}</div>
<div v-if="scope.row.OtherMoney">额外奖励:{{scope.row.OtherMoney}}</div>
<div v-if="scope.row.BackMoney">额外扣除:{{scope.row.BackMoney}}</div>
<div v-if="scope.row.GiveOutMoney">累计已发:{{scope.row.GiveOutMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="IsFirstCommission" label="首次发放">
<template slot-scope="scope">
<div v-if="scope.row.IsFirstCommission">{{scope.row.IsFirstCommission==1?'是':'否'}}</div>
</template>
</el-table-column>
<el-table-column prop="TotalHours" label="课时统计" width="160">
<template slot-scope="scope">
<div v-if="scope.row.TotalHours">总课时:{{ scope.row.TotalHours }}</div>
<div v-if="scope.row.TotalLearn">
已学习课时:
<div
style=" display: inline-block;cursor: pointer;text-decoration: underline;"
@click="goUrlkehao('/financial/studentsClassfee', scope.row)"
>{{ scope.row.TotalLearn }}</div>
</div>
<div
v-if="scope.row.CurrentHours"
>当期消费课时:{{ scope.row.CurrentHours >= 0 ? scope.row.CurrentHours : '-' }}</div>
</template>
</el-table-column>
<!-- <el-table-column prop="TotalHours" label="总课时"> </el-table-column>
<el-table-column width='110' prop="TotalLearn" label="已学习课时"> </el-table-column>
<el-table-column width='110' prop="CurrentHours" label="当期消费课时">
<template slot-scope="scope">
<div>{{scope.row.CurrentHours>=0 ?scope.row.CurrentHours:'-'}}</div>
</template>
</el-table-column> -->
<el-table-column width='160' prop="CurrentPeriodMoney" label="当期发放信息">
<template slot-scope="scope">
<div v-if="scope.row.CurrentPeriodMoney" style="color: rgb(255, 156, 0);">应发:{{scope.row.CurrentPeriodMoney}}</div>
<div v-if="scope.row.CurrentExtraMoney">额外奖励:{{scope.row.CurrentExtraMoney}}</div>
<div v-if="scope.row.DeductionMoney">抵扣:{{scope.row.DeductionMoney}}</div>
<div v-if="scope.row.DeductionExtraMoney">奖励抵扣:{{scope.row.DeductionExtraMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="YFMoney" label="最终发放">
<template slot-scope="scope">
<div style="color: rgb(233, 82, 82);">{{scope.row.YFMoney}}</div>
</template>
</el-table-column>
<el-table-column width='85' prop="Periods" label="期数"> </el-table-column>
<el-table-column prop="Remark" width='160' label="备注"> </el-table-column>
</el-table>
</template>
</div>
</template>
<script>
import {
GetClassTypePageList,
} from '../../../api/system/index';
import {
getSellAchievementsForOrderList,
} from '../../../api/finance/index'
import {
getClassDropDownList,
} from "../../../api/school/index";
export default {
meta: {
title: "订单提成查询"
},
props: {},
components: {},
data() {
return {
loading: false,
//列表数据参数
msg: {
PeriodId: 0,
UserId: 0,
ClassId: 0,
OrderId: '',
},
pageCount: 0,
persistent: false,
listData: {},
tableData: [],
company: [],
department: [],
ClassList: [],
allClassList: [],
SchoolNamelist: [],
DeptNamelist: [],
UserNamelist: [],
see_tcdetailed: false,
}
},
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
}
if (this.$route.query && this.$route.query.UserId) {
this.msg.UserId = this.$route.query.UserId
}
this.getList()
// this.setClass()
},
methods: {
getList() {
if (this.msg)
this.loading = true;
getSellAchievementsForOrderList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data
this.SchoolNamelist = [];
this.DeptNamelist = [];
this.UserNamelist = [];
let obj_t = {
SchoolName: '合计',
YFMoney: 0,
}
this.tableData.forEach(x => {
let obj = {
text: x.SchoolName,
value: x.SchoolName
}
let obj2 = {
text: x.DeptName,
value: x.DeptName
}
let obj3 = {
text: x.UserName,
value: x.UserName
}
this.SchoolNamelist.push(obj)
this.DeptNamelist.push(obj2)
this.UserNamelist.push(obj3)
if (x.YFMoney) {
obj_t.YFMoney = this.accAdd(x.YFMoney, obj_t.YFMoney)
};
})
this.tableData.push(obj_t)
this.SchoolNamelist = this.unique(this.SchoolNamelist)
this.DeptNamelist = this.unique(this.DeptNamelist)
this.UserNamelist = this.unique(this.UserNamelist)
}
})
},
accAdd(arg1, arg2) { //js 加法精确计算
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m;
},
unique(arr, Name) { //数组去重
const res = new Map();
return arr.filter(
(list) => !res.has(list.text) && res.set(list.text, 1)
);
},
//选择班级
setClass(item) {
this.isShowClass = true;
getClassDropDownList({
CourseId: 0,
IsAddDefault: 1, //添加默认选项
}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
if (jsonData && jsonData.length > 0) {
this.ClassList = JSON.parse(JSON.stringify(jsonData));
this.allClassList = JSON.parse(JSON.stringify(jsonData));;
}
}
});
},
//筛选员工
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)
}
})
},
goUrl(path, id) {
this.$router.push({
path: '/financial/' + path,
query: {
"id": id,
blank: 'y',
tab: '单据详情'
}
})
},
filterHandler(value, row, column) {
const property = column['property'];
return row[property] === value;
},
StudentCount(a, b) {
return a.StudentCount - b.StudentCount;
},
goreturn() {
this.$router.go(-1);
},
goUrlclass(path,Names){//班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
},
goUrlorderList(path,row){//订单跳转
this.OpenNewUrl(path, {
OrderId: row.OrderId,
// EnterID:row.UserId
});
},
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.userCommissionDetails .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.userCommissionDetails .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.userCommissionDetails ._icon_btn i.icon-sousuo {
background-color: #47bf8c;
}
.userCommissionDetails ._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;
}
.userCommissionDetails .el-table td,
.el-table th {
padding: 5px 0;
}
</style>
<template>
<div class="page-body userCommissionDetails">
<div class="page-search row items-center">
<div style="margin-right: 10px;">
<q-btn color="primary" size="11px" label="返回" @click="goreturn" style="margin-left:10px" />
</div>
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select
filled
stack-label
use-input
input-debounce="0"
option-value="ClassId"
@input="getList"
option-label="ClassName"
v-model="msg.ClassId"
:options="ClassList"
label="班级"
:dense="false"
emit-value
map-options
@filter="filterFn"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">未找到相关数据</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3">
<q-select
filled
stack-label
input-debounce="0"
option-value="Id"
@input="getList"
option-label="Name"
v-model="msg.UserType"
:options="UserTypeList"
label="类型"
:dense="false"
emit-value
map-options
></q-select>
</div>
<div class="col-3">
<q-select
filled
stack-label
input-debounce="0"
option-value="Id"
@input="getList"
option-label="Name"
v-model="msg.IsDept"
:options="IsDeptList"
label="业绩方式"
:dense="false"
emit-value
map-options
></q-select>
</div>
<div class="col-3">
<q-input filled v-model="msg.OrderId" @keyup.enter.native="getList()" label="订单号" />
</div>
</div>
</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="UserType" label="类型">
<template slot-scope="scope">
<span v-if="scope.row.UserType == 1">市场</span>
<span v-if="scope.row.UserType == 2">顾问</span>
<span v-if="scope.row.UserType == 3">教师</span>
</template>
</el-table-column>
<el-table-column prop="UserName" label="销售"></el-table-column>
<el-table-column prop="IsDept" label="业绩方式">
<template slot-scope="scope">
<span v-if="scope.row.IsDept == 1">部门</span>
<span v-if="scope.row.IsDept == 2">个人</span>
</template>
</el-table-column>
<el-table-column width="170" prop="ClassName" label="班级信息">
<template slot-scope="scope">
<div>
<span
style="cursor: pointer;text-decoration: underline;"
@click="goUrlclass('/course/classManage', scope.row.ClassName)"
>{{ scope.row.ClassName }}</span>
{{ scope.row.ClassTypeName }}
<span
style="color: #409EFF;"
v-if="scope.row.IsContinueClass == 1"
>(续)</span>
</div>
<div v-if="scope.row.StudentCount">学生数量:{{ scope.row.StudentCount }}</div>
</template>
</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="IssueNum" label="发放次数" width="94">
<template slot-scope="scope">
<div
v-if="scope.row.IssueNum"
style="cursor: pointer;text-decoration: underline;"
@click="goorderUrl(scope.row)"
>发放第{{ scope.row.IssueNum }}</div>
</template>
</el-table-column>
<el-table-column width="130" prop="TotalCommissionMoney" label="订单发放信息">
<template slot-scope="scope">
<div
v-if="scope.row.TotalCommissionMoney"
style="color: rgb(255, 156, 0);"
>应发:{{ scope.row.TotalCommissionMoney }}</div>
<div v-if="scope.row.OtherMoney">额外奖励:{{ scope.row.OtherMoney }}</div>
<div v-if="scope.row.BackMoney">额外扣除:{{ scope.row.BackMoney }}</div>
<div v-if="scope.row.GiveOutMoney">累计已发:{{ scope.row.GiveOutMoney }}</div>
</template>
</el-table-column>
<el-table-column prop="IsFirstCommission" label="首次发放">
<template slot-scope="scope">
<div
v-if="scope.row.IsFirstCommission"
>{{ scope.row.IsFirstCommission == 1 ? '是' : '否' }}</div>
</template>
</el-table-column>
<el-table-column prop="TotalHours" label="课时统计" width="160">
<template slot-scope="scope">
<div v-if="scope.row.TotalHours">总课时:{{ scope.row.TotalHours }}</div>
<div v-if="scope.row.TotalLearn">
已学习课时:
<div
style=" display: inline-block;cursor: pointer;text-decoration: underline;"
@click="goUrlkehao('/financial/studentsClassfee', scope.row)"
>{{ scope.row.TotalLearn }}</div>
</div>
<div
v-if="scope.row.CurrentHours"
>当期消费课时:{{ scope.row.CurrentHours >= 0 ? scope.row.CurrentHours : '-' }}</div>
</template>
</el-table-column>
<!-- <el-table-column prop="TotalHours" label="总课时"> </el-table-column>
<el-table-column width='110' prop="TotalLearn" label="已学习课时">
<template slot-scope="scope">
<div >
{{scope.row.TotalLearn}}
</div>
</template>
</el-table-column>
<el-table-column width='110' prop="CurrentHours" label="当期消费课时">
<template slot-scope="scope">
<div>{{scope.row.CurrentHours>=0 ?scope.row.CurrentHours:'-'}}</div>
</template>
</el-table-column>-->
<el-table-column width="160" prop="CurrentPeriodMoney" label="当期发放信息">
<template slot-scope="scope">
<div
v-if="scope.row.CurrentPeriodMoney"
style="color: rgb(255, 156, 0);"
>应发:{{ scope.row.CurrentPeriodMoney }}</div>
<div v-if="scope.row.CurrentExtraMoney">额外奖励:{{ scope.row.CurrentExtraMoney }}</div>
<div v-if="scope.row.DeductionMoney">抵扣:{{ scope.row.DeductionMoney }}</div>
<div v-if="scope.row.DeductionExtraMoney">奖励抵扣:{{ scope.row.DeductionExtraMoney }}</div>
</template>
</el-table-column>
<el-table-column prop="YFMoney" label="最终发放">
<template slot-scope="scope">
<div style="color: rgb(233, 82, 82);">{{ scope.row.YFMoney }}</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>
</template>
</div>
</template>
<script>
import {
GetClassTypePageList,
} from '../../../api/system/index';
import {
getSellAchievementsUserDetailList,
} from '../../../api/finance/index'
import {
getClassDropDownList,
} from "../../../api/school/index";
export default {
meta: {
title: "员工提成明细列表"
},
props: {},
components: {},
data() {
return {
loading: false,
//列表数据参数
msg: {
PeriodId: 0,
UserId: 0,
ClassId: 0,
OrderId: '',
UserType: 0,//类型 1市场、2顾问、3教师
IsDept: 0,//业绩方式 1部门 2个人
UserIds: '',
},
UserTypeList: [{ Id: 0, Name: '不限' }, { Id: 1, Name: '市场' }, { Id: 2, Name: '顾问' }, { Id: 3, Name: '教师' },],
IsDeptList: [{ Id: 0, Name: '不限' }, { Id: 1, Name: '部门' }, { Id: 2, Name: '个人' }],
pageCount: 0,
persistent: false,
listData: {},
tableData: [],
company: [],
department: [],
ClassList: [],
allClassList: [],
}
},
created() { },
mounted() {
if (this.$route.query && this.$route.query.userId) {
this.msg.UserId = this.$route.query.userId
}
if (this.$route.query && this.$route.query.preriodId) {
this.msg.PeriodId = this.$route.query.preriodId
}
if (this.$route.query && this.$route.query.UserIds) {
this.msg.UserIds = this.$route.query.UserIds
}
this.getList()
this.setClass()
},
methods: {
getList() {
if (this.msg)
this.loading = true;
getSellAchievementsUserDetailList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data
if (this.tableData.length > 0) {
this.getAskfor()
}
}
})
},
getAskfor() { //求值
let obj = {
SchoolName: '合计',
YFMoney: 0,
}
this.tableData.forEach((x) => {
if (x.YFMoney) {
obj.YFMoney = this.accAdd(x.YFMoney, obj.YFMoney)
};
})
this.tableData.push(obj)
},
accAdd(arg1, arg2) { //js 加法精确计算
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m;
},
//选择班级
setClass(item) {
this.isShowClass = true;
getClassDropDownList({
CourseId: 0,
IsAddDefault: 1, //添加默认选项
}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
let obj = {
ClassId: 0,
ClassName: '不限'
}
jsonData.unshift(obj)
if (jsonData && jsonData.length > 0) {
this.ClassList = JSON.parse(JSON.stringify(jsonData));
this.allClassList = JSON.parse(JSON.stringify(jsonData));;
}
}
});
},
//筛选员工
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)
}
})
},
goUrl(path, id) {
this.$router.push({
path: '/financial/' + path,
query: {
"id": id,
blank: 'y',
tab: '单据详情'
}
})
},
filterHandler(value, row, column) {
const property = column['property'];
return row[property] === value;
},
StudentCount(a, b) {
return a.StudentCount - b.StudentCount;
},
goorderUrl(row) {
this.$router.push({
path: '/financial/market/AchievementsForOrderList',
query: {
OrderId: row.OrderId,
UserId: row.UserId,
blank: 'y',
}
})
},
goreturn() {
this.$router.go(-1);
},
goUrlorderList(path, row) {//订单跳转
this.OpenNewUrl(path, {
OrderId: row.OrderId,
// EnterID:row.UserId
});
},
goUrlclass(path, Names) {//班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
},
goUrlkehao(path, row) {//跳转到学生课耗
let StartMonth = ''
let EndMonth = ''
if (row.IsFirstCommission == 1) {
EndMonth = row.Periods
} else {
if (row.Periods.indexOf('~') != -1) {
StartMonth = row.Periods.split('~')[0];
EndMonth = row.Periods.split('~')[1];
} else {
StartMonth = row.Periods;
EndMonth = row.Periods
}
}
this.OpenNewUrl(path, {
OrderId: row.OrderId,
StartMonth: StartMonth,
EndMonth: EndMonth,
comefrom: 1,
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.salesCommission .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.salesCommission .text-bottom{
height: 32px;line-height: 32px; margin-bottom: 10px;
}
.salesCommission ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.salesCommission ._icon_btn .icon-add{
background-color: #47BF8C;
}
.salesCommission ._icon_btn i {
width: 26px;
height: 26px;
display: inline-block;
color: white !important;
border-radius: 50%;
text-align: center;
line-height: 26px;
margin-right: 10px;
cursor: pointer;
outline: none;
}
.salesCommission .el-table td,.el-table th{
padding: 5px 0;
}
</style>
<template>
<div class="page-body salesCommission">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div style="margin-right: 20px;" v-if='iscMaker==true'>
<div class="block">
<span style="margin-right: 5px;">校区</span>
<el-select v-model="msg.SchoolId" filterable @change="handleCurrentChanges(1)">
<el-option value="-1" label="不限"></el-option>
<el-option v-for='item in CompanyList' :label='item.SName' :value='item.SId' :key='item.SId'></el-option>
</el-select>
</div>
</div>
<div v-if='isgenerate==true'>
<div class="block" style="display:flex">
<span style="margin-right: 5px;">选择月份</span>
<el-date-picker
v-model="value2"
type="month"
placeholder="选择月">
</el-date-picker>
<q-btn :loading="loading1" color="primary" size="11px" label="生成提成" @click="scCommission" style="margin-left:10px"/>
</div>
</div>
</div>
</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="Id" label="ID" ></el-table-column> -->
<el-table-column prop="Periods" label="周期" ></el-table-column>
<el-table-column prop="SumPrice" label="提成总金额" > </el-table-column>
<el-table-column prop="SchooldCommission" label="校区提成总金额" >
<template slot-scope="scope">
<div style="display: flex;flex-wrap: wrap;" v-if='scope.row.SchooldCommission>=0'>
{{scope.row.SchooldCommission>=0?scope.row.SchooldCommission:'-'}}
</div>
</template>
</el-table-column>
<el-table-column prop="FrIdList" label="财务单据" >
<template slot-scope="scope">
<div style="display: flex;flex-wrap: wrap;" v-if='scope.row.FrIdList.length>0'>
<span v-for="(x,y) in scope.row.FrIdList" @click="gocaiwuxiangq(x)" style="cursor: pointer;text-decoration: underline;margin-right: 5px; color: #409EFF;">{{x}}</span>
</div>
<div v-else></div>
</template>
</el-table-column>
<el-table-column prop="CreateByName" label="创建人" > </el-table-column>
<el-table-column prop="CreateTime" label="创建时间" > </el-table-column>
<el-table-column label="操作" >
<template slot-scope="scope">
<div class="_icon_btn">
<el-tooltip class="item" effect="dark" content="查看" placement="top">
<i class="iconfont icon-sousuo"
@click="goUrl(scope.row.Id)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="制单" placement="top" v-if='iscMaker==true'>
<i class="iconfont icon-add" v-if='iscMaker==true'
@click="generalFinancacls(scope.row)"></i>
</el-tooltip>
</div>
</template>
</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>
<el-dialog title="设置发放用户" width="700px"
:visible.sync="costmode" center >
<el-table
:data="SendEmployeeList"
border
@selection-change="handleSelectionChange"
style="width: 100%">
<el-table-column type="selection" width="55" :selectable="checkSelectable"></el-table-column>
<el-table-column prop="UserName" label="用户" > </el-table-column>
<el-table-column prop="StudentCount" label="客人数量" > </el-table-column>
<el-table-column prop="CommissionMoney" label="应发提成金额" > </el-table-column>
<el-table-column prop="IsGiveOut" label="是否已发放" >
<template slot-scope="scope">
<span v-if='scope.row.IsGiveOut==1'>已发放</span>
<span v-if='scope.row.IsGiveOut==2'>未发放</span>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 10px;">金额总额:{{totalAmount}}</div>
<div slot="footer" class="dialog-footer">
<el-button class="hollowFixedBtn" @click="costmode=false">取消</el-button>
<el-button class="normalBtn" type="primary" @click="preservetransaction()">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getSchoolDropdown
} from '../../../api/school/index'
import {
GetClassTypePageList,
} from '../../../api/system/index';
import{
getSellAchievementsPeriodsPageList,
setSellCommissionRule,
setAchievementsCommissionInfo,
getSellAchievementsSendEmployeeList,
setSellAchievementsSendEmployee
} from '../../../api/finance/index'
export default {
meta: {
title: "留学销售提成列表"
},
props: {},
components: {},
data() {
return {
loading: false,
loading1: false,
value2:'',
//列表数据参数
msg: {
PageIndex: 1,
PageSize: 15,
SchoolId:'-1'
},
pageCount: 0,
persistent: false,
listData:{},
tableData:[],
total:0,
CompanyList:[],
isgenerate:false,//是否有生成的权限
iscMaker:false,//是否有制单的权限
SendEmployeeList:[],//可发放提成的用户列表
costmode:false,
multipleSelection:[],
totalAmount:0,//选中的金额总额
CheckID:0,
}
},
created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "SAGenerate_Commission"){//判断是否有生成的权限
this.isgenerate = true;
}
if(x.FunctionCode == "SACommission_maker"){//判断是否有制单的权限
this.iscMaker = true;
}
})
var myDate=new Date();
myDate.setMonth(myDate.getMonth()-1);
this.value2 = myDate.getFullYear() + "-" + (myDate.getMonth()+1)
},
mounted() {
this.getList();//获取提成周期列表
this.getBranchList()
},
methods: {
getList(){
this.loading = true;
getSellAchievementsPeriodsPageList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
scCommission(){//生成提成
if(this.loading1 == false){
this.loading1= true;
setAchievementsCommissionInfo({Month:this.value2}).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '生成提成成功',
position: 'top'
})
this.getList()
}
this.loading1= false;
}).catch(err=>{
this.loading1= false;
})
}
},
getBranchList(){//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
}).catch(() => {
})
},
goUrl(id ) {
this.$router.push({
path: '/financial/market/employeeCommission',
query: {
"id": id,
blank: 'y',
}
})
},
gocaiwuxiangq(id){
this.OpenNewUrl("/financial/financalDocument/FinancialDocumentsDetail", {
id: id
});
},
generalFinancacls(item) {
this.CheckID = item.Id
if(this.msg.SchoolId == -1){
if(item.SumPrice>0){
this.tishi(item.SumPrice,item.Id)
}else{
this.$message.error('提成总金额为0')
}
}else{
if(item.SchooldCommission>0){
this.goaddFinancial(item.SchooldCommission,item.Id,'')
}else{
this.$message.error('校区提成总金额为0')
}
}
},
goaddFinancial(Money,Id,EmpIds){
let School_Id = 0;
let obj = {
CostType: 316,
Money: Money,
CurrencyId: 21,
XSTC: 1,
School_Id:this.msg.SchoolId == -1?0:this.msg.SchoolId,
OtherType:44,//留学销售提成
ReFinanceId:Id,
ReFinanceId2:this.msg.SchoolId,
EduCommissionEmp:EmpIds
}
let query = {
blank: "y",
tab: "新增付款单据",
Type: 2,
IsUploadPic: 1,
Name:'销售提成单',
id:143,
orderObj: JSON.stringify(obj)
}
this.$router.push({
path: "/financial/financalDocument/addFinancialDocuments",
query
});
},
tishi(Money,Id){
let that = this
this.$q.dialog({
title: "销售制单",
message: "你正在进行所有校区一起制单操作?",
persistent: true,
cancel: {
label: "取消",
flat: true
},
ok: {
label: "确认",
flat: true,
focus: true
}
}).onOk(() => {
this.getcomSendEmployeeList(Id)
});
},
getcomSendEmployeeList(Id){//获取可发放提成的用户
getSellAchievementsSendEmployeeList({PeriodId:Id}).then(res => {
this.SendEmployeeList = res.Data;
this.costmode = true
}).catch(() => {
})
},
handleCurrentChanges(val){
this.msg.PageIndex= val;
this.getList()
},
checkSelectable(row){
return row.IsGiveOut==2
},
handleSelectionChange(val) {
this.multipleSelection = val;
let zong = 0
this.multipleSelection.forEach(x=>{
zong +=x.CommissionMoney
})
this.totalAmount = zong
},
preservetransaction(){
let that = this
if( this.multipleSelection.length == 0){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择您要发放的用户`
})
return
}
this.$q.dialog({
title: "设置用户状态",
message: "确认后无法更改用户制单状态,如果需修改请联系管理员",
persistent: true,
cancel: {
label: "取消",
flat: true
},
ok: {
label: "确认",
flat: true,
focus: true
}
}).onOk(() => {
let EmpIds = '';
let data = []
this.multipleSelection.forEach(x=>{
data.push(x.UserId)
})
EmpIds = data.join(',')
setSellAchievementsSendEmployee({PeriodId:this.CheckID,EmpIds:EmpIds}).then(res => {
this.goaddFinancial(this.totalAmount,this.CheckID,EmpIds)
this.$message.success('设置成功');
}).catch(() => {
})
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.CommissionDetail .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.CommissionDetail .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.CommissionDetail ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.CommissionDetail ._icon_btn i {
width: 26px;
height: 26px;
display: inline-block;
color: white !important;
border-radius: 50%;
text-align: center;
line-height: 26px;
margin-right: 10px;
cursor: pointer;
outline: none;
}
.CommissionDetail .el-table td,
.el-table th {
padding: 5px 0;
}
</style>
<template>
<div class="page-body CommissionDetail">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-btn  color="primary"  size="11px"  label="返回"   @click="goreturn"  style="margin-left:10px" />
</div>
</div>
</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" label="校区" :filters='SchoolNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="DeptName" label="部门" :filters='DeptNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="UserName" label="销售" :filters='UserNamelist' :filter-method="filterHandler">
</el-table-column>
<el-table-column prop="StudentCount" label="客人数量" sortable :sort-method="StudentCount"> </el-table-column>
<el-table-column prop="CurrentPeriodMoney" label="提成金额" sortable :sort-method="CurrentPeriodMoney"> </el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<div class="_icon_btn">
<el-tooltip class="item" effect="dark" content="查看" placement="top">
<i class="iconfont icon-sousuo" @click="goUrl('market/AchievementsUserDetailList',scope.row.UserId)"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
</template>
</div>
</template>
<script>
import {
GetClassTypePageList,
} from '../../../api/system/index';
import {
getSellAchievementsUserList,
} from '../../../api/finance/index'
import {
getClassDropDownList,
} from "../../../api/school/index";
export default {
meta: {
title: "销售提成详情"
},
props: {},
components: {},
data() {
return {
loading: false,
//列表数据参数
msg: {
PeriodId: 0,
},
pageCount: 0,
persistent: false,
listData: {},
tableData: [],
company: [],
department: [],
see_tcdetailed: false,
SchoolNamelist: [],
DeptNamelist: [],
UserNamelist: [],
}
},
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.id) {
this.msg.PeriodId = this.$route.query.id
}
this.getList()
},
methods: {
getList() {
if (this.msg)
this.loading = true;
getSellAchievementsUserList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data;
this.SchoolNamelist = [];
this.DeptNamelist = [];
this.UserNamelist = [];
this.tableData.forEach(x => {
let obj = {
text: x.SchoolName,
value: x.SchoolName
}
let obj2 = {
text: x.DeptName,
value: x.DeptName
}
let obj3 = {
text: x.UserName,
value: x.UserName
}
this.SchoolNamelist.push(obj)
this.DeptNamelist.push(obj2)
this.UserNamelist.push(obj3)
})
this.SchoolNamelist = this.unique(this.SchoolNamelist)
this.DeptNamelist = this.unique(this.DeptNamelist)
this.UserNamelist = this.unique(this.UserNamelist)
}
})
},
unique(arr, Name) { //数组去重
const res = new Map();
return arr.filter(
(list) => !res.has(list.text) && res.set(list.text, 1)
);
},
goUrl(path, id) {
this.$router.push({
path: '/financial/' + path,
query: {
userId: id,
preriodId: this.$route.query.id,
blank: 'y',
}
})
},
filterHandler(value, row, column) {
const property = column['property'];
return row[property] === value;
},
StudentCount(a, b, c) {
return a.StudentCount - b.StudentCount;
},
CurrentPeriodMoney(a, b) {
return a.CurrentPeriodMoney - b.CurrentPeriodMoney;
},
OtherMoney(a, b) {
return a.OtherMoney - b.OtherMoney;
},
CommissionMoney(a, b) {
return a.CommissionMoney - b.CommissionMoney;
},
FinalCommission(a, b) {
return a.FinalCommission - b.FinalCommission;
},
goreturn() {
this.$router.go(-1);
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<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="getDepartList(msg.School_Id),resetSearch()" option-value="SId"
option-label="SName" v-model="msg.School_Id" ref="School_Id" :options="schoolList" label="校区"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<selectTree :treeData='DeptList' :defaultArray="returnString" nodeKey="DeptId" :multiple="false"
labelKey="DeptName" childrenKey="ChildList" tipText="选择部门" @getChild="getChild"></selectTree>
</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-select filled stack-label use-input input-debounce="0" option-value="ClassId" @input="getList"
option-label="ClassName" v-model="msg.ClassId" :options="ClassList" label="班级" :dense="false"
emit-value map-options @filter="filterFn">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</div>
</div>
<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>
<div class="col-3">
<q-input filled v-model="msg.OrderId" @keyup.enter.native="resetSearch()" label="订单号" />
</div>
<div class="col-3">
<q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()"
option-label="Name" v-model="msg.UserType" :options="UserTypeList" label="类型" :dense="false" emit-value
map-options >
</q-select>
</div>
<div class="col-3">
<q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()"
option-label="Name" v-model="msg.IsDept" :options="IsDeptList" label="业绩方式" :dense="false" emit-value
map-options >
</q-select>
</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" label="校区" width='150' ></el-table-column>
<el-table-column prop="DeptName" label="部门" ></el-table-column>
<el-table-column prop="UserType" label="类型" >
<template slot-scope="scope">
<span v-if="scope.row.UserType==1">市场</span>
<span v-if="scope.row.UserType==2">顾问</span>
<span v-if="scope.row.UserType==3">教师</span>
</template>
</el-table-column>
<el-table-column prop="UserName" label="人员" > </el-table-column>
<el-table-column prop="IsDept" label="业绩方式" >
<template slot-scope="scope">
<span v-if="scope.row.IsDept==1">部门</span>
<span v-if="scope.row.IsDept==2">个人</span>
</template>
</el-table-column>
<el-table-column width='170' prop="ClassName" label="班级信息" >
<template slot-scope="scope">
<div><span style="cursor: pointer;text-decoration: underline;" @click="goUrlclass('/course/classManage',scope.row.ClassName)">{{scope.row.ClassName}}</span> {{scope.row.ClassTypeName}}<span style="color: #409EFF;" v-if='scope.row.IsContinueClass==1'>(续)</span></div>
<div>学生数量:{{scope.row.StudentCount}}</div>
<div>班号:{{scope.row.ClassNo}}</div>
</template>
</el-table-column>
<el-table-column prop="OrderId" label="订单号" >
<template slot-scope="scope">
<div style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList('/sale/orderStatistics',scope.row)">{{scope.row.OrderId}} </div>
</template>
</el-table-column>
<el-table-column width='130' prop="TotalCommissionMoney" label="订单发放信息">
<template slot-scope="scope">
<div style="color: rgb(255, 156, 0);">应发:{{scope.row.TotalCommissionMoney}}</div>
<div>累计已发:{{scope.row.GiveOutMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="IsFirstCommission" label="首次发放">
<template slot-scope="scope">
<div>{{scope.row.IsFirstCommission==1?'是':'否'}}</div>
</template>
</el-table-column>
<el-table-column prop="TotalHours" label="课时统计" width='160'>
<template slot-scope="scope">
<div>总课时:{{scope.row.TotalHours}}</div>
<div>已学习课时:{{scope.row.TotalLearn}}</div>
<div>当期消费课时:{{scope.row.CurrentHours>=0 ?scope.row.CurrentHours:'-'}}</div>
</template>
</el-table-column>
<el-table-column width='160' prop="CurrentPeriodMoney" label="当期发放信息">
<template slot-scope="scope">
<div style="color: rgb(255, 156, 0);">应发:{{scope.row.CurrentPeriodMoney}}</div>
<div>抵扣:{{scope.row.DeductionMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="YFMoney" label="最终发放">
<template slot-scope="scope">
<div style="color: rgb(233, 82, 82);">{{scope.row.YFMoney}}</div>
</template>
</el-table-column>
<el-table-column width='85' 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 {
getDeptTree
} from '../../../api/system/dept.js'
import{
getSellAchievementsStatistics,
getSellAchievementsPeriodsList
} from '../../../api/finance/index'
import {
getClassDropDownList,
} from "../../../api/school/index";
import selectTree from '../../../components/common/select-tree'
import {
EduDownLoad,
} from '../../../api/common/common';
export default {
meta: {
title: "业绩提成统计"
},
props: {},
components: {
selectTree
},
data() {
return {
loading: false,
//列表数据参数
msg: {
PageIndex:1,
PageSize:10,
School_Id:'-1',
Depart_Id:0,
PeriodId: 0,
UserId: 0,
ClassId:0,
OrderId:'',
UserType:0,//类型 1市场、2顾问、3教师
IsDept:0,//业绩方式 1部门 2个人
},
UserTypeList:[{Id:0,Name:'不限'},{Id:1,Name:'市场'},{Id:2,Name:'顾问'},{Id:3,Name:'教师'},],
IsDeptList:[{Id:0,Name:'不限'},{Id:1,Name:'部门'},{Id:2,Name:'个人'}],
pageCount: 0,
persistent: false,
listData:{},
tableData:[],
total:0,
company:[],
department:[],
ClassList:[],
allClassList:[],
returnString: [], //默认岗位
see_tcdetailed:false,
schoolList:[],
DeptList: [], // 部门下拉
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.setClass()
this.getBranchList()
this.getDepartList(0);
this.getEmployee();
this.getPeriodList()
},
methods: {
resetSearch() {
console.log(this.msg)
this.msg.PageIndex = 1;
this.getList()
},
getList(){
if(this.msg)
this.loading = true;
getSellAchievementsStatistics(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()
},
//选择班级
setClass(item) {
this.isShowClass = true;
getClassDropDownList({
CourseId: 0,
IsAddDefault: 1, //添加默认选项
}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
let obj = {
ClassId:0,
ClassName:'不限'
}
jsonData.unshift(obj)
if (jsonData && jsonData.length > 0) {
this.ClassList = JSON.parse(JSON.stringify(jsonData));
this.allClassList = JSON.parse(JSON.stringify(jsonData));;
}
}
});
},
//筛选员工
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(() => {
})
},
//获取部门下拉数据
getDepartList(id) {
if(id==-1){
id = 0
}
let msg = {
School_Id: id
}
getDeptTree(msg).then(res => {
if (res.Code == 1) {
this.DeptList = res.Data;
}
})
},
getChild(deptArray) {
var tempStr = "";
if (deptArray && deptArray != '') {
tempStr = deptArray;
}
if (tempStr) {
this.msg.Depart_Id = tempStr;
} else {
this.msg.Depart_Id = 0;
}
this.resetSearch();
},
//筛选员工
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(){//获取周期下拉列表
getSellAchievementsPeriodsList({}).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("/SellAchievements/GetSellAchievementsStatisticsToExcel", msg, "业绩提成统计.xls")
},
goUrlclass(path,Names){//班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
},
goUrlorderList(path,row){//订单跳转
this.OpenNewUrl(path, {
OrderId: row.OrderId,
// EnterID:row.UserId
});
},
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
......@@ -719,6 +719,35 @@ const routes = [{
component: () =>
import("pages/financial/market/courseConsultant.vue")
},
{
path: "/financial/market/achievementPeriodsList", // 业绩提成 分期列表
component: () =>
import("pages/financial/market/achievementPeriodsList.vue")
},
{
path: "/financial/market/employeeCommission", // 业绩提成 员工提成
component: () =>
import("pages/financial/market/employeeCommission.vue")
},
{
path: "/financial/market/AchievementsUserDetailList", // 业绩提成 员工提成明细列表
component: () =>
import("pages/financial/market/AchievementsUserDetailList.vue")
},
{
path: "/financial/market/AchievementsForOrderList", // 业绩提成 获取订单跳转 提成详情
component: () =>
import("pages/financial/market/AchievementsForOrderList.vue")
},
{
path: "/financial/market/marketStatistics", // 业绩提成 统计
component: () =>
import("pages/financial/market/marketStatistics.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