修复培训:对齐旧统计分析能力与V2接口契约
This commit is contained in:
1 parent
42f6822964
commit
bfccc46f73
38 files changed
+1080
-2820
No files matched your search
@@ -1,6 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询学生签到列表
|
||||
export function listCheckin(query) {
|
||||
return request({
|
||||
url: '/train/checkin/list',
|
||||
@@ -9,36 +8,9 @@ export function listCheckin(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询学生签到详细
|
||||
export function getCheckin(checkinId) {
|
||||
return request({
|
||||
url: '/train/checkin/' + checkinId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增学生签到
|
||||
export function addCheckin(data) {
|
||||
return request({
|
||||
url: '/train/checkin',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改学生签到
|
||||
export function updateCheckin(data) {
|
||||
return request({
|
||||
url: '/train/checkin',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除学生签到
|
||||
export function delCheckin(checkinId) {
|
||||
return request({
|
||||
url: '/train/checkin/' + checkinId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询学习时长统计列表
|
||||
export function listDuration(query) {
|
||||
return request({
|
||||
url: '/train/duration/list',
|
||||
@@ -9,36 +8,9 @@ export function listDuration(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询学习时长统计详细
|
||||
export function getDuration(durId) {
|
||||
return request({
|
||||
url: '/train/duration/' + durId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增学习时长统计
|
||||
export function addDuration(data) {
|
||||
return request({
|
||||
url: '/train/duration',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改学习时长统计
|
||||
export function updateDuration(data) {
|
||||
return request({
|
||||
url: '/train/duration',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除学习时长统计
|
||||
export function delDuration(durId) {
|
||||
return request({
|
||||
url: '/train/duration/' + durId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询学员画像列表
|
||||
export function listPortrait(query) {
|
||||
return request({
|
||||
url: '/train/portrait/list',
|
||||
@@ -9,36 +8,9 @@ export function listPortrait(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询学员画像详细
|
||||
export function getPortrait(portraitId) {
|
||||
return request({
|
||||
url: '/train/portrait/' + portraitId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增学员画像
|
||||
export function addPortrait(data) {
|
||||
return request({
|
||||
url: '/train/portrait',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改学员画像
|
||||
export function updatePortrait(data) {
|
||||
return request({
|
||||
url: '/train/portrait',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除学员画像
|
||||
export function delPortrait(portraitId) {
|
||||
return request({
|
||||
url: '/train/portrait/' + portraitId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询开班报到列表
|
||||
export function listReport(query) {
|
||||
return request({
|
||||
url: '/train/report/list',
|
||||
@@ -9,36 +8,9 @@ export function listReport(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询开班报到详细
|
||||
export function getReport(reportId) {
|
||||
return request({
|
||||
url: '/train/report/' + reportId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增开班报到
|
||||
export function addReport(data) {
|
||||
return request({
|
||||
url: '/train/report',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改开班报到
|
||||
export function updateReport(data) {
|
||||
return request({
|
||||
url: '/train/report',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除开班报到
|
||||
export function delReport(reportId) {
|
||||
return request({
|
||||
url: '/train/report/' + reportId,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -1,381 +1,107 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input
|
||||
v-model="queryParams.planId"
|
||||
placeholder="请输入开班计划ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true">
|
||||
<el-form-item label="培训计划" prop="planName">
|
||||
<el-input v-model="queryParams.planName" placeholder="请输入计划名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="课程ID" prop="cId">
|
||||
<el-input
|
||||
v-model="queryParams.cId"
|
||||
placeholder="请输入课程ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="学员" prop="studentName">
|
||||
<el-input v-model="queryParams.studentName" placeholder="请输入学员姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input
|
||||
v-model="queryParams.studentId"
|
||||
placeholder="请输入学员学号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="课程" prop="courseName">
|
||||
<el-input v-model="queryParams.courseName" placeholder="请输入课程名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到电子班牌设备ID train_electronic_board.board_id" prop="boardId">
|
||||
<el-input
|
||||
v-model="queryParams.boardId"
|
||||
placeholder="请输入签到电子班牌设备ID train_electronic_board.board_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="1 人脸签到 2 二维码签到 3 后台手动补签" prop="checkinWay">
|
||||
<el-input
|
||||
v-model="queryParams.checkinWay"
|
||||
placeholder="请输入1 人脸签到 2 二维码签到 3 后台手动补签"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="签到时间" prop="checkinTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.checkinTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="本节课程上课时间" prop="lessonStartTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.lessonStartTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择本节课程上课时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="本节课程下课时间" prop="lessonEndTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.lessonEndTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择本节课程下课时间">
|
||||
</el-date-picker>
|
||||
<el-form-item label="考勤状态" prop="attendanceStatus">
|
||||
<el-select v-model="queryParams.attendanceStatus" placeholder="全部" clearable>
|
||||
<el-option v-for="item in attendanceStatuses" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['train:checkin:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['train:checkin:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['train:checkin:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['train:attendance:export']"
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['train:checkin:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="checkinList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="签到记录ID" align="center" prop="checkinId" />
|
||||
<el-table-column label="开班计划ID" align="center" prop="planId" />
|
||||
<el-table-column label="课程ID" align="center" prop="cId" />
|
||||
<el-table-column label="学员学号" align="center" prop="studentId" />
|
||||
<el-table-column label="签到电子班牌设备ID train_electronic_board.board_id" align="center" prop="boardId" />
|
||||
<el-table-column label="1 人脸签到 2 二维码签到 3 后台手动补签" align="center" prop="checkinWay" />
|
||||
<el-table-column label="签到时间" align="center" prop="checkinTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.checkinTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
<el-alert title="考勤由课次签到、签退或留痕的人工修正流程生成,本页面仅供查询。" type="info" :closable="false" show-icon class="mb8" />
|
||||
<el-table v-loading="loading" :data="rows">
|
||||
<el-table-column label="培训计划" prop="planName" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column label="课程" prop="courseName" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column label="学员" prop="studentName" min-width="100" />
|
||||
<el-table-column label="班牌" min-width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">{{ scope.row.boardName || scope.row.boardSn || "-" }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="1 正常签到 2 迟到 3 早退 4 缺勤" align="center" prop="checkinStatus" />
|
||||
<el-table-column label="本节课程上课时间" align="center" prop="lessonStartTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.lessonStartTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
<el-table-column label="签到方式" align="center" width="100">
|
||||
<template slot-scope="scope">{{ labelOf(checkinWays, scope.row.checkinWay) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="本节课程下课时间" align="center" prop="lessonEndTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.lessonEndTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
<el-table-column label="考勤状态" align="center" width="100">
|
||||
<template slot-scope="scope">{{ labelOf(attendanceStatuses, scope.row.attendanceStatus) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['train:checkin:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['train:checkin:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
<el-table-column label="签到时间" prop="signInTime" width="170" />
|
||||
<el-table-column label="签退时间" prop="signOutTime" width="170" />
|
||||
<el-table-column label="人工修正" align="center" width="90">
|
||||
<template slot-scope="scope">{{ scope.row.manualFlag === 1 ? "是" : "否" }}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改学生签到对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input v-model="form.planId" placeholder="请输入开班计划ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="课程ID" prop="cId">
|
||||
<el-input v-model="form.cId" placeholder="请输入课程ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input v-model="form.studentId" placeholder="请输入学员学号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到电子班牌设备ID train_electronic_board.board_id" prop="boardId">
|
||||
<el-input v-model="form.boardId" placeholder="请输入签到电子班牌设备ID train_electronic_board.board_id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="1 人脸签到 2 二维码签到 3 后台手动补签" prop="checkinWay">
|
||||
<el-input v-model="form.checkinWay" placeholder="请输入1 人脸签到 2 二维码签到 3 后台手动补签" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到时间" prop="checkinTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.checkinTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="本节课程上课时间" prop="lessonStartTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.lessonStartTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择本节课程上课时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="本节课程下课时间" prop="lessonEndTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.lessonEndTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择本节课程下课时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listCheckin, getCheckin, delCheckin, addCheckin, updateCheckin } from "@/api/train/checkin"
|
||||
import { listCheckin } from '@/api/train/checkin'
|
||||
|
||||
export default {
|
||||
name: "Checkin",
|
||||
name: 'Checkin',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 学生签到表格数据
|
||||
checkinList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
planId: null,
|
||||
cId: null,
|
||||
studentId: null,
|
||||
boardId: null,
|
||||
checkinWay: null,
|
||||
checkinTime: null,
|
||||
checkinStatus: null,
|
||||
lessonStartTime: null,
|
||||
lessonEndTime: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
planId: [
|
||||
{ required: true, message: "开班计划ID不能为空", trigger: "blur" }
|
||||
],
|
||||
cId: [
|
||||
{ required: true, message: "课程ID不能为空", trigger: "blur" }
|
||||
],
|
||||
studentId: [
|
||||
{ required: true, message: "学员学号不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
rows: [],
|
||||
checkinWays: [
|
||||
{ value: 1, label: '人脸' }, { value: 2, label: '刷卡' },
|
||||
{ value: 3, label: '扫码' }, { value: 4, label: '教师代签' }
|
||||
],
|
||||
attendanceStatuses: [
|
||||
{ value: 0, label: '缺勤' }, { value: 1, label: '正常' },
|
||||
{ value: 2, label: '迟到' }, { value: 3, label: '早退' }, { value: 4, label: '请假' }
|
||||
],
|
||||
queryParams: { pageNum: 1, pageSize: 10, planName: null, studentName: null, courseName: null, attendanceStatus: null }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
},
|
||||
created() { this.getList() },
|
||||
methods: {
|
||||
/** 查询学生签到列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listCheckin(this.queryParams).then(response => {
|
||||
this.checkinList = response.rows
|
||||
this.rows = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
}).finally(() => { this.loading = false })
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
labelOf(options, value) {
|
||||
const match = options.find(item => item.value === value)
|
||||
return match ? match.label : '-'
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
checkinId: null,
|
||||
planId: null,
|
||||
cId: null,
|
||||
studentId: null,
|
||||
boardId: null,
|
||||
checkinWay: null,
|
||||
checkinTime: null,
|
||||
checkinStatus: null,
|
||||
lessonStartTime: null,
|
||||
lessonEndTime: null
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm")
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.checkinId)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = "添加学生签到"
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const checkinId = row.checkinId || this.ids
|
||||
getCheckin(checkinId).then(response => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
this.title = "修改学生签到"
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.checkinId != null) {
|
||||
updateCheckin(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addCheckin(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const checkinIds = row.checkinId || this.ids
|
||||
this.$modal.confirm('是否确认删除学生签到编号为"' + checkinIds + '"的数据项?').then(function() {
|
||||
return delCheckin(checkinIds)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleQuery() { this.queryParams.pageNum = 1; this.getList() },
|
||||
resetQuery() { this.resetForm('queryForm'); this.handleQuery() },
|
||||
handleExport() {
|
||||
this.download('train/checkin/export', {
|
||||
...this.queryParams
|
||||
}, `checkin_${new Date().getTime()}.xlsx`)
|
||||
this.download('train/checkin/export', { ...this.queryParams }, `checkin_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,358 +1,94 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input
|
||||
v-model="queryParams.studentId"
|
||||
placeholder="请输入学员学号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true">
|
||||
<el-form-item label="培训计划" prop="planName">
|
||||
<el-input v-model="queryParams.planName" placeholder="请输入计划名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input
|
||||
v-model="queryParams.planId"
|
||||
placeholder="请输入开班计划ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="学员" prop="studentName">
|
||||
<el-input v-model="queryParams.studentName" placeholder="请输入学员姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="课程ID" prop="cId">
|
||||
<el-input
|
||||
v-model="queryParams.cId"
|
||||
placeholder="请输入课程ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="来源系统" prop="sourceSystem">
|
||||
<el-input v-model="queryParams.sourceSystem" placeholder="如 VR实训系统" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始学习时间" prop="startTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.startTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择开始学习时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束学习时间" prop="endTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.endTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择结束学习时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="学习时长,单位秒" prop="studySeconds">
|
||||
<el-input
|
||||
v-model="queryParams.studySeconds"
|
||||
placeholder="请输入学习时长,单位秒"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据同步入库时间" prop="syncTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.syncTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择数据同步入库时间">
|
||||
</el-date-picker>
|
||||
<el-form-item label="学习内容" prop="learningContent">
|
||||
<el-input v-model="queryParams.learningContent" placeholder="请输入学习内容" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['train:duration:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['train:duration:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['train:duration:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['train:learning:export']"
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['train:duration:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="durationList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="记录ID" align="center" prop="durId" />
|
||||
<el-table-column label="学员学号" align="center" prop="studentId" />
|
||||
<el-table-column label="开班计划ID" align="center" prop="planId" />
|
||||
<el-table-column label="课程ID" align="center" prop="cId" />
|
||||
<el-table-column label="设备类型:阅览室一体机 / 听书机 / VR实训 / 3D拆解 / 3D巡检" align="center" prop="deviceType" />
|
||||
<el-table-column label="开始学习时间" align="center" prop="startTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束学习时间" align="center" prop="endTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="学习时长,单位秒" align="center" prop="studySeconds" />
|
||||
<el-table-column label="数据同步入库时间" align="center" prop="syncTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.syncTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['train:duration:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['train:duration:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
<el-alert title="学习记录由外部学习系统或设备上报,本页面仅供查询。" type="info" :closable="false" show-icon class="mb8" />
|
||||
<el-table v-loading="loading" :data="rows">
|
||||
<el-table-column label="培训计划" prop="planName" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column label="学员" prop="studentName" min-width="100" />
|
||||
<el-table-column label="课程" prop="courseName" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column label="学习内容" prop="learningContent" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column label="学习资源" prop="resourceName" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column label="来源系统" prop="sourceSystem" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="开始时间" prop="startTime" width="170" />
|
||||
<el-table-column label="结束时间" prop="endTime" width="170" />
|
||||
<el-table-column label="有效时长" align="right" width="110">
|
||||
<template slot-scope="scope">{{ formatDuration(scope.row.studySeconds) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="入库时间" prop="syncTime" width="170" />
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改学习时长统计对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input v-model="form.studentId" placeholder="请输入学员学号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input v-model="form.planId" placeholder="请输入开班计划ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="课程ID" prop="cId">
|
||||
<el-input v-model="form.cId" placeholder="请输入课程ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始学习时间" prop="startTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.startTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择开始学习时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束学习时间" prop="endTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.endTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择结束学习时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="学习时长,单位秒" prop="studySeconds">
|
||||
<el-input v-model="form.studySeconds" placeholder="请输入学习时长,单位秒" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据同步入库时间" prop="syncTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.syncTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择数据同步入库时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listDuration, getDuration, delDuration, addDuration, updateDuration } from "@/api/train/duration"
|
||||
import { listDuration } from '@/api/train/duration'
|
||||
|
||||
export default {
|
||||
name: "Duration",
|
||||
name: 'Duration',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 学习时长统计表格数据
|
||||
durationList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
studentId: null,
|
||||
planId: null,
|
||||
cId: null,
|
||||
deviceType: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
studySeconds: null,
|
||||
syncTime: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
rows: [],
|
||||
queryParams: { pageNum: 1, pageSize: 10, planName: null, studentName: null, sourceSystem: null, learningContent: null }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
},
|
||||
created() { this.getList() },
|
||||
methods: {
|
||||
/** 查询学习时长统计列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listDuration(this.queryParams).then(response => {
|
||||
this.durationList = response.rows
|
||||
this.rows = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
}).finally(() => { this.loading = false })
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
formatDuration(seconds) {
|
||||
if (seconds == null) return '-'
|
||||
const hours = Math.floor(seconds / 3600)
|
||||
const minutes = Math.floor((seconds % 3600) / 60)
|
||||
return hours > 0 ? `${hours}小时${minutes}分` : `${minutes}分钟`
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
durId: null,
|
||||
studentId: null,
|
||||
planId: null,
|
||||
cId: null,
|
||||
deviceType: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
studySeconds: null,
|
||||
syncTime: null
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm")
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.durId)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = "添加学习时长统计"
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const durId = row.durId || this.ids
|
||||
getDuration(durId).then(response => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
this.title = "修改学习时长统计"
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.durId != null) {
|
||||
updateDuration(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addDuration(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const durIds = row.durId || this.ids
|
||||
this.$modal.confirm('是否确认删除学习时长统计编号为"' + durIds + '"的数据项?').then(function() {
|
||||
return delDuration(durIds)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleQuery() { this.queryParams.pageNum = 1; this.getList() },
|
||||
resetQuery() { this.resetForm('queryForm'); this.handleQuery() },
|
||||
handleExport() {
|
||||
this.download('train/duration/export', {
|
||||
...this.queryParams
|
||||
}, `duration_${new Date().getTime()}.xlsx`)
|
||||
this.download('train/duration/export', { ...this.queryParams }, `duration_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,319 +1,85 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input
|
||||
v-model="queryParams.studentId"
|
||||
placeholder="请输入学员学号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true">
|
||||
<el-form-item label="培训计划" prop="planName">
|
||||
<el-input v-model="queryParams.planName" placeholder="请输入计划名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input
|
||||
v-model="queryParams.planId"
|
||||
placeholder="请输入开班计划ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="学员" prop="studentName">
|
||||
<el-input v-model="queryParams.studentName" placeholder="请输入学员姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="累计学习总时长" prop="totalStudyHour">
|
||||
<el-input
|
||||
v-model="queryParams.totalStudyHour"
|
||||
placeholder="请输入累计学习总时长"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="平均成绩" prop="avgScore">
|
||||
<el-input
|
||||
v-model="queryParams.avgScore"
|
||||
placeholder="请输入平均成绩"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="签到率" prop="checkinRate">
|
||||
<el-input
|
||||
v-model="queryParams.checkinRate"
|
||||
placeholder="请输入签到率"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="画像标签" prop="labelTag">
|
||||
<el-input v-model="queryParams.labelTag" placeholder="请输入标签" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['train:portrait:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['train:portrait:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['train:portrait:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['train:portrait:export']"
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['train:portrait:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="portraitList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="画像ID" align="center" prop="portraitId" />
|
||||
<el-table-column label="学员学号" align="center" prop="studentId" />
|
||||
<el-table-column label="开班计划ID" align="center" prop="planId" />
|
||||
<el-table-column label="累计学习总时长" align="center" prop="totalStudyHour" />
|
||||
<el-table-column label="平均成绩" align="center" prop="avgScore" />
|
||||
<el-table-column label="签到率" align="center" prop="checkinRate" />
|
||||
<el-table-column label="画像标签,逗号分割,例如:动手能力强,理论薄弱" align="center" prop="labelTag" />
|
||||
<el-table-column label="画像综合描述" align="center" prop="portraitContent" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['train:portrait:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['train:portrait:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
<el-alert title="画像由考勤、成绩和学习时长统计生成,本页面仅供查询。" type="info" :closable="false" show-icon class="mb8" />
|
||||
<el-table v-loading="loading" :data="rows">
|
||||
<el-table-column label="培训计划" prop="planName" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column label="学员" prop="studentName" min-width="100" />
|
||||
<el-table-column label="出勤率" align="right" width="90">
|
||||
<template slot-scope="scope">{{ percent(scope.row.attendanceRate) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="理论成绩" prop="theoryScore" align="right" width="95" />
|
||||
<el-table-column label="实操成绩" prop="practicalScore" align="right" width="95" />
|
||||
<el-table-column label="累计学习学时" prop="totalStudyHour" align="right" width="120" />
|
||||
<el-table-column label="画像标签" prop="labelTag" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column label="综合评价" prop="portraitContent" min-width="220" show-overflow-tooltip />
|
||||
<el-table-column label="生成时间" prop="generatedTime" width="170" />
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改学员画像对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="学员学号" prop="studentId">
|
||||
<el-input v-model="form.studentId" placeholder="请输入学员学号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开班计划ID" prop="planId">
|
||||
<el-input v-model="form.planId" placeholder="请输入开班计划ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="累计学习总时长" prop="totalStudyHour">
|
||||
<el-input v-model="form.totalStudyHour" placeholder="请输入累计学习总时长" />
|
||||
</el-form-item>
|
||||
<el-form-item label="平均成绩" prop="avgScore">
|
||||
<el-input v-model="form.avgScore" placeholder="请输入平均成绩" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到率" prop="checkinRate">
|
||||
<el-input v-model="form.checkinRate" placeholder="请输入签到率" />
|
||||
</el-form-item>
|
||||
<el-form-item label="画像标签,逗号分割,例如:动手能力强,理论薄弱" prop="labelTag">
|
||||
<el-input v-model="form.labelTag" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="画像综合描述">
|
||||
<editor v-model="form.portraitContent" :min-height="192"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listPortrait, getPortrait, delPortrait, addPortrait, updatePortrait } from "@/api/train/portrait"
|
||||
import { listPortrait } from '@/api/train/portrait'
|
||||
|
||||
export default {
|
||||
name: "Portrait",
|
||||
name: 'Portrait',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 学员画像表格数据
|
||||
portraitList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
studentId: null,
|
||||
planId: null,
|
||||
totalStudyHour: null,
|
||||
avgScore: null,
|
||||
checkinRate: null,
|
||||
labelTag: null,
|
||||
portraitContent: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
studentId: [
|
||||
{ required: true, message: "学员学号不能为空", trigger: "blur" }
|
||||
],
|
||||
planId: [
|
||||
{ required: true, message: "开班计划ID不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
rows: [],
|
||||
queryParams: { pageNum: 1, pageSize: 10, planName: null, studentName: null, labelTag: null }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
},
|
||||
created() { this.getList() },
|
||||
methods: {
|
||||
/** 查询学员画像列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listPortrait(this.queryParams).then(response => {
|
||||
this.portraitList = response.rows
|
||||
this.rows = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
}).finally(() => { this.loading = false })
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
portraitId: null,
|
||||
studentId: null,
|
||||
planId: null,
|
||||
totalStudyHour: null,
|
||||
avgScore: null,
|
||||
checkinRate: null,
|
||||
labelTag: null,
|
||||
portraitContent: null,
|
||||
updateTime: null
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm")
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.portraitId)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = "添加学员画像"
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const portraitId = row.portraitId || this.ids
|
||||
getPortrait(portraitId).then(response => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
this.title = "修改学员画像"
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.portraitId != null) {
|
||||
updatePortrait(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addPortrait(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const portraitIds = row.portraitId || this.ids
|
||||
this.$modal.confirm('是否确认删除学员画像编号为"' + portraitIds + '"的数据项?').then(function() {
|
||||
return delPortrait(portraitIds)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
percent(value) { return value == null ? '-' : `${value}%` },
|
||||
handleQuery() { this.queryParams.pageNum = 1; this.getList() },
|
||||
resetQuery() { this.resetForm('queryForm'); this.handleQuery() },
|
||||
handleExport() {
|
||||
this.download('train/portrait/export', {
|
||||
...this.queryParams
|
||||
}, `portrait_${new Date().getTime()}.xlsx`)
|
||||
this.download('train/portrait/export', { ...this.queryParams }, `portrait_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,361 +1,106 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="开班计划ID train_class_plan.plan_id" prop="planId">
|
||||
<el-input
|
||||
v-model="queryParams.planId"
|
||||
placeholder="请输入开班计划ID train_class_plan.plan_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true">
|
||||
<el-form-item label="培训计划" prop="planName">
|
||||
<el-input v-model="queryParams.planName" placeholder="请输入计划名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学员学号 train_student.s_id" prop="studentId">
|
||||
<el-input
|
||||
v-model="queryParams.studentId"
|
||||
placeholder="请输入学员学号 train_student.s_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="学员" prop="studentName">
|
||||
<el-input v-model="queryParams.studentName" placeholder="请输入学员姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报到方式:1 身份证刷卡 2 人脸识别" prop="reportWay">
|
||||
<el-input
|
||||
v-model="queryParams.reportWay"
|
||||
placeholder="请输入报到方式:1 身份证刷卡 2 人脸识别"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="报到方式" prop="reportWay">
|
||||
<el-select v-model="queryParams.reportWay" placeholder="全部" clearable>
|
||||
<el-option v-for="item in reportWays" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报到一体机设备编号" prop="reportDeviceSn">
|
||||
<el-input
|
||||
v-model="queryParams.reportDeviceSn"
|
||||
placeholder="请输入报到一体机设备编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="实际报到时间" prop="reportTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.reportTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择实际报到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配宿舍ID train_dormitory_info.dorm_id" prop="allocDormId">
|
||||
<el-input
|
||||
v-model="queryParams.allocDormId"
|
||||
placeholder="请输入分配宿舍ID train_dormitory_info.dorm_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配教室ID train_classroom_info.class_room_id" prop="allocClassroomId">
|
||||
<el-input
|
||||
v-model="queryParams.allocClassroomId"
|
||||
placeholder="请输入分配教室ID train_classroom_info.class_room_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配实训场地ID train_training_site.site_id" prop="allocSiteId">
|
||||
<el-input
|
||||
v-model="queryParams.allocSiteId"
|
||||
placeholder="请输入分配实训场地ID train_training_site.site_id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="核验结果" prop="verifyResult">
|
||||
<el-select v-model="queryParams.verifyResult" placeholder="全部" clearable>
|
||||
<el-option v-for="item in verifyResults" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['train:report:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['train:report:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['train:report:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-hasPermi="['train:report:export']"
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['train:report:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="reportList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="报到主键ID" align="center" prop="reportId" />
|
||||
<el-table-column label="开班计划ID train_class_plan.plan_id" align="center" prop="planId" />
|
||||
<el-table-column label="学员学号 train_student.s_id" align="center" prop="studentId" />
|
||||
<el-table-column label="报到方式:1 身份证刷卡 2 人脸识别" align="center" prop="reportWay" />
|
||||
<el-table-column label="报到一体机设备编号" align="center" prop="reportDeviceSn" />
|
||||
<el-table-column label="实际报到时间" align="center" prop="reportTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.reportTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
<el-alert title="报到记录由报到确认流程生成,本页面仅供查询。" type="info" :closable="false" show-icon class="mb8" />
|
||||
<el-table v-loading="loading" :data="rows">
|
||||
<el-table-column label="培训计划" prop="planName" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column label="学员" prop="studentName" min-width="110" />
|
||||
<el-table-column label="报到方式" align="center" width="110">
|
||||
<template slot-scope="scope">{{ labelOf(reportWays, scope.row.reportWay) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="0 未报到 1 已报到 2 请假未到" align="center" prop="reportStatus" />
|
||||
<el-table-column label="分配宿舍ID train_dormitory_info.dorm_id" align="center" prop="allocDormId" />
|
||||
<el-table-column label="分配教室ID train_classroom_info.class_room_id" align="center" prop="allocClassroomId" />
|
||||
<el-table-column label="分配实训场地ID train_training_site.site_id" align="center" prop="allocSiteId" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['train:report:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['train:report:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
<el-table-column label="核验结果" align="center" width="110">
|
||||
<template slot-scope="scope">{{ labelOf(verifyResults, scope.row.verifyResult) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报到时间" prop="reportTime" width="170" />
|
||||
<el-table-column label="核验设备" prop="reportDeviceSn" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column label="核验说明" prop="verifyNote" min-width="180" show-overflow-tooltip />
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改开班报到对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="开班计划ID train_class_plan.plan_id" prop="planId">
|
||||
<el-input v-model="form.planId" placeholder="请输入开班计划ID train_class_plan.plan_id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学员学号 train_student.s_id" prop="studentId">
|
||||
<el-input v-model="form.studentId" placeholder="请输入学员学号 train_student.s_id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报到方式:1 身份证刷卡 2 人脸识别" prop="reportWay">
|
||||
<el-input v-model="form.reportWay" placeholder="请输入报到方式:1 身份证刷卡 2 人脸识别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报到一体机设备编号" prop="reportDeviceSn">
|
||||
<el-input v-model="form.reportDeviceSn" placeholder="请输入报到一体机设备编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际报到时间" prop="reportTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.reportTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择实际报到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="分配宿舍ID train_dormitory_info.dorm_id" prop="allocDormId">
|
||||
<el-input v-model="form.allocDormId" placeholder="请输入分配宿舍ID train_dormitory_info.dorm_id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分配教室ID train_classroom_info.class_room_id" prop="allocClassroomId">
|
||||
<el-input v-model="form.allocClassroomId" placeholder="请输入分配教室ID train_classroom_info.class_room_id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分配实训场地ID train_training_site.site_id" prop="allocSiteId">
|
||||
<el-input v-model="form.allocSiteId" placeholder="请输入分配实训场地ID train_training_site.site_id" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listReport, getReport, delReport, addReport, updateReport } from "@/api/train/report"
|
||||
import { listReport } from '@/api/train/report'
|
||||
|
||||
export default {
|
||||
name: "Report",
|
||||
name: 'Report',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 开班报到表格数据
|
||||
reportList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
planId: null,
|
||||
studentId: null,
|
||||
reportWay: null,
|
||||
reportDeviceSn: null,
|
||||
reportTime: null,
|
||||
reportStatus: null,
|
||||
allocDormId: null,
|
||||
allocClassroomId: null,
|
||||
allocSiteId: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
planId: [
|
||||
{ required: true, message: "开班计划ID train_class_plan.plan_id不能为空", trigger: "blur" }
|
||||
],
|
||||
studentId: [
|
||||
{ required: true, message: "学员学号 train_student.s_id不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
rows: [],
|
||||
reportWays: [
|
||||
{ value: 1, label: '人脸识别' },
|
||||
{ value: 2, label: '身份证刷卡' },
|
||||
{ value: 3, label: '二维码' },
|
||||
{ value: 4, label: '人工录入' }
|
||||
],
|
||||
verifyResults: [
|
||||
{ value: 1, label: '核验通过' },
|
||||
{ value: 2, label: '核验不匹配' },
|
||||
{ value: 3, label: '人工放行' }
|
||||
],
|
||||
queryParams: { pageNum: 1, pageSize: 10, planName: null, studentName: null, reportWay: null, verifyResult: null }
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
},
|
||||
created() { this.getList() },
|
||||
methods: {
|
||||
/** 查询开班报到列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listReport(this.queryParams).then(response => {
|
||||
this.reportList = response.rows
|
||||
this.rows = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
}).finally(() => { this.loading = false })
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
labelOf(options, value) {
|
||||
const match = options.find(item => item.value === value)
|
||||
return match ? match.label : '-'
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
reportId: null,
|
||||
planId: null,
|
||||
studentId: null,
|
||||
reportWay: null,
|
||||
reportDeviceSn: null,
|
||||
reportTime: null,
|
||||
reportStatus: null,
|
||||
allocDormId: null,
|
||||
allocClassroomId: null,
|
||||
allocSiteId: null,
|
||||
createTime: null
|
||||
}
|
||||
this.resetForm("form")
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm")
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.reportId)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = "添加开班报到"
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const reportId = row.reportId || this.ids
|
||||
getReport(reportId).then(response => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
this.title = "修改开班报到"
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.reportId != null) {
|
||||
updateReport(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addReport(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功")
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const reportIds = row.reportId || this.ids
|
||||
this.$modal.confirm('是否确认删除开班报到编号为"' + reportIds + '"的数据项?').then(function() {
|
||||
return delReport(reportIds)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleQuery() { this.queryParams.pageNum = 1; this.getList() },
|
||||
resetQuery() { this.resetForm('queryForm'); this.handleQuery() },
|
||||
handleExport() {
|
||||
this.download('train/report/export', {
|
||||
...this.queryParams
|
||||
}, `report_${new Date().getTime()}.xlsx`)
|
||||
this.download('train/report/export', { ...this.queryParams }, `report_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user