|
@@ -1,19 +1,27 @@
|
|
|
<template>
|
|
|
<div class="default-width d-flex" ref="scrollBox">
|
|
|
<div class="mr-3 pt-3">
|
|
|
- <v-card id="leftCadId" width="240" max-width="240" height="440" class="positionSticky">
|
|
|
+ <v-card id="leftCadId" width="240" max-width="240" height="540" class="positionSticky">
|
|
|
<v-list>
|
|
|
<v-list-subheader class="title">简历目录</v-list-subheader>
|
|
|
<v-list-item v-for="(item, i) in items" :key="i" :value="item" :disabled="!item.id" color="primary" @click="handleClick(item)">
|
|
|
<template v-slot:prepend>
|
|
|
<v-icon :icon="item.icon"></v-icon>
|
|
|
</template>
|
|
|
- <v-list-item-title v-text="item.text"></v-list-item-title>
|
|
|
- <!-- <template v-slot:append>
|
|
|
- <v-icon color="primary">mdi-check</v-icon>
|
|
|
- </template> -->
|
|
|
+ <v-list-item-title>{{ item.text }}</v-list-item-title>
|
|
|
+ <template v-slot:append>
|
|
|
+ <!-- <v-icon v-if="!item.status">mdi-information-outline</v-icon> -->
|
|
|
+ <v-icon v-if="item.status" color="primary">mdi-check</v-icon>
|
|
|
+ <v-icon v-else color="error">mdi-information-outline</v-icon>
|
|
|
+ </template>
|
|
|
</v-list-item>
|
|
|
</v-list>
|
|
|
+ <v-divider></v-divider>
|
|
|
+ <ProgressBar
|
|
|
+ class="mt-2"
|
|
|
+ :num="completeNum"
|
|
|
+ :total="items.length"
|
|
|
+ ></ProgressBar>
|
|
|
</v-card>
|
|
|
</div>
|
|
|
<div class=" pt-3">
|
|
@@ -24,6 +32,7 @@
|
|
|
class="mb-3"
|
|
|
:is="item.path"
|
|
|
:id="item.domId"
|
|
|
+ @complete="complete"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -40,6 +49,7 @@ import workExperience from './components/workExperience.vue'
|
|
|
import projectExperience from './components/projectExperience.vue'
|
|
|
import vocationalSkills from './components/vocationalSkills.vue'
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
+import ProgressBar from '@/components/ProgressBar'
|
|
|
const { t } = useI18n()
|
|
|
import { ref } from 'vue'
|
|
|
import { onMounted } from 'vue';
|
|
@@ -57,7 +67,7 @@ const comList = [
|
|
|
{ path: vocationalSkills, id: 'resumeVocationalSkills', domId: 'vocationalSkills' },
|
|
|
]
|
|
|
|
|
|
-const items = [
|
|
|
+const items = ref([
|
|
|
{ text: t('resume.basicInfo'), icon: 'mdi-account-outline', id: 'basicInfo' },
|
|
|
{ text: t('resume.personalAdvantages'), icon: 'mdi-account-star-outline', id: 'selfEvaluation' },
|
|
|
{ text: t('resume.jobIntention'), icon: 'mdi-briefcase-variant-outline', id: 'jobIntention' },
|
|
@@ -66,7 +76,7 @@ const items = [
|
|
|
{ text: t('resume.projectExperience'), icon: 'mdi-card-text-outline', id: 'projectExperience' },
|
|
|
{ text: t('resume.trainingExperience'), icon: 'mdi-flag-outline', id: 'trainingExperience' },
|
|
|
{ text: t('resume.vocationalSkills'), icon: 'mdi-star-check-outline', id: 'vocationalSkills' }
|
|
|
-]
|
|
|
+])
|
|
|
|
|
|
onMounted(() => {
|
|
|
const selector = document.getElementById('leftCadId')
|
|
@@ -84,6 +94,15 @@ const handleClick = (item) => {
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+const completeNum = ref(0)
|
|
|
+const complete = (val) => {
|
|
|
+ if (!val?.id) return
|
|
|
+ const item = items.value.find(e => e.id === val.id)
|
|
|
+ if (!item) return
|
|
|
+ if (val.status) completeNum.value++
|
|
|
+ item.status = val.status || false
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|