0701
This commit is contained in:
parent
a2992cef82
commit
03b0791863
@ -73,6 +73,7 @@
|
||||
<el-table-column label="业务经理名称" align="center" prop="businessName" />
|
||||
<el-table-column label="业务经理电话" align="center" prop="businessPhone" />
|
||||
<el-table-column label="报名时间" align="center" prop="createTime" :formatter="formatCreateTime" />
|
||||
<el-table-column label="补贴金额" align="center" prop="subsidy" />
|
||||
<!-- <el-table-column label="操作" width="150" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openForm(scope.row.id)">修改</el-button>
|
||||
|
@ -108,6 +108,15 @@ export function getSchemeListByCourseId(courseId) {
|
||||
});
|
||||
}
|
||||
|
||||
// 获取统计数据
|
||||
export function getOrderStatistics(params) {
|
||||
return request({
|
||||
url: '/drive/school-course-order/getOrderStatistics',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 导出Excel
|
||||
export function exportSchoolOrderExcel(params) {
|
||||
return request({
|
||||
|
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="学员及订单数据导出"
|
||||
title="招收学员数据导出"
|
||||
:visible.sync="visible"
|
||||
width="90%"
|
||||
width="95%"
|
||||
append-to-body
|
||||
class="export-dialog"
|
||||
@close="handleClose"
|
||||
@ -15,6 +15,7 @@
|
||||
:inline="true"
|
||||
label-width="80px"
|
||||
class="filter-form"
|
||||
style="margin-bottom: 3px"
|
||||
>
|
||||
<el-form-item label="教练选择" prop="coachId">
|
||||
<el-select v-model="queryParams.coachId" placeholder="请选择教练" @change="handleCoachChange()">
|
||||
@ -65,6 +66,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="渠道" prop="source">
|
||||
<el-select v-model="queryParams.source" placeholder="请选择渠道" >
|
||||
<el-option v-for="dict in sourceList"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围" label-width="120px">
|
||||
<el-select v-model="selectedTimeType" placeholder="选择时间类型" style="width: 150px; margin-right: 10px;">
|
||||
<el-option label="学员报名时间" value="signUp"></el-option>
|
||||
@ -120,6 +128,26 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-form
|
||||
size="small"
|
||||
:inline="true"
|
||||
label-width="100px"
|
||||
style="height: 30px"
|
||||
>
|
||||
<el-form-item label="招生总人数" >
|
||||
<span style="font-weight: bold; font-size: 16px">{{ stats.studentCount }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="招生总金额" label-width="150px">
|
||||
<span style="font-weight: bold; font-size: 16px">{{ stats.totalAmount }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="科二预提金额" label-width="150px">
|
||||
<span style="font-weight: bold; font-size: 16px">{{ stats.subject2DeductTotal }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="科三预提金额" label-width="150px">
|
||||
<span style="font-weight: bold; font-size: 16px">{{ stats.subject3DeductTotal }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@ -139,6 +167,7 @@
|
||||
<!-- <el-table-column label="缴费时间" prop="payFeesTime" align="center" :formatter="formatDate" />-->
|
||||
<el-table-column label="课程名称" prop="courseName" align="center" />
|
||||
<el-table-column label="课程类型" prop="courseType" align="center" width="100px" />
|
||||
<el-table-column label="渠道" prop="sourceStr" align="center" width="100px" />
|
||||
<el-table-column label="订单备注" prop="orderRemark" align="center" />
|
||||
<el-table-column label="是否已面签" prop="isSignDisplay" align="center" width="100px" />
|
||||
<el-table-column label="面签时间" prop="signTime" align="center" />
|
||||
@ -147,6 +176,7 @@
|
||||
<el-table-column label="科目三教练" prop="subject3CoachName" align="center" />
|
||||
<el-table-column label="科目三提成(预提)" prop="subject3Deduct" align="center" />
|
||||
<el-table-column label="出纳是否确认收款" prop="cashierConfirmDisplay" align="center" />
|
||||
<el-table-column label="收款账号" prop="paymentAccount" align="center" />
|
||||
<el-table-column label="出纳确认时间" prop="cashierConfirmTimeStr" align="center"/>
|
||||
<!-- <el-table-column label="出纳确认时间" prop="cashierConfirmTime" align="center" :formatter="formatDate" />-->
|
||||
<el-table-column label="出纳备注" prop="cashierConfirmRemark" align="center" show-overflow-tooltip/>
|
||||
@ -210,6 +240,8 @@ import * as SchoolOrderApi from "../api/index";
|
||||
import { listDriveSchoolCourse } from "@/views/drivingSchool/schoolCourse/api/driveSchoolCourse";
|
||||
import {listCoach} from "@/views/drivingSchool/drivingSchoolCar/api/car";
|
||||
import { exportSchoolOrderExcel, getSchoolOrderPage } from '../api/index'
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
import * as SchoolCommissionApi from '@/views/drivingSchool/driveSchoolExamPass/api/pass'
|
||||
// import { getSchoolCommissionPageNew } from '../api/pass'
|
||||
export default {
|
||||
name: "ExportDialog",
|
||||
@ -274,6 +306,14 @@ export default {
|
||||
}
|
||||
],
|
||||
selectedTimeType: 'cashierConfirm',
|
||||
sourceList: [],
|
||||
|
||||
stats: {
|
||||
studentCount: 0,
|
||||
totalAmount: 0,
|
||||
subject2DeductTotal: 0,
|
||||
subject3DeductTotal: 0,
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -292,6 +332,7 @@ export default {
|
||||
// 获取教练信息
|
||||
const coachRes = await listCoach()
|
||||
this.coachList = coachRes.data
|
||||
this.sourceList = getDictDatas('drive_school_channel')
|
||||
},
|
||||
// 关闭弹窗时重置状态
|
||||
handleClose() {
|
||||
@ -316,10 +357,32 @@ export default {
|
||||
});
|
||||
this.tableData = res.data.records;
|
||||
this.total = res.data.total;
|
||||
this.getStatistics(this.queryParams);
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async getStatistics(queryParams) {
|
||||
console.log('queryParams', queryParams)
|
||||
try {
|
||||
// 构造查询参数,与列表查询一致
|
||||
|
||||
// 调用统计API
|
||||
const statsRes = await SchoolOrderApi.getOrderStatistics(queryParams);
|
||||
console.log(statsRes)
|
||||
|
||||
// 更新统计数据,处理可能的null值
|
||||
this.stats = {
|
||||
studentCount: statsRes.data.studentCount || 0,
|
||||
totalAmount: statsRes.data.totalAmount || 0,
|
||||
subject2DeductTotal: statsRes.data.subject2DeductTotal || 0,
|
||||
subject3DeductTotal: statsRes.data.subject3DeductTotal || 0
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('获取统计数据失败:', error);
|
||||
this.$message.error('获取统计数据失败');
|
||||
}
|
||||
},
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
this.queryParams.pageNo = 1;
|
||||
|
@ -29,7 +29,9 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="负责教练" prop="coachUserName">
|
||||
<el-input v-model="formData.coachUserName" placeholder="请输入主负责教练姓名" disabled/>
|
||||
<el-select v-model="formData.coachUserName" placeholder="请选择教练" @change="handleCoachChange">
|
||||
<el-option v-for="dict in coachList" :key="dict.userId" :label="dict.name" :value="dict" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
@ -212,6 +214,8 @@
|
||||
import * as SchoolCourseOrderApi from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import { getSchemeListByCourseId } from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import SchemeForm from '@/views/drivingSchool/schoolCourse/form/schemeForm.vue'
|
||||
import { listCoach } from '@/views/drivingSchool/drivingSchoolCar/api/car'
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
|
||||
export default {
|
||||
name: 'SchoolCourseOrderForm',
|
||||
@ -303,6 +307,7 @@ export default {
|
||||
// 表单校验
|
||||
formRules: {},
|
||||
schemeList: [],
|
||||
coachList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@ -318,6 +323,14 @@ export default {
|
||||
this.formData = res.data
|
||||
this.title = '修改驾照报名订单'
|
||||
await this.loadSchemeList(this.formData.courseId);
|
||||
const coachRes = await listCoach()
|
||||
this.coachList = coachRes.data
|
||||
if (this.formData.coachUserId) {
|
||||
const selectedCoach = this.coachList.find(c => c.userId === this.formData.coachUserId);
|
||||
if (selectedCoach) {
|
||||
this.formData.coachUserName = selectedCoach.name;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
@ -389,6 +402,23 @@ export default {
|
||||
this.schemeList = res.data
|
||||
})
|
||||
},
|
||||
/* handleCoachChange() {
|
||||
const selected = this.coachList.find(item => item.userId === this.formData.coachId);
|
||||
if (selected) {
|
||||
this.formData.coachName = selected.name;
|
||||
} else {
|
||||
this.formData.coachName = '';
|
||||
}
|
||||
}, */
|
||||
handleCoachChange(selectedCoach) {
|
||||
if (selectedCoach) {
|
||||
this.formData.coachUserId = selectedCoach.userId;
|
||||
this.formData.coachUserName = selectedCoach.name;
|
||||
} else {
|
||||
this.formData.coachUserId = undefined;
|
||||
this.formData.coachUserName = undefined;
|
||||
}
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
|
@ -194,12 +194,30 @@
|
||||
placeholder="请选择缴费日期" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="收款账号" prop="paymentAccount">
|
||||
<el-select v-model="formData.paymentAccount" placeholder="请选择收款账号">
|
||||
<el-option
|
||||
v-for="item in paymentAccountList"
|
||||
:key="item.value"
|
||||
:label="item.label +':'+ item.value"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审批意见" prop="cashierConfirmRemark">
|
||||
<el-input type="textarea" v-model="formData.cashierConfirmRemark" placeholder="请输入出纳审批意见" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
@ -218,6 +236,7 @@
|
||||
import * as SchoolCourseOrderApi from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import { getSchemeListByCourseId } from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import SchemeForm from '@/views/drivingSchool/schoolCourse/form/schemeForm.vue'
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
|
||||
export default {
|
||||
name: 'cashierConfirmForm',
|
||||
@ -260,6 +279,8 @@ export default {
|
||||
cashierConfirmRemark: undefined,
|
||||
cashierConfirm: undefined,
|
||||
cashierConfirmTime: undefined,
|
||||
paymentMethod: undefined, // 收款方式
|
||||
paymentAccount: undefined // 收款账户
|
||||
},
|
||||
ifEndRadio: [
|
||||
{
|
||||
@ -323,6 +344,7 @@ export default {
|
||||
formRules: {},
|
||||
schemeList: [],
|
||||
activeNames: ['2'],
|
||||
paymentAccountList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@ -334,6 +356,7 @@ export default {
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
this.formLoading = true
|
||||
this.paymentAccountList = getDictDatas('school_payment_account')
|
||||
try {
|
||||
const res = await SchoolCourseOrderApi.getSchoolCourseOrder(id)
|
||||
this.formData = res.data
|
||||
|
@ -40,11 +40,11 @@
|
||||
<dict-tag :type="DICT_TYPE.DICT_SYS_USER_SEX" :value="scope.row.userSex"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="课程" align="center" prop="courseName" />
|
||||
<el-table-column label="班型" align="center" prop="courseName" />
|
||||
<el-table-column label="负责教练" align="center" prop="coachUserName" />
|
||||
|
||||
<el-table-column label="课程类型" align="center" prop="courseType" />
|
||||
|
||||
<el-table-column label="驾照类型" align="center" prop="courseType" />
|
||||
<el-table-column label="报名方式" align="center" prop="signType" :formatter="formatSignType"/>
|
||||
<!-- <el-table-column label="终止时间" align="center" prop="endTime" width="180">-->
|
||||
<!-- <template v-slot="scope">-->
|
||||
<!-- <span>{{ parseTime(scope.row.endTime) }}</span>-->
|
||||
@ -69,7 +69,7 @@
|
||||
<dict-tag :type="DICT_TYPE.DRIVE_SCHOOL_PAY_TYPE" :value="scope.row.payType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报名方式" align="center" prop="signType" :formatter="formatSignType"/>
|
||||
|
||||
<el-table-column label="学员是否确认" align="center" prop="ifAgree" :formatter="formatIfAgree"/>
|
||||
<el-table-column label="是否终止" align="center" prop="ifEnd">
|
||||
<template slot-scope="scope">
|
||||
@ -660,7 +660,7 @@ export default {
|
||||
'2': '教练代报名',
|
||||
'3': '员工代报名'
|
||||
};
|
||||
return map[value] ?? '-';
|
||||
return map[value] ?? '非代报名';
|
||||
},
|
||||
formatIfAgree(row, column, value) {
|
||||
const map = {
|
||||
|
@ -94,6 +94,15 @@ export function getSchoolCommissionPageNew(params) {
|
||||
});
|
||||
}
|
||||
|
||||
// 获取统计数据
|
||||
export function getCommissionStatistics(params) {
|
||||
return request({
|
||||
url: '/drive/school-commission/getCommissionStatistics',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 导出Excel
|
||||
export function exportSchoolCommissionExcel(params) {
|
||||
return request({
|
||||
|
@ -15,6 +15,7 @@
|
||||
:inline="true"
|
||||
label-width="80px"
|
||||
class="filter-form"
|
||||
style="margin-bottom: 3px"
|
||||
>
|
||||
<el-form-item label="教练选择" prop="coachId">
|
||||
<el-select v-model="queryParams.coachId" placeholder="请选择教练" @change="handleCoachChange()">
|
||||
@ -58,6 +59,13 @@
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="渠道" prop="source">
|
||||
<el-select v-model="queryParams.source" placeholder="请选择渠道" >
|
||||
<el-option v-for="dict in sourceList"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间" label-width="120px">
|
||||
<el-date-picker
|
||||
v-model="queryParams.timeRange"
|
||||
@ -87,6 +95,33 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-form
|
||||
size="small"
|
||||
:inline="true"
|
||||
label-width="100px"
|
||||
style="height: 30px"
|
||||
>
|
||||
<el-form-item label="科二合格数">
|
||||
<span>{{ stats.subject2PassCount }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="科二提成">
|
||||
<span>{{ stats.subject2Commission }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="科三合格数">
|
||||
<span>{{ stats.subject3PassCount }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="科三提成">
|
||||
<span>{{ stats.subject3Commission }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="总合格数">
|
||||
<span>{{ stats.totalPassCount }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="总提成金额">
|
||||
<span>{{ stats.totalCommission }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@ -101,8 +136,11 @@
|
||||
<el-table-column label="学员姓名" prop="studentName" align="center" width="100px" />
|
||||
<el-table-column label="学员身份证号" prop="studentIdCard" align="center" />
|
||||
<el-table-column label="课程名称" prop="courseName" align="center" />
|
||||
<el-table-column label="缴纳学费金额" prop="studentPay" align="center" />
|
||||
<el-table-column label="渠道" prop="sourceStr" align="center" />
|
||||
<el-table-column label="课程类型" prop="courseType" align="center" width="100px" />
|
||||
<el-table-column label="科目" prop="subject" align="center" width="100px" />
|
||||
<el-table-column label="考试通过时间" prop="examTimeStr" align="center" />
|
||||
<el-table-column label="提成金额" prop="commissionAmount" align="center" />
|
||||
<el-table-column label="审核人" prop="checkName" align="center" width="100px" />
|
||||
<el-table-column label="审核日期" prop="createTimeStr" align="center" />
|
||||
@ -166,6 +204,7 @@
|
||||
import * as SchoolCommissionApi from "../api/pass";
|
||||
import { listDriveSchoolCourse } from "@/views/drivingSchool/schoolCourse/api/driveSchoolCourse";
|
||||
import {listCoach} from "@/views/drivingSchool/drivingSchoolCar/api/car";
|
||||
import { getDictDatas } from '@/utils/dict'
|
||||
// import { getSchoolCommissionPageNew } from '../api/pass'
|
||||
export default {
|
||||
name: "ExportDialog",
|
||||
@ -191,14 +230,25 @@ export default {
|
||||
pageNo: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
|
||||
exportRange: {
|
||||
startPage: 1,
|
||||
endPage: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
|
||||
stats: {
|
||||
subject2PassCount: 0, // 科二合格数
|
||||
subject2Commission: 0, // 科二提成
|
||||
subject3PassCount: 0, // 科三合格数
|
||||
subject3Commission: 0, // 科三提成
|
||||
totalPassCount: 0, // 总合格数
|
||||
totalCommission: 0 // 总提成金额
|
||||
},
|
||||
|
||||
coachList: [],
|
||||
courseList: [],
|
||||
sourceList: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -217,6 +267,7 @@ export default {
|
||||
// 获取教练信息
|
||||
const coachRes = await listCoach()
|
||||
this.coachList = coachRes.data
|
||||
this.sourceList = getDictDatas('drive_school_channel')
|
||||
},
|
||||
// 关闭弹窗时重置状态
|
||||
handleClose() {
|
||||
@ -230,7 +281,7 @@ export default {
|
||||
this.resetQuery();
|
||||
},
|
||||
// 获取数据列表
|
||||
async getList() {
|
||||
/* async getList() {
|
||||
try {
|
||||
this.loading = true;
|
||||
const res = await SchoolCommissionApi.getSchoolCommissionPageNew({
|
||||
@ -241,9 +292,49 @@ export default {
|
||||
});
|
||||
this.tableData = res.data.records;
|
||||
this.total = res.data.total;
|
||||
await this.getStatistics(res)
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
}, */
|
||||
async getList() {
|
||||
try {
|
||||
this.loading = true;
|
||||
// 优先获取表格数据
|
||||
const listRes = await SchoolCommissionApi.getSchoolCommissionPageNew(this.queryParams);
|
||||
this.tableData = listRes.data.records;
|
||||
this.total = listRes.data.total;
|
||||
|
||||
// 不阻塞,同步发起统计请求
|
||||
this.getStatistics(this.queryParams);
|
||||
} catch (error) {
|
||||
console.error("列表加载失败:", error);
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async getStatistics(queryParams) {
|
||||
console.log('queryParams', queryParams)
|
||||
try {
|
||||
// 构造查询参数,与列表查询一致
|
||||
|
||||
// 调用统计API
|
||||
const statsRes = await SchoolCommissionApi.getCommissionStatistics(queryParams);
|
||||
console.log(statsRes)
|
||||
|
||||
// 更新统计数据,处理可能的null值
|
||||
this.stats = {
|
||||
subject2PassCount: statsRes.data.subject2PassCount || 0,
|
||||
subject2Commission: statsRes.data.subject2Commission || 0,
|
||||
subject3PassCount: statsRes.data.subject3PassCount || 0,
|
||||
subject3Commission: statsRes.data.subject3Commission || 0,
|
||||
totalPassCount: statsRes.data.totalPassCount || 0,
|
||||
totalCommission: statsRes.data.totalCommission || 0
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('获取统计数据失败:', error);
|
||||
this.$message.error('获取统计数据失败');
|
||||
}
|
||||
},
|
||||
// 搜索
|
||||
handleSearch() {
|
||||
|
@ -56,8 +56,10 @@
|
||||
<el-table-column label="学生身份证号" align="center" prop="studentIdCard" width="180px"/>
|
||||
<el-table-column label="课程名称" align="center" prop="courseName" />
|
||||
<el-table-column label="课程类型" align="center" prop="courseType" />
|
||||
<el-table-column label="学员缴费金额" align="center" prop="studentPay" />
|
||||
<el-table-column label="提成金额" align="center" prop="commissionAmount" />
|
||||
<el-table-column label="科目" align="center" prop="subject" />
|
||||
<el-table-column label="考试通过时间" align="center" prop="examTime" :formatter="formatDate"/>
|
||||
<el-table-column label="审核人姓名" align="center" prop="checkName" />
|
||||
<el-table-column label="审核意见" align="center" prop="checkRemark" show-overflow-tooltip/>
|
||||
<el-table-column label="审核日期" align="center" prop="createTime" :formatter="formatDate"/>
|
||||
|
Loading…
Reference in New Issue
Block a user