Commit a0aca35a authored by Mac's avatar Mac

新增投稿提成

parent 09bd1eb1
......@@ -492,6 +492,91 @@ export function createWeChatCodeForReceipt(data) {
    data
  })
}
//获取投稿提成配置
export function getTeacherContributeConfig(data) {
return request({
url: '/TeachingRewards/GetTeacherContributeConfig',
method: 'post',
data
})
}
//设置投稿提成配置
export function setTeacherContributeConfig(data) {
return request({
url: '/TeachingRewards/SetTeacherContributeConfig',
method: 'post',
data
})
}
//获取投稿提成期数分页列表
export function getTeaConCommissionPeriodsPageList(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionPeriodsPageList',
method: 'post',
data
})
}
//创建投稿提成
export function SetTeaConCommissionInfo(data) {
return request({
url: '/TeachingRewards/SetTeaConCommissionInfo',
method: 'post',
data
})
}
//获取投稿提成用户列表
export function getTeaConCommissionUserList(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionUserList',
method: 'post',
data
})
}
//获取投稿提成明细列表
export function getTeaConCommissionUserDetailList(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionUserDetailList',
method: 'post',
data
})
}
//投稿提成统计
export function getTeaConCommissionStatistics(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionStatistics',
method: 'post',
data
})
}
//获取投稿提成期数下拉列表
export function getTeaConCommissionPeriodsList(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionPeriodsList',
method: 'post',
data
})
}
//获取投稿提成发放人员列表
export function getTeaConCommissionSendEmployeeList(data) {
return request({
url: '/TeachingRewards/GetTeaConCommissionSendEmployeeList',
method: 'post',
data
})
}
//设置提成发放人员
export function setTeaConCommissionSendEmployee(data) {
return request({
url: '/TeachingRewards/SetTeaConCommissionSendEmployee',
method: 'post',
data
})
}
<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 input-debounce="0" option-value="TId" @input="getList"
option-label="TeacherName" v-model="msg.TeacherId" :options="TeacherList" label="老师"
:dense="false" emit-value map-options>
<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-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="TeacherName" label="教师"></el-table-column>
<el-table-column width='250' prop="ContributeTitle" label="投稿标题"> </el-table-column>
<el-table-column prop="ContributeType" label="投稿类型"> </el-table-column>
<el-table-column prop="CommissionMoney" label="提成金额"> </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 {
getTeaConCommissionUserDetailList,
} from '../../../api/finance/index'
import {
getClassDropDownList,
getTeacherDropDownList
} from "../../../api/school/index";
export default {
meta: {
title: "用户提成明细"
},
props: {},
components: {},
data() {
return {
loading: false,
//列表数据参数
msg: {
PeriodId: 0,
TeacherId: 0,
},
pageCount: 0,
persistent: false,
listData: {},
tableData: [],
company: [],
department: [],
ClassList: [],
allClassList: [],
TeacherList: [],
allTeacherList: [],
}
},
created() { },
mounted() {
if (this.$route.query && this.$route.query.preriodId) {
this.msg.PeriodId = this.$route.query.preriodId
}
this.getList()
// this.setClass()
this.GetTeacherList()
},
methods: {
getList() {
if (this.msg)
this.loading = true;
getTeaConCommissionUserDetailList(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: '合计',
CommissionMoney: 0,
}
this.tableData.forEach((x) => {
if (x.CommissionMoney) {
obj.CommissionMoney = this.accAdd(x.CommissionMoney, obj.CommissionMoney)
};
})
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;
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
jsonData.unshift({ TeacherName: '不限', TId: 0 })
// this.allTeacherList = JSON.parse(JSON.stringify(jsonData));;
this.TeacherList = JSON.parse(JSON.stringify(jsonData));
}
})
},
//选择班级
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) {
console.log(val)
update(() => {
if (val === '') {
this.TeacherList = JSON.parse(JSON.stringify(this.allTeacherList))
} else {
const needle = val.toLowerCase()
this.TeacherList = this.allTeacherList.filter(v => v.TeacherName.toLowerCase().indexOf(needle) > -1)
}
this.$forceUpdate();
})
},
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>
<div class="col-3">
<q-select filled stack-label input-debounce="0" option-value="TId" @input="resetSearch()"
option-label="TeacherName" v-model="msg.TeacherId" :options="TeacherList" label="老师"
:dense="false" emit-value map-options>
</q-select>
</div>
<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>
</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-input filled v-model="msg.ContributeId" @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" label="校区" width='150'></el-table-column>
<el-table-column prop="DeptName" label="部门"></el-table-column>
<el-table-column prop="TeacherName" label="教师"> </el-table-column>
<el-table-column prop="ContributeType" label="投稿类型"> </el-table-column>
<el-table-column width='250' prop="ContributeTitle" label="投稿标题"> </el-table-column>
<el-table-column width='200' prop="CommissionMoney" label="提成金额"> </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,
getClassDropDownList,
getTeacherDropDownList
} from '../../../api/school/index'
import {
queryEmployee
} from '../../../api/users/user'
import {
getDeptTree
} from '../../../api/system/dept.js'
import {
getTeaConCommissionStatistics,
getTeaConCommissionPeriodsList,
getTeaConCommissionStatisticsToExcel
} from '../../../api/finance/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,
TeacherId: 0,
ContributeId: '',//投稿编号
},
TeacherList: [],
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;
}
})
},
mounted() {
if (this.$route.query && this.$route.query.OrderId) {
this.msg.OrderId = this.$route.query.OrderId
}
this.getList()
this.GetTeacherList()
this.getBranchList()
this.getDepartList(0);
// this.getEmployee();
this.getPeriodList()
},
methods: {
resetSearch() {
this.msg.PageIndex = 1;
this.getList()
},
getList() {
if (this.msg)
this.loading = true;
getTeaConCommissionStatistics(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()
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
jsonData.unshift({ TeacherName: '不限', TId: 0 })
// this.allTeacherList = JSON.parse(JSON.stringify(jsonData));;
this.TeacherList = 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() {//获取周期下拉列表
getTeaConCommissionPeriodsList({}).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("/TeachingRewards/GetTeaConCommissionStatisticsToExcel", msg, "投稿提成统计.xls")
},
goUrlclass(path, Names) {//班级
let Name = encodeURI(Names)
this.OpenNewUrl(path, {
ClassName: Name,
});
},
goUrlorderList(path, row) {//订单跳转
this.OpenNewUrl(path, {
OrderId: row.OrderId,
});
},
},
}
</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-select filled stack-label use-input input-debounce="0" option-value="ClassId" clearable @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-input filled v-model="msg.OrderId" @keyup.enter.native="getList()" label="订单号" />
</div> -->
<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="CommissionMoney" label="提成金额" sortable :sort-method="CommissionMoney"> </el-table-column>
<!-- <el-table-column prop="Periods" 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('contribution/CommissionUserDetailList',scope.row.UserId)"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
</template>
</div>
</template>
<script>
import {
getTeaConCommissionUserList,
} 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: [],
ClassList: [],
allClassList: [],
see_tcdetailed: false,
SchoolNamelist: [],
DeptNamelist: [],
UserNamelist: [],
}
},
created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x => { //判断权限
if (x.FunctionCode == "see_tcdetailed") { //判断是否可以查看其他明细
this.see_tcdetailed = true;
}
})
},
mounted() {
if (this.$route.query && this.$route.query.id) {
this.msg.PeriodId = this.$route.query.id
}
if (this.$route.query && this.$route.query.School_Id) {
this.msg.School_Id = this.$route.query.School_Id
}
this.getList()
// this.setClass()
},
methods: {
getList() {
if (this.msg)
this.loading = true;
getTeaConCommissionUserList(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)
);
},
//选择班级
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: {
userId: id,
preriodId: this.$route.query.id,
blank: 'y',
}
})
},
filterHandler(value, row, column) {
const property = column['property'];
return row[property] === value;
},
CommissionMoney(a, b) {
return a.CommissionMoney - b.CommissionMoney;
},
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;
}
.contributeCommission .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.contributeCommission .text-bottom{
height: 32px;line-height: 32px; margin-bottom: 10px;
}
.contributeCommission ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.contributeCommission ._icon_btn .icon-add{
background-color: #47BF8C;
}
.contributeCommission ._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;
}
.contributeCommission .el-table td,.el-table th{
padding: 5px 0;
}
</style>
<template>
<div class="page-body contributeCommission">
<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('contribution/commissionUserList',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="TeacherName" 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{
getTeaConCommissionPeriodsPageList,
SetTeaConCommissionInfo,
getTeaConCommissionSendEmployeeList,
setTeaConCommissionSendEmployee
} from '../../../api/finance/index'
export default {
meta: {
title: "投稿销售提成列表"
},
props: {},
components: {},
data() {
return {
loading: false,
loading1: false,
value2:'',
//列表数据参数
msg: {
PageIndex: 1,
PageSize: 15,
Name:'',
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 == "Generate_Commission"){//判断是否有生成的权限
this.isgenerate = true;
}
if(x.FunctionCode == "Commission_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;
getTeaConCommissionPeriodsPageList(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;
SetTeaConCommissionInfo({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(path, id ) {
this.$router.push({
path: '/financial/' + path,
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:47,
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.$confirm('你正在进行所有校区一起制单操作?', '销售制单', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getcomSendEmployeeList(Id)
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
getcomSendEmployeeList(Id){//获取可发放提成的用户
getTeaConCommissionSendEmployeeList({PeriodId:Id}).then(res => {
this.SendEmployeeList = res.Data.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.CurrentPeriodMoney
})
this.totalAmount = zong
},
preservetransaction(){
let that = this
if( this.multipleSelection.length == 0){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择您要发放的用户`
})
return
}
this.$confirm('确认后无法更改用户制单状态,如果需修改请联系管理员', '设置用户状态', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let EmpIds = '';
let data = []
this.multipleSelection.forEach(x=>{
data.push(x.UserId)
})
EmpIds = data.join(',')
setTeaConCommissionSendEmployee({PeriodId:this.CheckID,EmpIds:EmpIds}).then(res => {
this.goaddFinancial(this.totalAmount,this.CheckID,EmpIds)
this.$message.success('设置成功');
}).catch(() => {
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<style>
</style>
<template>
<div class="page-body salesRules">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input filled v-model="Money" label="提成金额" type="number" />
</div>
<div>
<q-btn color="accent" size="sm" v-if='isSalerule_preserve == true' @click="preservation()" ref="addBtn" label="保存规则" />
</div>
</div>
</div>
</div>
</template>
<script>
import {
getTeacherContributeConfig,
setTeacherContributeConfig
} from '../../../api/finance/index'
export default {
meta: {
title: "投稿提成规则"
},
props: {},
components: {},
data() {
return {
Money:0,
isSalerule_preserve:false
}
},
created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "F_Contribution_rule"){//判断是否有保存的权限
this.isSalerule_preserve = true;
return
}
})
},
mounted() {
this.getRule(); //获取规则
},
methods: {
getRule() {
getTeacherContributeConfig({}).then(res => {
if (res.Code == 1) {
this.Money = res.Data.Money
}
})
},
preservation() { //保存规则
setTeacherContributeConfig({Money:this.Money}).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.getTeacherContributeConfig()
}
})
},
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
......@@ -653,7 +653,33 @@ const routes = [{
component: () =>
import("pages/financial/studyabroad/ordercommission.vue")
},
{
path: "/financial/contribution/toConfigure", //财务流程 投稿规则
component: () =>
import("pages/financial/contribution/toConfigure.vue")
},
{
path: "/financial/contribution/contributeCommission", // 工作台 投稿销售提成
component: () =>
import("pages/financial/contribution/contributeCommission.vue")
},
{
path: "/financial/contribution/commissionUserList", // 工作台 投稿销售提成 用户列表
component: () =>
import("pages/financial/contribution/commissionUserList.vue")
},
{
path: "/financial/contribution/CommissionUserDetailList", // 工作台 投稿销售提成 用户详情
component: () =>
import("pages/financial/contribution/CommissionUserDetailList.vue")
},
{
path: "/financial/contribution/commissionStatistics", // 工作台 投稿销售统计
component: () =>
import("pages/financial/contribution/commissionStatistics.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