班级列表接口

xgf-training-dev
wangyan 2025-02-18 10:49:05 +08:00
parent 9082f528f4
commit 97011935b9
2 changed files with 206 additions and 199 deletions

View File

@ -68,3 +68,7 @@ export const setSecurityMeasuresSave = (params) => post("/app/Task/setQues", par
export const setOtherSecurityMeasuresSave = (params) => post("/app/Task/setOtherQues", params) //其它安全措施提交 export const setOtherSecurityMeasuresSave = (params) => post("/app/Task/setOtherQues", params) //其它安全措施提交
export const getHistoricalApprovalRecords = (params) => post("/app/Task/getHis", params); // 历史审批记录 export const getHistoricalApprovalRecords = (params) => post("/app/Task/getHis", params); // 历史审批记录
// 结束 // 结束
// 以下接口培训管理流程使用
export const getClassList = (params) => post("/app/stagestudentrelation/pageTaskByUser", params); // 历史审批记录
// 结束

View File

@ -1,217 +1,220 @@
<template> <template>
<view class="content"> <view class="content">
<u-list @scrolltolower="scrolltolower"> <u-list @scrolltolower="scrolltolower">
<u-list-item v-for="(item, index) in trainList" :key="index"> <u-list-item v-for="(item, index) in trainList" :key="index">
<view class="container_item"> <view class="container_item">
<view class="container_item_name"> <view class="container_item_name">
<text>{{ item.className }}</text> <text>{{ item.className }}</text>
</view> </view>
<view class="container_item_content"> <view class="container_item_content">
<view class="content_text"> <view class="content_text">
<view> <view>
<text class="content_label">所属单位: </text> <text class="content_label">所属单位: </text>
<text class="content_value">{{ item.unit }}</text> <text class="content_value">{{ item.unit }}</text>
</view> </view>
</view> </view>
<view class="content_text"> <view class="content_text">
<view> <view>
<text class="content_label">培训开始时间: </text> <text class="content_label">培训开始时间: </text>
<text class="content_value">{{ item.trainStartTime }}</text> <text class="content_value">{{ item.trainStartTime }}</text>
</view> </view>
</view> </view>
<view class="content_text"> <view class="content_text">
<view> <view>
<text class="content_label">培训结束时间: </text> <text class="content_label">培训结束时间: </text>
<text class="content_value">{{ item.trainEndTime }}</text> <text class="content_value">{{ item.trainEndTime }}</text>
</view> </view>
</view> </view>
<view class="content_text"> <view class="content_text">
<view class="content_bottom"> <view class="content_bottom">
<view> <view>
<text class="content_label">任务状态: </text>{{ handleCalcTaskStatus(item.taskStatus) }} <text class="content_label">任务状态: </text>{{ handleCalcTaskStatus(item.taskStatus) }}
</view> </view>
<view class="action-row"> <view class="action-row">
<u-button size="mini" type="primary" text="签到信息" @click="signInInformation(item.classId)" /> <u-button size="mini" type="primary" text="签到信息"
<u-button size="mini" type="primary" text="考试记录" @click="ExamRecord(item.classId)" /> @click="signInInformation(item.classId)" />
</view> <u-button size="mini" type="primary" text="考试记录"
</view> @click="ExamRecord(item.classId)" />
</view> </view>
</view> </view>
</view> </view>
</u-list-item> </view>
</u-list> </view>
</view> </u-list-item>
</u-list>
</view>
</template> </template>
<script> <script>
export default { import { getClassList } from '../../api';
data() { export default {
return { data() {
pageSize: 10, return {
currentPage: 1, pageSize: 10,
totalPage: 0, currentPage: 1,
trainList: [], totalPage: 0,
taskStatusMap: { trainList: [],
0: '未开始', taskStatusMap: {
1: '进行中' 0: '未开始',
} 1: '进行中'
} }
}, }
},
/* 监听页面显示,页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面 */ /* 监听页面显示,页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面 */
onShow() { onShow() {
this.resetList() this.resetList()
}, },
methods: { methods: {
async getData() { async getData() {
// let resData = await getCertificateInformationList({ let resData = await getClassList({
// showCount: this.pageSize, showCount: this.pageSize,
// currentPage: this.currentPage, currentPage: this.currentPage,
// }); });
this.trainList = [ console.log(resData);
{ // this.trainList = [{
classId: 'f34dzfgerg', // classId: 'f34dzfgerg',
className: '班级名称1', // className: '1',
unit: '所属单位1所属单位1所属单位1所属单位1所属单位1', // unit: '11111',
trainStartTime: '2025-02-14 09: 40', // trainStartTime: '2025-02-14 09: 40',
trainEndTime: '2025-02-14 18: 00', // trainEndTime: '2025-02-14 18: 00',
taskStatus: 0 // // taskStatus: 0 //
}, // },
{ // {
classId: 'f34dzfger6', // classId: 'f34dzfger6',
className: '班级名称2', // className: '2',
unit: '所属单位2', // unit: '2',
trainStartTime: '2025-02-12 09: 40', // trainStartTime: '2025-02-12 09: 40',
trainEndTime: '2025-02-12 18: 00', // trainEndTime: '2025-02-12 18: 00',
taskStatus: 1 // // taskStatus: 1 //
} // }
] // ]
this.totalPage = 2 // this.totalPage = 2
}, },
resetList() { resetList() {
this.pageSize = 10 this.pageSize = 10
this.currentPage = 1 this.currentPage = 1
this.trainList = [] this.trainList = []
this.getData() this.getData()
}, },
scrolltolower() { scrolltolower() {
this.currentPage++ this.currentPage++
if (this.totalPage >= this.currentPage) this.getData() if (this.totalPage >= this.currentPage) this.getData()
}, },
/** /**
* 右上角自定义扫码图标触发事件 * 右上角自定义扫码图标触发事件
*/ */
onNavigationBarButtonTap(e) { onNavigationBarButtonTap(e) {
// //
uni.scanCode({ uni.scanCode({
// scanType: ['qrCode'], // // scanType: ['qrCode'], //
onlyFromCamera: false, // onlyFromCamera: false, //
hideAlbum: false, // ,, hideAlbum: false, // ,,
success: function (res) { success: function(res) {
if (res.result === '0') { if (res.result === '0') {
// //
uni.$u.route({ uni.$u.route({
url: '/pages/train_management/realname_info_auth', url: '/pages/train_management/realname_info_auth',
params: { params: {
type: 'scan_face', type: 'scan_face',
} }
}) })
} else if (res.result === '1') { } else if (res.result === '1') {
// //
uni.$u.route({ uni.$u.route({
url: '/pages/train_management/face_authentication', url: '/pages/train_management/face_authentication',
params: { params: {
type: 'learning_certification' type: 'learning_certification'
} }
}) })
} }
}, },
fail: function (error) { fail: function(error) {
console.log("error :>> ", error) console.log("error :>> ", error)
}, },
complete: function (result) { complete: function(result) {
console.log("扫码完成,正在跳转功能页!") console.log("扫码完成,正在跳转功能页!")
} }
}); });
}, },
handleCalcTaskStatus(type) { handleCalcTaskStatus(type) {
return this.taskStatusMap[type] return this.taskStatusMap[type]
}, },
/** /**
* 签到信息 * 签到信息
*/ */
signInInformation(classId) { signInInformation(classId) {
uni.$u.route({ uni.$u.route({
url: '/pages/train_management/sign_information', url: '/pages/train_management/sign_information',
params: { params: {
classId classId
} }
}) })
}, },
/** /**
* 考试记录 * 考试记录
*/ */
ExamRecord(classId) { ExamRecord(classId) {
uni.$u.route({ uni.$u.route({
url: '/pages/train_management/exam_record', url: '/pages/train_management/exam_record',
params: { params: {
classId classId
} }
}) })
} }
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container_item { .container_item {
padding-left: 16rpx; padding-left: 16rpx;
.container_item_name { .container_item_name {
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.container_item_content { .container_item_content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 8rpx; gap: 8rpx;
.content_text { .content_text {
color: #acafb3; color: #acafb3;
font-size: 30rpx; font-size: 30rpx;
.content_label { .content_label {
display: inline-block; display: inline-block;
width: 220rpx; width: 220rpx;
} }
.content_value { .content_value {
display: inline-block; display: inline-block;
transform: translateY(8rpx); transform: translateY(8rpx);
padding: 0; padding: 0;
width: 452rpx; width: 452rpx;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.content_bottom { .content_bottom {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.action-row { .action-row {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 16rpx; gap: 16rpx;
} }
} }
} }
} }
</style> </style>