Commit 585ca345 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/luochao/confucius into master

parents 337e48f7 bcedbbc5
......@@ -485,5 +485,35 @@ export function queryGuestStateList(data) {
});
}
//获取月份统计数据
export function GetStudentStatic(data) {
return request({
url: '/StudentStat/GetStudentStatic',
method: 'post',
data
});
}
//获取每月统计数据
export function GetStudentStaticMonth(data) {
return request({
url: '/StudentStat/GetStudentStaticMonth',
method: 'post',
data
});
}
//获取每月成长率数据
export function GetStudentStaticRateMonth(data) {
return request({
url: '/StudentStat/GetStudentStaticRateMonth',
method: 'post',
data
});
}
......@@ -115,14 +115,15 @@
.sticky-header-column-table
td:first-child
/* bg color is important for td; just specify one */
background-color: #c1f4cd !important
/* background-color: #c1f4cd !important */
tr th
position: sticky
/* higher than z-index for td below */
z-index: 2
z-index: 3
/* bg color is important; just specify one */
background: #fff
/* background: #fff */
background-color:#f5f6f7
/* this will be the loading indicator */
thead tr:last-child th
......
<style>
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
</style>
<template>
<div class="page-body">
<div class="col row wrap q-mb-lg">
<div class="col-3 Sysuser_Date q-mr-lg">
<q-field filled dense>
<template v-slot:control>
<el-date-picker v-model="msg.YearStr" @change="getList" style="width:100%" value-format="yyyy" size="small" type="year" placeholder="选择年">
</el-date-picker>
</template>
</q-field>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" ref="table" :loading="loading" :style="{'height':tableHeight+'px'}" no-data-label="暂无相关数据" flat
class="sticky-column-table sticky-header-column-table no-bottom-table" separator="none" :data="dataList" :columns="columns" row-key="">
<template v-slot:bottom>
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
GetStudentStaticMonth
} from '../../api/sale/sale';
export default {
props: {},
meta: {
title: ""
},
components: {},
data() {
return {
columns: [{
name: 'DateStr',
label: '日期',
field: 'DateStr',
align: 'left'
},
{
name: 'PushCount',
label: '推送人数',
field: 'PushCount',
align: 'left'
},
{
name: 'NewCount',
label: '新客户',
field: 'NewCount',
align: 'left',
},
{
name: 'CommunicationCount',
label: '初步沟通(二次沟通)',
field: 'CommunicationCount',
align: 'left',
},
{
name: 'TrialLessonCount',
label: '预约试听(已到店,已试听)',
field: 'TrialLessonCount',
align: 'left'
},
{
name: 'NotContacted',
label: '待联系',
field: 'NotContacted',
align: 'left'
},
{
name: 'JPCount',
label: '日本语培',
field: 'JPCount',
align: 'left'
},
{
name: 'KRCount',
label: '韩国语培',
field: 'KRCount',
align: 'left'
},
{
name: 'FRCount',
label: '法国语培',
field: 'FRCount',
align: 'left'
},
{
name: 'JPStudyCount',
label: '日本留学',
field: 'JPStudyCount',
align: 'left'
},
{
name: 'KRStudyCount',
label: '韩国留学',
field: 'KRStudyCount',
align: 'left'
},
{
name: 'YGAStudyCount',
label: '英港澳留学',
field: 'YGAStudyCount',
align: 'left'
},
{
name: 'USStudyCount',
label: '美国留学',
field: 'USStudyCount',
align: 'left'
},
{
name: 'SGStudyCount',
label: '新加坡留学',
field: 'SGStudyCount',
align: 'left'
},
{
name: 'AXStudyCount',
label: '澳新留学',
field: 'AXStudyCount',
align: 'left'
},
{
name: 'OtherCount',
label: '其他',
field: 'OtherCount',
align: 'left'
},
{
name: 'ClassACount',
label: 'A类客户',
field: 'ClassACount',
align: 'left'
},
{
name: 'ClassBCount',
label: 'B类客户',
field: 'ClassBCount',
align: 'left'
},
{
name: 'ClassCCount',
label: 'C类客户',
field: 'ClassCCount',
align: 'left'
},
{
name: 'ClassDCount',
label: 'D类客户',
field: 'ClassDCount',
align: 'left'
},
{
name: 'CustomerCount',
label: '同行介绍',
field: 'CustomerCount',
align: 'left'
},
{
name: 'B2CCount',
label: '直客',
field: 'B2CCount',
align: 'left'
},
{
name: 'TransCount',
label: '学员转介绍',
field: 'TransCount',
align: 'left'
},
{
name: 'InnerCount',
label: '内部介绍',
field: 'InnerCount',
align: 'left'
},
{
name: 'InvalidCount',
label: '无效',
field: 'InvalidCount',
align: 'left'
},
{
name: 'SuspectedCount',
label: '疑似',
field: 'SuspectedCount',
align: 'left'
},
{
name: 'IntentionCount',
label: '意向',
field: 'IntentionCount',
align: 'left'
},
{
name: 'InvitationCount',
label: '近期可邀约',
field: 'InvitationCount',
align: 'left'
},
{
name: 'NegotiationCount',
label: '谈判',
field: 'NegotiationCount',
align: 'left'
},
{
name: 'ContractCount',
label: '签约(成交.续费)',
field: 'ContractCount',
align: 'left'
},
{
name: 'OrderMoney',
label: '语培签约金额',
field: 'OrderMoney',
align: 'left'
},
{
name: 'StudyOrderMoney',
label: '留学签约金额',
field: 'StudyOrderMoney',
align: 'left'
}
],
dataList: [],
loading: false,
myDate:'',
tableHeight:500,
msg: {
YearStr: '',
rowsPerPage: 1000
},
}
},
created() {
setTimeout(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 90;
}, 100)
},
mounted() {
let d = new Date();
this.msg.YearStr = d.getFullYear().toString();
this.getList();
},
methods: {
//获取数据
getList() {
GetStudentStaticMonth(this.msg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data;
}
})
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<style>
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
</style>
<template>
<div class="page-body">
<div class="col row wrap q-mb-lg">
<div class="col-3 Sysuser_Date q-mr-lg">
<q-field filled dense>
<template v-slot:control>
<el-date-picker v-model="msg.YearStr" @change="getList" style="width:100%" value-format="yyyy" size="small"
type="year" placeholder="选择年">
</el-date-picker>
</template>
</q-field>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" ref="table" :loading="loading" :style="{'height':tableHeight+'px'}"
no-data-label="暂无相关数据" flat class="sticky-column-table sticky-header-column-table no-bottom-table"
separator="none" :data="dataList" :columns="columns" row-key="">
<template v-slot:bottom>
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
GetStudentStaticRateMonth
} from '../../api/sale/sale';
export default {
props: {},
meta: {
title: ""
},
components: {},
data() {
return {
tabCheck: 1,
dataList: [],
msg: {
YearStr: ''
},
columns: [{
name: 'ItemName',
label: '名称',
field: 'ItemName',
align: 'left'
},
{
name: 'JanuaryRate',
label: '1月',
field: 'JanuaryRate',
align: 'left'
},
{
name: 'FebruaryRate',
label: '2月',
field: 'FebruaryRate',
align: 'left',
},
{
name: 'MarchRate',
label: '3月',
field: 'MarchRate',
align: 'left',
},
{
name: 'AprilRate',
label: '4月',
field: 'AprilRate',
align: 'left'
},
{
name: 'MayRate',
label: '5月',
field: 'MayRate',
align: 'left'
},
{
name: 'JuneRate',
label: '6月',
field: 'JuneRate',
align: 'left'
},
{
name: 'JulyRate',
label: '7月',
field: 'JulyRate',
align: 'left'
},
{
name: 'AugustRate',
label: '8月',
field: 'AugustRate',
align: 'left'
},
{
name: 'SeptemberRate',
label: '9月',
field: 'SeptemberRate',
align: 'left'
},
{
name: 'OctoberRate',
label: '10月',
field: 'OctoberRate',
align: 'left'
},
{
name: 'NovemberRate',
label: '11月',
field: 'NovemberRate',
align: 'left'
},
{
name: 'DecemberRate',
label: '12月',
field: 'DecemberRate',
align: 'left'
},
{
name: 'AvgRate',
label: '平均',
field: 'AvgRate',
align: 'left'
}
],
}
},
created() {
},
mounted() {
let d = new Date();
this.msg.YearStr = d.getFullYear().toString();
this.getList();
},
methods: {
getList() {
GetStudentStaticRateMonth(this.msg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data;
}
})
}
}
}
</script>
<template>
<div class="page-body">
<q-tabs v-model="tabCheck" narrow-indicator dense align="left" class="text-primary q-mb-sm">
<q-tab :ripple="false" :name="1" label="月份统计" />
<q-tab :ripple="false" :name="2" label="成长率" />
</q-tabs>
<template v-if="tabCheck==1">
<everyMonthFirst></everyMonthFirst>
</template>
<template v-if="tabCheck==2">
<everyMonthSecond></everyMonthSecond>
</template>
</div>
</template>
<script>
import everyMonthFirst from '../sale/everyMonthFirst';
import everyMonthSecond from '../sale/everyMonthSecond';
export default {
props: {},
meta: {
title: ""
},
components: {
everyMonthFirst,
everyMonthSecond
},
data() {
return {
tabCheck: 1,
}
},
created() {
},
mounted() {},
methods: {
}
}
</script>
<style>
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
</style>
<template>
<div class="page-body">
<div class="col row wrap q-mb-lg">
<div class="col-3 Sysuser_Date q-mr-lg">
<q-field filled dense>
<template v-slot:control>
<el-date-picker v-model="myDate" style="width:100%" value-format="yyyy-MM" @change="getCheckDate()" size="small" type="month" placeholder="选择年月">
</el-date-picker>
</template>
</q-field>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" ref="table" :loading="loading" :style="{'height':tableHeight+'px'}" no-data-label="暂无相关数据" flat
class="sticky-column-table sticky-header-column-table no-bottom-table" separator="none" :data="dataList" :columns="columns" row-key="">
<template v-slot:bottom>
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
GetStudentStatic
} from '../../api/sale/sale';
export default {
props: {},
meta: {
title: ""
},
components: {},
data() {
return {
columns: [{
name: 'DateStr',
label: '日期',
field: 'DateStr',
align: 'left'
},
{
name: 'PushCount',
label: '推送人数',
field: 'PushCount',
align: 'left'
},
{
name: 'NewCount',
label: '新客户',
field: 'NewCount',
align: 'left',
},
{
name: 'CommunicationCount',
label: '初步沟通(二次沟通)',
field: 'CommunicationCount',
align: 'left',
},
{
name: 'TrialLessonCount',
label: '预约试听(已到店,已试听)',
field: 'TrialLessonCount',
align: 'left'
},
{
name: 'NotContacted',
label: '待联系',
field: 'NotContacted',
align: 'left'
},
{
name: 'JPCount',
label: '日本语培',
field: 'JPCount',
align: 'left'
},
{
name: 'KRCount',
label: '韩国语培',
field: 'KRCount',
align: 'left'
},
{
name: 'FRCount',
label: '法国语培',
field: 'FRCount',
align: 'left'
},
{
name: 'JPStudyCount',
label: '日本留学',
field: 'JPStudyCount',
align: 'left'
},
{
name: 'KRStudyCount',
label: '韩国留学',
field: 'KRStudyCount',
align: 'left'
},
{
name: 'YGAStudyCount',
label: '英港澳留学',
field: 'YGAStudyCount',
align: 'left'
},
{
name: 'USStudyCount',
label: '美国留学',
field: 'USStudyCount',
align: 'left'
},
{
name: 'SGStudyCount',
label: '新加坡留学',
field: 'SGStudyCount',
align: 'left'
},
{
name: 'AXStudyCount',
label: '澳新留学',
field: 'AXStudyCount',
align: 'left'
},
{
name: 'OtherCount',
label: '其他',
field: 'OtherCount',
align: 'left'
},
{
name: 'ClassACount',
label: 'A类客户',
field: 'ClassACount',
align: 'left'
},
{
name: 'ClassBCount',
label: 'B类客户',
field: 'ClassBCount',
align: 'left'
},
{
name: 'ClassCCount',
label: 'C类客户',
field: 'ClassCCount',
align: 'left'
},
{
name: 'ClassDCount',
label: 'D类客户',
field: 'ClassDCount',
align: 'left'
},
{
name: 'CustomerCount',
label: '同行介绍',
field: 'CustomerCount',
align: 'left'
},
{
name: 'B2CCount',
label: '直客',
field: 'B2CCount',
align: 'left'
},
{
name: 'TransCount',
label: '学员转介绍',
field: 'TransCount',
align: 'left'
},
{
name: 'InnerCount',
label: '内部介绍',
field: 'InnerCount',
align: 'left'
},
{
name: 'InvalidCount',
label: '无效',
field: 'InvalidCount',
align: 'left'
},
{
name: 'SuspectedCount',
label: '疑似',
field: 'SuspectedCount',
align: 'left'
},
{
name: 'IntentionCount',
label: '意向',
field: 'IntentionCount',
align: 'left'
},
{
name: 'InvitationCount',
label: '近期可邀约',
field: 'InvitationCount',
align: 'left'
},
{
name: 'NegotiationCount',
label: '谈判',
field: 'NegotiationCount',
align: 'left'
},
{
name: 'ContractCount',
label: '签约(成交.续费)',
field: 'ContractCount',
align: 'left'
},
{
name: 'OrderMoney',
label: '语培签约金额',
field: 'OrderMoney',
align: 'left'
},
{
name: 'StudyOrderMoney',
label: '留学签约金额',
field: 'StudyOrderMoney',
align: 'left'
}
],
dataList: [],
loading: false,
myDate:'',
tableHeight:500,
msg: {
YearStr: '',
MonthStr: '',
rowsPerPage: 1000,
},
}
},
created() {
setTimeout(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 90;
}, 100)
},
mounted() {
let d = new Date();
this.msg.YearStr = d.getFullYear().toString();
this.msg.MonthStr = (d.getMonth()+1).toString();
this.myDate = this.msg.YearStr+'-'+this.msg.MonthStr
this.getList();
},
methods: {
getCheckDate(){
if(this.myDate){
this.msg.YearStr = this.myDate.split('-')[0];
this.msg.MonthStr = this.myDate.split('-')[1];
this.getList();
}
},
//获取数据
getList() {
GetStudentStatic(this.msg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data;
}
})
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
......@@ -1065,6 +1065,16 @@ const routes = [{
component: () =>
import("pages/sale/guestConsultation.vue")
},
{
path: "/sale/monthTotal", //月份统计
component: ()=>
import("pages/sale/monthTotal.vue")
},
{
path: "/sale/everyMonthTotal", //每月统计
component: ()=>
import("pages/sale/everyMonthTotal.vue")
},
{
path: "/activity/activeType", //活动 活动类型
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