feat: 测评报告页面学习报告编写中
|
|
@ -20,7 +20,7 @@
|
||||||
<!-- 左侧区域 -->
|
<!-- 左侧区域 -->
|
||||||
<view class="navbar-left" @click="handleClickLeft">
|
<view class="navbar-left" @click="handleClickLeft">
|
||||||
<view v-if="leftArrow" class="back-icon">
|
<view v-if="leftArrow" class="back-icon">
|
||||||
<view class="i-carbon-chevron-left text-[48rpx] text-[#333] font-semibold" />
|
<view class="i-carbon-chevron-left text-[48rpx] text-[#333] font-semibold icon-class" />
|
||||||
</view>
|
</view>
|
||||||
<slot name="left"></slot>
|
<slot name="left"></slot>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -190,14 +190,7 @@ const handleClickLeft = () => {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'iconfont';
|
|
||||||
src: url('data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAAKYAAsAAAAABlAAAAJMAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCcApcdgE2AiQDCAsGAAQgBYRnBzYbmQXIHpIkBQQKkYCABBEPz2/t/XN3twEbowBkQTxQEQ1RKaKSxEOi0agkJKF5Qvj/f037IFKwlZ2dWU2tJu0EhPwHkBwgOVAclKcvAQpI/v/fz/08XECy+YBymmPQiwIcSmhAY4uSFcgJ+IaxC1zCYwLtRjWSnZ2rGgQWBowLxCPrVBBYllQqNTQ0VISaBXEHtTRNUwW4jb4f/xYEC0kqMzDx6CGrQuKXxKc6Zf7POYQgQHs5kIwjYwEoxK3G/DpRwbi0dlNwKKjAL4lf6vw/R2zVWvTPIwuiCnp2wCRUZ3yJX5pJFVDfByyAFR2AblMAX/OR3t7+zOJi8GyyfzC1uQXLZvtnk/0zyfTy+PvH0/Xp5OzR98/H797/+/fDu3d/3739+/fd+/+nmxvLc5vrS+sry2vz84tLs9Mzc4vzs9NTM/Ozc1OzM3MzU/Mz0wvTU4vTk0tTE8uTEyuT4yv/G0E3XUxv7wwNbu/s9G8fbO9v7+3sb+3ubW4dbO4dbO3vbu4dbO3JzqPFtRE4gEGAX0NBkL+hpCZALkEp5FKUQqE0NHlXJIGrDNAOcEQBCHU+kXT5QNblC7kEv1EK9Y9SB/8o7YYu2m0YXrJLouNIjQJhH+QbVkVZrUQ+YuqzUJdzxPMHhdIj0+hg4o0D8ogj5r5bSoQUxjADz+A8hBDQFEYwh3mommXTul7Vm5ZtqAqJHIdoKCDYDyQ3mCqUG1YKn5+C0s0yiJ/qKVAQedKAhg6Y3mEHJBQaWKnvLVMiiEIxGAY8Aw6HIAhAJmEIzIIOUjLTTAB1taL1QvNq+fYN7QDjcc2okeioaOmy5LFXt3QAAAAA')
|
|
||||||
format('woff2');
|
|
||||||
}
|
|
||||||
|
|
||||||
.back-text {
|
.back-text {
|
||||||
font-family: 'iconfont' !important;
|
|
||||||
font-size: 48rpx;
|
font-size: 48rpx;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,249 @@
|
||||||
|
<route lang="json5" type="page">
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
navigationStyle: 'custom',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<scroll-view :scroll-y="true" class="flex flex-col h-screen relative">
|
||||||
|
<Navbar
|
||||||
|
safeAreaInsetTop
|
||||||
|
:bordered="false"
|
||||||
|
leftArrow
|
||||||
|
@clickLeft="handleBack"
|
||||||
|
bg-color="transparent"
|
||||||
|
>
|
||||||
|
<template #title>
|
||||||
|
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">{{ pageName }}</text>
|
||||||
|
</template>
|
||||||
|
</Navbar>
|
||||||
|
<view class="h-full w-full custom-bg absolute top-0 left-0 -z-1"></view>
|
||||||
|
|
||||||
|
<view class="flex-1 overflow-auto pb-[30rpx] relative">
|
||||||
|
<!-- 顶部卡片 -->
|
||||||
|
<view class="flex flex-col pt-[32rpx] px-[84rpx] h-[244rpx] mb-[-148rpx]">
|
||||||
|
<image src="/static/images/evaluate/bg.png" class="header-bg" />
|
||||||
|
<text class="text-[#333] text-[28rpx] mb-[14rpx] z-2">您的兴趣类型为</text>
|
||||||
|
<text class="text-[#117CFC] text-[36rpx] z-2">{{ studyRecord.title }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 雷达图占位 -->
|
||||||
|
|
||||||
|
<InterestRadar :picData="studyRecord.picCharts" />
|
||||||
|
|
||||||
|
<!-- 类型说明 -->
|
||||||
|
<TypeDetail :reportItems="studyRecord.reportItems" />
|
||||||
|
|
||||||
|
<!-- 适合的岗位领域 -->
|
||||||
|
<DependenciesChart />
|
||||||
|
|
||||||
|
<!-- 适合职业 -->
|
||||||
|
<view class="suitable-careers mx-[30rpx] mt-[30rpx] bg-white rounded-[20rpx] p-[30rpx]">
|
||||||
|
<view class="text-center mb-[30rpx]">
|
||||||
|
<text class="text-[32rpx] font-bold relative inline-block pb-[10rpx]">
|
||||||
|
适合职业
|
||||||
|
<view
|
||||||
|
class="absolute bottom-0 left-1/2 transform -translate-x-1/2 w-[80rpx] h-[6rpx] bg-[#117CFC] rounded-full"
|
||||||
|
></view>
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="career-details mb-[20rpx]">
|
||||||
|
<text class="text-[28rpx] font-bold mb-[15rpx] block">I 适合职业</text>
|
||||||
|
<text class="text-[26rpx] text-[#666] leading-[40rpx]">
|
||||||
|
机械、电气、电子工程师、各类技术专家和技师、计算机软件、系统集成专业人员等;专职研究、金融工作者、财务顾问、经济学研究者等;银行、商贸、产品代理商(年历产品为主)等、警察、侦探、法官工作者、策展、导游等、飞行员、高级厨师等等。
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="career-table">
|
||||||
|
<view class="table-row flex border-b border-[#eee] py-[20rpx]">
|
||||||
|
<text class="w-[100rpx] text-center font-bold">专业大类</text>
|
||||||
|
<text class="flex-1 text-center font-bold">专业类</text>
|
||||||
|
<text class="flex-1 text-center font-bold">专业名称</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="table-row flex border-b border-[#eee] py-[20rpx]">
|
||||||
|
<text class="w-[100rpx] text-center">医学</text>
|
||||||
|
<text class="flex-1 text-center">中医学</text>
|
||||||
|
<text class="flex-1 text-center">中医学专业</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="table-row flex border-b border-[#eee] py-[20rpx]">
|
||||||
|
<text class="w-[100rpx] text-center">医学</text>
|
||||||
|
<text class="flex-1 text-center">中医学</text>
|
||||||
|
<text class="flex-1 text-center">中医学专业</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="table-row flex border-b border-[#eee] py-[20rpx]">
|
||||||
|
<text class="w-[100rpx] text-center">医学</text>
|
||||||
|
<text class="flex-1 text-center">健康管理与促进</text>
|
||||||
|
<text class="flex-1 text-center">心理健康</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="table-row flex border-b border-[#eee] py-[20rpx]">
|
||||||
|
<text class="w-[100rpx] text-center">医学</text>
|
||||||
|
<text class="flex-1 text-center">公共卫生与预防</text>
|
||||||
|
<text class="flex-1 text-center">中医养生保健</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 兴趣分析与代表人物 -->
|
||||||
|
<InterestingThings />
|
||||||
|
|
||||||
|
<!-- 底部AI智能顾问 -->
|
||||||
|
<view class="ai-assistant mt-[20rpx] mb-[10rpx] flex items-center justify-center">
|
||||||
|
<image src="" class="w-[32rpx] h-[32rpx] mr-[10rpx]"></image>
|
||||||
|
<text class="text-[#117CFC] text-[26rpx]">智能AI顾问</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import Navbar from '@/pages-evaluation-sub/components/navbar/Navbar.vue'
|
||||||
|
import TypeDetail from '../components/TypeDetail.vue'
|
||||||
|
import InterestRadar from '../components/interestChart/InterestRadar.vue'
|
||||||
|
|
||||||
|
import { getHollandDimensionInfo } from '@/service/index/api'
|
||||||
|
import InterestingThings from '../components/InterestingThings.vue'
|
||||||
|
import DependenciesChart from '../components/interestChart/DependenciesChart.vue'
|
||||||
|
|
||||||
|
const pageType = ref(0)
|
||||||
|
const pageId = ref(0)
|
||||||
|
const pageName = computed(() => {
|
||||||
|
// type=0 兴趣测评报告
|
||||||
|
// =1 性格测评报告
|
||||||
|
// =2 能力测评
|
||||||
|
// =3 学生考试考虑
|
||||||
|
// =4 学习风格
|
||||||
|
// =5 学习技能
|
||||||
|
// =6 SAS
|
||||||
|
// =7 SDS
|
||||||
|
// =8 SCL-90
|
||||||
|
// =9 MHT
|
||||||
|
/// =-1 价值观
|
||||||
|
/// =-2 留学咨询
|
||||||
|
let title = ''
|
||||||
|
switch (pageType.value) {
|
||||||
|
case 0:
|
||||||
|
title = '兴趣测评报告'
|
||||||
|
break
|
||||||
|
case 1:
|
||||||
|
title = '性格测评报告'
|
||||||
|
break
|
||||||
|
case 2:
|
||||||
|
title = '能力测评'
|
||||||
|
break
|
||||||
|
case 3:
|
||||||
|
title = '学生考试考虑'
|
||||||
|
break
|
||||||
|
case 4:
|
||||||
|
title = '学习风格'
|
||||||
|
break
|
||||||
|
case 5:
|
||||||
|
title = '学习技能'
|
||||||
|
break
|
||||||
|
case 6:
|
||||||
|
title = 'SAS'
|
||||||
|
break
|
||||||
|
case 7:
|
||||||
|
title = 'SDS'
|
||||||
|
break
|
||||||
|
case 8:
|
||||||
|
title = 'SCL-90'
|
||||||
|
break
|
||||||
|
case 9:
|
||||||
|
title = 'MHT'
|
||||||
|
break
|
||||||
|
case -1:
|
||||||
|
title = '价值观'
|
||||||
|
break
|
||||||
|
case -2:
|
||||||
|
title = '留学咨询'
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
title = '学术报告'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return title
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleBack = () => {
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
|
||||||
|
const studyRecord = ref({ description: '', title: '', picCharts: {}, reportItems: [] })
|
||||||
|
const getHollandDimension = () => {
|
||||||
|
getHollandDimensionInfo({ ScaleId: pageId.value.toString() }).then((resp) => {
|
||||||
|
if (resp.code === 200) {
|
||||||
|
studyRecord.value = resp.result as {
|
||||||
|
description: string
|
||||||
|
title: string
|
||||||
|
picCharts: any
|
||||||
|
reportItems: any[]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const fetchUrl = (type: number) => {
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
getHollandDimension()
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad((options) => {
|
||||||
|
pageType.value = +options.type
|
||||||
|
pageId.value = options.id
|
||||||
|
|
||||||
|
fetchUrl(pageType.value)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.custom-bg {
|
||||||
|
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
|
||||||
|
}
|
||||||
|
:deep(.icon-class) {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-bg {
|
||||||
|
width: calc(100% - 80rpx);
|
||||||
|
height: 244rpx;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 40rpx;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type-tag {
|
||||||
|
font-size: 24rpx;
|
||||||
|
min-width: 40rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.position-tag {
|
||||||
|
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
|
||||||
|
font-size: 26rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-row {
|
||||||
|
align-items: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-item image {
|
||||||
|
border: 4rpx solid #fff;
|
||||||
|
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
<template>
|
||||||
|
<view class="interest-analysis mx-[30rpx] mt-[30rpx] bg-white rounded-[20rpx] p-[30rpx]">
|
||||||
|
<view class="text-center mb-[30rpx]">
|
||||||
|
<text class="text-[32rpx] font-bold relative inline-block pb-[10rpx]">
|
||||||
|
兴趣分析与代表人物
|
||||||
|
<view
|
||||||
|
class="absolute bottom-0 left-1/2 transform -translate-x-1/2 w-[80rpx] h-[6rpx] bg-[#117CFC] rounded-full"
|
||||||
|
></view>
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<text class="text-[26rpx] text-[#666] leading-[40rpx] mb-[30rpx] block">
|
||||||
|
你往往意识现实事物的价值,区分高低,做事诚实,较为谦逊,善表达,描写详尽,不偏激,不自作多情,善察言观色,重视自我生活中细节与感官享受,通过分析思考的方式生活,理解不顾情面,不暧昧含糊,创新力不高,高有情感无法用语言表达,真实客观,情绪波动大,较冲动,不愿从俗排挤,不存野心社会竞争中,不敏感,情绪平稳,善事工作者自然人。事件记忆能力好,为人好好,热情,开朗,善良,敢为人先,他人友好,理解他人生活,好奇心强,对事物有兴趣,通常对工具和机器感兴趣,聚焦,毅力旺盛,客观理性,好又好,好心肠,友善,表达感谢,美言赞扬,看心情,贴心咨询,有爱,臣俯首,温和,善良,耐心,贴心,和气待人。
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<view class="avatars-list flex justify-around">
|
||||||
|
<view class="avatar-item flex flex-col items-center">
|
||||||
|
<image src="" class="w-[120rpx] h-[120rpx] rounded-full" mode="aspectFill"></image>
|
||||||
|
<text class="mt-[10rpx] text-[26rpx]">刘亦菲</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="avatar-item flex flex-col items-center">
|
||||||
|
<image src="" class="w-[120rpx] h-[120rpx] rounded-full" mode="aspectFill"></image>
|
||||||
|
<text class="mt-[10rpx] text-[26rpx]">谭咏麟</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="avatar-item flex flex-col items-center">
|
||||||
|
<image src="" class="w-[120rpx] h-[120rpx] rounded-full" mode="aspectFill"></image>
|
||||||
|
<text class="mt-[10rpx] text-[26rpx]">毕加索</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="avatar-item flex flex-col items-center">
|
||||||
|
<image src="" class="w-[120rpx] h-[120rpx] rounded-full" mode="aspectFill"></image>
|
||||||
|
<text class="mt-[10rpx] text-[26rpx]">李白</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup></script>
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
<template>
|
||||||
|
<view
|
||||||
|
class="text-[26rpx] text-[#000] mx-[24rpx] bg-[#fff] flex flex-col px-[20rpx] gap-[10rpx] pb-[20rpx] custom-class"
|
||||||
|
>
|
||||||
|
<view class="flex gap-[10rpx] w-full">
|
||||||
|
<view class="w-[94rpx] py-[12rpx] bg-color text-center">类型</view>
|
||||||
|
<view class="py-[12rpx] text-center bg-color flex-1">性格特点</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex gap-[10rpx] w-full" v-for="(item, index) in reportItems" :key="index">
|
||||||
|
<view class="w-[94rpx] py-[12rpx] bg-color text-center">
|
||||||
|
<view>{{ item.tag }}</view>
|
||||||
|
<view>{{ item.title }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="py-[22rpx] px-[14rpx] text-start bg-color flex-1">{{ item.resolving }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
const props = defineProps({
|
||||||
|
reportItems: {
|
||||||
|
type: Array<any>,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bg-color {
|
||||||
|
background-color: #f5faff;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-class {
|
||||||
|
border-radius: 0 0 20rpx 20rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,129 @@
|
||||||
|
<template>
|
||||||
|
<view class="suitable-positions mx-[30rpx] mt-[30rpx] bg-white rounded-[20rpx] p-[30rpx]">
|
||||||
|
<view class="text-center mb-[24rpx]">
|
||||||
|
<view class="text-[32rpx] font-bold relative inline-flex pb-[10rpx] items-center">
|
||||||
|
<view class="i-carbon-flash-filled h-[23rpx] w-[17rpx] text-[#1880FC]"></view>
|
||||||
|
<text class="text-[#1880FC] text-[36rpx] font-bold">适合的岗位领域</text>
|
||||||
|
<view class="i-carbon-flash-filled h-[23rpx] w-[17rpx] text-[#1880FC]"></view>
|
||||||
|
<view
|
||||||
|
class="absolute bottom-0 left-1/2 transform -translate-x-1/2 w-full h-[6rpx] bg-[#cce3fc] rounded-full title-bar"
|
||||||
|
></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<LEchart ref="echart" class="h-[415rpx] w-full"></LEchart>
|
||||||
|
</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)
|
||||||
|
const props = defineProps({
|
||||||
|
chartData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => ['社会型', '研究型', '企业型', '艺术型', '常规型', '现实型'],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
onMounted(() => {
|
||||||
|
echart.value.init(echarts, (chart) => {
|
||||||
|
let option = {
|
||||||
|
tooltip: {},
|
||||||
|
animationDurationUpdate: 1500,
|
||||||
|
animationEasingUpdate: 'quinticInOut',
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'graph',
|
||||||
|
layout: 'none',
|
||||||
|
symbolSize: 50,
|
||||||
|
roam: true,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
edgeSymbol: ['circle', 'arrow'],
|
||||||
|
edgeSymbolSize: [4, 10],
|
||||||
|
edgeLabel: {
|
||||||
|
fontSize: 20,
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
name: '节点1',
|
||||||
|
x: 300,
|
||||||
|
y: 300,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '节点2',
|
||||||
|
x: 800,
|
||||||
|
y: 300,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '节点3',
|
||||||
|
x: 550,
|
||||||
|
y: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '节点4',
|
||||||
|
x: 550,
|
||||||
|
y: 500,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// links: [],
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
source: 0,
|
||||||
|
target: 1,
|
||||||
|
symbolSize: [5, 20],
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
width: 5,
|
||||||
|
curveness: 0.2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '节点2',
|
||||||
|
target: '节点1',
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
curveness: 0.2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '节点1',
|
||||||
|
target: '节点3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '节点2',
|
||||||
|
target: '节点3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '节点2',
|
||||||
|
target: '节点4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '节点1',
|
||||||
|
target: '节点4',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
lineStyle: {
|
||||||
|
opacity: 0.9,
|
||||||
|
width: 2,
|
||||||
|
curveness: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
chart.setOption(option)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.title-bar {
|
||||||
|
transform: translateX(-50%) skewX(-20deg);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
<template>
|
||||||
|
<view
|
||||||
|
class="radar-chart-placeholder mx-[24rpx] bg-white chart-class h-[500rpx] flex items-center justify-center"
|
||||||
|
>
|
||||||
|
<LEchart ref="echart" class="h-[415rpx] w-full"></LEchart>
|
||||||
|
</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)
|
||||||
|
const props = defineProps({
|
||||||
|
picData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({
|
||||||
|
indicator: [],
|
||||||
|
radars: [],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// 处理标签名称的映射
|
||||||
|
const nameMap: Record<string, string> = {
|
||||||
|
A: '艺术型(A)',
|
||||||
|
R: '现实型(R)',
|
||||||
|
I: '研究型(I)',
|
||||||
|
S: '社会型(S)',
|
||||||
|
E: '企业型(E)',
|
||||||
|
C: '常规型(C)',
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换 indicator 数据
|
||||||
|
const formatIndicator = computed(() => {
|
||||||
|
return props.picData.indicator.map((item) => ({
|
||||||
|
name: nameMap[item.name] || item.name,
|
||||||
|
max: item.max,
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.picData,
|
||||||
|
(newV) => {
|
||||||
|
if (newV.radars.length > 0) {
|
||||||
|
echart.value.init(echarts, (chart) => {
|
||||||
|
let option = {
|
||||||
|
legend: {
|
||||||
|
show: false,
|
||||||
|
data: ['Allocated Budget', 'Actual Spending'],
|
||||||
|
},
|
||||||
|
radar: {
|
||||||
|
indicator: formatIndicator.value,
|
||||||
|
splitArea: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#999',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#999',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '职业兴趣评测',
|
||||||
|
type: 'radar',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
value: props.picData.radars,
|
||||||
|
name: '测评结果',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#1580FF',
|
||||||
|
},
|
||||||
|
areaStyle: {
|
||||||
|
color: 'rgba(21,128,255,0.2)',
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
width: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
chart.setOption(option)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.chart-class {
|
||||||
|
border-radius: 20rpx 20rpx 0 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -128,6 +128,11 @@ const handleCheckChange = (value: any[]) => {
|
||||||
} else {
|
} else {
|
||||||
answerMap.set(_type, { name: _name, value: value.length })
|
answerMap.set(_type, { name: _name, value: value.length })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (questionType.value === 0) {
|
||||||
|
// 单选题就点完跳下一题
|
||||||
|
handleNextQuestion()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 当前显示的卡片索引
|
// 当前显示的卡片索引
|
||||||
const currentIndex = ref(0)
|
const currentIndex = ref(0)
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,12 @@
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8] h-screen">
|
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8] h-screen">
|
||||||
<view class="item-wrapper" v-for="(item, index) in appointList" :key="index">
|
<view class="px-[32rpx] mt-[32rpx] flex flex-col gap-[16rpx]">
|
||||||
<view class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx] items-end">
|
<view
|
||||||
|
class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx] items-end"
|
||||||
|
v-for="(item, index) in appointList"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
<view class="flex flex-col gap-[14rpx]">
|
<view class="flex flex-col gap-[14rpx]">
|
||||||
<text class="text-[#303030] text-[32rpx] font-semibold">
|
<text class="text-[#303030] text-[32rpx] font-semibold">
|
||||||
{{ item.sIdName }}
|
{{ item.sIdName }}
|
||||||
|
|
@ -83,10 +87,6 @@ const handleDelete = (item, index) => {
|
||||||
color: #1580ff;
|
color: #1580ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-wrapper {
|
|
||||||
padding: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wish-border {
|
.wish-border {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
|
|
|
||||||
|
|
@ -8,30 +8,50 @@
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8] h-screen">
|
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8] h-screen">
|
||||||
<view class="item-wrapper" v-for="(item, index) in list" :key="index">
|
<view class="px-[32rpx] mt-[32rpx] flex flex-col gap-[16rpx]">
|
||||||
<view class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx]">
|
<view
|
||||||
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
|
class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx]"
|
||||||
|
@click="toDetail(item)"
|
||||||
|
>
|
||||||
<view class="flex flex-col gap-[14rpx]">
|
<view class="flex flex-col gap-[14rpx]">
|
||||||
<text class="text-[#303030] text-[32rpx] font-semibold">
|
<text class="text-[#303030] text-[32rpx] font-semibold">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</text>
|
</text>
|
||||||
<text class="text-[22rpx] text-[#303030]">{{ item.createTime || '时间消失了' }}</text>
|
<text class="text-[22rpx] text-[#303030]">{{ item.createTime || '时间消失了' }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex flex-col justify-between items-end">
|
|
||||||
<view class="i-carbon-trash-can" @click="handleDelete(item, index)"></view>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { deleteWishList, getMyBusReports } from '@/service/index/api'
|
import { getMyBusReports } from '@/service/index/api'
|
||||||
import { useUserStore } from '@/store'
|
import { useUserStore } from '@/store'
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
|
||||||
const list = ref([])
|
const list = ref([])
|
||||||
|
|
||||||
|
const toDetail = (item: any) => {
|
||||||
|
// type=0 兴趣测评报告
|
||||||
|
// =1 性格测评报告
|
||||||
|
// =2 能力测评
|
||||||
|
// =3 学生考试考虑
|
||||||
|
// =4 学习风格
|
||||||
|
// =5 学习技能
|
||||||
|
// =6 SAS
|
||||||
|
// =7 SDS
|
||||||
|
// =8 SCL-90
|
||||||
|
// =9 MHT
|
||||||
|
/// =-1 价值观
|
||||||
|
/// =-2 留学咨询
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages-evaluation-sub/evaluate/academicReport/index?id=${item.reportsId}&type=${item.type}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onLoad(() => {
|
onLoad(() => {
|
||||||
getMyBusReports({ CustomId: userStore.userInfo?.estimatedAchievement.wxId }).then((res) => {
|
getMyBusReports({ CustomId: userStore.userInfo?.estimatedAchievement.wxId }).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
|
|
@ -39,22 +59,9 @@ onLoad(() => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleDelete = (item, index) => {
|
|
||||||
deleteWishList({ id: item.vId }).then((res) => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
list.value.splice(index, 1)
|
|
||||||
uni.showToast({ title: '删除成功' })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.item-wrapper {
|
|
||||||
padding: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wish-border {
|
.wish-border {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,12 @@
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8]">
|
<scroll-view scroll-y class="pb-safe bg-[#f8f8f8]">
|
||||||
<view class="item-wrapper" v-for="(item, index) in wishList" :key="index">
|
<view class="px-[32rpx] mt-[32rpx] flex flex-col gap-[16rpx]">
|
||||||
<view class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx]">
|
<view
|
||||||
|
class="flex gap-[24rpx] wish-border justify-between p-[32rpx] rounded-[8rpx]"
|
||||||
|
v-for="(item, index) in wishList"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
<view>
|
<view>
|
||||||
<view class="flex gap-[18rpx] items-center">
|
<view class="flex gap-[18rpx] items-center">
|
||||||
<text class="text-[#303030] text-[32rpx] font-semibold">{{ item.tableName }}</text>
|
<text class="text-[#303030] text-[32rpx] font-semibold">{{ item.tableName }}</text>
|
||||||
|
|
@ -108,10 +112,6 @@ const handleDownload = (item) => {
|
||||||
color: #1580ff;
|
color: #1580ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-wrapper {
|
|
||||||
padding: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wish-border {
|
.wish-border {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
|
|
|
||||||
|
|
@ -346,6 +346,13 @@
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "evaluate/academicReport/index",
|
||||||
|
"type": "page",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
>
|
>
|
||||||
<view class="flex flex-col items-center gap-[16rpx]" @click="goWishList">
|
<view class="flex flex-col items-center gap-[16rpx]" @click="goWishList">
|
||||||
<image
|
<image
|
||||||
src="@/pages-sub/static/images/ucenter/wish-list.png"
|
src="/static/images/ucenter/wish-list.png"
|
||||||
class="w-[51rpx] h-[51rpx]"
|
class="w-[51rpx] h-[51rpx]"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
/>
|
/>
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="flex flex-col items-center gap-[16rpx]" @click="goEvaluate">
|
<view class="flex flex-col items-center gap-[16rpx]" @click="goEvaluate">
|
||||||
<image
|
<image
|
||||||
src="@/pages-sub/static/images/ucenter/evaluation-list.png"
|
src="/static/images/ucenter/evaluation-list.png"
|
||||||
class="w-[51rpx] h-[51rpx]"
|
class="w-[51rpx] h-[51rpx]"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
/>
|
/>
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="flex flex-col items-center gap-[16rpx]" @click="goStar">
|
<view class="flex flex-col items-center gap-[16rpx]" @click="goStar">
|
||||||
<image
|
<image
|
||||||
src="@/pages-sub/static/images/ucenter/star.png"
|
src="/static/images/ucenter/star.png"
|
||||||
class="w-[51rpx] h-[51rpx]"
|
class="w-[51rpx] h-[51rpx]"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -409,3 +409,7 @@ export const getMyBusReports = (params: { CustomId: number }) => {
|
||||||
export const deleteMyAppointment = (params: { id: number }) => {
|
export const deleteMyAppointment = (params: { id: number }) => {
|
||||||
return http.post('/api/specialistReservation/delete', params)
|
return http.post('/api/specialistReservation/delete', params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getHollandDimensionInfo = (params: { ScaleId: string }) => {
|
||||||
|
return http.get('/api/busScale/GetHollandDimension', params)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 666 B |
|
Before Width: | Height: | Size: 835 B After Width: | Height: | Size: 835 B |
|
Before Width: | Height: | Size: 829 B After Width: | Height: | Size: 829 B |
|
|
@ -40,6 +40,7 @@ interface NavigateToOptions {
|
||||||
"/login-sub/index" |
|
"/login-sub/index" |
|
||||||
"/pages-evaluation-sub/aiAutoFill/index" |
|
"/pages-evaluation-sub/aiAutoFill/index" |
|
||||||
"/pages-evaluation-sub/rank/index" |
|
"/pages-evaluation-sub/rank/index" |
|
||||||
|
"/pages-evaluation-sub/evaluate/academicReport/index" |
|
||||||
"/aiService-sub/index/index";
|
"/aiService-sub/index/index";
|
||||||
}
|
}
|
||||||
interface RedirectToOptions extends NavigateToOptions {}
|
interface RedirectToOptions extends NavigateToOptions {}
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,7 @@
|
||||||
"src/**/*.tsx",
|
"src/**/*.tsx",
|
||||||
"src/**/*.jsx",
|
"src/**/*.jsx",
|
||||||
"src/**/*.vue",
|
"src/**/*.vue",
|
||||||
"src/**/*.json",
|
"src/**/*.json"
|
||||||
"src/pages-sub/components/canvas/html2canvas.min.js"
|
|
||||||
],
|
],
|
||||||
"files": ["src/pages-evaluation-sub/uni_modules/lime-echart/static/echarts.min.js"]
|
"files": ["src/pages-evaluation-sub/uni_modules/lime-echart/static/echarts.min.js"]
|
||||||
}
|
}
|
||||||
|
|
|
||||||