feat: 心理健康报告

master
xjs 2025-04-08 18:02:59 +08:00
parent 19cba529b9
commit 5887cfaf5c
20 changed files with 943 additions and 55 deletions

View File

@ -16,7 +16,7 @@
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">性格测评报告</text>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">能力测评报告</text>
</template>
</Navbar>

View File

@ -1,25 +0,0 @@
<template>
<view class="rounded-full p-[14rpx] w-max bg-[#fff]">
<view class="w-[162rpx] h-[162rpx] custom-style"></view>
</view>
</template>
<script lang="ts" setup></script>
<style lang="scss" scoped>
.custom-style {
border: 10rpx dashed #00b281;
border-radius: 50%;
position: relative;
}
.custom-style::before {
content: '';
position: absolute;
top: 0;
left: 0;
blur: filter(10px);
width: 162rpx;
height: 162rpx;
}
</style>

View File

@ -0,0 +1,36 @@
<template>
<view class="mt-[30rpx] bg-white rounded-[20rpx] p-[30rpx]">
<TitleBar :title="title" />
<view v-for="(item, index) in items" :key="index" class="suggestion-item">
<view class="text-[32rpx]">{{ item.title }}</view>
<view class="text-[26rpx] font-400 mt-[10rpx]">{{ item.description }}</view>
</view>
</view>
</template>
<script lang="ts" setup>
import TitleBar from './TitleBar.vue'
defineProps({
items: {
type: Array<{ title: string; description: string }>,
default: () => [],
},
title: {
type: String,
default: '',
},
})
</script>
<style lang="scss" scoped>
.suggestion-item {
&:not(:last-child) {
margin-bottom: 50rpx;
}
&:first-child {
margin-top: 30rpx;
}
}
</style>

View File

@ -0,0 +1,63 @@
<template>
<view class="relative pt-[40rpx]">
<Dashboard class="absolute right-[38rpx] top-0" :score="score" :color="rules[level].color" />
<view class="bg-[#fff] rounded-[24rpx] p-[22rpx]">
<view class="mt-[30rpx]">
<text class="text-[48rpx] text-[#000] font-600">{{ tagName }}</text>
<!-- <view class="flex items-center text-[#999] text-[24rpx] mt-[20rpx]">
<view class="i-carbon-warning w-[24rpx] h-[24rpx]"></view>
<text class="text-[#999] ml-[10rpx]">状态很好哦继续保持轻松迎接高考吧</text>
</view> -->
<view class="mt-[58rpx]">
<ScoreCard :current-position="level" :rules="rules" />
</view>
<view class="relative mt-[68rpx] bg-[#F5FAFF]">
<image
src="https://api.static.ycymedu.com/src/images/home/test-icon.png"
mode="scaleToFill"
class="w-[180rpx] h-[52rpx] absolute top-[-9rpx] left-[20rpx]"
/>
<view class="px-[20rpx] pb-[20rpx] pt-[58rpx] text-[#333] text-[26rpx]">
{{ description }}
</view>
</view>
<view class="text-[#999] text-[24rpx] mt-[10rpx]">
{{ tip }}
</view>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
import Dashboard from '@/pages-evaluation-sub/evaluate/components/psychologicalReportItem/Dashboard.vue'
import ScoreCard from './psychologicalReportItem/ScoreCard.vue'
defineProps({
score: {
type: Number,
default: 0,
},
rules: {
type: Array<{ label: string; range: string; color: string }>,
default: () => [],
},
tip: {
type: String,
default: '结果只做参考,不能准确判断是否有焦虑症。',
},
level: {
type: Number,
default: 0,
},
description: {
type: String,
default: '',
},
tagName: {
type: String,
default: '',
},
})
</script>

View File

