Commit 7bed3985 authored by youjie's avatar youjie

上传到访表、是否邀约、财务流程 业绩提成规则调整

parent f878f94a
......@@ -292,6 +292,17 @@ export function getStudentDorpDownList(data) {
})
}
/**
* 确认邀约咨询30分钟以上
*/
export function SetStudentSureConsult(data) {
return request({
url: '/CustomerStudent/SetStudentSureConsult',
method: 'post',
data
})
}
/**
* 添加修改学员
......
......@@ -150,8 +150,12 @@
</div>
<div style="margin-bottom: 80px;">
<div>
<span style="width: 75px;">提成类型:</span>
<q-radio v-model="addMsg.SendType" val="1" label="业绩比例" />
<q-radio v-model="addMsg.SendType" val="2" label="固定金额" />
</div>
<div style="margin-bottom: 80px;" v-if="addMsg.SendType=='1'">
<div>业绩比例</div>
<div
......@@ -206,6 +210,39 @@
/>
</div>
</div>
<div style="margin-bottom: 80px;" v-if="addMsg.SendType=='2'">
<div>固定金额</div>
<div style="display: flex;align-items: center;margin-bottom: 10px;">
<q-input
clearable
filled
v-model="addMsg.PeopleMoney"
style="width: 190px;margin-right: 5px;"
type="number"
@input="$forceUpdate()"
label="提成金额">
<template v-slot:append>
<span class="fz14">/人</span>
</template>
</q-input>
<q-input
clearable
filled
v-model="addMsg.ExtraMoney"
style="width: 190px;margin-right: 5px;"
type="number"
@input="$forceUpdate()"
label="额外奖励">
<template v-slot:append>
<span class="fz14">/人</span>
</template>
</q-input>
<div>
<span class="fz14 text-negative">注释:额外奖励需确认邀约咨询30分钟以上</span>
</div>
</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"
......@@ -288,7 +325,10 @@ export default {
FirstRate:'',//首次发放比例
RateList: [
{ StartValue: '', EndValue: '', Rate: '' }
]
],
SendType: '1',
PeopleMoney: 0,
ExtraMoney: 0
}
} else {//修改
this.addMsg = JSON.parse(JSON.stringify(this.selectData))
......@@ -298,6 +338,9 @@ export default {
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)
this.addMsg.SendType = this.addMsg.SendType?String(this.addMsg.SendType):'1'
this.addMsg.PeopleMoney = this.addMsg.PeopleMoney?this.addMsg.PeopleMoney:0
this.addMsg.ExtraMoney = this.addMsg.ExtraMoney?this.addMsg.ExtraMoney:0
if(this.addMsg.EmpList.length== this.employeeList.length){
this.personnel=true
......@@ -310,7 +353,9 @@ export default {
}else{
this.branch=false
}
if(this.addMsg.RateList.length==0){
this.addMsg.RateList.push({ StartValue: '', EndValue: '', Rate: '' })
}
}
},
......@@ -367,7 +412,17 @@ export default {
this.$refs.Name.validate();
this.$refs.CourseRate.validate();
this.$refs.FirstRate.validate();
if(this.addMsg.SendType=='1'){
this.addMsg.PeopleMoney = 0
this.addMsg.ExtraMoney = 0
}else{
this.addMsg.RateList = []
if(this.addMsg.PeopleMoney==''){
this.addMsg.PeopleMoney = 0
}if(this.addMsg.ExtraMoney==''){
this.addMsg.ExtraMoney = 0
}
}
if (!this.$refs.Name.hasError && !this.$refs.CourseRate.hasError && !this.$refs.FirstRate.hasError) {
let msg = JSON.parse(JSON.stringify(this.addMsg))
......
......@@ -276,6 +276,27 @@
</div>
</div>
</div>
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">
到访表
</div>
<div class="stage_value row">
<div class="q-pr-lg text-blue" v-if="customObj.FileVoucher">
<a :href="customObj.FileVoucher" target="_blank" rel="noopener noreferrer"
style="color:inherit;">
查看
</a>
</div>
<el-upload :before-upload="uploadVisitTableFile" :multiple="false"
action="" :show-file-list="false">
<q-btn color="primary" size="xs" unelevated label="上传">
<i class="el-icon-upload q-pl-xs"></i>
</q-btn>
</el-upload>
</div>
</div>
</div>
<div class="custom_Line"></div>
<div class="info_title">基本资料</div>
<div class="info_content">
......@@ -339,7 +360,7 @@
saveStudent, //保存学员信息
GetStudentTypeList,
getStudentDorpDownList,
GetNeedsList
GetNeedsList,
} from "../../../api/school/index";
import {
getGuestBasicsEnumList,
......@@ -415,6 +436,7 @@
StuType: "", //客户类型
StuNeeds: 0, //客户需求
StuTel: "", //显示使用
FileVoucher: ""//http://192.168.10.214:8130/EduSystem/Test/Upload/SetStudentVoucher/202303221126306360000000004.png
},
//日语基础列表
basicList: [],
......@@ -448,6 +470,7 @@
},
created() {
this.userInfo = this.getLocalStorage();
let userInfo = this.getLocalStorage();
this.getStuStageList();
this.getBasicList();
this.queryGuestEducationEnumList();
......@@ -476,6 +499,13 @@
}
},
methods: {
UploadImage(file) {
UploadSelfFile("SetStudentVoucher", files, res => {
if (res.Code == 1) {
this.customObj.StuIcon = res.FileUrl;
}
});
},
//是否显示关联来源人信息
IsShowStuSourceIdName(item) {
var isHaveAuth = false;
......@@ -495,6 +525,16 @@
return false;
}
},
// 上传到访表
uploadVisitTableFile(files) {
UploadSelfFile("FileVoucher", files, res => {
if (res.Code == 1) {
this.customObj.FileVoucher = res.FileUrl
}else{
this.$message.error('上传文件失败,请重新上传');
}
});
},
uploadFile(files) {
UploadSelfFile("studentIcon", files, res => {
if (res.Code == 1) {
......@@ -617,6 +657,7 @@
}
});
},
//获取员工列表
getEmployeeList() {
queryEmployee({
......@@ -764,6 +805,7 @@
this.customObj.WeChatNo = tempDate.WeChatNo;
this.customObj.StuNeeds = tempDate.StuNeeds;
this.customObj.StuTel = tempDate.StuTel;
this.customObj.FileVoucher = tempDate.FileVoucher;
//有订单
if (tempDate.OrderCount && tempDate.OrderCount > 0) {
this.isHaveOrder = true;
......
......@@ -237,6 +237,23 @@
</template>
</q-td>
</template>
<template v-slot:body-cell-CreateByName="props">
<q-td :props="props">
<div class="row no-wrap items-center">
<div>
<template v-if="isInvite">
<q-toggle v-model="props.row.IsSureConsultTime" :false-value="0" :true-value="1"
@input="setInvite(props.row)"/>
<q-tooltip>{{props.row.IsSureConsultTime?'取消邀约':'确认邀约咨询30分钟以上'}}</q-tooltip>
</template>
<span v-else class="q-pr-sm text-grey-7">
{{props.row.IsSureConsultTime?'已邀约':'未邀约'}}
</span>
</div>
<span>{{props.row.CreateByName}}</span>
</div>
</q-td>
</template>
</q-table>
<student-form v-if="isShowStuForm" :save-obj="stuOption" @close="closeStuForm" @success="refreshStuList">
</student-form>
......@@ -270,6 +287,10 @@
import {
queryEmployee
} from "../../../api/users/user";
import {
SetStudentSureConsult, //邀约
} from "../../../api/school/index";
import { date } from 'quasar'
export default {
props: {
......@@ -473,6 +494,12 @@
field: "CreateTimeStr",
align: "left"
},
// {
// name: "IsSureConsultTime",
// label: "是否邀约",
// align: "left",
// field: "IsSureConsultTime"
// },
{
name: "CreateByName",
label: "负责人",
......@@ -504,7 +531,8 @@
},
//员工列表
employeeList: [],
myEmployeeList: []
myEmployeeList: [],
isInvite: false
};
},
watch: {
......@@ -518,6 +546,20 @@
},
created() {
this.userInfo = this.getLocalStorage();
// 邀约功能权限
this.isInvite = false;
if (
this.userInfo &&
this.userInfo.ActionMenuList &&
this.userInfo.ActionMenuList.length > 0
) {
this.userInfo.ActionMenuList.forEach(x => {
if (x.FunctionCode == "isInvite") {
this.isInvite = true;
}
});
}
this.formatAssistList();
},
mounted() {
......@@ -527,6 +569,18 @@
...mapGetters(["logo", "name"])
},
methods: {
setInvite(row){
if(!this.isInvite) return
let msg = {
StuId: row.StuId,
IsSureConsultTime: row.IsSureConsultTime
}
SetStudentSureConsult(msg).then(res => {
if (res.Code == 1) {
this.$emit("success");
}
});
},
//是否有下载客户资料权限
IsDownLoadStu() {
var isHaveAuth = false;
......@@ -737,6 +791,15 @@
},
//转订单
transferOrder() {
let CreateTimeStr = date.formatDate(new Date(this.selection[0].CreateTimeStr), 'YYYY-MM-DD')
let CreateTimeStr2 = date.formatDate(new Date('2023-03-22'), 'YYYY-MM-DD')
console.log(CreateTimeStr>=CreateTimeStr2,CreateTimeStr,CreateTimeStr2)
if(CreateTimeStr>=CreateTimeStr2){
if(!this.selection[0].FileVoucher){
this.$message.error('需先上传学员到访表')
return
}
}
const firstId = this.selection[0].CustomerId;
const flag = this.selection.every(e => {
return e.CustomerId == firstId;
......@@ -753,6 +816,15 @@
},
//转留学
transferAbroad() {
let CreateTimeStr = date.formatDate(new Date(this.selection[0].CreateTimeStr), 'YYYY-MM-DD')
let CreateTimeStr2 = date.formatDate(new Date('2023-03-22'), 'YYYY-MM-DD')
console.log(CreateTimeStr>=CreateTimeStr2,CreateTimeStr,CreateTimeStr2)
if(CreateTimeStr>=CreateTimeStr2){
if(!this.selection[0].FileVoucher){
this.$message.error('需先上传学员到访表')
return
}
}
this.isShowAbroad = true;
},
getCurseManager(row) {
......
......@@ -68,11 +68,11 @@
<tr>
<th width="100" style="min-width: 100px;max-width: 100px;">方案名称</th>
<th width="5%">类型</th>
<th width="15%">校区</th>
<th width="10%">校区</th>
<th width="5%">课程类型</th>
<th width="">课程</th>
<th width="7%">首次发放比例</th>
<th width="5%">课程比例</th>
<th width="10%">课程比例</th>
<th width="10%">提成人员</th>
<th width="10%">部门人员</th>
<th width="10%">操作</th>
......@@ -113,6 +113,7 @@
<td>
<span >{{ item.CourseRate + '%' }}</span>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.EmpList" :key="sIndex">
<span v-if="sIndex<8">{{ son.EmployeeName }}{{item.EmpList.length==sIndex+1?'':'、'}}</span>
......@@ -127,6 +128,7 @@
<el-button slot="reference" style="border: none;" type="text">查看更多</el-button>
</el-popover>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.ChildEmpList" :key="sIndex">
<span v-if="sIndex<8">{{ son.EmployeeName }}{{item.ChildEmpList.length==sIndex+1?'':'、'}}</span>
......@@ -174,7 +176,7 @@
</tr>
</table> -->
<div style="width:100%;overflow-x: auto;">
<table
<table v-if="item.RateList.length>0||item.SendType=='1'"
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
......@@ -193,6 +195,25 @@
</tr>
</table>
<table v-if="item.SendType=='2'"
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
>
<tr>
<td rowspan="2" width="100" style="min-width: 100px;">固定金额</td>
<th style="min-width: 220px;"
>提成金额/人</th>
<th style="min-width: 220px;"
>额外奖励/人</th>
</tr>
<tr style="">
<td style="min-width: 220px;">{{ item.PeopleMoney }}</td>
<td style="min-width: 220px;">{{ item.ExtraMoney }}</td>
</tr>
</table>
</div>
</div>
......
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