= 职业规划推荐

This commit is contained in:
2026-01-23 15:43:53 +08:00
parent ebb6bc6e33
commit a45b247496
3 changed files with 202 additions and 106 deletions

View File

@@ -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
};
});