Commit 14d55027 authored by youjie's avatar youjie

no message

parent a2beed92
......@@ -53,8 +53,81 @@
<el-row :gutter="20">
<el-col :span="12">
<div class="el-col-div ownScrollbarStyle PersonalData_l">
<rightHead :pagesTitle="1"></rightHead>
<!-- <rightHead :pagesTitle="1"></rightHead> -->
<div class="l_top" style="position: relative;">
<img v-if="data.icon !=null && data.icon !='' " :src="data.icon" alt="" class="tx_img"
:onerror='defaultHeadImg'>
<img v-else src="../../assets/img/default_head_img.jpg" alt="" alt="" class="tx_img">
<div class="p_name">
<span>{{data.emName}}</span>
<span>{{data.postName}}</span>
<div @click="goAnticipate(5)" style="cursor: pointer;">
<div v-if="SumPreferPrice" style="padding: 2px 0 0 0;"><a style="color: #666666;font-size: 14px;font-weight: bold;">{{SumPreferPrice}}</a></div>
<div style="font-size: 14px;color: #333333;" v-if="rankingNum">
<a style="color: #FF8C00;margin-left: 3px;margin-right: 3px;
font-size: 18px;font-weight: bold;">{{rankingNum}}</a
>
</div>
</div>
</div>
<div style="display: flex;justify-content: space-between;">
<!-- <img style="cursor: pointer;" src="../../assets/img/jinbin@2x.png" alt="" class="img" @click="goAnticipate(1)"> -->
<div style="cursor: pointer;cursor: pointer;position: relative;" class="royalty" @click="goAnticipate(1)">
<div class="tc">
<p>
<span></span>
<span>{{data.totalCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.periodsName}}<el-tag
v-if="data.peopelBonus" size="mini" type="danger"
effect="dark" style="color: #ffff;position: absolute;left: 70px;bottom: 23px;font-size: 11px;">奖+{{data.peopelBonus}}</el-tag></p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>出境提成</span>
<template v-if="data.comissionGeneralId>0">
<span v-if="data.share==1" class="Sale_Share" style="color:#333;cursor:default;">已确认</span>
<span v-if="data.share==0" @click="tichengDialog=true" class="Sale_Share"
:class="{'ShareDisClick':!isSubmit}">分享并确认</span>
</template>
</div>
</div>
<div style="border-left: 1px solid #eeeeee;width: 1px;"> </div>
<!-- <img style="cursor: pointer;" src="../../assets/img/jinbin@2x.png" alt="" class="img" @click="goAnticipate(2)"> -->
<div style="cursor: pointer;margin-left: 0;" class="royalty" @click="goAnticipate(2)">
<div class="tc">
<p>
<span></span>
<span>{{data.gnSaleCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.gnPeriodsName}}期</p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>国内提成</span>
</div>
</div>
<div style="border-left: 1px solid #eeeeee;width: 1px;"> </div>
<!-- <img style="cursor: pointer;" src="../../assets/img/jinbin@2x.png" alt="" class="img" @click="goAnticipate(3)"> -->
<div style="cursor: pointer;margin-left: 0;" class="royalty" @click="goAnticipate(3)">
<div class="tc">
<p>
<span></span>
<span>{{data.dxSaleCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.dxPeriodsName}}期</p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>历史单项提成</span>
</div>
</div>
<el-tooltip class="item" effect="dark" content="预期提成" placement="top">
<img src="../../assets/img/xiaosouYQ.png" @click="goAnticipate(4)"
style="width: 20px;height: auto; position: absolute;right: -0;top: -13px;cursor: pointer;color: #33B3FF;"></img>
</el-tooltip>
</div>
</div>
<div class="order">
<div class="l_title">
<span style="font-size: 14px;color: #333333;float: left">近十日发团订单</span>
......@@ -508,6 +581,22 @@
</div>
</div>
</div>
<!-- 分享业绩 -->
<el-dialog custom-class='w500' title="分享提成" :visible.sync="tichengDialog" center :before-close="resetCommission">
<el-form :model="shareMsg" :rules="rules" ref="shareMsg" label-width="80px">
<el-form-item label="个人宣言" style="margin-bottom:0;" prop="ShareContent">
<el-input type="textarea" rows="6" resize="none" maxlength="100" v-model="shareMsg.ShareContent"
placeholder=""></el-input>
</el-form-item>
</el-form>
<span class="Sale_UnlessWords">
不能少于10个字
</span>
<div slot="footer" class="dialog-footer">
<button class="hollowFixedBtn" @click="tichengDialog=false">取消</button>
<button class="normalBtn" @click="shareCommission">确定</button>
</div>
</el-dialog>
</div>
</template>
<script>
......@@ -517,6 +606,18 @@
export default {
data() {
return {
tichengDialog: false,
PMMsg: {
RB_Branch_Id: -1,
RB_Department_Id: 0,
EnterID: 0,
tStartDates: [],
qStartDates: [],
GroupBy: "EnterID",
QueryType: 0,
},
SumPreferPrice: 0,
rankingNum: 0,
type: 1,
defaultHeadImg: 'this.src="' + require("../../assets/img/default_head_img.jpg") + '"',
style: {
......@@ -530,6 +631,11 @@
NotDealCount: 0, //
zoom: 1,
OrderList: [],
shareMsg: {
ShareContent: '',
PeriodsId: 0,
totalCommission: 0
},
rules: {
ShareContent: [{
required: true,
......@@ -565,6 +671,140 @@
}
},
methods: {
// 销售预期提成
goAnticipate(type){
let userInfo = this.getLocalStorage();
let name
if(type==1){//出境
name = 'TradeTicketUserDetails'
}else if(type==2){//国内
name = 'domesticCommissionUser'
}else if(type==3){//历史单项
name = 'ServiceCommissionUser'
}else if(type==4){//预期提成
name = 'saleExpectedCommission'
}else if(type==5){//排名
name = 'salesVolumeRank'
this.$router.push({
path: name,
query: {
tStartDates: this.PMMsg.tStartDates,
blank: 'y'
}
});
}
if(type!=5&&name){
this.$router.push({
name: name,
query: {
UserId: Number(userInfo.EmployeeId),
isSale: 1,
blank: 'y'
}
});
}
},
settStartDates() {
let nowdays = new Date()
let Year = new Date().getFullYear()
let MonthTime = new Date().getMonth() + 1
let MonthDayNum = new Date(Year, 12, 0).getDate();
let date = Year+'-12-'+(MonthDayNum>10?MonthDayNum:'0'+MonthDayNum)
let start = Year+'-01-01'
this.PMMsg.tStartDates = [start, date]
},
initData() {
let userInfo = this.getLocalStorage();
let param = {
RB_Branch_Id:
this.PMMsg.RB_Branch_Id == -1 ? null : this.PMMsg.RB_Branch_Id,
RB_Department_Id:
this.PMMsg.RB_Department_Id == 0 ? null : this.PMMsg.RB_Department_Id,
EnterID: this.PMMsg.EnterID == 0 ? null : this.PMMsg.EnterID,//Number(userInfo.EmployeeId)
QStartDate:
this.PMMsg.tStartDates && this.PMMsg.tStartDates.length == 2
? this.PMMsg.tStartDates[0]
: null,
QEndDate:
this.PMMsg.tStartDates && this.PMMsg.tStartDates.length == 2
? this.PMMsg.tStartDates[1]
: null,
CStartDate:
this.PMMsg.qStartDates && this.PMMsg.qStartDates.length == 2
? this.PMMsg.qStartDates[0]
: null,
CEndDate:
this.PMMsg.qStartDates && this.PMMsg.qStartDates.length == 2
? this.PMMsg.qStartDates[1]
: null,
GroupBy: this.PMMsg.GroupBy,
QueryType: this.PMMsg.QueryType,
};
if (!param.QStartDate) {
param.QStartDate = "2019-01-01";
}
let tableData = []
this.apipost("sellorder_get_sellvolumerankNew", param, (r) => {
r.data.data.forEach((x) => {
x.incomeVal = parseFloat(x.income);
x.avgPrice = parseFloat(x.avgPrice);
});
tableData = r.data.data;
tableData.forEach((item,index)=>{
if(item.EnterID==Number(userInfo.EmployeeId)){
this.rankingNum = index+1
this.SumPreferPrice = item.SumPreferPrice
}
})
});
},
//锅炉除开标点符号的字数
getFilteredNum(val) {
//var pattern=new RegExp("[`~%!@#$^=''?~!@#¥……&——‘”“'?*()(),,。.、<>《》\\[\\]【】\\“\\”{}=+-|\/:;;:]");
var pattern = new RegExp("[`~%!@#$^=''?~!@#¥……&——‘”“'?*()(),,。.、<>《》:;; +-=\\s]");
//[]内输入你要过滤的字符,这里基本包含全部的标点符号,\\是转义字符
var rs = "";
for (var i = 0; i < val.length; i++) {
rs += val.substr(i, 1).replace(pattern, '');
}
return rs
},
//确定分享业绩
shareCommission() {
if (this.shareMsg.ShareContent == '') {
this.Error('请填写个人宣言');
return;
}
let FilterNum = this.getFilteredNum(this.shareMsg.ShareContent);
if (FilterNum.length < 10) {
this.Error('字数太少了,再多说点吧!');
return;
} else {
this.shareMsg.PeriodsId = this.data.comissionGeneralId;
this.shareMsg.totalCommission = this.data.totalCommission;
if (this.isSubmit) {
this.isSubmit = false;
this.apipost('customerIndex_post_SetSellComissionGeneralSure', this.shareMsg, res => {
this.isSubmit = true;
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.iWorkbench();
this.resetCommission();
this.MsgBus.$emit('reSetMSG');
} else {
this.Error(res.data.message);
}
}, err => {})
}
}
},
//关闭重置输入框
resetCommission() {
this.tichengDialog = false;
this.shareMsg.ShareContent = ''
},
iWorkbench() {
this.apipost('customerIndex_post_GetMySelfSellInfo', {}, res => {
if (res.data.resultCode == 1) {
......@@ -811,6 +1051,7 @@
this.screenWidth = window.screenWidth
})()
}
this.initData()
this.iWorkbench() //销售个人工作台接口
this.grouplist() //销售首页小组工作台
this.Financial_post_GetNotDealCount(); //待处理财务单据的个数
......
<template>
<div>
<el-table border ref="multipleTable" :data="OrderList"
:default-sort="{prop: 'null', order: 'null'}"
:sort-by="['Money','Income','PreferTipAmount','PlatformTax','Refund','CostMoney','OrderProfit','DueInMoney']">
<el-table-column prop="Title" label="团名">
</el-table-column>
<el-table-column width="200" prop="CreateTimeStr" label="团号" show-overflow-tooltip>
<template slot-scope="scope">
<div>
<p class=" fz14" :class="{'cursor-pointer c059FF6':scope.row.OrderType==2}"
@click="scope.row.OrderType==2?goTuanDetails(scope.row):''">{{scope.row.TCNUM}}({{scope.row.TCID}})</p>
<p>出团日期:{{scope.row.StartDate}}</p>
</div>
</template>
</el-table-column>
<el-table-column prop="GuestNum" label="收客人数">
</el-table-column>
<el-table-column label="类型">
<template slot-scope="scope">
{{scope.row.TeamTypeName}}/{{scope.row.PriceTeamTypeName}}
</template>
</el-table-column>
<el-table-column label="线路/系列" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.LineName}}/{{scope.row.LtName}}
</template>
</el-table-column>
<el-table-column prop="StateName" label="状态" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{scope.row.Status}}</span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
props: {
OrderList: {
type: Array,
require: false
},
},
data() {
return {
loading: false,
};
},
watch: {
OrderList: {
handler (val, oldVal) {
},
deep: true
}
},
created() {
},
mounted() {
},
methods: {
}
};
</script>
<style scoped>
</style>
<style scoped>
</style>
<template>
<el-tooltip class="item" effect="dark" :content="type==1?'出境提成详情':type==3?'提成明细':type==2?'国内提成详情':''" placement="top">
<!-- <img src="../../../assets/img/xiaosouYQ.png" @click="goDetails"
style="width: 12px;height: auto; cursor: pointer;color: #33B3FF;"></img> -->
<i class="el-icon-document" style="font-size: 18px;color: red;cursor: pointer;" @click="goDetails"></i>
</el-tooltip>
</template>
<script>
export default {
props:['type','obj','Month'],
data() {
return {
};
},
watch: {
obj:{
handler(val, oldVal){
this.obj = val
},
deep: true,
immediate: true
}
},
mounted() {
},
created() {
},
methods: {
goDetails(){
let nowdays = new Date()
let Year = new Date().getFullYear()
let LastMonthTime = new Date().getMonth()
let MonthTime = new Date().getMonth() + 1
let userInfo = this.getLocalStorage();
let MonthDayNum
let name
if(this.type!=3){
let DepartSTime
let DepartETime
if(this.Month==1){
DepartSTime = Year+'-'+(MonthTime>10?MonthTime:'0'+MonthTime)+'-01'
MonthDayNum = new Date(Year, MonthTime, 0).getDate();
DepartETime = Year+'-'+(MonthTime>10?MonthTime:'0'+MonthTime)+'-'+(MonthDayNum>10?MonthDayNum:'0'+MonthDayNum)
}else{
DepartSTime = Year+'-'+(LastMonthTime>10?LastMonthTime:'0'+LastMonthTime)+'-01'
MonthDayNum = new Date(Year, LastMonthTime, 0).getDate();
DepartETime = Year+'-'+(LastMonthTime>10?LastMonthTime:'0'+LastMonthTime)+'-'+(MonthDayNum>10?MonthDayNum:'0'+MonthDayNum)
}
name = 'erpMyCustomerOrder'
this.$router.push({
name: name,
query: {
DepartSTime: DepartSTime,
DepartETime: DepartETime,
CommissionType: String(this.type),
blank: 'y'
}
});
}else{
name = 'TradeTicketUserDetails'
this.$router.push({
name: name,
query: {
UserId: Number(userInfo.EmployeeId),
blank: 'y'
}
});
}
}
}
};
</script>
<style scoped>
.progress-box{
flex: 1;
display: flex;
margin-bottom: 25px;
}
.relative-position{
/* min-width: 80px; */
flex: 1;
margin-right: 0;
position: relative;
}
.rate-box {
position: absolute;
top: 30px;
left: 50%;
transform: translateX(-50%);
color: #000;
z-index: 9;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.sanjiao {
width: 0;
height: 0;
margin-left: 5%;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
border-bottom: 3px solid #CACACA;
}
.rate {
min-width: 20px;
padding: 2px 6px;
background-color: #CACACA !important;
display: flex;
justify-content: center;
align-items: center;
color: #666666;
font-size: 0.62vw;
font-family: PingFang SC;
border-radius: 7px;
line-height:12px;
white-space:nowrap;
}
.active-rate{
background-color: #33B3FF !important;
color: #FFFFFF !important;
}
/deep/.relative-position .el-progress-bar__outer{
border-radius: 0 !important;
}
/deep/.relative-position .el-progress-bar__inner{
text-align: left;
text-indent: 10px;
border-radius: 0 !important;
}
/deep/.relative-position:first-child .el-progress{
border-top-left-radius: 15px !important;
border-bottom-left-radius: 15px !important;
overflow: hidden !important
}
/deep/.relative-position:last-child .el-progress{
border-top-right-radius: 15px !important;
border-bottom-right-radius: 15px !important;
overflow: hidden !important
}
</style>
<template>
<div>
<div class="progress-box">
<div v-for="(item,index) in CommissionRateList" :key="index"
class="relative-position">
<el-progress :text-inside="true" :stroke-width="20"
:percentage="setItemProgress(item)"
:status="setItemStatus(item)"
:format="setItemText(item)"
:text-color="'#666666'"
:color="customColor[0]">
</el-progress>
<div class="rate-box">
<div class="sanjiao"
:style="{'border-bottom-color':Profit>item.StartValue&&Profit<item.EndValue?'#33B3FF':'#CACACA'}"></div>
<div class="rate full-width"
:class="{'active-rate':Profit>item.StartValue&&Profit<item.EndValue}">
<i v-if="Profit>item.StartValue&&Profit<item.EndValue" class="el-icon-check" style="font-size:8px"></i>
{{item.Rate}}{{type==2?'%':''}}
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props:['CommissionRateList','Profit','type'],
data() {
return {
customColor: ['rgba(51,179,255,1)','rgba(222,225,230,1)'],
};
},
watch: {
CommissionRateList:{
handler(val, oldVal){
this.CommissionRateList = val
},
deep: true,
immediate: true
}
},
mounted() {
},
created() {
},
methods: {
// 设置进度
setItemProgress(data) {
if(this.Profit&&this.Profit>=data.StartValue&&this.Profit<=data.EndValue){
return data.EndValue<999999?this.Profit/data.StartValue:this.Profit/data.EndValue
}else{
return 0
}
},
// 自定义进度条文字
setItemText(row) {
if(this.type==2){
this.formatProgress(row)
return () => {
return `${row.EndValue2>99?'>'+row.StartValue2:row.StartValue2+' - '+row.EndValue2}w`
}
}else if(this.type==1){
return () => {
return `${row.EndValue>999?'>'+row.StartValue:row.StartValue+' - '+row.EndValue}人`
}
}
},
// 设置当前进度条状态,显示不同颜色
setItemStatus(data) {
if(this.AvgLureNum>=data.StartValue&&this.AvfOrderNum>=data.EndValue){
return 'exception'
}
},
formatProgress(data){
let obj = JSON.parse(JSON.stringify(data))
if(obj.StartValue>=10000) {
data.StartValue2 = (obj.StartValue/1000).toFixed(1)>0?(obj.StartValue/10000).toFixed(1):0 //Math.floor(obj.StartValue/10000)
if(data.StartValue2>=10&&data.StartValue2.indexOf('.0')!=-1){
data.StartValue2 = data.StartValue2.slice(0,2)
}else if(data.StartValue2.indexOf('.0')!=-1){
data.StartValue2 = data.StartValue2.slice(0,1)
}
}else{
data.StartValue2 = (obj.StartValue/10000).toFixed(1)>0?(obj.StartValue/10000).toFixed(1):0
}
if(obj.EndValue>=10000) {
data.EndValue2 = obj.EndValue/10000
}else{
data.EndValue2 = (obj.EndValue/1000).toFixed(1)>0?(obj.EndValue/10000).toFixed(1):0
}
},
}
};
</script>
......@@ -38,42 +38,229 @@
.title-Month{
text-align: right;
}
.groupTourOrder{
display: flex;
flex-wrap: wrap;
flex-grow: 1;
}
.groupTourOrder span{
/* width: 50%; */
white-space: nowrap;
font-size: 14px;
background: #DEE1E6;
color: #333333;
border-radius: 5px;
padding: 5px 10px;
margin-left: 20px;
/* #333333 */
}
.groupTourOrder span:first-child{
margin-left: 0;
}
.groupTourOrder span span{
color: red;
}
.CommissionLadder-form{
display: flex;
flex-wrap: wrap;
margin: 10px 0;
overflow: hidden;
}
.CommissionLadder{
flex: 1;
padding: 16px 20px 20px 20px;
background: #ffffff;
}
.CommissionLadder.Line{
margin: 0 0 10px 0;
}
.CommissionLadder .title{
font-size: 19px;
font-weight: bold;
padding: 0 0 5px 0;
display: flex;
justify-content: space-between;
}
.CommissionLadder p {
padding: 5px 0 0px 0;
font-size: 15px;
display: flex;
justify-content: space-between;
}
.CommissionLadder p span:last-child{
color: red;
}
.CommissionInfor{
padding: 0 0 10px 0;
}
.CommissionInfor span{
margin-left: 5px;
font-size: 13px;
}
.CommissionInfor span:first-child{
margin-left: 0;
}
.CommissionInfor span span{
color: red;
}
.CommissionLadder:last-child{
margin-right: 0;
}
.commissionProject>div{
margin-right: 40px;
margin-top: 10px;
}
.commissionProject>div:last-child{
margin-right: 0;
}
.commissionProject>div>div:first-child{
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 0 5px 0;
}
.commissionProjectZL{
display: flex;align-items: center;justify-content: space-between;
padding: 0 0 5px 0;
}
.commissionProject>div>div{
}
.ProjectTitle{
font-size: 16px;font-weight: bold;
}
.ProjectTitle>span{
margin-left: 5px; font-size: 15px;font-weight: 100;
}
.OpenOrder{
background: #ffffff;
padding: 10px 20px 20px 20px;
}
.OpenOrderMore{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0 10px 0;
cursor: 0;
font-size: 16px;
font-weight: 400;
color: #333333;
}
.OpenOrderMore span{
color: #999999;
font-size: 14px;
}
.headerTitle{
margin-bottom: 40px;
display: flex;
flex-wrap: wrap;
}
.headerTitle p{
font-weight: bold;
flex-wrap: nowrap;
}
.headerTitle span{
.headerTitle span:last-child{
font-weight: 100;
color: red;
margin-right: 20px;
}
.ladder-form{
width: 100%;
max-width: 1526px;
overflow-x: auto;
display: flex;
flex-wrap: nowrap;
}
.ladder-form-box{
height: 92px;
overflow: auto;
display: flex;
flex-wrap: nowrap;
}
.ladder-list{
flex: 1;
min-width: 450px;
display: flex;
flex-direction: column;
margin-right: 40px;
}
.ladder-list:last-child{
margin-right: 0;
}
.ladder-title{
width: 100%;
font-size: 13px;
padding: 0 0 5px 0;
color: black;
font-weight: bold;
}
</style>
<template>
<div>
<leftNav></leftNav>
<div class="sale_cont" v-if="CurrentUserInfo.RB_Group_id==2 || EditBtn">
<!-- <div class="Sale_menu">
<ul>
<template v-for="(item ,index) in MonthList">
<li :class="{active:Month==item.Id}" @click="Month=item.Id">{{item.Name}}</li>
</template>
</ul>
</div> -->
<div class="saleChartCont" :style="{zoom:zoom}">
<div class="saleChartCont" :style="{zoom:zoom}" style="overflow-y: scroll;" v-loading="loading">
<div class="personal">
<div class="PersonalData" style="height: auto;margin-top: 0;background: none;">
<el-row :gutter="20">
<el-col :span="12">
<el-row :gutter="20" style="margin-right: 0;">
<el-col :span="12" style="padding-right: 0;">
<div class="el-col-div ownScrollbarStyle PersonalData_l" style="height: auto;background: #fff;">
<rightHead :pagesTitle="2"></rightHead>
<div class="l_top" style="position: relative;">
<img v-if="data.icon !=null && data.icon !='' " :src="data.icon" alt="" class="tx_img"
:onerror='defaultHeadImg'>
<img v-else src="../../assets/img/default_head_img.jpg" alt="" alt="" class="tx_img">
<div class="p_name" style="margin-top:20px">
<span>{{data.emName}}</span>
<span>{{data.postName}}</span>
</div>
<div style="display: flex;justify-content: space-between;">
<div style="cursor: pointer;cursor: pointer;position: relative;" class="royalty" @click="goAnticipate(1)">
<div class="tc">
<p>
<span></span>
<span>{{data.OPCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.PeriodsName}}<el-tag
v-if="data.peopelBonus" size="mini" type="danger"
effect="dark" style="color: #ffff;position: absolute;left: 70px;bottom: 23px;font-size: 11px;">奖+{{data.PeopelBonus}}</el-tag></p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>出境提成</span>
</div>
</div>
<div style="border-left: 1px solid #eeeeee;width: 1px;"> </div>
<div style="cursor: pointer;margin-left: 0;" class="royalty" @click="goAnticipate(2)">
<div class="tc">
<p>
<span></span>
<span>{{data.GNOPCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.GNPeriodsName}}</p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>国内提成</span>
</div>
</div>
<div style="border-left: 1px solid #eeeeee;width: 1px;"> </div>
<div style="cursor: pointer;margin-left: 0;" class="royalty" @click="goAnticipate(3)">
<div class="tc">
<p>
<span></span>
<span>{{data.DXOPCommission}}</span>
</p>
<p style="color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;">{{data.DXPeriodsName}}</p>
</div>
<div stye="font-size: 16px;color: #666666;display: block;display: inline-block;">
<span>历史单项提成</span>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="12" style="background: #fff;">
<div class="el-col-div ownScrollbarStyle PersonalData_l" style="height: 158px;">
<el-col :span="12" style="padding-right: 0;">
<div class="el-col-div ownScrollbarStyle PersonalData_l" style="height: 158px;background: #fff;">
<div class="title-Month">
<template v-for="(item ,index) in MonthList">
<input type="button" :key="index"
......@@ -82,21 +269,250 @@
@click="clickActive(item)"></input>
</template>
</div>
<div style="display: flex;align-items: center; justify-content: space-between;
height: 40px;padding: 0 20px;">
<div style="display: flex;align-items: center; justify-content: space-between;padding: 20px 20px 0 20px;">
<div class="headerTitle">
<p>总订单数:<span></span></p>
<p>总人头数:<span></span></p>
<p>总预期奖金:<span>{{CommissionJJ}}</span></p>
<p>总预期提成:<span>{{CommissionTC}}</span></p>
<p><span>总订单数:</span> <span></span></p>
<p><span>总人头数:</span><span></span></p>
<p><span>总预期奖金:</span><span>{{CommissionJJ}}</span></p>
<p><span>总预期提成:</span><span>{{CommissionTC}}</span></p>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
<template v-for="(item,index) in dataRlueList">
<div class="CommissionLadder-form" style="flex-direction: column;">
<div class="CommissionLadder Line" :style="{'margin': index>0?'10px 0 0 0':'0 0 0 0'}">
<div class="title">
<span>{{item.RuleName}}</span>
<div>
<!-- <detailsButtom :type="1" :obj="commissionMsg" :Month="Month"/> -->
</div>
</div>
<p style="font-size: 16px;font-weight: bold;">小包团、落地团以及单项提成</p>
<template v-for="(s,indes) in item.BranchList">
<div class="CommissionInfor">
<span>
当月团数:<span>{{s.TravelNum}}</span>
</span>
<span>
预期利润:<span>{{s.Profit}}</span>
</span>
<span>
预期比例:<span>{{s.Rate}}{{s.Way==1?'元/人':'%'}}</span>
</span>
<span>
预期提成:<span>{{s.Commission}}</span>
</span>
</div>
<div class="ladder-form">
<div class="ladder-form-box">
<div class="ladder-list">
<div class="ladder-title">{{s.BranchName}}</div>
<progressComm :type="2" :CommissionRateList="s.GradeRuleList"
:Profit="s.Profit"></progressComm>
</div>
</div>
</div>
</template>
<div class="commissionProject" style="display: flex;flex-wrap: wrap;">
<div style="width: 450px;">
<div>
<span class="ProjectTitle">额外奖励
<span>
<span>
当月团数:<span style="color: red;">{{item.TravelAward.TravelNum}}</span>
</span>
<span style="margin-left: 10px;">
奖励:<span style="color: red;">{{item.TravelAward.AwardMoney}}</span>
</span></span>
</span>
</div>
<div>
<progressComm :type="1" :CommissionRateList="item.TravelAward.GradeRuleList"
:Profit="item.TravelAward.TravelNum"></progressComm>
</div>
</div>
<div>
<div>
<span class="ProjectTitle">单项签证</span>
</div>
<div class="groupTourOrder">
<span>报名单数:<span>{{item.SingleVisa.OrderNum}}</span></span>
<span>预期利润:<span>{{item.SingleVisa.Profit}}</span></span>
<span>提成比例:<span>{{item.SingleVisa.Rate}}{{item.SingleVisa.Way==1?'元/人':'%'}}</span></span>
<span>预期提成:<span>{{item.SingleVisa.Commission}}</span></span>
</div>
</div>
<div>
<div>
<span class="ProjectTitle">团队签证</span>
</div>
<div class="groupTourOrder">
<span>签证人数:<span>{{item.TravelVisa.VisaNum}}</span></span>
<span>单价:<span>{{item.TravelVisa.Rate}}{{item.TravelVisa.Way==1?'元/人':'%'}}</span></span>
<span>预期提成:<span>{{item.TravelVisa.Commission}}</span></span>
</div>
</div>
<div>
<div>
<span class="ProjectTitle">人头奖励
<span>公司所有国内出发线路(单团.散拚)</span></span>
</div>
<div class="groupTourOrder">
<span>订单数:<span>{{item.PeopleAward.TravelNum}}</span></span>
<span>人头数:<span>{{item.PeopleAward.PeopelNum}}</span></span>
<span>提成方式:<span>{{item.PeopleAward.Rate}}{{item.PeopleAward.Way==1?'元/人':'%'}}</span></span>
<span>预期提成:<span>{{item.PeopleAward.Commission}}</span></span>
</div>
</div>
<div>
<div style="display: flex;">
<div>
<div class="commissionProjectZL">
<span class="ProjectTitle">助理奖励
<span>系列团助理op人头提成</span></span>
</div>
<div class="groupTourOrder">
<span>报名人数:<span>{{ZLOPAward.TravelPeopleNum}}</span></span>
<span>单价:<span>{{ZLOPAward.TravelUnitPrice}}元/人</span></span>
<span>预期提成:<span>{{ZLOPAward.TravelCommission}}</span></span>
</div>
</div>
<div style="margin-left: 40px;">
<div class="commissionProjectZL">
<span class="ProjectTitle">助理奖励
<span>落地散、单项人头奖励</span></span>
</div>
<div class="groupTourOrder">
<span>报名人数:<span>{{ZLOPAward.SinglePeopleNum}}</span></span>
<span>单价:<span>{{ZLOPAward.SingleUnitPrice}}元/人</span></span>
<span>预期提成:<span>{{ZLOPAward.SingleCommission}}</span></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<div style="display: flex;margin: 10px 0 10px 0;">
<div class="CommissionLadder Line" style="width: 100%;margin: 0 0 0 0;padding: 16px 20px 0 20px;flex-shrink: 0;">
<div style="display: flex;justify-content: space-between;">
<span style="font-weight: bold;font-size: 16px;">国内提成
<span style="font-size: 13px;color: red;margin-left: 20px;">
注:国内提成需结团后方可发放提成,以实际结团为准,此处只提供参考</span>
</span>
<div>
<!-- <detailsButtom :type="2" :obj="commissionMsg" :Month="Month"/> -->
</div>
</div>
<p style="padding: 0 0 10px 0;text-align: left;"></p>
<div class="ExpectedCommission-table">
<el-table border ref="multipleTable" :data="isExpansion?newRlistAll:newRlist">
<el-table-column width="80" prop="RuleName"
label="团队类型" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.RuleName}}
</template>
</el-table-column>
<el-table-column width="70" prop="OrderNum"
label="订单数">
<template slot-scope="scope">
{{scope.row.OrderNum?scope.row.OrderNum:scope.row.OrderNum}}
</template>
</el-table-column>
<el-table-column width="70" prop="PeopleNum"
label="报名数">
<template slot-scope="scope">
{{scope.row.PeopleNum?scope.row.PeopleNum:scope.row.PeopleNum}}
</template>
</el-table-column>
<el-table-column prop="Way"
label="提成方式">
<template slot-scope="scope">
{{scope.row.Way==2?'利润提成':'人头奖励'}}
</template>
</el-table-column>
<el-table-column prop="ProfitRate"
label="提成" width="60">
<template slot-scope="scope">
<template v-if="scope.row.Way==1">
{{scope.row.Money+'/人'}}
</template>
<template v-if="scope.row.Way==2">
{{scope.row.ProfitRate+'%'}}
</template>
</template>
</el-table-column>
<el-table-column prop="Profit"
label="预期利润" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.Way==2&&scope.row.Profit?scope.row.Profit:'-'}}
</template>
</el-table-column>
<el-table-column prop="Commission"
label="预期提成" show-overflow-tooltip>
<template slot-scope="scope">
{{scope.row.Commission}}
</template>
</el-table-column>
</el-table>
<div style="color: red;font-size: 12px;text-align: right;padding: 0;">
<span style="cursor: pointer;display: inline-block;padding: 10px 5px;" @click="isExpansion=!isExpansion">
{{isExpansion?'收起':'展开'}}
<i :class="[isExpansion?'el-icon-arrow-up':'el-icon-arrow-down']"></i>
</span>
</div>
</div>
</div>
</div>
<div class="ExpectedCommission-form">
<!-- 未平账单 -->
<div class="OpenOrder">
<div class="OpenOrderMore">
<div>未完结团</div>
<span @click="goMore" style="cursor: pointer;">更多<i class="el-icon-d-arrow-right"></i> </span>
</div>
<OrderList :OrderList="OrderList"></OrderList>
</div>
<div style="display: flex;justify-content: space-between;">
<div style="padding: 10px 0 0 0;color: #E95252;line-height: 30px;width: 50%;white-space: wrap;">
<p style="font-weight: bold;">出境提成提醒:</p>
1.日本线.韩国线.东南亚线.南亚线散拚.与单团提成保持1%提成不变</br>
2.增加境外散拚提成(日本线.欧洲线分别奖励计算)</br>
3.增加人头奖励(日本线与其他.欧洲线2种)</br>
4.所有业绩结算皆以出发日.尾款收齐为基准</br>
5.人头奖励包不含门票、包车、国内游以及单团(独立成团)</br>
6.人头奖励每月至少20条方可进行奖励!</br>
7.以上所有核算皆以月为单位.核算基础为出发日或签证收取日算起!</br>
8.直客部门归属直客业务编制.不参与同业部门业务销售!</br>
9.单项服务每月人头数与年终人头奖励接按0.5计算</br>
10.以上制度公司会因市场变动与业务实际情况採取适当因应或调整,敬请注意!!
</div>
<div style="padding: 10px 0 0 0;color: #E95252;line-height: 30px;width: 50%;white-space: wrap;">
<p style="font-weight: bold;">关于提成发放流程的补充通知:</p>
<p>提成按时发放是公司所有人的期盼,同时也是公司重视的一部份,202
3年04月27日发布文件编号:2023-A-19“关于提成发放流程的通知”文件,在实际
操作过程中还是有部份人员不重视、无公德心,未在规定时间内及时改价或成本录入
未完成,导致5月提成未正常发放,为不影响其他销售的提成,特对提成规则做以下补充:</p>
1.从2023年5月18日起,行政部会按提成规定对已平账订单进行制单;</br>
2.未在规定时间内改价平账订单,违反提成规则,该订单报名当事人提成金额为0。</br>
3.未平账订单继续追溯至下个月,直到全部帐平为止,再放发上月其他订单提成</br>
4.未结团团期或成本遗漏补录等原因,造成团队利润变动,销售提成会在次月再次验证此团利润,多退少补;</br>
5.提成工作环环相扣,请所有人员务必有公德心,同时遵守工作流程,尊重他人。</br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
......@@ -104,14 +520,29 @@
<script>
import leftNav from '../public/leftNav.vue'
import rightHead from '../public/rightHead.vue'
import progressComm from './components/progressComm'
import OrderList from './components/OrderList'
import detailsButtom from './components/details'
export default {
data (){
return{
defaultHeadImg: 'this.src="' + require("../../assets/img/default_head_img.jpg") + '"',
data:{},
loading: true,
ZLOPAward:{},
dataRlueList:[],
EditBtn: false,
CurrentUserInfo: {},
zoom: 1,
CommissionJJ: 0,
CommissionTC: 0,
isExpansion: false,
CommissionJJ:0,
CommissionTC:0,
GNOrderNum:0,
GNEopleNum:0,
GNCommission:0,
newRlist:[],
newRlistAll:[],
DomesticLine:{},
msg:{
Month: ''
},
......@@ -120,7 +551,8 @@
{Name:'上月',Id:'0'},
{Name:'当月',Id:'1'},
],
CommissionInfor:{},
CommissionInfor: {},
OrderList: [],
YearTime:'',
LastMonthTime: '',
MonthTime: '',
......@@ -153,9 +585,48 @@
},
components:{
leftNav,
rightHead
rightHead,
progressComm,
OrderList,
detailsButtom
},
methods:{
// 销售预期提成
goAnticipate(type){
let userInfo = this.getLocalStorage();
let name
if(type==1){//出境
name = 'OPCommissionDetail'
}else if(type==2){//国内
name = 'OPsalesCommissionUser'
}else if(type==3){//历史单项
name = 'ServiceCommissionUser'
}
if(type!=5&&name){
this.$router.push({
name: name,
query: {
UserId: Number(userInfo.EmployeeId),
Type: 2,
isSale: 1,
blank: 'y'
}
});
}
},
goMore(){
this.$router.push({
name: 'TravelControlList',
query: {
blank: 'y',
// Q_IsCollect: "2",
// DepartSTime: this.commissionMsg.DepartSTime,
// DepartETime: this.commissionMsg.DepartETime
}
});
},
clickActive(item){
this.Month = item.Id
if(item.Id==1){
......@@ -163,79 +634,26 @@
}else{
this.msg.Month = this.Year+'-'+(this.LastMonthTime>10?this.LastMonthTime:'0'+this.LastMonthTime)
}
// this.getList()
this.getList()
this.GetGNSaleExpectCommission()
},
// 获取规则列表数据
getList() {
this.apipost("sellcommission_GetTYSaleCommissionRuleList", {}, res => {
this.loading = false;
this.loading = true
this.apipost("opcommission_GetOPExpectCommission", this.msg, res => {
if (res.data.resultCode == 1) {
this.dataRuleList = res.data.data[0];
this.JapaneseLine.CommissionRateList = this.dataRuleList.AwardRuleList
this.JapaneseProfit.CommissionRateList = this.dataRuleList.ProfitRuleList
this.EuropeLine.CommissionRateList = this.dataRuleList.EuropeAwardRuleList
this.EuropeProfit.CommissionRateList = this.dataRuleList.EuropeProfitRuleList
this.OtherLine.CommissionRateList = this.dataRuleList.OtherAwardRuleList
this.OtherProfit.CommissionRateList = this.dataRuleList.OtherProfitRuleList
this.AnnualBonus.CommissionRateList = this.dataRuleList.BonusRuleList
this.getData()
this.dataRlueList = res.data.data.RlueList
this.ZLOPAward = res.data.data.ZLOPAward
// console.log(res.data.data,'---')
}else{
this.Error(res.data.message)
}
});
},
// 获取预期数据
getData(){
// 日本欧洲提成
this.apipost('sellcommission_GetTYSaleExpectCommission', this.msg,
res => {
if (res.data.resultCode == 1) {
let data = res.data.data
this.CommissionInfor = data;
// 日本及其他人头奖励
this.JapaneseLine.AvgLureNum = this.CommissionInfor.PeopleNum?this.CommissionInfor.PeopleNum:0
this.JapaneseLine.Commission = this.CommissionInfor.PeopleMoney?this.CommissionInfor.PeopleMoney:0
// 日本及其他提成比例
this.JapaneseProfit.AvgLureNum = this.CommissionInfor.JapanCommission?this.CommissionInfor.JapanCommission:0
this.JapaneseProfit.AvfOrderNum = this.CommissionInfor.JapanOrderNum?this.CommissionInfor.JapanOrderNum:0
this.JapaneseProfit.CommissionRate = this.CommissionInfor.JapanRate?this.CommissionInfor.JapanRate:0
this.JapaneseProfit.Commission = this.CommissionInfor.JapanCommission?this.CommissionInfor.JapanCommission:0
this.JapaneseProfit.CommissionProfit = this.CommissionInfor.JapanProfit?this.CommissionInfor.JapanProfit:0
// 欧洲人头奖励
this.EuropeLine.AvgLureNum = this.CommissionInfor.EuropePNum?this.CommissionInfor.EuropePNum:0
this.EuropeLine.Commission = this.CommissionInfor.EuropeMoney?this.CommissionInfor.EuropeMoney:0
// 欧洲及其他提成比例
this.EuropeProfit.AvgLureNum = this.CommissionInfor.EuropeCommission?this.CommissionInfor.EuropeCommission:0
this.EuropeProfit.AvfOrderNum = this.CommissionInfor.EuropeOrderNum?this.CommissionInfor.EuropeOrderNum:0
this.EuropeProfit.CommissionRate = this.CommissionInfor.EuropeRate?this.CommissionInfor.EuropeRate:0
this.EuropeProfit.Commission = this.CommissionInfor.EuropeCommission?this.CommissionInfor.EuropeCommission:0
this.EuropeProfit.CommissionProfit = this.CommissionInfor.EuropeProfit?this.CommissionInfor.EuropeProfit:0
// 其他人头奖励
this.OtherLine.AvgLureNum = this.CommissionInfor.OtherPNum?this.CommissionInfor.OtherPNum:0
this.OtherLine.Commission = this.CommissionInfor.OtherMoney?this.CommissionInfor.OtherMoney:0
// 其他提成比例
this.OtherProfit.AvgLureNum = this.CommissionInfor.OtherCommission?this.CommissionInfor.OtherCommission:0
this.OtherProfit.AvfOrderNum = this.CommissionInfor.OtherOrderNum?this.CommissionInfor.OtherOrderNum:0
this.OtherProfit.CommissionRate = this.CommissionInfor.OtherRate?this.CommissionInfor.OtherRate:0
this.OtherProfit.Commission = this.CommissionInfor.OtherCommission?this.CommissionInfor.OtherCommission:0
this.OtherProfit.CommissionProfit = this.CommissionInfor.OtherProfit?this.CommissionInfor.OtherProfit:0
// 年终奖
this.AnnualBonus.AvfOrderNum = this.CommissionInfor.BonusNum?this.CommissionInfor.BonusNum:0
this.AnnualBonus.Commission = this.CommissionInfor.BonusPeriods?this.CommissionInfor.BonusPeriods:0
this.GetGNSaleExpectCommission()
}else {
this.Error(res.data.message);
}
this.loading = false
},
err => {this.loading = false}
);
this.loading = false;
})
},
GetGNSaleExpectCommission(){
// 国内提成
this.apipost('sellcommission_Post_GetGNSaleExpectCommission', this.msg,
this.apipost('opcommission_Post_GetGNOPExpectCommission', this.msg,
res => {
if (res.data.resultCode == 1) {
this.DomesticLine = res.data.data
......@@ -263,8 +681,7 @@
})
},
GetOrderPageList(){
this.commissionMsg.IsMyOrder = '1'
this.apipost('CarSingle_post_GetGuestOrderStatisticsPageList', this.commissionMsg,
this.apipost('opcommission_GetOPNotGroupOutTravelList', {},
res => {
if (res.data.resultCode == 1) {
let data = res.data.data.pageData
......@@ -283,6 +700,28 @@
err => {this.loading = false}
)
},
iWorkbench() {
let Info
this.apipost('customerIndex_post_GetMySelfSellInfo', {}, res => {
if (res.data.resultCode == 1) {
this.data = res.data.data;
Info = res.data.data
this.apipost('opcommission_GetLatelyOPCommission', {}, res => {
if (res.data.resultCode == 1) {
this.data = res.data.data;
this.data.icon = Info.icon
this.data.emName = Info.emName
this.data.postName = Info.postName
} else {
this.$message.error(res.data.message)
}
}, err => {})
} else {
this.$message.error(res.data.message)
}
}, err => {})
},
//计算总成本
CalculatePrice(arr1,num) {
......@@ -331,11 +770,14 @@
this.MonthList[0].Name = this.MonthList[0].Name+'('+this.LastMonthTime+'月)'
this.MonthList[1].Name = this.MonthList[1].Name+'('+this.MonthTime+'月)'
//this.Year+'-'+(this.MonthTime>10?this.MonthTime:'0'+this.MonthTime)+'-01'//出发开始
this.commissionMsg.DepartSTime = this.getBeforeDate(93,this.getBeforeDate(0,new Date().Format("yyyy-MM-dd")))
var MonthDayNum = new Date(this.Year, this.MonthTime, 0).getDate(); //计算当月的天数
this.commissionMsg.DepartETime = this.Year+'-'+(this.MonthTime>10?this.MonthTime:'0'+this.MonthTime)+'-'+(MonthDayNum>10?MonthDayNum:'0'+MonthDayNum)//出发结束
},
this.iWorkbench()
this.GetOrderPageList()
this.getList()
this.GetGNSaleExpectCommission()
},
}
......
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