@ -0,0 +1,46 @@
<template>
<view class="flex flex-col bg-white rounded-[24rpx] p-[30rpx] gap-[40rpx]">
<view class="flex flex-col gap-[12rpx]">
<view class="flex items-center gap-[10rpx]">
<image
src="https://api.static.ycymedu.com/src/images/home/life-icon.png"
mode="scaleToFill"
class="w-[38rpx] h-[38rpx]"
/>
<text class="text-[32rpx] text-[#000]">生活建议</text>
</view>
<view class="text-[26rpx] text-[#666] font-400">
保持规律作息早睡早起避免熬夜 每天适当运动如散步跑步保持精力充沛
避免过度放松保持适度的学习节奏
</view>
</view>
<view class="flex flex-col gap-[12rpx]">
<view class="flex items-center gap-[10rpx]">
<image
src="https://api.static.ycymedu.com/src/images/home/diet-icon.png"
mode="scaleToFill"
class="w-[38rpx] h-[38rpx]"
/>
<text class="text-[32rpx] text-[#000]">饮食建议</text>
</view>
<view class="text-[26rpx] text-[#666] font-400">
保持规律作息早睡早起避免熬夜 每天适当运动如散步跑步保持精力充沛
避免过度放松保持适度的学习节奏
</view>
</view>
<view class="flex flex-col gap-[12rpx]">
<view class="flex items-center gap-[10rpx]">
<image
src="https://api.static.ycymedu.com/src/images/home/learn-icon.png"
mode="scaleToFill"
class="w-[38rpx] h-[38rpx]"
/>
<text class="text-[32rpx] text-[#000]">学习建议</text>
</view>
<view class="text-[26rpx] text-[#666] font-400">
保持规律作息早睡早起避免熬夜 每天适当运动如散步跑步保持精力充沛
避免过度放松保持适度的学习节奏
</view>
</view>
</view>
</template>

View File

