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