Browse Source

个人优势

Xiao_123 11 months ago
parent
commit
0385c101ae

+ 1 - 0
components.d.ts

@@ -7,6 +7,7 @@ export {}
 
 
 declare module 'vue' {
 declare module 'vue' {
   export interface GlobalComponents {
   export interface GlobalComponents {
+    AreaSelect: typeof import('./src/components/AreaSelect/index.vue')['default']
     Autocomplete: typeof import('./src/components/FormUI/autocomplete/index.vue')['default']
     Autocomplete: typeof import('./src/components/FormUI/autocomplete/index.vue')['default']
     copy: typeof import('./src/components/CtForm/index copy.vue')['default']
     copy: typeof import('./src/components/CtForm/index copy.vue')['default']
     CtBtn: typeof import('./src/components/CtVuetify/CtBtn/index.vue')['default']
     CtBtn: typeof import('./src/components/CtVuetify/CtBtn/index.vue')['default']

+ 11 - 0
src/components/AreaSelect/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div>xxx</div>
+</template>
+
+<script setup>
+defineOptions({ name: 'formPage'})
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 5 - 0
src/styles/index.css

@@ -74,3 +74,8 @@
   padding-left: 12px;
   padding-left: 12px;
   line-height: 17px;
   line-height: 17px;
 }
 }
+
+.resumeNoDataText {
+  color: #666;
+  font-size: 14px;
+}

+ 1 - 1
src/styles/index.min.css

@@ -1 +1 @@
-:root{--zIndex-dialog:9999;--default-bgc:#f2f4f7;--v-primary-base:#00897B;--v-error-base:#fe574a;--v-primary-lighten1:#26A69A;--v-primary-lighten2:#4DB6AC;--v-primary-lighten3:#80CBC4;--v-primary-lighten4:#B2DFDB;--default-text:#666}.buttons{height:36px;width:224px}.half-button{height:36px;width:88px}.default-width{width:1184px;min-width:1184px;max-width:1184px;margin:0 auto}.default-active{color:var(--v-primary-base) !important}.border-bottom-dashed{border-bottom:1px dashed #ccc}.white-bgc{background-color:#fff}.ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vline{display:inline-block;width:1px;height:10px;vertical-align:middle;background-color:#e0e0e0;margin:0 10px}.resume-box{border-radius:5px;padding:20px 30px;background-color:#fff}.resume-header{display:flex;justify-content:space-between;align-items:center;height:36px}.resume-title{font-weight:700;font-size:18px;border-left:5px solid #00897B;padding-left:12px;line-height:17px}
+:root{--zIndex-dialog:9999;--default-bgc:#f2f4f7;--v-primary-base:#00897B;--v-error-base:#fe574a;--v-primary-lighten1:#26A69A;--v-primary-lighten2:#4DB6AC;--v-primary-lighten3:#80CBC4;--v-primary-lighten4:#B2DFDB;--default-text:#666}.buttons{height:36px;width:224px}.half-button{height:36px;width:88px}.default-width{width:1184px;min-width:1184px;max-width:1184px;margin:0 auto}.default-active{color:var(--v-primary-base) !important}.border-bottom-dashed{border-bottom:1px dashed #ccc}.white-bgc{background-color:#fff}.ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vline{display:inline-block;width:1px;height:10px;vertical-align:middle;background-color:#e0e0e0;margin:0 10px}.resume-box{border-radius:5px;padding:20px 30px;background-color:#fff}.resume-header{display:flex;justify-content:space-between;align-items:center;height:36px}.resume-title{font-weight:700;font-size:18px;border-left:5px solid #00897B;padding-left:12px;line-height:17px}.resumeNoDataText{color:#666;font-size:14px}

+ 4 - 0
src/styles/index.scss

@@ -70,4 +70,8 @@
   border-left: 5px solid #00897B;
   border-left: 5px solid #00897B;
   padding-left: 12px;
   padding-left: 12px;
   line-height: 17px;
   line-height: 17px;
+}
+.resumeNoDataText {
+  color: #666;
+  font-size: 14px;
 }
 }

+ 23 - 20
src/views/resume/components/jobIntention.vue

@@ -5,27 +5,30 @@
       <v-btn v-if="!isAdd" variant="text" color="primary" prepend-icon="mdi-plus-box" @click="isAdd = true">{{ $t('common.add') }}</v-btn>
       <v-btn v-if="!isAdd" variant="text" color="primary" prepend-icon="mdi-plus-box" @click="isAdd = true">{{ $t('common.add') }}</v-btn>
     </div>
     </div>
     <div v-if="!isAdd">
     <div v-if="!isAdd">
-      <div 
-        :class="['position-item']" 
-        v-for="(k, i) in positionList" 
-        :key="i" 
-        @mouseenter="k.active = true" 
-        @mouseleave="k.active = false"
-      >
-        <span>{{ k.name }}</span>
-        <span class="vline"></span>
-        <span>{{k.payFrom}}-{{k.payTo}}k</span>
-        <span class="vline"></span>
-        <span class="grey-text">{{ k.industryIds }}</span>
-        <span class="vline"></span>
-        <span class="grey-text">{{ k.areaName }}</span>
-        <span class="vline"></span>
-        <span class="grey-text">{{ k.jobType }}</span>
-        <span class="float-right" v-if="k.active">
-          <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline">{{ $t('common.edit') }}</v-btn>
-          <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline">{{ $t('common.delete') }}</v-btn>
-        </span>
+      <div v-if="positionList.length">
+        <div
+          :class="['position-item']" 
+          v-for="(k, i) in positionList" 
+          :key="i" 
+          @mouseenter="k.active = true" 
+          @mouseleave="k.active = false"
+        >
+          <span>{{ k.name }}</span>
+          <span class="vline"></span>
+          <span>{{k.payFrom}}-{{k.payTo}}k</span>
+          <span class="vline"></span>
+          <span class="grey-text">{{ k.industryIds }}</span>
+          <span class="vline"></span>
+          <span class="grey-text">{{ k.areaName }}</span>
+          <span class="vline"></span>
+          <span class="grey-text">{{ k.jobType }}</span>
+          <span class="float-right" v-if="k.active">
+            <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline">{{ $t('common.edit') }}</v-btn>
+            <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline">{{ $t('common.delete') }}</v-btn>
+          </span>
+        </div>
       </div>
       </div>
+      <div v-else class="resumeNoDataText">请填写您的求职意向...</div>
     </div>
     </div>
     <div v-if="isAdd" class="mt-2">
     <div v-if="isAdd" class="mt-2">
       <CtForm :items="items" style="width: 100%;">
       <CtForm :items="items" style="width: 100%;">

+ 20 - 10
src/views/resume/components/selfEvaluation.vue

@@ -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;

+ 24 - 19
src/views/resume/components/trainingExperience.vue

@@ -12,28 +12,33 @@
         <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
         <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
       </div>
       </div>
     </div>
     </div>
-    <div v-else v-for="(k, i) in trainExp" :key="i" class="exp mx-n2 mt-5" @mouseenter="k.active = true" @mouseleave="k.active = false">
-      <span class="float-right" v-if="k.active">
-        <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="handleEdit(k)">{{ $t('common.edit') }}</v-btn>
-        <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline" @click="handleDelete(k)">{{ $t('common.delete') }}</v-btn>
-      </span>
-      <div class="level1 d-flex align-center justify-space-between" style="height: 40px;">
+    <div v-else>
+      <div v-if="trainExp.length">
+        <div v-for="(k, i) in trainExp" :key="i" class="exp mx-n2 mt-5" @mouseenter="k.active = true" @mouseleave="k.active = false">
+          <span class="float-right" v-if="k.active">
+            <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="handleEdit(k)">{{ $t('common.edit') }}</v-btn>
+            <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline" @click="handleDelete(k)">{{ $t('common.delete') }}</v-btn>
+          </span>
+          <div class="level1 d-flex align-center justify-space-between" style="height: 40px;">
+            <div>
+              <span style="font-size: 18px; font-weight: bold;">{{ k.orgName }}</span>
+              <span class="label-title ml-5">
+                <span>{{ timesTampChange(k.startTime).slice(0, 10) }}</span>
+                <span class="mx-1">至</span>
+                <span>{{ timesTampChange(k.endTime).slice(0, 10) }}</span>
+              </span>
+            </div>
+          </div>
+          <div class="my-2">
+            <span class="label-title">培训课程:{{ k.course }}</span>
+          </div>
           <div>
           <div>
-            <span style="font-size: 18px; font-weight: bold;">{{ k.orgName }}</span>
-            <span class="label-title ml-5">
-              <span>{{ timesTampChange(k.startTime).slice(0, 10) }}</span>
-              <span class="mx-1">至</span>
-              <span>{{ timesTampChange(k.endTime).slice(0, 10) }}</span>
-            </span>
+            <span class="label-title">培训描述:</span>
+            <span class="label-title">{{ k.content }}</span>
           </div>
           </div>
         </div>
         </div>
-        <div class="my-2">
-          <span class="label-title">培训课程:{{ k.course }}</span>
-        </div>
-        <div>
-          <span class="label-title">培训描述:</span>
-          <span class="label-title">{{ k.content }}</span>
-        </div>
+      </div>
+      <div v-else class="resumeNoDataText">请填写您的培训经历...</div>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>