= 职业规划推荐
This commit is contained in:
@@ -1,20 +1,44 @@
|
||||
import { computed, ref, watch } from 'vue';
|
||||
import { defineStore } from 'pinia';
|
||||
import { useAuthUserStore, useBasicStore } from './index';
|
||||
import { getCurrentPosition, getPath, getSkill } from '@/apiRc/service';
|
||||
import { getCurrentPosition, getPath } from '@/apiRc/service/careerPath';
|
||||
import { getSkill } from '@/apiRc/service/skillDevelopment';
|
||||
|
||||
|
||||
export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
const storeBasic = useBasicStore();
|
||||
const storeUser = useAuthUserStore();
|
||||
const userInfo = ref({
|
||||
userName: '',
|
||||
professions: [],
|
||||
skills: []
|
||||
});
|
||||
|
||||
try {
|
||||
const data = uni.getStorageSync('userInfo');
|
||||
|
||||
userInfo.value.professions = data.jobTitle.map((d) => {
|
||||
return {
|
||||
label: d,
|
||||
value: d
|
||||
};
|
||||
});
|
||||
userInfo.value.skills = data.appSkillsList.map((d) => {
|
||||
return {
|
||||
label: d.name,
|
||||
value: d.name
|
||||
};
|
||||
});
|
||||
} catch (e) {
|
||||
console.warn(e);
|
||||
}
|
||||
|
||||
const professionIndex = ref(0);
|
||||
const profession = ref('');
|
||||
const professionLabel = ref('');
|
||||
const professions = ref([]);
|
||||
const professionsRef = computed(() => {
|
||||
const userInfo = storeUser.userInfo;
|
||||
if (!userInfo || !userInfo.professions || userInfo.professions.length === 0) {
|
||||
if (!userInfo.value || !userInfo.value.professions || userInfo.value.professions.length === 0) {
|
||||
return professions.value;
|
||||
}
|
||||
const userProfessionsLabels = userInfo.professions.map((d) => d.label);
|
||||
const userProfessionsLabels = userInfo.value.professions.map((d) => d.label);
|
||||
let professionsA = [];
|
||||
let professionsB = [];
|
||||
professions.value.filter((d) => userProfessionsLabels.includes(d.label));
|
||||
@@ -26,17 +50,19 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
}
|
||||
}
|
||||
if (professionsA.length === 0) {
|
||||
professionsA = userInfo.professions;
|
||||
professionsA = userInfo.value.professions;
|
||||
professionsB = professions.value;
|
||||
}
|
||||
return [...professionsA, ...professionsB];
|
||||
return [ ...professionsA, ...professionsB ];
|
||||
});
|
||||
|
||||
const targetCareerIndex = ref(0);
|
||||
const targetCareer = ref('');
|
||||
const targetCareerLabel = ref('');
|
||||
const paths = ref([]);
|
||||
const pathsRef = computed(() => {
|
||||
return paths.value.filter((d) => {
|
||||
return `${d.startJobId}` === profession.value;
|
||||
return `${ d.startJobId }` === profession.value;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -55,7 +81,7 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
professions.value = data.map((d) => {
|
||||
return {
|
||||
label: d.name,
|
||||
value: `${d.jobId}`
|
||||
value: `${ d.jobId }`
|
||||
};
|
||||
});
|
||||
} catch (e) {
|
||||
@@ -86,6 +112,9 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
};
|
||||
|
||||
const fetchResult = 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) {
|
||||
@@ -101,9 +130,9 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
$emitter.emit('error-message', msg);
|
||||
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
|
||||
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 {
|
||||
@@ -120,10 +149,6 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
}
|
||||
};
|
||||
|
||||
const eventChange = () => {
|
||||
targetCareer.value = '';
|
||||
};
|
||||
|
||||
const eventSearch = () => {
|
||||
if (pathsRef.value.length === 0) {
|
||||
ElMessage.warning({
|
||||
@@ -149,44 +174,49 @@ export const useSkillDevelopmentStore = defineStore('skill-development', () => {
|
||||
void fetchResult();
|
||||
};
|
||||
|
||||
watch(
|
||||
() => storeBasic.loaded,
|
||||
() => {
|
||||
if (storeBasic.loaded) {
|
||||
void fetchData();
|
||||
void fetchDataPath();
|
||||
}
|
||||
}
|
||||
);
|
||||
const eventProfession = (e) => {
|
||||
professionIndex.value = Number(e.detail.value);
|
||||
const item = professionsRef.value[ e.detail.value ];
|
||||
profession.value = item.value;
|
||||
professionLabel.value = item.label;
|
||||
targetCareer.value = '';
|
||||
targetCareerLabel.value = '';
|
||||
result.value = [];
|
||||
};
|
||||
|
||||
const eventTargetCareer = (e) => {
|
||||
targetCareerIndex.value = Number(e.detail.value);
|
||||
const item = pathsRef.value[ e.detail.value ];
|
||||
targetCareer.value = item.value;
|
||||
targetCareerLabel.value = item.label;
|
||||
result.value = [];
|
||||
};
|
||||
|
||||
void fetchData();
|
||||
void fetchDataPath();
|
||||
|
||||
watch(
|
||||
() => professionsRef.value,
|
||||
() => {
|
||||
if (typeof professionsRef.value[0] !== 'undefined') {
|
||||
if (professionsRef.value[0].value) {
|
||||
profession.value = professionsRef.value[0].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
watch(
|
||||
() => profession.value,
|
||||
() => {
|
||||
const userInfo = storeUser.userInfo;
|
||||
if (userInfo.professions[0] && profession.value === userInfo.professions[0].value) {
|
||||
targetCareer.value = '';
|
||||
if (professionsRef.value[ 0 ]) {
|
||||
profession.value = professionsRef.value[ 0 ].value;
|
||||
professionLabel.value = professionsRef.value[ 0 ].label;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
professionIndex,
|
||||
professionLabel,
|
||||
profession,
|
||||
professionsRef,
|
||||
targetCareerIndex,
|
||||
targetCareer,
|
||||
targetCareerLabel,
|
||||
pathsRef,
|
||||
result,
|
||||
eventChange,
|
||||
eventProfession,
|
||||
eventTargetCareer,
|
||||
eventSearch
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user