From a45b247496e4aeb85745ccb67e7ff6bb3ce45cdf Mon Sep 17 00:00:00 2001 From: danchaotaiyang Date: Fri, 23 Jan 2026 15:43:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=3D=20=E8=81=8C=E4=B8=9A=E8=A7=84=E5=88=92?= =?UTF-8?q?=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiRc/service/skillDevelopment.js | 14 +- pages/service/components/SkillDevelopment.vue | 199 +++++++++++------- stores/useSkillDevelopmentStore.js | 95 ++++++--- 3 files changed, 202 insertions(+), 106 deletions(-) diff --git a/apiRc/service/skillDevelopment.js b/apiRc/service/skillDevelopment.js index 15216c5..a8d190d 100644 --- a/apiRc/service/skillDevelopment.js +++ b/apiRc/service/skillDevelopment.js @@ -7,9 +7,19 @@ import request from '@/utilsRc/request' // 获取技能信息 -export function getSkill(query) { +export function getCareerPath(query) { return request({ - url: '/jobSkillDet/getJobSkillWeight', + url: '/jobPath/getJobPathJobList', + method: 'get', + params: query, + baseUrlType: 'zytp' + }) +} + +// 获取技能信息 +export function getSkillResult(query) { + return request({ + url: '/jobDimScore/getJobDimScoreList', method: 'get', params: query, baseUrlType: 'zytp' diff --git a/pages/service/components/SkillDevelopment.vue b/pages/service/components/SkillDevelopment.vue index 002c2e8..9b01902 100644 --- a/pages/service/components/SkillDevelopment.vue +++ b/pages/service/components/SkillDevelopment.vue @@ -43,30 +43,48 @@ const store = useSkillDevelopmentStore(); - +
+
+ 职业路径 +
+
+ +
+ +
+
+
+
- 技能发展路径 + {{ store.currentCareerLabel }}技能
- -
- 基于您的当前职业和目标职业,以下是您需要重点发展的技能: -
-
暂无数据
-
-
- {{ skill.name }} -
- 技能分数: {{ skill.score }} - 权重: {{ skill.weight }} -
-
-
-
- {{ tag }} +
+
{{ item.label }}
+
+
+
{{ d.label }}
+
+
技能得分:{{ d.value }}
+
权重:{{ d.weight }}
+
@@ -190,73 +208,96 @@ button::after { position: relative; } -.skill-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 16rpx; - width: 100%; - box-sizing: border-box; +.career-paths { + grid-auto-flow: column; + + .career-index { + background: #6c64e7; + border: 3px solid #fff; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + } + + .career-label { + color: #6c64e7; + } + + .career-active { + .career-index { + background: #22c55e; + } + + .career-label { + color: #000; + } + } } -.skill-name { - font-size: 32rpx; - line-height: 46rpx; - color: rgb(16, 16, 16); - text-align: left; - font-family: 'PingFangSC-Bold', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; - font-weight: 600; - flex: 1; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; +.skill-label { + color: #94a3b8; } -.skill-info { - display: flex; - align-items: center; - gap: 12rpx; - flex-shrink: 0; - margin-left: 16rpx; +.skill-detail-item { + background: #c1d2ea; } -.skill-score { - font-size: 24rpx; - line-height: 34rpx; - border-radius: 10rpx; - background-color: rgba(49, 100, 239, 0.1); - color: rgba(44, 101, 247, 1); - text-align: center; - padding: 6rpx 12rpx; - white-space: nowrap; +.skill-detail-item-label { + color: #334155; + + & + div { + color: #4f46e5; + } +} + + + + diff --git a/stores/useSkillDevelopmentStore.js b/stores/useSkillDevelopmentStore.js index d0064b3..6971d71 100644 --- a/stores/useSkillDevelopmentStore.js +++ b/stores/useSkillDevelopmentStore.js @@ -1,7 +1,7 @@ import { computed, ref, watch } from 'vue'; import { defineStore } from 'pinia'; import { getCurrentPosition, getPath } from '@/apiRc/service/careerPath'; -import { getSkill } from '@/apiRc/service/skillDevelopment'; +import { getCareerPath, getSkillResult } from '@/apiRc/service/skillDevelopment'; export const useSkillDevelopmentStore = defineStore('skill-development', () => { @@ -66,6 +66,15 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { }); }); + const careerPaths = ref([]); + const currentCareer = ref(null); + const currentCareerLabel = computed(() => { + if (!currentCareer.value) { + return ''; + } + return currentCareer.value.label; + }); + const result = ref([]); const fetchData = async () => { @@ -117,21 +126,17 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { } }; - const fetchResult = async () => { + const fetchCareerPaths = async () => { if (!targetCareer.value) { return; } - const current = professionsRef.value.find((d) => d.value === profession.value); - const target = pathsRef.value.find((d) => d.value === targetCareer.value); - if (!current || !target) { - return; - } + const [startJobId, endJobId] = targetCareer.value.split('-'); const params = { - currentJobName: current.label, - targetJobName: target.label + startJobId, + endJobId }; try { - const { code, msg, data } = await getSkill(params); + const { code, msg, data } = await getCareerPath(params); if (code !== 0) { uni.showToast({ title: msg, @@ -139,20 +144,54 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { }); return; } - if (typeof data !== 'undefined' && Array.isArray(data) && data.length > 0 && data[ 0 ]) { - const excludes = data[ 0 ].currentSkillDetList.map((d) => d.skillId); - result.value = data[ 0 ].targetSkillDetList - .filter((d) => !excludes.includes(d.skillId)) - .map((d) => { - return { - type: d.skillType, - title: d.skillName, - name: d.skillName, - weight: d.skillWeight, - score: d.skillScore - }; - }); + if (!data) { + return; } + careerPaths.value = data.map((d) => { + return { + label: d.name, + value: d.jobId + }; + }); + if (careerPaths.value[0]) { + void eventResult(careerPaths.value[0]); + } + } catch (e) { + console.warn(e); + careerPaths.value = []; + } + }; + + const eventResult = async (path) => { + currentCareer.value = path; + const params = { + jobId: path.value + }; + try { + const { code, msg, data } = await $AxiosHttp.useAxiosRequest(getSkillResult, params); + if (code !== 0) { + uni.showToast({ + title: msg, + icon: 'none' + }); + return; + } + if (!data) { + return; + } + result.value = data.map((d) => { + return { + label: d.secDimName, + value: d.secDimId, + children: d.skillDetList.map((d) => { + return { + label: d.skillName, + value: d.skillScore, + weight: d.skillWeight + }; + }) + }; + }); } catch (e) { console.warn(e); } @@ -180,7 +219,7 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { }); return; } - void fetchResult(); + void fetchCareerPaths(); }; const eventProfession = (e) => { @@ -190,6 +229,7 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { professionLabel.value = item.label; targetCareer.value = ''; targetCareerLabel.value = ''; + careerPaths.value = []; result.value = []; }; @@ -198,6 +238,7 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { const item = pathsRef.value[ e.detail.value ]; targetCareer.value = item.value; targetCareerLabel.value = item.label; + careerPaths.value = []; result.value = []; }; @@ -223,9 +264,13 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => { targetCareer, targetCareerLabel, pathsRef, + careerPaths, + currentCareer, + currentCareerLabel, result, eventProfession, eventTargetCareer, - eventSearch + eventSearch, + eventResult }; }); From b030d45d49139f9c75060d2be06a747a32a56cc0 Mon Sep 17 00:00:00 2001 From: danchaotaiyang Date: Fri, 23 Jan 2026 18:38:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=3D=20=E8=81=8C=E4=B8=9A=E8=A7=84=E5=88=92?= =?UTF-8?q?=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/service/components/SkillDevelopment.vue | 304 ++++++++++-------- stores/useCareerRecommendationStore.js | 2 +- stores/useSkillDevelopmentStore.js | 37 ++- 3 files changed, 206 insertions(+), 137 deletions(-) diff --git a/pages/service/components/SkillDevelopment.vue b/pages/service/components/SkillDevelopment.vue index 9b01902..0b00ad5 100644 --- a/pages/service/components/SkillDevelopment.vue +++ b/pages/service/components/SkillDevelopment.vue @@ -43,7 +43,7 @@ const store = useSkillDevelopmentStore();
-
+
职业路径
@@ -54,13 +54,12 @@ const store = useSkillDevelopmentStore();
- {{ index === 0 ? '起点' : index }} + {{ item.index }}
{{ item.label }}
@@ -69,21 +68,21 @@ const store = useSkillDevelopmentStore();
-
+
{{ store.currentCareerLabel }}技能
暂无数据
-
-
{{ item.label }}
-
-
-
{{ d.label }}
-
-
技能得分:{{ d.value }}
-
权重:{{ d.weight }}
+
+
{{ item.label }}
+
+
+
{{ d.label + d.label + d.label }}
+
+
技能得分:{{ d.value }}
+
权重:{{ d.weight }}
@@ -116,6 +115,7 @@ const store = useSkillDevelopmentStore(); background-color: #FFFFFF; border-radius: 16rpx; padding: 28rpx; + margin-bottom: 20rpx; box-sizing: border-box; overflow: visible; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08); @@ -153,6 +153,7 @@ const store = useSkillDevelopmentStore(); button::after { border: none; } + .section-title { font-size: 32rpx; color: #000000; @@ -166,136 +167,187 @@ button::after { } } -.title-text { - font-size: 32rpx; - font-weight: 600; - color: #167CF1; -} - -.intro-text { - font-size: 24rpx; - line-height: 34rpx; - color: rgba(154, 154, 154, 1); - text-align: left; - font-family: 'PingFangSC-Bold', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; - font-weight: 600; - margin-bottom: 90rpx; - width: 672rpx; -} - -.skill-list { - display: flex; - flex-direction: column; - gap: 20rpx; -} - -.skill-item { - width: 100%; - max-width: 796rpx; - min-height: 162rpx; - line-height: 40rpx; - border-radius: 20rpx; - background-color: rgba(239, 239, 239, 1); - color: rgba(16, 16, 16, 1); - font-size: 28rpx; - text-align: center; - padding: 24rpx; - box-sizing: border-box; - display: flex; - flex-direction: column; - justify-content: center; - overflow: visible; - position: relative; -} - -.career-paths { - grid-auto-flow: column; - - .career-index { - background: #6c64e7; - border: 3px solid #fff; - box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); - } - - .career-label { - color: #6c64e7; - } - - .career-active { - .career-index { - background: #22c55e; - } - - .career-label { - color: #000; - } - } -} - -.skill-label { - color: #94a3b8; -} - -.skill-detail-item { - background: #c1d2ea; -} - -.skill-detail-item-label { - color: #334155; - - & + div { - color: #4f46e5; - } -} - - - - + +