学校端代码提交

This commit is contained in:
jiangzhe 2024-04-12 14:47:28 +08:00
parent f024aa2b52
commit bc7556bd4d
5 changed files with 90 additions and 52 deletions

View File

@ -23,4 +23,26 @@ export const getPublishAPI = () => {
return request({ return request({
url: '/web/scale/publish' url: '/web/scale/publish'
}) })
}
export const addRecordAPI = (record) => {
return request({
url: '/web/scale/record',
method: 'POST',
data: record
})
}
export const getAnswerAPI = (scaleId) => {
return request({
url: '/web/scale/answer/' + scaleId
})
}
export const addAnswerAPI = (answer) => {
return request({
url: '/web/scale/record/answer',
method: 'POST',
data: answer
})
} }

View File

@ -16,7 +16,7 @@ const router = createRouter({
component: ScaleList component: ScaleList
}, },
{ {
path: '/exam/:scaleId', path: '/exam',
component: Exam component: Exam
} }
], ],

View File

@ -18,7 +18,13 @@ http.interceptors.request.use(config => {
}, e => Promise.reject(e)) }, e => Promise.reject(e))
// axios响应式拦截器 // axios响应式拦截器
http.interceptors.response.use(res => res.data, e => { http.interceptors.response.use(res => {
if(res.data.code == 401) {
localStorage.removeItem('token')
window.location.href = '/login'
}
return res.data;
}, e => {
return Promise.reject(e) return Promise.reject(e)
}) })

View File

@ -8,17 +8,17 @@
<el-card class="card"> <el-card class="card">
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
SCL-90症状自评量表_专业焦虑与抑郁测试 {{ scaleName }}
</div> </div>
</template> </template>
<el-progress :percentage="10" :format="format" /> <el-progress :percentage="10" :format="format" />
<div class="subject-content"> <div class="subject-content">
<div class="subject-title">{{ questionNum + 1 + '、' + currentQuestion.question }}</div> <div class="subject-title">{{ currentQuestion.questionContent }}</div>
<el-radio-group v-model="currentQuestion.answer"> <el-radio-group v-model="currentQuestion.answerId" @change="handleChange">
<el-radio :value="item.value" v-for="item in currentQuestion.options" :key="item.id"> <el-radio :value="item.answerId" v-for="item in currentQuestion.answerList" :key="item.answerId">
{{ item.name }} {{ item.answerOption }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
@ -30,7 +30,7 @@
<ArrowLeft /> <ArrowLeft />
</el-icon> </el-icon>
</el-button> </el-button>
<el-button v-if="nextDisable" type="primary" size="large" @click="next"> <el-button v-if="nextDisable" type="primary" size="large" @click="submit">
提交<el-icon class="el-icon--right"> 提交<el-icon class="el-icon--right">
<ArrowRight /> <ArrowRight />
</el-icon> </el-icon>
@ -48,53 +48,28 @@
</template> </template>
<script setup> <script setup>
import { ref, computed } from 'vue' import { ref, computed, onMounted } from 'vue'
import {useRoute} from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { getAnswerAPI, addAnswerAPI } from '@/apis/user'
const route = useRoute() const route = useRoute()
console.log(route) const scaleId = route.query.scaleId
const scaleName = route.query.scaleName
const recordId = route.query.recordId
const router = useRouter()
const format = (percentage) => (percentage === 100 ? '90题' : `10/90题`) const format = (percentage) => (percentage === 100 ? '90题' : `10/90题`)
const questionList = ref([ const questionList = ref([])
{
id: 1,
question: '是否头疼',
options: [
{ id: 1, name: '没有', value: 1 },
{ id: 2, name: '很轻', value: 2 },
{ id: 3, name: '中等', value: 3 },
{ id: 4, name: '偏重', value: 4 },
{ id: 5, name: '严重', value: 5 },
{ id: 6, name: '一般般', value: 6 },
],
answer: null
},
{
id: 2,
question: '经常感到神经过敏、心中不踏实',
options: [
{ id: 1, name: '没有', value: 1 },
{ id: 2, name: '很轻', value: 2 },
{ id: 3, name: '中等', value: 3 },
{ id: 4, name: '偏重', value: 4 },
{ id: 5, name: '严重', value: 5 },
],
answer: null
},
{
id: 3,
question: '测试',
options: [
{ id: 1, name: '没有', value: 1 },
{ id: 2, name: '很轻', value: 2 }
],
answer: null
}
])
const currentQuestion = ref(questionList.value[0])
const questionNum = ref(0) const questionNum = ref(0)
const currentQuestion = ref({})
async function getAnswer() {
const res = await getAnswerAPI(scaleId)
questionList.value = res.data
currentQuestion.value = questionList.value[0]
}
const preDisable = computed(() => { const preDisable = computed(() => {
return questionNum.value === 0 return questionNum.value === 0
@ -122,6 +97,31 @@ function next() {
currentQuestion.value = questionList.value[questionNum.value] currentQuestion.value = questionList.value[questionNum.value]
} }
function handleChange() {
}
onMounted(() => {
getAnswer()
})
async function submit() {
const data = questionList.value.map(item => {
return {
recordId: recordId, answerId: item.answerId, questionId: item.questionId
}
})
const res = await addAnswerAPI(data)
if (res.code == 200) {
ElMessage({
message: '提交成功',
type: 'success'
})
router.replace({ path: '/' })
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -31,18 +31,28 @@
<script setup> <script setup>
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { getPublishAPI } from '@/apis/user' import { getPublishAPI, addRecordAPI } from '@/apis/user'
const router = useRouter() const router = useRouter()
const scaleList = ref([]) const scaleList = ref([])
let batchNo;
async function getScaleList() { async function getScaleList() {
const res = await getPublishAPI() const res = await getPublishAPI()
scaleList.value = res.data.scaleList scaleList.value = res.data.scaleList
batchNo = res.data.batchNo
} }
function gotoExam(item) { async function gotoExam(item) {
router.push(`/exam/${item.scaleId}`) const res = await addRecordAPI({ scaleId: item.scaleId, batchNo })
router.push({
path: '/exam',
query: {
scaleId: item.scaleId,
scaleName: item.scaleName,
recordId: res.data
}
})
} }
onMounted(() => { onMounted(() => {