随着编程技术的进步,越来越多的跨平台开发语言和框架出现。 比较常用的有uni-app、Ionic、React等,在我的开发实践中,感觉虽然接近、原生的语法,但是语法比较混乱,在使用的时候没有很好的代码阅读体验UI和逻辑放在一起,但是uni-app使用了vue.js的语法,这对于很多有vue开发经验的程序员来说很方便。 今天我要介绍的是一个用uni-app构建的在线考试应用程序。
实现的功能
存在管理员、教师、学生三种角色;
用户登录:管理员、教师、学生可以使用自己的账号和密码登录APP;
人员管理:管理员可以编辑和删除教师和学生的身份信息,教师可以编辑和删除学生的身份信息;
考试记录:参加过考试的人可以查看自己的考试记录,包括成绩和问题答案;
试卷管理:管理员和教师可以对试卷进行管理,包括添加试卷、添加试题、发布试卷等;
使用的技术
后端:JAVA开发语言、框架、MySql数据库
前端:uni-app
部分代码显示
{{tips }}
提交
cript>
import appRequest from "@/common/appRequestUrl.js";
export default {
data() {
return {
pid:0,
form: {
paperName: "",
memo: "",
passScore: 60,
singleNum: 5,
singleScore: 10,
multiNum: 2,
multiScore: 10,
judgeNum: 3,
judgeScore: 10,
state:0,
score:100
},
user:"",
rules: {
paperName: [
{
required: true,
message: '请填写试卷名称',
trigger: ['change','blur']
}
],memo: [{
required: true,
message: '请填写试卷简介',
trigger: ['change','blur']
}
],judgeScore:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],judgeNum:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],singleScore:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],singleNum:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],multiScore:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],multiNum:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}],passScore:[{
validator: function(rule,value,callback){
return value>0;
},
message: '请填写完整',
trigger: ['change','blur']
}]
},tips:"请确保 单选分值*单选数量 + 多选分值*多选数量 + 判断分值*判断数量 = 100"
}
},
onLoad:function(option) {
if(option.pid){
this.pid = option.pid;
this.getPaperInfo();
}
},
onShow() {
// this.user = appRequest.getUserInfo();
// if(!this.user){
// uni.switchTab({
// url:"../index/index"
// })
// }
},
methods: {
checkPoint(){
return (this.form.singleNum*this.form.singleScore + this.form.multiNum*this.form.multiScore + this.form.judgeNum*this.form.judgeScore )== 100 ;
},
submit(){
let _this = this;
this.$refs.uForm.validate(valid => {
if (valid) {
if(!_this.checkPoint()){
_this.$api.msg('试卷总分不等于100分,请修改。');
return;
}
appRequest.request({
method: "POST",
url: _this.form.pid ? appRequest.urlMap.editExamPaper : appRequest.urlMap.addExamPaper,
data:_this.form,
success: function(res) {
if (res.data.code == 200) {
uni.showModal({
title:"成功",
content:"试卷提交成功",
showCancel:false,
success:function(res){
if(res./confirm/i){
uni.navigateBack({
})
}
}
})({
})
} else {
_this.$api.msg('保存失败');
}
},
fail: function(res) {
_this.$api.msg("请求异常");
}
})
} else {
_this.$api.msg('验证异常');
}
});
},
confirm(e) {
this.selName = e[0].label;
this.form.typeFK = e[0].value;
},
numCheck(){
return [{
required: true,
message: '未填写完整,请检查',
trigger: ['change','blur']
},
{
type: "integer",
message: '格式异常,仅能为整数',
trigger: ['change','blur']
}
]
},
getPaperInfo() {
let _this = this;
appRequest.request({
method: "POST",
url: appRequest.urlMap.findExamPaper,
data:{
pid:_this.pid,
validFlag:1
},
success: function(res) {
if (res.data.code == 200) {
_this.form = res.data.data;
} else {
_this.$api.msg('试卷获取失败');
}
},
fail: function(res) {
_this.$api.msg("请求异常");
}
})
}
},onReady() {
this.$refs.uForm.setRules(this.rules);
}
}
cript>
获取源码请关注并私信“”