@ -66,7 +66,7 @@ const updateChart = () => {
containLabel: true,
},
legend: {
data: ['我的数据', '平均数据'],
data: ['我的数据', '平均水平'],
right: 'auto',
left: 'center',
top: 0,
@ -80,7 +80,7 @@ const updateChart = () => {
{
type: 'category',
data: (props.echartData[1] as { name: string[] })?.name.map((item) =>
item.replace('智能', ''),
item.replace('智能', '').replace(/(.{2})/g, '$1\n'),
),
axisLine: {
lineStyle: {
@ -91,14 +91,6 @@ const updateChart = () => {
color: '#666',
fontSize: 12,
interval: 0,
rotate: 45,
formatter: function (value) {
//
if (value.length > 4) {
return value.replace('智能', '')
}
return value
},
},
axisTick: {
show: false,
@ -144,7 +136,7 @@ const updateChart = () => {
data: (props.echartData[1] as { value: number[] })?.value,
},
{
name: '平均数据',
name: '平均水平',
type: 'line',
smooth: true,
symbol: 'circle',

View File

@ -0,0 +1,58 @@
<template>
<view
class="rounded-full w-[162rpx] h-[162rpx] bg-[#fff] dashboard-wrapper flex items-center justify-center"
:style="{ '--current-color': color }"
>
<view class="w-[139rpx] h-[139rpx] custom-style flex items-center justify-center">
<view
v-for="i in 39"
:key="i"
class="tick"
:style="{
transform: `rotate(${i * 8 - 90}deg)`,
opacity: `${1 - Math.abs(i * 8 - 90) / 90}`,
}"
></view>
<view class="font-500 text-color">
<text :class="`${score > 99 ? 'text-[50rpx]' : 'text-[62rpx]'}`">{{ score }}</text>
<text class="text-[28rpx]"></text>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
defineProps({
color: {
type: String,
default: '#00b281',
},
score: {
type: Number,
default: 0,
},
})
</script>
<style lang="scss" scoped>
.custom-style {
border-radius: 50%;
position: relative;
}
.text-color {
color: var(--current-color);
container-type: inline-size;
white-space: nowrap;
}
.tick {
position: absolute;
top: 0;
left: 50%;
width: 4rpx;
height: 10rpx;
background-color: var(--current-color);
transform-origin: 0 67rpx;
}
</style>

View File

@ -0,0 +1,15 @@
<template>
<view class="bg-white mx-[24rpx] rounded-[20rpx] pb-[20rpx]">
<view class="px-[24rpx] h-[368rpx] z-1">
<LEchart ref="echart" :customStyle="`z-index:1;`"></LEchart>
</view>
</view>
</template>
<script lang="ts" setup>
import LEchart from '@/pages-evaluation-sub/uni_modules/lime-echart/components/l-echart/l-echart.vue'
const echarts = require('../../../uni_modules/lime-echart/static/echarts.min')
const echart = ref(null)
</script>
<script lang="scss" scoped></script>

View File

@ -0,0 +1,94 @@
<template>
<view
class="grid grid-cols-4 items-end gap-[6rpx] relative"
:style="`grid-template-columns: repeat(${rules.length},minmax(0,1fr))`"
>
<view v-for="(item, index) in rules" :key="index" class="">
<view
:class="['common-rectangle']"
:style="`height: ${24 + index * 10}rpx;background-color:${item.color}`"
></view>
<view
class="flex flex-col text-[24rpx] text-center"
:style="{ color: currentPosition === index ? item.color : '#999' }"
>
<text :class="currentPosition === index ? 'font-500' : ''">{{ item.label }}</text>
<view v-html="item.range" class="whitespace-nowrap"></view>
</view>
</view>
<view
:style="{
left: `${(currentPosition + 1 / 2) * (100 / rules.length)}%`,
top: `${currentPosition * -8 - 10}rpx`,
}"
class="current-flag-wrapper"
>
<view class="current-flag">
<view class="flag-text">当前</view>
<view class="flag-triangle"></view>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
defineProps<{
currentPosition: number // 0-3
rules: {
label: string
range: string
color: string
}[]
}>()
</script>
<style lang="scss" scoped>
.common-rectangle {
width: 100%;
position: relative;
border-radius: 8rpx;
clip-path: polygon(100% 0, 100% 0, 100% 100%, 0 100%, 0 10rpx);
margin-bottom: 6rpx;
}
.current-flag-wrapper {
position: absolute;
margin-bottom: 8rpx;
transition: left 0.3s ease;
transform: translateX(-50%);
}
.current-flag {
position: relative;
width: 82rpx;
height: 37rpx;
background-color: rgba(0, 0, 0, 0.6);
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
}
.flag-text {
color: #fff;
font-size: 22rpx;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
line-height: 2;
}
.flag-triangle {
position: absolute;
bottom: -8rpx;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 8rpx solid transparent;
border-right: 8rpx solid transparent;
border-top: 8rpx solid rgba(0, 0, 0, 0.6);
}
</style>

View File

@ -0,0 +1,86 @@
<route lang="json5" type="page">
{
style: {
navigationStyle: 'custom',
},
}
</route>
<template>
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">MHT心理健康自评</text>
</template>
</Navbar>
<view class="flex-1 overflow-auto pb-safe relative mx-[24rpx]">
<!-- 顶部卡片 -->
<view class="mt-[60rpx]">
<StatusCard />
</view>
<view class="mt-[30rpx]"></view>
</view>
</view>
</template>
<script setup lang="ts">
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
import StatusCard from '../components/StatusCard.vue'
import { getCustomScaleExplains } from '@/service/index/api'
const pageType = ref(0)
const pageId = ref(0)
const handleBack = () => {
uni.navigateBack()
}
const studyRecord = ref({
description: '',
title: '',
linChart: [],
reportItems: [],
hTag: '',
})
onLoad((options) => {
pageType.value = +options.type
pageId.value = options.id
getCustomScaleExplains({ CustomScaleId: pageId.value }).then((resp) => {
if (resp.code === 200) {
studyRecord.value = resp.result as {
description: string
title: string
linChart: any[]
reportItems: any[]
hTag: string
}
}
})
})
</script>
<style scoped lang="scss">
.custom-bg {
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
}
:deep(.icon-class) {
color: #fff !important;
}
.custom-border {
width: 162rpx;
height: 162rpx;
border-radius: 50%;
border: 6rpx dashed;
border-color: #05d69c transparent transparent transparent;
}
</style>

View File

@ -7,7 +7,7 @@
</route>
<template>
<scroll-view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
@ -20,22 +20,58 @@
</template>
</Navbar>
<view class="flex-1 overflow-auto pb-[30rpx] relative">
<view class="flex-1 overflow-auto pb-safe relative mx-[24rpx]">
<!-- 顶部卡片 -->
<view class="h-[772rpx] relative">
<Dashboard />
<view class="mt-[60rpx]">
<StatusCard
:score="score"
:rules="anxietyRules"
tip="结果只做参考,不能准确判断是否有焦虑症。"
:level="level"
:description="studyRecord.description"
:tagName="studyRecord.tagName"
/>
</view>
<view class="mt-[30rpx]">
<SuggestionCard />
</view>
</view>
</scroll-view>
</view>
</template>
<script setup lang="ts">
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
import Dashboard from '@/pages-evaluation-sub/evaluate/components/Dashboard.vue'
import StatusCard from '../components/StatusCard.vue'
import SuggestionCard from '../components/SuggestionCard.vue'
import { getAbilityDimension } from '@/service/index/api'
import { getCustomScaleExplains } from '@/service/index/api'
const pageType = ref(0)
const pageId = ref(0)
const anxietyRules = [
{
label: '正常范围',
range: '<50分',
color: '#00B281',
},
{
label: '轻度焦虑',
range: '50-59分',
color: '#F8B801',
},
{
label: '中度焦虑',
range: '60-69分',
color: '#F79C33',
},
{
label: '重度焦虑',
range: '≥70分',
color: '#F5663E',
},
]
const score = ref(0)
const level = ref(0)
const handleBack = () => {
uni.navigateBack()
@ -44,24 +80,37 @@ const handleBack = () => {
const studyRecord = ref({
description: '',
title: '',
linChart: [],
reportItems: [],
hTag: '',
result: '',
tagName: '',
})
const calcLevel = (val: string) => {
let _s = JSON.parse(val)
if (_s[0].Total >= 70) {
return 3
} else if (_s[0].Total >= 60) {
return 2
} else if (_s[0].Total >= 50) {
return 1
} else {
return 0
}
}
onLoad((options) => {
pageType.value = +options.type
pageId.value = options.id
getAbilityDimension({ ScaleId: pageId.value }).then((resp) => {
getCustomScaleExplains({ CustomScaleId: pageId.value }).then((resp) => {
if (resp.code === 200) {
studyRecord.value = resp.result as {
description: string
title: string
linChart: any[]
reportItems: any[]
hTag: string
result: string
tagName: string
}
level.value = calcLevel(studyRecord.value.result)
score.value = JSON.parse(studyRecord.value.result)[0].Total
}
})
})

View File

@ -0,0 +1,138 @@
<route lang="json5" type="page">
{
style: {
navigationStyle: 'custom',
},
}
</route>
<template>
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">SDS抑郁测评报告</text>
</template>
</Navbar>
<view class="flex-1 overflow-auto pb-safe relative mx-[24rpx]">
<!-- 顶部卡片 -->
<view class="mt-[60rpx]">
<StatusCard
:score="score"
:rules="depressionRules"
tip="结果只做参考,不能准确判断是否有抑郁症。"
:level="level"
:description="studyRecord.description"
:tagName="studyRecord.tagName"
/>
</view>
<view class="mt-[30rpx]">
<SuggestionCard />
</view>
</view>
</view>
</template>
<script setup lang="ts">
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
import StatusCard from '../components/StatusCard.vue'
import SuggestionCard from '../components/SuggestionCard.vue'
import { getCustomScaleExplains } from '@/service/index/api'
const pageType = ref(0)
const pageId = ref(0)
// 2
const depressionRules = [
{
label: '正常范围',
range: '<52分',
color: '#00B281',
},
{
label: '轻度抑郁',
range: '53-61分',
color: '#F8B801',
},
{
label: '中度抑郁',
range: '62-71分',
color: '#F79C33',
},
{
label: '重度抑郁',
range: '≥72分',
color: '#F5663E',
},
]
const handleBack = () => {
uni.navigateBack()
}
const studyRecord = ref({
description: '',
title: '',
result: '',
tagName: '',
total: '',
})
const calcLevel = (val: string) => {
let _s = +val
if (_s >= 72) {
return 3
} else if (_s >= 62) {
return 2
} else if (_s >= 53) {
return 1
} else {
return 0
}
}
const score = ref(0)
const level = ref(0)
onLoad((options) => {
pageType.value = +options.type
pageId.value = options.id
getCustomScaleExplains({ CustomScaleId: pageId.value }).then((resp) => {
if (resp.code === 200) {
studyRecord.value = resp.result as {
description: string
title: string
result: string
tagName: string
total: string
}
level.value = calcLevel(studyRecord.value.total)
score.value = JSON.parse(studyRecord.value.total)
}
})
})
</script>
<style scoped lang="scss">
.custom-bg {
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
}
:deep(.icon-class) {
color: #fff !important;
}
.custom-border {
width: 162rpx;
height: 162rpx;
border-radius: 50%;
border: 6rpx dashed;
border-color: #05d69c transparent transparent transparent;
}
</style>

View File

@ -0,0 +1,152 @@
<route lang="json5" type="page">
{
style: {
navigationStyle: 'custom',
},
}
</route>
<template>
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">学习技能报告</text>
</template>
</Navbar>
<view class="flex-1 overflow-auto pb-safe relative mx-[24rpx]">
<!-- 顶部卡片 -->
<view class="mt-[60rpx]">
<StatusCard
:score="score"
:rules="anxietyRules"
tip="测评结果只做参考。"
:level="level"
:description="studyRecord.description"
:tagName="studyRecord.tagName"
/>
</view>
<view>
<LearnSkillSuggestion
v-for="(item, index) in suggestions"
:key="index"
:items="item.items"
:title="item.title"
></LearnSkillSuggestion>
</view>
</view>
</view>
</template>
<script setup lang="ts">
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
import StatusCard from '../components/StatusCard.vue'
import LearnSkillSuggestion from '../components/LearnSkillSuggestion.vue'
import { getCustomScaleExplains } from '@/service/index/api'
const pageType = ref(0)
const pageId = ref(0)
const anxietyRules = [
{
label: '很差',
range: '≤80分',
color: '#F5663E',
},
{
label: '较差',
range: '81-104分',
color: '#F8B801',
},
{
label: '一般',
range: '105-136分',
color: '#F3A953',
},
{
label: '较好',
range: '137-160分',
color: '#55E5C5',
},
{
label: '优秀',
range: '≥161分',
color: '#00B281',
},
]
const score = ref(0)
const level = ref(0)
const handleBack = () => {
uni.navigateBack()
}
const studyRecord = ref({
description: '',
title: '',
result: '',
tagName: '',
suggestions: '',
})
const calcLevel = (val: string) => {
let _s = JSON.parse(val)
if (_s[0].Total >= 161) {
return 4
} else if (_s[0].Total >= 137) {
return 3
} else if (_s[0].Total >= 105) {
return 2
} else if (_s[0].Total >= 81) {
return 1
} else {
return 0
}
}
const suggestions = ref([])
onLoad((options) => {
pageType.value = +options.type
pageId.value = options.id
getCustomScaleExplains({ CustomScaleId: pageId.value }).then((resp) => {
if (resp.code === 200) {
studyRecord.value = resp.result as {
description: string
title: string
result: string
tagName: string
suggestions: string
}
level.value = calcLevel(studyRecord.value.result)
score.value = JSON.parse(studyRecord.value.result)[0].Total
suggestions.value = JSON.parse(studyRecord.value.suggestions).succestions
console.log(suggestions)
}
})
})
</script>
<style scoped lang="scss">
.custom-bg {
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
}
:deep(.icon-class) {
color: #fff !important;
}
.custom-border {
width: 162rpx;
height: 162rpx;
border-radius: 50%;
border: 6rpx dashed;
border-color: #05d69c transparent transparent transparent;
}
</style>

View File

@ -0,0 +1,135 @@
<route lang="json5" type="page">
{
style: {
navigationStyle: 'custom',
},
}
</route>
<template>
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">考试焦虑测评报告</text>
</template>
</Navbar>
<view class="flex-1 overflow-auto pb-safe relative mx-[24rpx]">
<!-- 顶部卡片 -->
<view class="mt-[60rpx]">
<StatusCard
:score="score"
:rules="anxietyRules"
tip="结果只做参考,不能准确判断是否有焦虑症。"
:level="level"
:description="studyRecord.description"
:tagName="studyRecord.tagName"
/>
</view>
<view class="mt-[30rpx]"></view>
</view>
</view>
</template>
<script setup lang="ts">
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
import StatusCard from '../components/StatusCard.vue'
import { getCustomScaleExplains } from '@/service/index/api'
const pageType = ref(0)
const pageId = ref(0)
const anxietyRules = [
{
label: '正常范围',
range: '<50分',
color: '#00B281',
itemColorName: 'green',
},
{
label: '轻度焦虑',
range: '50-59分',
color: '#F8B801',
itemColorName: 'yellow',
},
{
label: '中度焦虑',
range: '60-69分',
color: '#F79C33',
itemColorName: 'origin',
},
{
label: '重度焦虑',
range: '≥70分',
color: '#F5663E',
itemColorName: 'red',
},
]
const score = ref(0)
const level = ref(0)
const handleBack = () => {
uni.navigateBack()
}
const studyRecord = ref({
description: '',
title: '',
result: '',
tagName: '',
})
const calcLevel = (val: string) => {
let _s = JSON.parse(val)
if (_s[0].Total >= 70) {
return 3
} else if (_s[0].Total >= 60) {
return 2
} else if (_s[0].Total >= 50) {
return 1
} else {
return 0
}
}
onLoad((options) => {
pageType.value = +options.type
pageId.value = options.id
getCustomScaleExplains({ CustomScaleId: pageId.value }).then((resp) => {
if (resp.code === 200) {
studyRecord.value = resp.result as {
description: string
title: string
result: string
tagName: string
}
level.value = calcLevel(studyRecord.value.result)
score.value = JSON.parse(studyRecord.value.result)[0].Total
}
})
})
</script>
<style scoped lang="scss">
.custom-bg {
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
}
:deep(.icon-class) {
color: #fff !important;
}
.custom-border {
width: 162rpx;
height: 162rpx;
border-radius: 50%;
border: 6rpx dashed;
border-color: #05d69c transparent transparent transparent;
}
</style>

View File

@ -5,7 +5,7 @@
v-for="item in menus"
:key="item.key"
:class="[
'flex items-center view-block pl-[32rpx] h-[96rpx] text-[28rpx] font-semibold',
'flex items-center view-block pl-[32rpx] min-h-[96rpx] h-[96rpx] text-[28rpx] text-[#666] font-semibold',
currentMenuObj?.key === item.key ? 'active' : '',
]"
@click="changeMenu(item)"

View File

@ -37,19 +37,19 @@
class="h-full"
:type="1050"
:keyword="searchValue"
v-if="currentTab === 0"
v-show="currentTab === 0"
></MajorList>
<MajorList
class="h-full"
:type="1070"
:keyword="searchValue"
v-if="currentTab === 1"
v-show="currentTab === 1"
></MajorList>
<MajorList
class="h-full"
:type="1060"
:keyword="searchValue"
v-if="currentTab === 2"
v-show="currentTab === 2"
></MajorList>
</view>
</view>

View File

@ -59,6 +59,19 @@ const toDetail = (item: any) => {
url = `/pages-evaluation-sub/evaluate/academicReport/opinionAboutReport?id=${item.reportsId}&type=${item.type}`
} else if (item.type === 6) {
url = `/pages-evaluation-sub/evaluate/psychologicalReport/sasReport?id=${item.reportsId}&type=${item.type}`
} else if (item.type === 7) {
url = `/pages-evaluation-sub/evaluate/psychologicalReport/sdsReport?id=${item.reportsId}&type=${item.type}`
} else if (item.type === 9) {
// url = `/pages-evaluation-sub/evaluate/psychologicalReport/mhtReport?id=${item.reportsId}&type=${item.type}`
uni.showToast({
title: '开发中....',
icon: 'none',
})
return
} else if (item.type === 4) {
url = `/pages-evaluation-sub/evaluate/studyReport/LearnStudyReport?id=${item.reportsId}&type=${item.type}`
} else if (item.type === 5) {
url = `/pages-evaluation-sub/evaluate/studyReport/LearnSkillReport?id=${item.reportsId}&type=${item.type}`
} else {
uni.showToast({
title: '开发中....',

View File

@ -371,12 +371,40 @@
"navigationStyle": "custom"
}
},
{
"path": "evaluate/psychologicalReport/mhtReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "evaluate/psychologicalReport/sasReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "evaluate/psychologicalReport/sdsReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "evaluate/studyReport/LearnSkillReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "evaluate/studyReport/LearnStudyReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
}
]
},

View File

@ -449,3 +449,7 @@ export const downloadPDF = (params: { id: number; location: string }) => {
export const getBatchDynamicData = (params: { LocationCode: string; Course: string }) => {
return http.get('/api/busBatchBase/batch', params)
}
export const getCustomScaleExplains = (params: { CustomScaleId: number }) => {
return http.get('/api/busScale/GetCustomScaleExplains', params)
}

View File

@ -43,7 +43,11 @@ interface NavigateToOptions {
"/pages-evaluation-sub/evaluate/academicReport/characterReport" |
"/pages-evaluation-sub/evaluate/academicReport/interestReport" |
"/pages-evaluation-sub/evaluate/academicReport/opinionAboutReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/mhtReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/sasReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/sdsReport" |
"/pages-evaluation-sub/evaluate/studyReport/LearnSkillReport" |
"/pages-evaluation-sub/evaluate/studyReport/LearnStudyReport" |
"/aiService-sub/index/index";
}
interface RedirectToOptions extends NavigateToOptions {}