Просмотр исходного кода

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 1 год назад
Родитель
Сommit
b50302d1c3

+ 0 - 1
components.d.ts

@@ -33,7 +33,6 @@ declare module 'vue' {
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
     SimilarPositions: typeof import('./src/components/Position/similarPositions.vue')['default']
-    Textarea: typeof import('./src/components/FormUI/textarea/index.vue')['default']
     TextArea: typeof import('./src/components/FormUI/textArea/index.vue')['default']
     TextInput: typeof import('./src/components/FormUI/TextInput/index.vue')['default']
     VerificationCode: typeof import('./src/components/VerificationCode/index.vue')['default']

+ 6 - 1
src/views/resume/components/selfEvaluation.vue

@@ -4,7 +4,7 @@
       <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>
     </div>
-    <div v-if="isEdit" class="mt-3">
+    <div v-if="isEdit" class="mt-3 edit">
       <v-textarea 
         v-model="advantage" 
         label="请输入您的个人优势..." 
@@ -60,4 +60,9 @@ const handleSave = async () => {
   color: #666;
   font-size: 14px;
 }
+.edit {
+  background-color: #f8f8f8;
+  padding: 15px 10px 8px;
+  border-radius: 6px;
+}
 </style>

+ 47 - 43
src/views/resume/components/trainingExperience.vue

@@ -1,44 +1,44 @@
 <template>
   <div class="resume-box">
-    <div class="resume-header mb-3">
+    <div class="resume-header">
       <div class="resume-title">{{ $t('resume.trainingExperience') }}</div>
-      <v-btn variant="text" color="primary" prepend-icon="mdi-plus-box" @click="isEdit = true">{{ $t('common.add') }}</v-btn>
+      <v-btn variant="text" color="primary" prepend-icon="mdi-plus-box" @click="isEdit = true; type = 'add'">{{ $t('common.add') }}</v-btn>
     </div>
-    <div>
-      <div v-for="(k, i) in list" :key="i" class="exp" @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">{{ $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 v-for="(val, index) in desc" :key="index" class="my-2">
-          <span class="label-title">{{ val.label }}</span>
-          <span v-if="Array.isArray(val.value)">{{ k[val.value[0]] }} 至 {{ k[val.value[1]] }}</span>
-          <span>{{ k[val.value] }}</span>
-        </div>
-        <div v-if="i !== list.length -1" class="border-bottom-dashed my-3"></div>
-      </div>
-    </div>
-    <div v-if="isEdit">
-      <div class="border-bottom-dashed my-5"></div>
+    <div v-if="isEdit" class="edit">
+      <h4 class="label-title my-3 mx-2"> {{ type === 'add' ? $t('common.add') : $t('common.edit') }}{{ $t('resume.trainingExperience') }}</h4>
       <CtForm ref="formPageRef" :items="items" style="width: 100%;"></CtForm>
       <div class="text-end">
-        <v-btn class="half-button mr-3" variant="tonal" @click="isEdit = false">{{ $t('common.cancel') }}</v-btn>
+        <v-btn class="half-button mr-3" variant="tonal" @click="isEdit = false; type = ''">{{ $t('common.cancel') }}</v-btn>
         <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
       </div>
     </div>
+    <div v-else v-for="(k, i) in trainExp" :key="i" class="exp mx-n2" @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 v-for="(val, index) in desc" :key="index" class="my-1">
+        <span class="label-title">{{ val.label }}</span>
+        <span v-if="Array.isArray(val.value)">{{ timesTampChange(k[val.value[0]]).slice(0, 10) }} 至 {{ timesTampChange(k[val.value[1]]).slice(0, 10) }}</span>
+        <span>{{ k[val.value] }}</span>
+      </div>
+      <div v-if="i !== trainExp.length -1" class="border-bottom-dashed mt-3"></div>
+    </div>
   </div>
 </template>
 
 <script setup name="trainingExperience">
 import { ref, shallowRef  } from 'vue'
-import { getTimeStamp } from '@/utils/date'
+import { getTimeStamp, timesTampChange } from '@/utils/date'
 import { saveResumeTrainExp, getResumeTrainExp, deleteResumeTrainExp } from '@/api/resume'
 import CtForm from '@/components/CtForm'
 import Snackbar from '@/plugins/snackbar'
 import Confirm from '@/plugins/confirm'
 
-const isEdit = ref(true)
+const isEdit = ref(false)
 const formPageRef = ref()
+const type = ref('')
+const editId = ref(null)
 const items = ref({
   options: [
     {
@@ -95,9 +95,10 @@ const items = ref({
 })
 
 // 获取培训经历
+const trainExp = ref([])
 const getResumeTrainExpData = async () => {
   const data = await getResumeTrainExp()
-  console.log(data, 'get')
+  trainExp.value = data
 }
 getResumeTrainExpData()
 
@@ -110,16 +111,26 @@ const handleSave = async () => {
     if (e.key === 'startTime' || e.key == 'endTime') obj[e.key] = getTimeStamp(e.value)
     else obj[e.key] = e.value
   })
-  // console.log(obj, 'obj')
+  if (editId.value) obj.id = editId.value
   await saveResumeTrainExp(obj)
   Snackbar.success('保存成功!')
   isEdit.value = false
+  type.value = ''
+  editId.value = null
   getResumeTrainExpData()
 }
 
+const handleEdit = (item) => {
+  editId.value = item.id
+  items.value.options.forEach(e => {
+    if (e.key === 'startTime' || e.key == 'endTime') e.value = timesTampChange(item[e.key]).slice(0, 10)
+    else e.value = item[e.key]
+  })
+  isEdit.value = true
+}
+
 // 删除培训经历
 const handleDelete = ({ id }) => {
-  console.log(id, 'delete')
   Confirm('系统提示', '是否确认删除此项培训经历?').then(async () => {
     await deleteResumeTrainExp(id)
     Snackbar.success('删除成功!')
@@ -133,31 +144,24 @@ const desc = [
   { label: '培训时间:', value: ['startTime', 'endTime'] },
   { label: '培训描述:', value: 'content' }
 ]
-const list = ref([
-  {
-    orgName: '海外产品培训中心',
-    course: '产品设计与分析',
-    startTime: '2024-04',
-    endTime: '2024-05',
-    active: false,
-    content: '熟悉 Java  技术平台,并稳定形成生产力,CCF  中国计算机学会会员,获得微软 MCP、MCSA  认证。 熟悉通用缓存/DB /搜索引擎/消息队列等中间件。对业内高可用高并发及分布式技术解决方案有充分理解。'
-  },
-  {
-    orgName: '海外产品培训中心',
-    course: '产品设计与分析',
-    startTime: '2024-04',
-    endTime: '2024-05',
-    active: false,
-    content: '同时具备常用大数据解决方案实践经验,包括实时计算(Storm/Flink )及离线计算(Hive/ETL/Spark)。 对搜索推荐/订单交易/经营分析等业务方向具备多年实践经验。 具备较强的横向协作能力及团队管理能力,责任心'
-  }
-])
 </script>
 
 <style scoped lang="scss">
 .exp {
   font-size: 15px;
+  cursor: pointer;
+  border-radius: 6px;
+  padding: 2px 10px 8px;
+  &:hover {
+    background-color: #f8f8f8;
+  }
 }
 .label-title {
-  color: #777;
+  color: #666;
+}
+.edit {
+  background-color: #f8f8f8;
+  padding: 2px 10px 8px;
+  border-radius: 6px;
 }
 </style>