diff --git a/public/favicon.ico b/public/favicon.ico index df36fcf..5a503f2 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/assets/images/200.png b/src/assets/images/200.png deleted file mode 100644 index d844028..0000000 Binary files a/src/assets/images/200.png and /dev/null differ diff --git a/src/assets/images/answer-element-1.png b/src/assets/images/answer-element-1.png new file mode 100644 index 0000000..0d61d19 Binary files /dev/null and b/src/assets/images/answer-element-1.png differ diff --git a/src/assets/images/banner.png b/src/assets/images/banner.png new file mode 100644 index 0000000..4774d50 Binary files /dev/null and b/src/assets/images/banner.png differ diff --git a/src/assets/images/center-bg.png b/src/assets/images/center-bg.png deleted file mode 100644 index c89e65e..0000000 Binary files a/src/assets/images/center-bg.png and /dev/null differ diff --git a/src/assets/images/load.gif b/src/assets/images/load.gif deleted file mode 100644 index 9389694..0000000 Binary files a/src/assets/images/load.gif and /dev/null differ diff --git a/src/assets/images/loading.gif b/src/assets/images/loading.gif deleted file mode 100644 index c6a00ce..0000000 Binary files a/src/assets/images/loading.gif and /dev/null differ diff --git a/src/assets/images/login-bg.jpg b/src/assets/images/login-bg.jpg deleted file mode 100644 index 0204ed4..0000000 Binary files a/src/assets/images/login-bg.jpg and /dev/null differ diff --git a/src/assets/images/login-bg.png b/src/assets/images/login-bg.png deleted file mode 100644 index 602f92a..0000000 Binary files a/src/assets/images/login-bg.png and /dev/null differ diff --git a/src/assets/images/login_back.png b/src/assets/images/login_back.png deleted file mode 100644 index e6825c0..0000000 Binary files a/src/assets/images/login_back.png and /dev/null differ diff --git a/src/assets/images/logo-.png b/src/assets/images/logo-.png deleted file mode 100644 index 88b912a..0000000 Binary files a/src/assets/images/logo-.png and /dev/null differ diff --git a/src/assets/images/qrcode.jpg b/src/assets/images/qrcode.jpg deleted file mode 100644 index 1b0a62c..0000000 Binary files a/src/assets/images/qrcode.jpg and /dev/null differ diff --git a/src/router/index.js b/src/router/index.js index 6f01285..6d5b065 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -3,6 +3,7 @@ import { createRouter, createWebHistory } from 'vue-router' import Login from '@/views/Login/index.vue' import Exam from '@/views/Exam/index.vue' import ScaleList from '@/views/ScaleList/index.vue' +import ExamDetail from '@/views/ExamDetail/index.vue' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -18,6 +19,10 @@ const router = createRouter({ { path: '/exam', component: Exam + }, + { + path:'/examDetail', + component: ExamDetail } ], // 路由滚动行为定制 diff --git a/src/styles/element/index.scss b/src/styles/element/index.scss index 4de3db2..7af53ca 100644 --- a/src/styles/element/index.scss +++ b/src/styles/element/index.scss @@ -1,6 +1,6 @@ /* 只需要重写你需要的即可 */ @forward 'element-plus/theme-chalk/src/common/var.scss' with ($colors: ('primary': ( // 主色 - 'base': #1CC19A, + 'base': #18C8FF, ), 'success': ( // 成功色 'base': #1dc779, diff --git a/src/views/Exam/index.vue b/src/views/Exam/index.vue index 442b755..d7d56f3 100644 --- a/src/views/Exam/index.vue +++ b/src/views/Exam/index.vue @@ -4,46 +4,72 @@ 本平台提供专业的自评量表、请仔细地阅读每一条,根据近期内您的实际感受,点击适合您的选项,请注意不要漏题、答题完成后您将获得一份专业的分析报告! - - - - - {{ scaleName }} - - - + + + + + + + 答题卡 + + + + + + {{ index + 1 }} + + {{ index + 1 }} + + + + + + + - - {{ currentQuestion.questionContent }} - - - {{ item.answerOption }} - - - + + + + + {{ scaleName }} + + + + + {{ currentQuestion.questionContent }} + + + {{ item.answerOption }} + + + + + + + + + + 上一题 + + + 提交 + + + + + 下一题 + + + + + + + + + - - - - - - 上一题 - - - 提交 - - - - - 下一题 - - - - - - - @@ -55,20 +81,22 @@ import { getAnswerAPI, addAnswerAPI } from '@/apis/user' const route = useRoute() const scaleId = route.query.scaleId const scaleName = route.query.scaleName +const scaleTime = route.query.scaleTime const recordId = route.query.recordId const router = useRouter() -const format = (percentage) => (percentage === 100 ? '90题' : `10/90题`) +const timeLeft = ref(Date.now() + 1000 * 60 * scaleTime) const questionList = ref([]) const questionNum = ref(0) const currentQuestion = ref({}) - +const questionTotal = ref(0) async function getAnswer() { const res = await getAnswerAPI(scaleId) questionList.value = res.data currentQuestion.value = questionList.value[0] + questionTotal.value = questionList.value.length } const preDisable = computed(() => { @@ -85,7 +113,12 @@ function previous() { } const nextDisable = computed(() => { - return questionNum.value === questionList.value.length - 1 + return questionNum.value === questionTotal.value +}) + +const finishNum = computed(() => { + const data = questionList.value.filter(item => item.answerId != null) + return data.length == questionTotal.value }) function next() { @@ -98,8 +131,15 @@ function next() { currentQuestion.value = questionList.value[questionNum.value] } -function handleChange() { +function handleAnswer(index) { + questionNum.value = index + currentQuestion.value = questionList.value[questionNum.value] +} +function handleChange(e) { + setTimeout(() => { + next() + }, 500) } onMounted(() => { @@ -113,7 +153,7 @@ async function submit() { } }) - const res = await addAnswerAPI(data) + const res = await addAnswerAPI({ scaleId, answerList: data }) if (res.code == 200) { ElMessage({ message: '提交成功', @@ -141,57 +181,84 @@ async function submit() { } } - .main { - width: 60%; - height: calc(100vh - 60px); + .content { + width: 1200px; margin: 0 auto; - .card { - height: 100%; + .aside { + width: 400px; + padding-top: 20px; + margin: 0 auto; - .card-header { - text-align: center; - font-size: 30px; - font-weight: bold; - line-height: 60px; - } + .aside-card { + width: 100%; + margin: 0 auto; - .subject-btn { - text-align: center; - } + .answer { + display: grid; + grid-template-columns: repeat(8, 1fr); - .submit-footer { - text-align: center; - - .submit-btn { - width: 200px; + .el-button { + margin: 7px; + } } } + } - .subject-content { - margin-left: 50px; - margin-top: 30px; - height: 400px; + .main { + width: 800px; + height: calc(100vh - 60px); + margin: 0 auto; - ::v-deep .el-radio-group { - display: block; - } + .card { + height: 100%; - ::v-deep .el-radio { - display: block; - margin: 10px; - } - - .subject-title { - color: #FF5A72; - font-size: 18px; + .card-header { + text-align: center; + font-size: 30px; font-weight: bold; + line-height: 60px; } - ::v-deep .el-radio__label { - font-size: 18px; - font-weight: bold; - padding-left: 8px; + .subject-btn { + text-align: center; + } + + .submit-footer { + text-align: center; + + .submit-btn { + width: 200px; + } + } + + .subject-content { + margin-left: 50px; + margin-top: 30px; + height: 400px; + + .subject-title { + text-align: center; + color: #F56C6C; + font-size: 30px; + font-weight: bold; + } + + ::v-deep(.el-radio-group) { + display: block; + } + + ::v-deep(.el-radio) { + display: block; + margin: 25px; + font-size: 25px; + } + + ::v-deep(.el-radio__label) { + font-size: 20px; + font-weight: bold; + padding-left: 20px; + } } } } diff --git a/src/views/ExamDetail/index.vue b/src/views/ExamDetail/index.vue new file mode 100644 index 0000000..368eb70 --- /dev/null +++ b/src/views/ExamDetail/index.vue @@ -0,0 +1,110 @@ + + + + + + + + 测评完成 + + + 总分:{{ des.totalScore }}分 + + + + + + {{ item.evalPropose }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/Login/index.vue b/src/views/Login/index.vue index c68fab4..42bb037 100644 --- a/src/views/Login/index.vue +++ b/src/views/Login/index.vue @@ -1,18 +1,21 @@ - + + + - 云舒 心理健康平台 + 云舒心理健康云平台 - + - + - + - 登录 + 登录 @@ -34,6 +37,8 @@ const loginForm = ref({ grantType: 'password' }) +const loading = ref(false) + const loginRules = ref({ username: [ { required: true, message: '请输入学号', trigger: 'blur' }, @@ -47,22 +52,19 @@ const formRef = ref(null) async function login() { formRef.value.validate(async (valid) => { if (valid) { + loading.value = true const res = await loginAPI(loginForm.value) - if (res.code == 200) { localStorage.setItem('token', res.data.access_token) router.push('/') } else { ElMessage.error(res.msg) } + loading.value = false } }) } - -onMounted(() => { - -})