Commit 7f9b08e3 authored by 罗超's avatar 罗超
parents 0b354fb5 eda9db8d
import request from '../../utils/request'
/**
* 获取班次列表
* @param {JSON参数} data
*/
export function getScrollShiftList(data) {
return request({
url: '/Scroll/GetScrollShiftList',
method: 'post',
data
})
}
/**
* 新增修改班次
* @param {JSON参数} data
*/
export function setScrollShiftInfo(data) {
return request({
url: '/Scroll/SetScrollShiftInfo',
method: 'post',
data
})
}
/**
* 新增修改班次
* @param {JSON参数} data
*/
export function delScrollShiftInfo(data) {
return request({
url: '/Scroll/DelScrollShiftInfo',
method: 'post',
data
})
}
/**
* 获取排班计划
* @param {JSON参数} data
*/
export function getScrollPlanMonthList(data) {
return request({
url: '/Scroll/GetScrollPlanMonthList',
method: 'post',
data
})
}
/**
* 新增排班计划
* @param {JSON参数} data
*/
export function setScrollPlanInfo(data) {
return request({
url: '/Scroll/SetScrollPlanInfo',
method: 'post',
data
})
}
/**
* 获取上课时段列表
* @param {JSON参数} data
*/
export function getScrollCourseTimeList(data) {
return request({
url: '/Scroll/GetScrollCourseTimeList',
method: 'post',
data
})
}
/**
* 新增修改上课时段
* @param {JSON参数} data
*/
export function setScrollCourseTimeInfo(data) {
return request({
url: '/Scroll/SetScrollCourseTimeInfo',
method: 'post',
data
})
}
/**
* 删除上课时段
* @param {JSON参数} data
*/
export function delScrollCourseTimeInfo(data) {
return request({
url: '/Scroll/DelScrollCourseTimeInfo',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -644,4 +644,59 @@ export function RemoveNeeds(data) {
method: 'post',
data
});
}
/**
* 获取目标分页列表
*/
export function GetConsultantGoalPage(data) {
return request({
url: '/UserCenter/GetConsultantGoalPage',
method: 'post',
data
});
}
/**
* 批量添加目标
*/
export function AddConsultantGoal(data) {
return request({
url: '/UserCenter/AddConsultantGoal',
method: 'post',
data
});
}
/**
* 删除目标
*/
export function RemoveConsultantGoal(data) {
return request({
url: '/UserCenter/RemoveConsultantGoal',
method: 'post',
data
});
}
/**
* 修改目标
*/
export function UpdateConsultantGoal(data) {
return request({
url: '/UserCenter/UpdateConsultantGoal',
method: 'post',
data
});
}
/**
* 获取目标详情
*/
export function GetConsultantGoal(data) {
return request({
url: '/UserCenter/GetConsultantGoal',
method: 'post',
data
});
}
\ No newline at end of file
......@@ -28,4 +28,28 @@ export function GetCenterCommissionStatistics(data) {
method: 'post',
data
})
}
\ No newline at end of file
}
/**
* 首页 今日数据图标数据
*/
export function MarketStatic(data) {
return request({
url: '/UserCenter/MarketStatic',
method: 'post',
data
})
}
/**
* 首页 课程顾问部统计
*/
export function ConsultantStatic(data) {
return request({
url: '/UserCenter/ConsultantStatic',
method: 'post',
data
})
}
......@@ -105,6 +105,8 @@
import {
GetEducationReceiptPage,
} from "../../api/teacher/index";
import { Encrypt } from '../../utils/encrypt'
import html2canvas from "html2canvas";
export default {
......@@ -305,7 +307,8 @@
tipLoadding.show({
message: '正在生成图片,请稍后...'
})
var domain = "https://edu.kookaku.com/#/courseRefundH5?Id=" + item.Id;
let str=Encrypt(item.Id.toString())
var domain = "https://edu.kookaku.com/#/courseRefundH5?a=" + encodeURIComponent(str);
let msg = {
url: domain,
width: 430
......
This diff is collapsed.
......@@ -36,8 +36,8 @@
</template>
<template v-slot:body-cell-ClassName="props">
<q-td :props="props" class="text-negative">
<q-select dense standout behavior="menu" filled v-model="props.row.ClassId" ref="class"
:options="classList" option-label="ClassName" option-value="ClassId" emit-value map-options
<q-select dense standout behavior="menu" filled v-model="props.row.ClassId" ref="class" use-input
:options="classList" option-label="allName" option-value="ClassId" emit-value map-options @filter="classfilter"
:rules="[val => !!val || '请选择班级']" @input ='filterCourseFn($event,props.rowIndex)'/>
</q-td>
</template>
......@@ -376,6 +376,7 @@ import {
courseList: [], //课程列表
schoolList:[],
classList:[],
allclassList:[],
dataList_class:[
{
SchoolName:"",
......@@ -528,14 +529,30 @@ import {
if (!tempArray) {
tempArray = [];
}
tempArray.forEach(x=>{
x.allName = x.ClassName+'('+x.ClassNo+')'
})
tempArray.unshift({
ClassId: 0,
ClassName: "不限"
})
ClassName: "不限",
allName:'不限'
})
this.classList = tempArray;
this.allclassList = JSON.parse(JSON.stringify(tempArray))
}
})
},
classfilter(val, update) {//课程的栓选
update(() => {
if (val === '') {
this.classList = this.allclassList
}
else {
const needle = val.toLowerCase();
this.classList = this.allclassList.filter(v => v.allName.toLowerCase().indexOf(needle) > -1);
}
})
},
filterSchoolFn(val,index) {
let school=this.schoolList.filter(item=>{
return item.SId==val
......@@ -634,6 +651,7 @@ import {
delhaocai(index){
this.dataList.splice(index, 1);
},
//翻页
changePage(val) {
this.haochaimsg.pageIndex = val;
......
......@@ -658,7 +658,6 @@ export default {
this.changeBillMsg.Id = this.setingObj.Id;
this.changeBillMsg.SpecialNode = this.setingObj.SpecialNode;
this.changeBillMsg.RemunerationState = this.setingObj.DataObj.RemunerationState;
console.log(this.setingObj)
},
methods: {
closeBackInfo() {
......
......@@ -425,7 +425,6 @@ export default {
});
},
assistBatchHandler() {
console.log(this.pushing || this.baseObj.IsHaveCurseManager);
if (this.pushing || this.baseObj.IsHaveCurseManager) return;
this.pushing = true;
let parameter = {
......
......@@ -129,6 +129,14 @@
/>
</q-td>
</template>
<template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props">
<div>
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{props.row.EnterpriseName}}:</span>
{{ props.row.StuSourceIdName }}
</div>
</q-td>
</template>
<template v-slot:body-cell-CurseManager="props">
<q-td :props="props" v-html="getCurseManager(props.row)"></q-td>
......
......@@ -503,9 +503,11 @@ export default {
//计算课程单价和应收金额
calcPrice() {
var guestNum = 0;
if (this.OrderMsg.GuestNum && this.OrderMsg.GuestNum > 0) {
guestNum = Number(this.OrderMsg.GuestNum);
}
let temp = this.CourseList.find(
x => x.CourseId == this.OrderMsg.CourseId
);
......@@ -618,12 +620,12 @@ export default {
if (e.IsRenewGuest == 0) {
this.OrderMsg.DiscountMoney = this.accAdd(
this.OrderMsg.DiscountMoney,
this.accMul(this.OrderMsg.Class_Price, this.OrderMsg.B2CRatio)
this.accMul(this.OrderMsg.Class_Price, this.OrderMsg.B2CRatio/100)
);
} else {
this.OrderMsg.DiscountMoney = this.accAdd(
this.OrderMsg.DiscountMoney,
this.accMul(this.OrderMsg.Class_Price, this.OrderMsg.B2CReNewRatio)
this.accMul(this.OrderMsg.Class_Price, this.OrderMsg.B2CReNewRatio/100)
);
}
});
......@@ -671,16 +673,10 @@ export default {
this.OrderMsg.CourseId = "";
}
if (this.saveObj.B2CRatio) {
this.OrderMsg.B2CRatio =
this.saveObj.B2CRatio > 0
? this.saveObj.B2CRatio / 100
: this.saveObj.B2CRatio;
this.OrderMsg.B2CRatio = this.saveObj.B2CRatio
}
if (this.saveObj.B2CReNewRatio) {
this.OrderMsg.B2CReNewRatio =
this.saveObj.B2CReNewRatio > 0
? this.saveObj.B2CReNewRatio / 100
: this.saveObj.B2CReNewRatio;
this.OrderMsg.B2CReNewRatio = this.saveObj.B2CReNewRatio
}
}
this.IsShowEditOrder = true;
......@@ -726,7 +722,7 @@ export default {
getEmployee(n) {
var qMsg = {
IsLeave: 1,
UserRole: 2
UserRole: n
};
queryEmployee(qMsg).then(res => {
if (res.Code == 1) {
......
<style scoped>
/deep/.el-input__inner,
/deep/.el-range-input {
background-color: transparent;
border: none;
}
</style>
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 400px;max-width:400px;">
<q-card-section>
<div class="text-h6">{{optionTitle}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<template v-if="isShow==1">
<div class="row wrap">
<div class="col-12">
<q-field filled dense>
<template v-slot:control>
<el-date-picker v-model="value" style="width:100%" type="month" :clearable="false" @change="dateChange"
value-format="yyyy-MM" placeholder="选择月">
</el-date-picker>
</template>
</q-field>
<div style="margin-top:10px;">
<el-tag v-for="(tag, index) in objOption.TimeList" size="small" style="margin:0 5px 5px 0;" :key="tag"
@close="params => tagClose(index)" closable type="success">
{{tag}}
</el-tag>
</div>
</div>
</div>
<div class="row wrap" style="margin-top:20px;">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" @keyup.native="checkPrice(objOption,'GoalMoney')" v-model="objOption.GoalMoney" ref="GoalMoney2"
label="目标金额" :rules="[val => !!val || '请填写目标金额']" />
</div>
</div>
<div class="row wrap" style="margin-top:10px;">
<div class="col-12">
<q-select filled stack-label v-model="objOption.Dept_Id" :options="DeptList" use-input @filter="filterDepart" emit-value map-options
label="所属部门" option-label="DeptName" option-value="DeptId" />
</div>
</div>
</template>
<template v-if="isShow==2">
<div class="row wrap">
<div class="col-12">
<q-field filled dense>
<template v-slot:control>
<el-date-picker v-model="value2" style="width:100%" type="month" value-format="yyyy-MM" placeholder="选择月">
</el-date-picker>
</template>
</q-field>
</div>
</div>
<div class="row wrap" style="margin-top:30px;">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="updateMsg.GoalMoney" ref="GoalMoney2"
label="目标金额" :rules="[val => !!val || '请填写目标金额']" />
</div>
</div>
<div class="row wrap" style="margin-top:10px;">
<div class="col-12">
<q-select filled stack-label v-model="updateMsg.Dept_Id" :options="DeptList" use-input @filter="filterDepart" emit-value map-options
label="所属部门" option-label="DeptName" option-value="DeptId" />
</div>
</div>
</template>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" v-if="isShow==1"
:loading="saveLoading" @click="saveNeed" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" v-if="isShow==2"
:loading="saveLoading" @click="saveTarget" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
AddConsultantGoal,
UpdateConsultantGoal,
GetConsultantGoal
} from '../../api/system/index'
//部门
import {
getDeptList
} from '../../api/system/dept'
import selectTree from '../../components/common/select-tree'
export default {
props: {
saveObj: {
type: Object,
default: null
}
},
components: {
selectTree
},
data() {
return {
persistent: true,
saveLoading: false,
value: '',
objOption: {
GoalMoney: "",
Dept_Id: 13,
TimeList: [],
},
updateMsg: {
Id: 0,
YearStr: '',
MonthStr: '',
GoalMoney: '',
Dept_Id: ''
},
optionTitle: "",
DeptList: [], // 部门下拉
isShow: 1,
value2: '',
allDeptList:[]
}
},
created() {
this.queryDeptList();
},
mounted() {
this.initObj();
},
methods: {
//筛选部门
filterDepart(val, update, abort) {
update(() => {
this.DeptList = this.allDeptList.filter(
v => v.DeptName.indexOf(val) > -1
);
});
},
queryDeptList() {
var qMsg = {};
getDeptList(qMsg).then(res => {
this.DeptList = res.Data;
this.allDeptList = res.Data;
});
},
//选择月份
dateChange(val) {
this.objOption.TimeList.push(val) // 这里记得格式化
},
tagClose(index) {
this.objOption.TimeList.splice(index, 1);
},
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.Id > 0) {
GetConsultantGoal({
Id: this.saveObj.Id
}).then(res => {
this.updateMsg.Id = res.Data.Id;
this.updateMsg.YearStr = res.Data.YearStr;
this.updateMsg.MonthStr = res.Data.MonthStr;
this.updateMsg.GoalMoney = res.Data.GoalMoney;
this.updateMsg.Dept_Id = res.Data.Dept_Id;
this.isShow = 2;
this.value2 = this.updateMsg.YearStr + '-' + this.updateMsg.MonthStr;
})
this.optionTitle = "修改目标"
} else {
this.optionTitle = "新增目标"
this.objOption.GoalMoney = '';
this.objOption.Dept_Id = '';
this.objOption.TimeList = [];
this.isShow = 1
}
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
},
//新增保存菜单
saveNeed() {
this.saveLoading = true
AddConsultantGoal(this.objOption).then(res => {
this.saveLoading = false;
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit("success")
this.closeSaveForm()
}
})
},
//修改保存
saveTarget() {
if (this.value2) {
let myDate = this.value2.split('-');
this.updateMsg.YearStr = myDate[0];
this.updateMsg.MonthStr = myDate[1];
} else {
this.updateMsg.YearStr = '';
this.updateMsg.MonthStr = '';
}
this.saveLoading = true;
UpdateConsultantGoal(this.updateMsg).then(res => {
this.saveLoading = false;
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit("success")
this.closeSaveForm()
}
})
}
}
}
</script>
\ No newline at end of file
......@@ -341,14 +341,14 @@
.list {
height: 40px;
margin-bottom: 15px;
padding: 0 1.8vw;
padding: 0 2vw;
background-color: #F2F4F7;
border-radius: 6px;
.name {
font-size: 14px;
color: #111111;
margin-right: 2.86vw;
margin-right: 3vw;
white-space: nowrap;
}
......@@ -357,6 +357,7 @@
font-size: 14px;
color: #A4A5B7;
border-radius: 6px;
margin-right:1vw;
.cur {
font-size: 18px;
......@@ -366,15 +367,17 @@
}
.progress-charts {
width: 7.81vw;
width: 8vw;
font-size: 12px;
color: #666666;
margin-right:1vw;
}
.grade {
width: 3.64vw;
width: 4vw;
font-size: 14px;
color: #999999;
margin-right:1vw;
}
.num {
......
......@@ -44,7 +44,7 @@
</div>
</div>
<div class="q-pr-md">
<VueApexCharts width="105" height="105" :options="chartOptions4" :series="series4"></VueApexCharts>
<VueApexCharts width="100%" height="105" :options="chartOptions4" :series="series4"></VueApexCharts>
</div>
</div>
<div class="block-name q-px-md">
......@@ -173,6 +173,10 @@
fixed: {
enabled: false
}
},
legend: {
position: 'right',
show: true,
}
},
commissionData: {
......@@ -396,7 +400,7 @@
}
.progress-box {
width: 31.25vw;
width: 39vw;
height: 20px;
margin: 10px auto;
border-radius: 2px;
......@@ -410,7 +414,7 @@
}
.commission-block2 {
width: 31.25vw;
width: 35vw;
height: 250px;
margin: 50px auto 25px;
border-radius: 8px;
......@@ -418,7 +422,7 @@
padding: 40px 30px;
.statistic-block {
width: 7.8vw;
width: 9vw;
height: 75px;
background-color: #FFFFFF;
border-radius: 6px;
......@@ -449,7 +453,7 @@
}
.commission-table {
width: 31.25vw;
width: 39vw;
height: 375px;
margin: 0 auto;
border-top: 1px solid #EAEBF0;
......
<template>
<div>
<div class="q-my-md text-dark" style="font-size:20px">
<div class="q-ma-md text-dark" style="font-size:20px">
客户关系
</div>
<div class="row q-gutter-md no-wrap work-con">
<div class="row q-gutter-md q-px-md no-wrap work-con">
<div >
<div class="item-shadow return-commission">
<div class="q-px-md q-pt-md row no-wrap items-center">
<div class="q-pa-md row no-wrap items-center">
<div class="col return-commission-title">
返佣
</div>
......@@ -332,13 +331,14 @@ import {
<style lang="scss" scoped>
.work-con {
height: calc(100vh - 230px);
height: calc(100vh - 250px);
overflow: scroll;
box-sizing: border-box;
}
.return-commission {
// width: 330px;
min-width:200px;
height: 440px;
border-radius: 8px;
background-color: #FA9D0A;
......@@ -370,6 +370,7 @@ import {
padding-top: 2vw;
.Statistics-block {
min-width:100px;
width: 50%;
height: 2.6vw;
padding-left: 1.3vw;
......@@ -400,6 +401,7 @@ import {
.adviser {
// width: 17.18vw;
min-width:200px;
height: 520px;
background-color: #FFFFFF;
border-radius: 8px;
......@@ -415,12 +417,15 @@ import {
}
.adviser-block {
width: 14.3vw;
height: 5.72vw;
width: 16vw;
min-width:160px;
height: 6vw;
min-height:80px;
background-color: #F8F5FF;
border-radius: 0.31vw;
margin: 0 auto 1vw;
padding: 0 1vw;
.left {
.num {
......
<template>
<div class="work-box row">
<div class="lft-box">
<div class="lft-box" style="display:none">
<div class="relative-position">
<q-input
standout
......@@ -121,17 +121,18 @@
</q-list>
</div>
<div class="col q-pt-md q-pr-md">
<div class="row">
<div class="text-h6 col">工作台</div>
<div class="row work_Top">
<div class="text-h6 col"></div>
<q-btn-group outline>
<q-btn
dense
v-if="(IsQueryAuth||CurrentUserInfo.IsMarket==1)||(IsQueryAuth||CurrentUserInfo.IsCourseConsultant==1)"
:outline="viewMode != 1"
@click="changeViewModel(1)"
class="q-px-md"
color="primary"
size="12px"
label="今日工作"
label="今日数据统计"
/>
<q-btn
dense
......@@ -144,7 +145,8 @@
/>
</q-btn-group>
</div>
<dasbord></dasbord>
<dasbord v-if="viewMode==2"></dasbord>
<todayData v-if="viewMode==1"></todayData>
</div>
</div>
</template>
......@@ -154,10 +156,14 @@ import { mapGetters } from "vuex";
import { queryOKRMyEmployeeList } from "../../api/okr/work";
import { queryEmployee } from "../../api/users/user";
import dasbord from "./dasbord.vue";
import todayData from "./todayData.vue"
import { Encrypt,Decrypt} from '../../utils/encrypt'
export default {
components: { dasbord },
components: {
dasbord,
todayData
},
data() {
return {
usersList: [],
......@@ -165,10 +171,22 @@ export default {
searchText: "",
menuList: [],
activeMenu: "myokr",
viewMode: 1
viewMode: 2,
IsQueryAuth: false, //是否有查询市场部和课程顾问部人员权限
CurrentUserInfo: {}, //当前登录用户信息
};
},
created() {
this.CurrentUserInfo = this.getLocalStorage();
if (this.CurrentUserInfo && this.CurrentUserInfo.ActionMenuList && this.CurrentUserInfo.ActionMenuList.length >
0) {
this.CurrentUserInfo.ActionMenuList.forEach((x) => {
if (x.FunctionCode == "Query_MarketConsultant") {
this.IsQueryAuth = true;
}
});
}
this.getUserList();
let str=Encrypt("2")
},
......@@ -206,6 +224,10 @@ export default {
</script>
<style>
.work_Top{
padding:20px;
background-color:#fff;
}
.work-box {
height: 100%;
width: 100%;
......
......@@ -289,7 +289,7 @@
}
.bottom {
width: 31.25vw;
width: 34vw;
height: 320px;
position: absolute;
top: 160px;
......@@ -298,7 +298,7 @@
padding: 0 1vw;
.sell-block {
width: 9vw;
width: 9.5vw;
height: 145px;
background-color: #F8F5FF;
border-radius: 6px;
......
This diff is collapsed.
......@@ -120,6 +120,7 @@
if (this.$route.query.a) {
let ContractId = Decrypt(decodeURIComponent(this.$route.query.a));
this.msg.ContractId = ContractId;
this.BackMsg.Id = ContractId;
}
if (this.$route.query.StudentName) {
this.StudentName = this.$route.query.StudentName
......@@ -127,9 +128,6 @@
if (this.$route.query.Money) {
this.Money = this.$route.query.Money;
}
if (this.$route.query.Id) {
this.BackMsg.Id = this.$route.query.Id;
}
if (this.$route.query.Type) {
this.Type = this.$route.query.Type;
}
......@@ -317,7 +315,7 @@
this.$router.push({
path: '/courseRefundH5',
query: {
Id: this.BackMsg.Id
a: encodeURIComponent(Encrypt(this.BackMsg.Id.toString()))
}
});
}
......
This diff is collapsed.
......@@ -228,6 +228,16 @@
<q-item-label>课程详情</q-item-label>
</q-item-section>
</q-item>
<!-- <q-item clickable v-close-popup @click="goMyroster(props.row,1)">
<q-item-section>
<q-item-label>学员名单</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="goMyroster(props.row,2)">
<q-item-section>
<q-item-label>学员订单</q-item-label>
</q-item-section>
</q-item> -->
</q-list>
</q-btn-dropdown>
</q-td>
......@@ -298,7 +308,20 @@
align: "left",
field: (row) => row.CateName,
},
// {
// name: "SellPrice",
// required: true,
// label: "学员数量",
// align: "left",
// field: (row) => row.SellPrice.toFixed(2),
// },
// {
// name: "SellPrice",
// required: true,
// label: "订单数量",
// align: "left",
// field: (row) => row.SellPrice.toFixed(2),
// },
{
name: "SellPrice",
required: true,
......@@ -661,6 +684,9 @@
});
});
},
goMyroster(row,type){//type 1 是学员名单 2 学员订单
}
},
};
......
This diff is collapsed.
......@@ -312,6 +312,7 @@
import {
GetBackClassProtocol
} from '../api/sale/contract'
import { Encrypt,Decrypt} from '../utils/encrypt'
export default {
data() {
......@@ -326,8 +327,9 @@
};
},
created() {
if (this.$route.query.Id) {
this.gmsg.Id = this.$route.query.Id;
if (this.$route.query.a) {
let ContractId = Decrypt(decodeURIComponent(this.$route.query.a));
this.gmsg.Id = ContractId
}
this.getList();
},
......@@ -362,7 +364,7 @@
this.$router.push({
path: '/contractSign',
query: {
Id: this.gmsg.Id,
a: encodeURIComponent(Encrypt(this.gmsg.Id.toString())),
Type: 2
}
});
......
......@@ -1422,7 +1422,6 @@
this.closeLayer()
},
getItemValue(obj, index) {
console.log(obj)
this.SpecialNode = obj.SpecialNode
this.addBtn = false;
this.updateItemIndex = index;
......
......@@ -813,10 +813,10 @@
</div>
<!-- <button class="normalBtn" v-if="GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0"
@click="AddFinancial(1)">{{$t('fnc.zancun')}}</button> -->
<q-btn color="primary" size="11px" :label="$t('fnc.zancun')" @click="AddFinancial(1)" style="marginRight:10px" v-if="!iscopy && (GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0)"/>
<q-btn color="primary" size="11px" :label="$t('fnc.zancun')" @click="AddFinancial(1)" style="marginRight:10px" v-if="iscopy==false && (GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0)"/>
<!-- <button class="normalBtn" @click="AddFinancial()">{{$t('fnc.tijiao')}}</button> -->
<q-btn color="primary" size="11px" v-if="!iscopy" :label="$t('fnc.tijiao')" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy" label="复制" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy==false" :label="$t('fnc.tijiao')" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy==true" label="复制" @click="AddFinancial()" style="marginRight:10px"/>
<!-- <button class="hollowFixedBtn" @click="AuditOrRefund()">{{$t('pub.returnBack')}}</button> -->
<q-btn text-color="primary" size="11px" :label="$t('pub.returnBack')" @click="AuditOrRefund()"/>
</div>
......@@ -1323,7 +1323,7 @@
this.msg.ReTCID = this.czmsg.ReTCID;
}
this.msg.GuestId=this.$route.query.GuestId;
if(this.iscopy){//如果是复制赋值为0
if(this.iscopy == true){//如果是复制赋值为0
this.msg.FrID = 0;
if(this.msg.vorcherInos.length>0){//如果是复制的话 收据ID 为0
this.msg.vorcherInos.forEach(x=>{
......@@ -1700,7 +1700,7 @@
.RB_Branch_Id;
}
let userInfo = this.getLocalStorage()
if(!this.$route.query.companyID&&userInfo.Group_Id==100000 && !this.iscopy){
if(!this.$route.query.companyID&&userInfo.Group_Id==100000 && this.iscopy == false){
this.msg.RB_Branch_Id = 4
}
if(this.orderObj ){//6.21号新加 校区的id
......
......@@ -650,10 +650,10 @@
<div class="btn-box">
<!-- <button class="normalBtn" v-if="GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0"
@click="AddFinancial(1)">{{$t('fnc.zancun')}}</button> -->
<q-btn color="primary" size="11px" :label="$t('fnc.zancun')" @click="AddFinancial(1)" style="marginRight:10px" v-if="!iscopy && (GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0)"/>
<q-btn color="primary" size="11px" :label="$t('fnc.zancun')" @click="AddFinancial(1)" style="marginRight:10px" v-if="iscopy==false && (GetDetail.Status==0||GetDetail.Status==3||msg.FrID==0)"/>
<!-- <button class="normalBtn" @click="AddFinancial()">{{$t('fnc.tijiao')}}</button> -->
<q-btn color="primary" size="11px" v-if="!iscopy" :label="$t('fnc.tijiao')" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy" label="复制" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy==false" :label="$t('fnc.tijiao')" @click="AddFinancial()" style="marginRight:10px"/>
<q-btn color="primary" size="11px" v-if="iscopy==true" label="复制" @click="AddFinancial()" style="marginRight:10px"/>
<!-- <button class="hollowFixedBtn" @click="AuditOrRefund()">返回</button> -->
<q-btn text-color="primary" size="11px" label="返回" @click="AuditOrRefund()"/>
</div>
......@@ -1350,7 +1350,7 @@
this.msg.PlatformAccountId = this.platformAccount;
this.loading = true;
this.msg.GuestId=this.$route.query.GuestId
if(this.iscopy){//如果是复制赋值为0
if(this.iscopy == true){//如果是复制赋值为0
this.msg.FrID = 0;
if(this.msg.vorcherInos.length>0){//如果是复制的话 收据ID 为0
this.msg.vorcherInos.forEach(x=>{
......@@ -1649,7 +1649,7 @@
this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 || this.msg.RB_Branch_Id == ParentCompanyId ? this
.getLocalStorage().School_Id : this.msg.RB_Branch_Id;
if(!this.$route.query.companyID&&userInfo.Group_Id==100000 && !this.iscopy){
if(!this.$route.query.companyID&&userInfo.Group_Id==100000 && this.iscopy == false){
this.msg.RB_Branch_Id = 4
}
......
......@@ -78,14 +78,7 @@
</div>
</div>
<div style="width: 100%;text-align: right;padding: 0 20px;margin-bottom: 10px;">
<span @click="morequery=!morequery" style="display:inline-flex;align-items:center;cursor: pointer;" >
<span style="margin-right:5px;color: #089bab;">高级查询</span>
<img v-show="!morequery" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
<img v-show="morequery" class="roatImg" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
</span>
</div>
<div class="page-search row items-center" v-if="morequery">
<div class="page-search row items-center" v-if="morequery">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select @input="resetSearch" dense filled v-model="msg.StuStage" :options="customState" option-label="Name"
......@@ -116,6 +109,20 @@
</div>
</div>
</div>
<div style="width: 100%;padding: 0 10px;margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between;">
<div style="font-weight: bold;">
总人数:{{Count}}人
</div>
<div>
<span @click="morequery=!morequery" style="display:inline-flex;align-items:center;cursor: pointer;" >
<span style="margin-right:5px;color: #089bab;">高级查询</span>
<img v-show="morequery" class="roatImg" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
<img v-show="!morequery" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
</span>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-column-table sticky-right-column-table "
......@@ -255,6 +262,7 @@ export default {
RoleListData: [], //课程顾问下拉数据
StuChannelList: [], //收客渠道
allStuChannelList: [], //所有收客渠道
Count:0,
columns: [{
name: "StuName",
label: "学生",
......@@ -448,6 +456,7 @@ export default {
this.loading = false;
this.dataList = res.Data.PageData;
this.PageCount = res.Data.PageCount;
this.Count = res.Data.Count
})
......
......@@ -76,13 +76,7 @@
</div>
</div>
<div style="width: 100%;text-align: right;padding: 0 20px;margin-bottom: 10px;">
<span @click="morequery=!morequery" style="display:inline-flex;align-items:center;cursor: pointer;" >
<span style="margin-right:5px;color: #089bab;">高级查询</span>
<img v-show="!morequery" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
<img v-show="morequery" class="roatImg" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
</span>
</div>
<div class="page-search row items-center" v-if="morequery">
<div class="col row wrap q-mr-lg q-col-gutter-md">
......@@ -170,20 +164,16 @@
(<q-radio size="xs" v-model="msg.Q_FType" val="1" label="范围内有跟进记录" @input ='resetSearch'/>
<q-radio size="xs" v-model="msg.Q_FType" val="2" label="范围内没有跟进记录" @input ='resetSearch' />
<!-- <q-option-group
v-model="msg.Q_FType"
inline
class="q-mb-md"
@input="resetSearch"
:options="[
{ label: '范围内有跟进记录', value: '1' },
{ label: '范围内没有跟进记录', value: '2' },
]"
/> -->
</div>
</div>
</div>
<div style="width: 100%;text-align: right;padding: 0 20px;margin-bottom: 10px;">
<span @click="morequery=!morequery" style="display:inline-flex;align-items:center;cursor: pointer;" >
<span style="margin-right:5px;color: #089bab;">高级查询</span>
<img v-show="!morequery" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
<img v-show="morequery" class="roatImg" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
</span>
</div>
<div class="col row wrap q-gutter-x-md" v-if="dataList.Stat">
<div class="col stics">
......@@ -282,7 +272,7 @@
<span>{{ item.CreateTypeName?item.CreateTypeName:'-' }}</span>
</td>
<td>
<span>{{ item.StuSourceIdName?item.StuSourceIdName:'-' }}</span>
<span><span v-if="item.CreateType==2 && item.EnterpriseName">{{item.EnterpriseName}}:</span> {{ item.StuSourceIdName?item.StuSourceIdName:'-' }}</span>
</td>
<td>
<span>{{ item.StuChannelName?item.StuChannelName:'-' }}</span>
......
......@@ -304,6 +304,15 @@
</div>
</q-td>
</template>
<template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props">
<div>
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{props.row.EnterpriseName}}:</span>
{{ props.row.StuSourceIdName }}
</div>
</q-td>
</template>
<template v-slot:body-cell-ClassName="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="seeClassDetail(props.row)">
......@@ -545,6 +554,12 @@
label: "收客渠道",
field: "StuChannelName",
align: "left",
},
{
name: "StuCreateByName",
label: "负责人",
align: "left",
field: "StuCreateByName"
},
{
name: "Mobile",
......@@ -685,12 +700,7 @@
field: "JoinTypeStr",
align: "left",
},
{
name: "StuCreateByName",
label: "负责人",
align: "left",
field: "StuCreateByName"
},
{
name: "optioned",
label: "操作",
......
......@@ -82,7 +82,6 @@ export default {
this.outerVisible = false;
},
getsuccess2(list, type) {
console.log(list);
this.chosenUser = list;
this.outerVisible = false;
},
......
......@@ -13,6 +13,7 @@
<q-tab :ripple="false" :name="4" label="收客渠道" />
<q-tab :ripple="false" :name="5" label="客户需求"></q-tab>
<q-tab :ripple="false" :name="6" label="客户分配规则"></q-tab>
<q-tab :ripple="false" :name="7" label="目标管理"></q-tab>
</q-tabs>
<stage v-if="tabCheck == 1"></stage>
<cusType v-if="tabCheck == 2"></cusType>
......@@ -20,6 +21,7 @@
<channel v-if="tabCheck == 4"></channel>
<customneed v-if="tabCheck == 5"></customneed>
<stu-distribution-rule v-if="tabCheck == 6"></stu-distribution-rule>
<stuTarget v-if="tabCheck==7"></stuTarget>
</div>
</template>
<script>
......@@ -29,6 +31,7 @@ import aim from "./studyAim";
import channel from "./stuReceiveChannel";
import customneed from "./customneed";
import stuDistributionRule from "./stuDistributionRule";
import stuTarget from "./stuTarget";
export default {
components: {
stage,
......@@ -36,7 +39,8 @@ export default {
aim,
channel,
customneed,
stuDistributionRule
stuDistributionRule,
stuTarget
},
data() {
return {
......
<template>
<div class="page-body">
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top>
<div class="col-2 q-table__title">目标管理</div>
<q-space />
<div class="page-option">
<el-date-picker v-model="dateTime" size="small" style="margin-right:10px;" type="month"
value-format="yyyy-MM" @change="dateChange" placeholder="选择月">
</el-date-picker>
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增目标" @click="addObj(null)" />
</div>
</template>
<template v-slot:body-cell-Id="props">
<q-td :props="props">
<div>
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="addObj(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" class="q-mr-xs" label="删除"
@click="deletTarget(props.row.Id)" />
</div>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
</template>
</q-table>
</div>
<target-form v-if="isShowTargetForm" :save-obj="customObj" @close="closestageForm" @success="refreshPage">
</target-form>
</div>
</template>
<script>
import {
GetConsultantGoalPage,
RemoveConsultantGoal
} from '../../api/system/index'
import targetForm from '../../components/system/target-form'
export default {
meta: {
title: "目标管理"
},
components: {
targetForm
},
data() {
return {
columns: [{
name: 'DeptName',
label: '部门',
field: 'DeptName',
align: 'left'
},
{
name: 'YearStr',
label: '年份',
field: 'YearStr',
align: 'left'
},
{
name: 'MonthStr',
label: '月份',
field: 'MonthStr',
align: 'left'
},
{
name: 'GoalMoney',
label: '金额',
field: 'GoalMoney',
align: 'left'
}, {
name: 'CreateByName',
label: '创建人',
align: 'left',
field: 'CreateByName'
},
{
name: 'CreateTimeStr',
label: '创建时间',
align: 'left',
field: 'CreateTimeStr'
},
{
name: 'Id',
label: '操作',
field: 'Id'
}
],
msg: {
pageIndex: 1,
pageSize: 12,
YearStr: '',
MonthStr: '',
rowsPerPage: 12
},
dataList: [],
pageCount: 0,
loading: true,
isShowTargetForm: false,
customObj: {},
dateTime: ''
}
},
mounted() {
this.getList()
},
methods: {
//选择日期
dateChange(val) {
if (val) {
let myDate = val.split('-');
this.msg.YearStr = myDate[0];
this.msg.MonthStr = myDate[1];
} else {
this.msg.YearStr = '';
this.msg.MonthStr = '';
}
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
deletTarget(Id) {
let delMsg = {
Id: Id
};
this.$q.dialog({
title: '提示信息',
message: '是否确定该目标?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
RemoveConsultantGoal(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.getList();
}
})
}).onCancel(() => {
});
},
getList() {
this.loading = true;
GetConsultantGoalPage(this.msg).then(res => {
this.loading = false;
if (res.Code == 1) {
this.dataList = res.Data.PageData;
this.pageCount = res.Data.PageCount;
}
})
},
closestageForm() {
this.isShowTargetForm = false
},
refreshPage() {
this.getList();
},
addObj(obj) {
if (obj) {
this.customObj = obj
} else {
this.customObj = null
}
this.isShowTargetForm = true;
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
......@@ -397,7 +397,6 @@
},
saveCourse2(){
console.log(this.gaochouMsg)
setRemunerationState(this.gaochouMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
......
......@@ -97,7 +97,7 @@
},
data() {
return {
ActionStr: "/UserCenter/MarketStatic",
ActionStr: "/UserCenter/CreateMarketData",
parameterList: [{
Name: "",
Value: ""
......@@ -157,7 +157,7 @@
data = JSON.parse(tempStr);
}
data = {
};
var tempMsg = {
Msg: data
......
......@@ -1145,6 +1145,18 @@ const routes = [{
component: () =>
import("pages/course/achievements.vue")
},
{
path: "/course/workutaTeaching", //教学中心 排课
component: () =>
import("pages/course/workutaTeaching.vue")
},
{
path: "/course/classHours", //教学中心 上课时段列表
component: () =>
import("pages/course/classHours.vue")
},
{
path: "/user/backbill", //退课单据
component: () =>
......
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