Files
dvcp_v2_wechat_app/src/project/qujing/AppLegalLearning/components/GeneralLawExam.vue
shijingjing b7433bdd55 普法考试
2023-02-13 16:13:27 +08:00

298 lines
6.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="GeneralLawExam">
<div class="search_box">
<u-search placeholder="请输入需要搜索的考试" bg-color="#FFF" v-model="title"
:show-action="false" @search="getList"></u-search>
</div>
<p class="all_test">全部考试</p>
<!-- v-if="testList.length" -->
<div class="card_list">
<!-- v-for="item in testList" :key="item.id" -->
<div class="card">
<div class="card_top">
<div class="card_title">曲靖规则基本考试</div>
<div class="card_count">
<span class="col_blue">10</span>预计<span class="col_blue">10</span>分钟
</div>
<div class="card_statistics">
<span>264</span>人通过/<span>283</span>人参与
</div>
<div class="result">
<img src="../img/youxiu.png" alt="">
</div>
<div class="grade">98</div>
</div>
<div class="card_bottom col_blue" @click="handleToTest()">参加考试</div>
</div>
</div>
<!-- <AiEmpty :description="`暂无数据`" class="emptyWrap" v-else/> -->
<u-popup v-model="showAuth" mode="bottom" border-radius="32">
<div class="auth_box">
<div class="auth_title">居民信息认证</div>
<div class="auth_form">
<div class="form_name"><span class="red">*</span>姓名</div>
<input class="form_value" type="text" placeholder="请输入姓名" v-model="form.name"/>
<div class="form_name"><span class="red">*</span>身份证号</div>
<input class="form_value" type="idcard" placeholder="请输入18位身份证号" v-model="form.idNumber"/>
<div class="form_name"><span class="red">*</span>地区</div>
<AiAreaPicker class="ai-area" v-model="form.areaId" :areaId="$areaId" :fullName.sync="form.areaName">
<div class="ai-area__wrapper">
<span class="label" v-if="form.areaName">{{ form.areaName }}</span>
<i v-else style="color: #999">请选择</i>
<u-icon name="arrow-right" color="#ddd"/>
</div>
</AiAreaPicker>
</div>
<div class="auth_btn">
<div class="cancel" @click="showAuth = false,form = {}">取消</div>
<div class="submit" @click="comfirm">确定</div>
</div>
</div>
</u-popup>
</div>
</template>
<script>
import { mapState } from "vuex"
export default {
data() {
return {
showAuth: false,
title: '',
current: 1,
form: {
name: '',
idNumber: '',
areaId: '',
areaName: '',
},
flag: false,
current: 1,
testList: [],
}
},
computed: {
...mapState(['user'])
},
methods: {
getList() {
this.$instance.post(`/app/appexaminationinfo/listForXCX`, null, {
params: {
current: this.current,
size: 10,
title: this.title
}
}).then(res=> {
if(res?.data) {
this.testList = res.data.records
}
})
},
handleToTest() {
// 没有认证
// if('没有认证') {
this.showAuth = true;
// 已认证
// } else {
// this.$emit('toTest')
// }
},
comfirm() {
if(this.flag) return
if(!this.form.name) {
return this.$u.toast('请输入姓名')
}
if(!this.form.idNumber) {
return this.$u.toast('请输入身份证号')
}
if(!this.form.areaId) {
return this.$u.toast('请选择地区')
}
this.flag = true
this.$instance.post(`/app/appwechatuserqujing/idNumberAttestation`, this.form).then(res=> {
if(res?.code == 0) {
this.flag = false
this.$u.toast('认证成功')
setTimeout(()=> {
this.showAuth = false
this.$emit('toTest')
}, 500)
}
}).catch((err)=> {
this.flag = false
this.showAuth = false
this.$u.toast(err.msg)
})
}
},
onReachBottom() {
this.current++;
this.getList()
},
}
</script>
<style lang="scss" socped>
.GeneralLawExam {
.search_box {
margin: 24px 0;
padding: 0 32px;
box-sizing: border-box;
}
.all_test {
font-size: 28px;
color: #333333;
font-weight: 600;
padding: 0 32px;
box-sizing: border-box;
}
.card_list {
padding: 8px 32px;
box-sizing: border-box;
.card {
margin-top: 24px;
.card_top,
.card_bottom {
padding: 24px;
box-sizing: border-box;
background: #FCFCFC;
}
.card_top {
position: relative;
border-radius: 16px 16px 0 0;
.card_title {
font-weight: 500;
font-size: 36px;
color: #333333;
overflow: hidden;
text-overflow:ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.card_count,
.card_statistics {
font-weight: 400;
font-size: 26px;
color: #999999;
margin-top: 16px;
}
.result {
position: absolute;
right: 0;
top: 0;
img {
width: 200px;
height: 200px;
}
}
.grade {
position: absolute;
right: 75px;
top: 60px;
font-weight: 500;
font-size: 40px;
color: #0FC484;
}
}
.card_bottom {
border-top: 1px solid #EEEEEE;
border-radius: 0 0 16px 16px;
text-align: center;
}
.col_blue {
color: #2D7DFF;
}
}
}
.auth_box {
padding: 32px;
box-sizing: border-box;
.auth_title {
font-weight: 600;
font-size: 34px;
color: #333333;
text-align: center;
}
.auth_form {
margin-top: 30px;
.form_name {
font-weight: 500;
font-size: 28px;
color: #333333;
margin-bottom: 16px;
.red {
color: #FF4466;
}
}
input {
height: 96px;
background: #F4F5FA;
border-radius: 16px;
margin-bottom: 32px;
padding-left: 24px;
}
.ai-area .ai-area__wrapper {
display: flex;
background: #F4F5FA;
border-radius: 16px;
margin-bottom: 32px;
padding: 24px;
box-sizing: border-box;
}
}
.auth_btn {
display: flex;
justify-content: space-between;
height: 100px;
padding: 10px 0;
box-sizing: border-box;
.cancel {
background: #F2F2F2;
color: #2D7DFF;
}
.submit {
background: #2D7DFF;
color: #FFF;
}
.cancel,
.submit {
width: 48%;
height: 80px;
line-height: 80px;
text-align: center;
border-radius: 16px;
}
}
}
}
</style>