= 职业规划推荐
This commit is contained in:
@@ -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
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user