|
@@ -2,14 +2,14 @@
|
|
<div class="resume-box">
|
|
<div class="resume-box">
|
|
<div class="resume-header">
|
|
<div class="resume-header">
|
|
<div class="resume-title">{{ $t('resume.personalAdvantages') }}</div>
|
|
<div class="resume-title">{{ $t('resume.personalAdvantages') }}</div>
|
|
- <v-btn v-if="!isEdit" variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="isEdit = true">{{ $t('common.edit') }}</v-btn>
|
|
|
|
|
|
+ <v-btn v-if="!isEdit" variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="isEdit = true">{{ advantage ? $t('common.edit') : $t('common.add') }}</v-btn>
|
|
</div>
|
|
</div>
|
|
<div v-if="isEdit" class="mt-3 edit">
|
|
<div v-if="isEdit" class="mt-3 edit">
|
|
<v-textarea
|
|
<v-textarea
|
|
v-model="advantage"
|
|
v-model="advantage"
|
|
label="请输入您的个人优势..."
|
|
label="请输入您的个人优势..."
|
|
variant="outlined"
|
|
variant="outlined"
|
|
- counter="200"
|
|
|
|
|
|
+ counter="300"
|
|
color="primary"
|
|
color="primary"
|
|
validate-on="input"
|
|
validate-on="input"
|
|
:rules="advantageRules"
|
|
:rules="advantageRules"
|
|
@@ -20,7 +20,8 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-else class="content-list mt-3">
|
|
<div v-else class="content-list mt-3">
|
|
- <div class="advantage" v-html="advantage"></div>
|
|
|
|
|
|
+ <div v-if="advantage" class="resumeNoDataText" v-html="advantage"></div>
|
|
|
|
+ <div v-else class="resumeNoDataText">请填写您的个人优势...</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -30,25 +31,38 @@ defineOptions({ name: 'selfEvaluation'})
|
|
import { ref } from 'vue'
|
|
import { ref } from 'vue'
|
|
import { saveResumeAdvantage } from '@/api/resume'
|
|
import { saveResumeAdvantage } from '@/api/resume'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
|
|
+import { useUserStore } from '@/store/user'
|
|
|
|
|
|
const isEdit = ref(false)
|
|
const isEdit = ref(false)
|
|
-const advantage = ref('1、熟悉 Java 技术平台,并稳定形成生产力,CCF 中国计算机学会会员,获得微软 MCP、MCSA 认证。 2、熟悉通用缓存/DB /搜索引擎/消息队列等中间件。对业内高可用高并发及分布式技术解决方案有充分理解。3、同时具备常用大数据解决方案实践经验,包括实时计算(Storm/Flink )及离线计算(Hive/ETL/Spark)。 4、对搜索推荐/订单交易等业务方向具备多年实践经验。')
|
|
|
|
|
|
+const advantage = ref('')
|
|
|
|
+const useStore = useUserStore()
|
|
|
|
+
|
|
|
|
+// 获取个人优势
|
|
|
|
+const getData = async () => {
|
|
|
|
+ await useStore.getUserBaseInfos(JSON.parse(localStorage.getItem('userInfo')).id)
|
|
|
|
+ const baseInfo = JSON.parse(localStorage.getItem('baseInfo'))
|
|
|
|
+ advantage.value = baseInfo.advantage
|
|
|
|
+}
|
|
|
|
+getData()
|
|
|
|
+
|
|
const advantageRules = ref([
|
|
const advantageRules = ref([
|
|
value => {
|
|
value => {
|
|
if (value) return true
|
|
if (value) return true
|
|
return '请输入您的个人优势'
|
|
return '请输入您的个人优势'
|
|
},
|
|
},
|
|
value => {
|
|
value => {
|
|
- if (value?.length <= 200) return true
|
|
|
|
- return '请输入2-200个字符'
|
|
|
|
|
|
+ if (value?.length <= 300) return true
|
|
|
|
+ return '请输入2-300个字符'
|
|
}
|
|
}
|
|
])
|
|
])
|
|
|
|
|
|
|
|
+// 编辑
|
|
const handleSave = async () => {
|
|
const handleSave = async () => {
|
|
if (!advantage.value) return Snackbar.warning('请先输入个人优势!')
|
|
if (!advantage.value) return Snackbar.warning('请先输入个人优势!')
|
|
await saveResumeAdvantage({ content: advantage.value })
|
|
await saveResumeAdvantage({ content: advantage.value })
|
|
isEdit.value = false
|
|
isEdit.value = false
|
|
Snackbar.success('编辑成功')
|
|
Snackbar.success('编辑成功')
|
|
|
|
+ await getData()
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -56,10 +70,6 @@ const handleSave = async () => {
|
|
.content-list {
|
|
.content-list {
|
|
white-space: pre-line;
|
|
white-space: pre-line;
|
|
}
|
|
}
|
|
-.advantage {
|
|
|
|
- color: #666;
|
|
|
|
- font-size: 14px;
|
|
|
|
-}
|
|
|
|
.edit {
|
|
.edit {
|
|
background-color: #f8f8f8;
|
|
background-color: #f8f8f8;
|
|
padding: 15px 10px 8px;
|
|
padding: 15px 10px 8px;
|