309 lines
8.9 KiB
Vue
309 lines
8.9 KiB
Vue
<template>
|
|
<view class="page">
|
|
<view class="status_bar">
|
|
<view class="top_view"></view>
|
|
</view>
|
|
<view class="wui_banner">
|
|
<view class="banner_img">
|
|
<image src="../../static/home-bg.png" mode=""></image>
|
|
</view>
|
|
</view>
|
|
<view class="home-apps">
|
|
<view class="home-apps-item" @click="fnScan">
|
|
<view class="home-apps-item-img">
|
|
<image src="../../static/icon-apps/app_icons6.png" mode=""></image>
|
|
</view>
|
|
<view class="text">
|
|
<text>扫码</text>
|
|
</view>
|
|
</view>
|
|
<view class="home-apps-item" v-for="(item, index) in baseList" :key="index" @click="fnNavigator(index)">
|
|
<view class="home-apps-item-img">
|
|
<image :src="item.img" mode=""></image>
|
|
</view>
|
|
<view class="text">
|
|
<text>{{ item.title }}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<u-modal :show="updateVersion.modalShow" title="温馨提示" :showConfirmButton="updateVersion.showConfirmButton"
|
|
:showCancelButton="updateVersion.showCancelButton" :confirmText="updateVersion.confirmText"
|
|
:cancelText="updateVersion.cancelText" @cancel="modalCancel" @confirm="modalConfirm">
|
|
<view style="text-align: center; color: #606266">
|
|
<rich-text :nodes="updateVersion.modalContent"></rich-text>
|
|
</view>
|
|
</u-modal>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import updateVersion from '../../utils/updateVersion'
|
|
import {
|
|
setEntry,
|
|
getIsUploadFace,
|
|
getClassInfoByParams,
|
|
getClassList, getExamExercises
|
|
} from '../../api'
|
|
import {
|
|
getStudentInfoApi,
|
|
setEntryV1
|
|
} from "../../api/api";
|
|
import store from "../../store";
|
|
|
|
export default {
|
|
mixins: [updateVersion],
|
|
data() {
|
|
return {
|
|
baseList: [{
|
|
img: require('../../static/icon-apps/app_icons.png'),
|
|
title: '电子工牌',
|
|
url: '/pages/electronic_work_card/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons2.png'),
|
|
title: '服务单位 管理',
|
|
url: '/pages/service_unit_management/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons3.png'),
|
|
title: '我的信息',
|
|
url: '/pages/mine/information/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons4.png'),
|
|
title: '证书信息',
|
|
url: '/pages/certificate_information/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons5.png'),
|
|
title: '就职单位',
|
|
url: '/pages/employed_by/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons7.png'),
|
|
title: '高危作业',
|
|
url: '/pages/eight_assignments/index'
|
|
},
|
|
{
|
|
img: require('../../static/icon-apps/app_icons8.png'),
|
|
title: '培训管理',
|
|
url: '/pages/train_management/index'
|
|
}
|
|
],
|
|
classInfo: null,
|
|
}
|
|
},
|
|
computed: {
|
|
userInfo() {
|
|
return this.$store.getters.getUserInfo
|
|
}
|
|
},
|
|
onLoad() {
|
|
if (this.$store.getters.getUserInfo.USER_ID) {
|
|
// 获取系统版本号, 其函数主体在 /utils/updateVersion.js 文件内查找
|
|
this.fnUpdateVersion(false)
|
|
this.getUserFaceCompleted()
|
|
}
|
|
},
|
|
methods: {
|
|
handleGetClassInfoByParams(classId) {
|
|
return new Promise(async (resolve, reject) => {
|
|
const userInfo = store.getters.getUserInfo
|
|
await getClassInfoByParams({
|
|
classId,
|
|
userId: userInfo.USER_ID
|
|
})
|
|
.then((resData) => {
|
|
resolve(resData.classInfo)
|
|
})
|
|
.catch(() => {
|
|
uni.$u.toast('网络开小差了,请稍后尝试')
|
|
reject()
|
|
})
|
|
})
|
|
},
|
|
async fnScan() {
|
|
this.classInfo = null; // 清空 classInfo
|
|
uni.scanCode({
|
|
success: async (res) => {
|
|
// let obj = JSON.parse(res.result)
|
|
// let type = obj[0].CODE_TYPE
|
|
const {
|
|
classId,
|
|
stageexampaperinputId,
|
|
type,
|
|
CORPINFO_ID,
|
|
RELEVANT_UNIT_NAME
|
|
} = JSON.parse(res.result);
|
|
if (type !== '0') {
|
|
this.classInfo = await this.handleGetClassInfoByParams(classId);
|
|
const resData = await getStudentInfoApi({
|
|
classId: this.classInfo.classId
|
|
})
|
|
await this.$store.dispatch('setStudentInfo', resData.studentInfo)
|
|
}
|
|
switch (type) {
|
|
case "0": {
|
|
let info = await setEntryV1({
|
|
userId: this.userInfo.USER_ID,
|
|
corpinfoId: CORPINFO_ID,
|
|
RELEVANT_UNIT_NAME: RELEVANT_UNIT_NAME,
|
|
postMethod: 'application/json'
|
|
})
|
|
if (info.code === 200) {
|
|
uni.$u.toast('入职成功')
|
|
} else {
|
|
uni.$u.toast('入职失败,请联系管理员')
|
|
}
|
|
break;
|
|
}
|
|
// case "1": {
|
|
// // type=1时跳转电子工牌页面
|
|
// uni.$u.route({
|
|
// url: '/pages/electronic_work_card/index',
|
|
// params: {
|
|
// USER_ID: obj[0].USER_ID,
|
|
// CODE_TYPE: obj[0].CODE_TYPE
|
|
// }
|
|
// })
|
|
// break;
|
|
// };
|
|
case "2": {
|
|
// 签到二维码方式进入, [type: 2 --> 签到二维码方式进入]
|
|
if (store.getters.getVerification === '0') {
|
|
uni.showModal({
|
|
title: '温馨提示',
|
|
content: '检测到您还未完成人脸信息读取,请先完成人脸信息认证!',
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
uni.$u.route({
|
|
url: '/pages/train_management/face_authentication',
|
|
params: {
|
|
type: 'facial_input'
|
|
}
|
|
})
|
|
}
|
|
if (res.cancel) {
|
|
uni.navigateBack({
|
|
delta: 1
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
if (store.getters.getVerification === '1') {
|
|
if (this.classInfo) {
|
|
if (this.classInfo.studystate === "3") {
|
|
uni.$u.toast("您已经入班签到,无需再次签到!")
|
|
return;
|
|
}
|
|
uni.$u.route({
|
|
url: '/pages/train_management/realname_info_auth',
|
|
params: {
|
|
type: 'scan_face',
|
|
classId
|
|
}
|
|
})
|
|
} else {
|
|
uni.$u.toast('您未在培训计划内,无法入班签到,请联系教师')
|
|
}
|
|
} else {
|
|
uni.$u.toast('您还未完成人脸信息读取,请先完成人脸信息认证!')
|
|
}
|
|
break;
|
|
}
|
|
case "3": {
|
|
// 考试二维码方式进入 [type: 3 --> 考试二维码方式进入]
|
|
if (store.getters.getVerification === '1') {
|
|
if (this.classInfo) {
|
|
if (this.classInfo.studystate !== "3") {
|
|
uni.$u.toast("您还未入班签到,无法考试!")
|
|
return;
|
|
}
|
|
if (this.classInfo.stageexamstate === "3") {
|
|
uni.$u.toast("您已经考试通过,无需再次考试!")
|
|
return;
|
|
}
|
|
const resData = await getExamExercises({
|
|
stageexampaperinputId,
|
|
classId,
|
|
})
|
|
if (resData.numberofexams <= 0) {
|
|
uni.$u.toast("您的考试次数已用尽,无法再次考试!")
|
|
return;
|
|
}
|
|
uni.$u.route({
|
|
url: '/pages/train_management/face_authentication',
|
|
params: {
|
|
type: 'learning_certification',
|
|
stageexampaperinputId,
|
|
classId,
|
|
}
|
|
})
|
|
|
|
} else {
|
|
uni.$u.toast('您未在培训计划内,无法进行考试,请联系教师')
|
|
}
|
|
} else {
|
|
uni.$u.toast('您还未完成人脸信息读取,请先完成人脸信息认证!')
|
|
}
|
|
break;
|
|
}
|
|
default: {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
fnIsShow(index) {
|
|
if (index === 5) return !!this.userInfo.CORPINFO_ID
|
|
return true
|
|
},
|
|
fnNavigator(e) {
|
|
uni.$u.route({
|
|
url: this.baseList[e].url
|
|
})
|
|
},
|
|
/**
|
|
* 获取是否已经完成上传人脸信息
|
|
*/
|
|
async getUserFaceCompleted() {
|
|
const userFaceData = await getIsUploadFace()
|
|
// userFaceData.authentication --> 0: 未完成人脸认证
|
|
// userFaceData.authentication --> 1: 已完成人脸认证
|
|
this.$store.dispatch('setVerification', userFaceData.authentication ? userFaceData.authentication :
|
|
"0"); // 设置本地存储人脸检测验证状态
|
|
const isPassedVerification = userFaceData.authentication === '0'
|
|
if (isPassedVerification) {
|
|
uni.showModal({
|
|
title: '温馨提示',
|
|
content: '为了能够得到更好的体验,我们会获取您个人信息,请完成人脸信息认证!',
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
uni.$u.route({
|
|
url: '/pages/train_management/face_authentication',
|
|
params: {
|
|
type: 'facial_input'
|
|
}
|
|
})
|
|
}
|
|
if (res.cancel) {
|
|
uni.$u.toast("您可进入[我的]-[人脸认证]完成信息认证")
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.page {
|
|
background-color: #f7f9ff;
|
|
min-height: 100vh;
|
|
}
|
|
</style>
|