Commit 59da7374 authored by Mac's avatar Mac

市场提成规则

parent 06e5a420
......@@ -8,7 +8,7 @@
@hide="closeCutomer"
transition-show="slide-left"
>
<div class="customMain">
<div class="customMain" v-if="addMsg">
<div class="cycle_Title">市场顾问教师提成规则</div>
<div style="margin-top: 10px;">
<q-input
......@@ -16,34 +16,188 @@
stack-label
:dense="false"
v-model="addMsg.Name"
style="width: 640px;"
ref="Name"
class="col-12 q-pb-lg"
label="方案名称"
:rules="[val => !!val || '请填写平台名称']"
:rules="[val => !!val || '请填写方案名称']"
/>
</div>
<q-select
filled
stack-label
option-value="SId"
option-label="SName"
v-model="addMsg.SchoolIds"
use-chips
:options="SchoolList"
label="校区"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
multiple
map-options
@input="$forceUpdate()"
/>
<q-select
filled
stack-label
option-value="CourseId"
option-label="CourseName"
v-model="addMsg.CourseList"
use-chips
use-input
:options="myCourseList"
label="课程"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
multiple
map-options
@filter="filterFn"
/>
<div style="display: flex;align-items: center;">
类型:
<span style="width: 75px;">类型:</span>
<q-radio v-model="addMsg.Type" val="1" label="市场" />
<q-radio v-model="addMsg.Type" val="2" label="顾问" />
<q-radio v-model="addMsg.Type" val="3" label="教师" />
</div>
<div style="display: flex;align-items: center;">
课程类型:
<span style="width: 75px;">课程类型:</span>
<q-radio v-model="addMsg.CourseType" val="1" label="包含" />
<q-radio v-model="addMsg.CourseType" val="2" label="不包含" />
</div>
<q-select filled stack-label option-value="CourseId" option-label="CourseName" v-model="addMsg.CourseList"
ref="CouseId" :options="CourseList" label="课程" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value multiple use-input
map-options />
<q-btn
label="确认"
color="accent q-px-md"
size="sm"
style="font-weight:400 !important"
@click="setCheckStatus()"
<div style="margin-top: 10px;" >
<q-input
filled
style="width: 640px;"
stack-label
type="number"
:dense="false"
v-model="addMsg.FirstRate"
ref="FirstRate"
class="col-12 q-pb-lg"
label="首次发放比例(%)"
:rules="[val => !!val || '请填写首次发放比例']"
/>
</div>
<div style="margin-top: 10px;" >
<q-input
filled
style="width: 640px;"
stack-label
type="number"
:dense="false"
v-model="addMsg.CourseRate"
ref="CourseRate"
class="col-12 q-pb-lg"
label="课程比例(%)"
:rules="[val => !!val || '请填写课程比例']"
/>
</div>
<q-select
filled
stack-label
option-value="Id"
option-label="EmployeeName"
v-model="addMsg.EmpList"
use-chips
use-input
:options="myEmployeeList"
label="提成人员"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
multiple
map-options
@filter="filterEmployee"
/>
<q-select
filled
stack-label
option-value="Id"
option-label="EmployeeName"
v-model="addMsg.ChildEmpList"
use-chips
use-input
:options="myEmployeeList"
label="部门人员"
:dense="false"
class="col-6 q-pr-lg q-pb-lg"
emit-value
multiple
map-options
@filter="filterEmployee"
/>
<div style="margin-bottom: 80px;">
<div>业绩比例</div>
<div
v-for="(x,y) in addMsg.RateList"
:key="y"
style="display: flex;align-items: center;margin-bottom: 10px;"
>
<q-input
clearable
filled
v-model="x.StartValue"
style="width: 190px;margin-right: 5px;"
type="number"
@input="$forceUpdate()"
label="初始值"
/>
<q-input
clearable
filled
v-model="x.EndValue"
style="width: 190px;margin-right: 5px;"
type="number"
@input="$forceUpdate()"
label="结束值"
/>
<q-input
clearable
filled
v-model="x.Rate"
style="width: 190px;margin-right: 5px;"
type="number"
@input="$forceUpdate()"
label="提成比例(%)"
/>
<q-btn
round
size="xs"
color="deep-orange"
icon="delete"
v-if="addMsg.RateList.length > 1"
@click="addMsg.RateList.splice(y, 1)"
style="margin-left: 10px;"
/>
<q-btn
round
size="xs"
color="primary"
icon="add"
v-if="addMsg.RateList.length == y + 1"
@click="addMsg.RateList.push({ StartValue: '', EndValue: '', Rate: '' })"
style="margin-left: 10px;"
/>
</div>
</div>
<div style="width: 100%;height: 50px;position: absolute;left: 0;bottom: 0;background: #FFF;display: flex;align-items: center;padding: 0 20px;justify-content: flex-end;">
<q-btn
color="accent"
size="sm"
class="q-mr-md"
label="保存"
@click="setAdd()"
></q-btn>
</div>
<div class="dialog-out-close" @click="closeCutomer">
<i class="iconfont icon-close" style="font-size:26px;" />
......@@ -55,6 +209,7 @@
import {
queryEmployee
} from '../../api/users/user'
import recruitFormVue from '../system/recruit-form.vue'
export default {
......@@ -77,6 +232,14 @@ export default {
CourseList: {//课程下拉列表
type: Array,
default: []
},
SchoolList:{//校区下拉列表
type: Array,
default: []
},
selectData:{//修改带过来的对象
type: Object,
default: {}
}
},
data() {
......@@ -86,41 +249,64 @@ export default {
//员工列表
employeeList: [],
myEmployeeList: [],
allCourseList: [],
myCourseList:[],
}
},
created() {
this.employeeList = JSON.parse(JSON.stringify(this.loyeeList))
this.myEmployeeList = JSON.parse(JSON.stringify(this.loyeeList))
this.allCourseList = JSON.parse(JSON.stringify(this.CourseList))
this.myCourseList = JSON.parse(JSON.stringify(this.CourseList))
if (this.isAdd == true) {//新增
this.addMsg = {
Id: 0,
Name: '',
Type: '1',
SchoolIds: '',
CourseType: 1,
CourseIds: '',
CourseType: '1',
SchoolIds: '',
CourseList: [],//课程列表
CommissionType: 1,
EmpIds: '',
EmpList: [],
ChildEmpIds: '',
ChildEmpList: [],
CourseRate: '',
EmpList: [],//提现人员
ChildEmpList: [],//部门人员
CourseRate: '',//课程比例
FirstRate:'',//首次发放比例
RateList: [
{ StartValue: '', EndValue: '', Rate: '' }
]
}
} else {//修改
this.addMsg = JSON.parse(JSON.stringify(this.selectData))
this.addMsg.Type = this.addMsg.Type.toString()
this.addMsg.CourseType = this.addMsg.CourseType.toString()
this.addMsg.SchoolIds = this.selectData.SchoolIds?this.selectData.SchoolIds.split(',').map(Number):[] ;
console.log(this.addMsg.SchoolIds)
this.addMsg.CourseList = this.getId(this.selectData.CourseList,2)
this.addMsg.EmpList = this.getId(this.selectData.EmpList,3)
this.addMsg.ChildEmpList = this.getId(this.selectData.ChildEmpList,3)
console.log(this.addMsg)
}
},
mounted() {
},
methods: {
getId(arr,type){
let list = [];
let Id = 'Id';
if(type==1){
Id = 'SId';
}else if(type==2){
Id = 'CourseId';
}else if(type==3){
Id = 'Id';
}
if(arr && arr.length>0){
arr.forEach(x=>{
list.push(x[Id])
})
}
return list
},
closeCutomer() {
this.$emit('close')
},
......@@ -129,14 +315,137 @@ export default {
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
this.myEmployeeList = this.employeeList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
if (val === '') {
this.myEmployeeList = this.employeeList
}
else {
const needle = val.toLowerCase();
this.myEmployeeList = this.employeeList.filter(v => v.EmployeeName.toLowerCase().indexOf(needle) > -1);
}
})
},
changeCourse(){
filterFn(val, update) {//课程的栓选
update(() => {
if (val === '') {
this.myCourseList = this.allCourseList
}
else {
const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(v => v.CateName.toLowerCase().indexOf(needle) > -1);
}
})
},
setAdd() {
this.$refs.Name.validate();
this.$refs.CourseRate.validate();
this.$refs.FirstRate.validate();
if (!this.$refs.Name.hasError && !this.$refs.CourseRate.hasError && !this.$refs.FirstRate.hasError) {
console.log(this.addMsg)
let msg = JSON.parse(JSON.stringify(this.addMsg))
if (this.addMsg.SchoolIds && this.addMsg.SchoolIds.length == 0) {
this.$q.notify({
type: 'negative',
message: `请选择校区`,
position: 'top'
})
return
}else{
msg.SchoolIds = this.addMsg.SchoolIds.join(',')
}
if (this.addMsg.CourseList.length == 0) {
this.$q.notify({
type: 'negative',
message: `请选择课程`,
position: 'top'
})
return
}else{
msg.CourseList = this.getList(this.allCourseList,this.addMsg.CourseList,2,'CourseId','CourseName')
}
if (this.addMsg.EmpList.length == 0) {
this.$q.notify({
type: 'negative',
message: `请选择提成人员`,
position: 'top'
})
return
}else{
msg.EmpList = this.getList(this.employeeList,this.addMsg.EmpList,3,)
}
if (this.addMsg.ChildEmpList.length == 0) {
this.$q.notify({
type: 'negative',
message: `请选择部门人员`,
position: 'top'
})
return
}else{
msg.ChildEmpList = this.getList(this.employeeList,this.addMsg.ChildEmpList,3,)
}
for(let i=0;i<msg.RateList.length;i++){
let x = msg.RateList[i]
console.log(x.StartValue)
if(x.StartValue==='' ){
this.$q.notify({
type: 'negative',
message: `请输入初始值`,
position: 'top'
})
return
}
if(x.EndValue==''){
this.$q.notify({
type: 'negative',
message: `请输入结束值`,
position: 'top'
})
return
}
if(x.Rate==''){
this.$q.notify({
type: 'negative',
message: `请输入提成比例`,
position: 'top'
})
return
}
}
console.log(msg,'222222')
this.$emit('success',msg)
}
},
getList(arr,xzarr,type,){
let list = [];
let Id = 'Id';
let Name = 'Name';
if(type==1){
Id = 'SId';
Name = 'SName';
}else if(type==2){
Id = 'CourseId';
Name = 'CourseName';
}else if(type==3){
Id = 'Id';
Name = 'EmployeeName';
}
xzarr.forEach(x => {
for(let i= 0;i<arr.length;i++){
let j = arr[i]
if(j[Id] == x){
let obj = {}
obj[Id]=j[Id],
obj[Name]=j[Name],
list.push(obj)
break
}
}
});
return list
}
},
}
......
......@@ -32,6 +32,11 @@
.marketRules .singeRowTable tr th {
border: 1px solid #d2d2d2;
}
.cycle_Title {
font-size: 20px;
font-weight: 500;
color: #1f2329;
}
</style>
<template>
<div class="page-body marketRules">
......@@ -39,10 +44,10 @@
<div class="col row wrap q-mr-lg q-col-gutter-md"></div>
</div>
<template>
<div>市场顾问提成规则</div>
<div class="cycle_Title">市场顾问提成规则</div>
<div
class="cm_content"
style="width: 100%;"
style="width: 100%;margin-bottom: 25px;margin-top: 10px;"
v-for=" ( item , index ) in dataList "
:key="index"
>
......@@ -54,11 +59,13 @@
v-loading="loading"
>
<tr>
<th>方案名称</th>
<th width="8%">方案名称</th>
<th>类型</th>
<th width="200">校区</th>
<th>课程类型</th>
<th>课程</th>
<th>提成方式</th>
<th width="300">课程</th>
<th>首次发放比例</th>
<th>课程比例</th>
<th>提成人员</th>
<th>部门人员</th>
<th width="100">操作</th>
......@@ -73,27 +80,27 @@
<span v-if="item.Type == 3">教师</span>
</td>
<td>
<span v-if="item.Type == 1">包含</span>
<span v-if="item.Type == 2">不包含</span>
<span>{{ item.SchoolName }}</span>
</td>
<td>
<p v-for="( son , sIndex ) in item.CourseList">{{ son.CourseName }}</p>
<span v-if="item.CourseType == 1">包含</span>
<span v-if="item.CourseType == 2">不包含</span>
</td>
<td>
<span v-if="item.CommissionType == 1">课耗提成</span>
<span v-if="item.CommissionType == 2">次月全提</span>
<span v-if="item.CommissionType == 3">课程比例:{{ item.CourseRate + '%' }}</span>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.CourseList">{{ son.CourseName }}{{item.CourseList.length==sIndex+1?'':'、'}}</span>
</td>
<td>
<p v-for="( son , sIndex ) in item.EmpList">{{ son.EmployeeName }}</p>
<span >{{ item.FirstRate + '%' }}</span>
</td>
<td>
<p v-for="( son , sIndex ) in item.ChildEmpList">{{ son.EmployeeName }}</p>
<span >{{ item.CourseRate + '%' }}</span>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.EmpList">{{ son.EmployeeName }}{{item.EmpList.length==sIndex+1?'':'、'}}</span>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.ChildEmpList">{{ son.EmployeeName }}{{item.ChildEmpList.length==sIndex+1?'':'、'}}</span>
</td>
<!-- <td v-for="( son , sIndex ) in item.RateList">{{ son.StartValue }}</td>
<td v-for="( son , sIndex ) in item.RateList">{{ son.EndValue }}</td>
<td v-for="( son , sIndex ) in item.RateList">{{ son.Rate }}</td>-->
<td>
<q-btn
flat
......@@ -102,7 +109,7 @@
color="accent"
style="font-weight:400"
label="编辑"
@click="EditTask(props.row)"
@click="EditTask(item)"
/>
<q-btn
flat
......@@ -116,27 +123,39 @@
</td>
</tr>
</table>
<div></div>
<table
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr>
<th :rowspan="item.RateList.length">业绩比例</th>
</tr>
<tr>
<th
v-for="( son , sIndex ) in item.RateList"
:key="sIndex"
>{{ son.StartValue }}{{ '<业绩<=' }}{{ son.EndValue }}</th>
</tr>
<tr>
<td v-for="( son , sIndex ) in item.RateList" :key="sIndex">{{ son.Rate }}%</td>
</tr>
</table>
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr>
<th >业绩比例</th>
</tr>
</table>
<div style="width:100%;overflow-x: auto;">
<table
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr>
<th style="min-width: 260px;"
v-for="( son , sIndex ) in item.RateList"
:key="sIndex"
>{{ son.StartValue }}{{ '<业绩<=' }}{{ son.EndValue }}</th>
</tr>
<tr style="width: 1040px;overflow-x: auto;">
<td style="min-width: 260px;" v-for="( son , sIndex ) in item.RateList" :key="sIndex">{{ son.Rate }}%</td>
</tr>
</table>
</div>
</div>
<div
v-if="dataList.length == 0"
......@@ -144,7 +163,7 @@
>暂无数据</div>
<div style="width: 100%;display: flex;justify-content: flex-end;margin-top: 10px;">
<q-btn color="accent" size="sm" icon="add" label="新增规则" @click="AddMsg()" />
<q-btn color="accent" size="sm" label="保存" @click="setMsg()" style="margin-left: 15px;" />
<!-- <q-btn color="accent" size="sm" label="保存" @click="setMsg()" style="margin-left: 15px;" /> -->
</div>
</template>
<marketCommissionfrom
......@@ -152,6 +171,8 @@
:isAdd="isAdd"
:loyeeList='loyeeList'
:CourseList='CourseList'
:SchoolList='SchoolList'
:selectData= 'selectData'
@close="closeForm"
@success="refreshList"
></marketCommissionfrom>
......@@ -167,7 +188,11 @@ import {
} from '../../../api/course/index'
import {
getSellAchievementsRuleList,
setSellAchievementsRule
} from '../../../api/finance/index'
import {
getSchoolDropdown,
} from '../../../api/school/index'
import marketCommissionfrom from "../../../components/finance/marketCommissionfrom";
export default {
meta: {
......@@ -186,6 +211,8 @@ export default {
isAdd: false,
loyeeList: [],//人员列表
CourseList:[],//课程列表
SchoolList:[],//校区下拉
selectData:{},
}
},
created() {
......@@ -202,6 +229,7 @@ export default {
this.getSellAchievementsRuleList(); //获取规则
this.getEmployeeList();
this.getCourseList();//获取课程下拉
this.getSchool();//校区下拉
},
methods: {
......@@ -234,23 +262,51 @@ export default {
}
})
},
getSchool() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.SchoolList = res.Data;
}
})
},
refreshList(data) { //保存规则
console.log(this.dataList,'datalist')
setSellAchievementsRule(data).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
this.persistent = false;
this.getSellAchievementsRuleList(); //获取规则
preservation() { //保存规则
}
})
},
AddMsg() {
AddMsg() {//新增
this.selectData = {}
this.persistent = true;
this.isAdd = true;
},
EditTask(item){//编辑
this.persistent = true;
this.selectData = item
this.isAdd = false;
},
closeForm() {
this.persistent = false;
},
refreshList() {//成功之后返回
}
},
}
......
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