Browse Source

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

Xiao_123 11 tháng trước cách đây
mục cha
commit
2283323760

+ 2 - 0
src/locales/en.js

@@ -70,9 +70,11 @@ export default {
     jobIntention: 'Job Intention',
     trainingExperience: 'Training Experience',
     educationExp: 'Educational Experience',
+    workExperience: 'Work Experience',
     projectExperience: 'Project Experience',
     vocationalSkills: 'Vocational Skills',
     firstWorkTime: 'First Work Time',
+    dataDefaultPrompt: 'Please fill in your ',
     expand: 'Expand',
     retract: 'Retract'
   }

+ 2 - 0
src/locales/zh-CN.js

@@ -70,9 +70,11 @@ export default {
     jobIntention: '求职意向',
     trainingExperience: '培训经历',
     educationExp: '教育经历',
+    workExperience: '工作经历',
     projectExperience: '项目经历',
     vocationalSkills: '职业技能',
     firstWorkTime: '首次工作时间',
+    dataDefaultPrompt: '请填写您的',
     expand: '展开',
     retract: '收起'
   }

+ 1 - 3
src/views/resume/components/basicInfo.vue

@@ -263,8 +263,6 @@ formItems.value.options.forEach((e, index) => {
   if ((index + 2) % 2 === 0) e.flexStyle = 'mr-3'
   // 回显
   if (baseInfo.value[e.key]) e.value = baseInfo.value[e.key]
-  // 数字转为字符串
-  if (transformItems.includes(e.key) && e.value && e.value !== 0) e.value = e.value.toString()
   // 日期相关
   if (e.type === 'datepicker') e.value = timesTampChange(e.value).slice(0, 10)
 })
@@ -278,7 +276,7 @@ const handleSave = async () => {
   formItems.value.options.forEach(e => {
     if (e.noReturn) return
     else if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
-    else if (transformItems.includes(e.key) && e.value && e.value !== 0) obj[e.key] = e.value - 0
+    else if (transformItems.includes(e.key) && e.value && e.value !== 0) obj[e.key] = e.value
     else obj[e.key] = e.value
   })
   await saveResumeBasicInfo(obj)

+ 22 - 26
src/views/resume/components/educationExp.vue

@@ -16,7 +16,7 @@
     <!-- 展示 -->
     <div
       v-else
-      v-for="(item, index) in projectExp" :key="'educationExp' + index"
+      v-for="(item, index) in dataList" :key="'educationExp' + index"
       :class="[' mx-n2', {'mt-5': index }]"
     >
       <div class="educExpItem" @mouseenter="item.active = true" @mouseleave="item.active = false">
@@ -41,8 +41,7 @@
           <span class="color6 font15">{{ getText(item.educationSystemType, dictItemsObj.educationSystemType) }}</span>
         </div>
         <div class="level3">
-          <span class="color6 font15">在校经历:</span>
-          <span class="color6 font15">{{ item.content }}</span>
+          <span class="color6 font15">在校经历:{{ item.content }}</span>
         </div>
       </div>
     </div>
@@ -59,6 +58,7 @@ import Confirm from '@/plugins/confirm'
 import { getText } from '@/utils/getText'
 import { debounce } from 'lodash'
 import { nextTick, shallowRef, reactive, ref } from 'vue'
+const editId = ref(null)
 const CtFormRef = ref()
 const dictItemsObj = reactive({})
 dictItemsObj.educationSystemType = [{ label: '全日制', value: '0' }, { label: '非全日制', value: '1' }]
@@ -100,6 +100,7 @@ const formItems = ref({
       col: 6,
       outlined: true,
       clearable: true,
+      itemTextName: 'schoolName',
       itemText: 'value',
       itemValue: 'key',
       rules: [v => !!v || '请选择学校名称'],
@@ -115,6 +116,7 @@ const formItems = ref({
       col: 6,
       outlined: true,
       clearable: true,
+      itemTextName: 'major',
       itemText: 'nameCn',
       itemValue: 'id',
       rules: [v => !!v || '请选择所学专业'],
@@ -175,62 +177,56 @@ const formItems = ref({
     },
   ]
 })
+// 左侧加mr
+formItems.value.options.forEach((e, index) => {
+  if (((index + 2) % 2 === 0) && Boolean(e.col) && e.col !== 12) e.flexStyle = 'mr-3'
+})
 
 console.log('dictItemsObj', dictItemsObj)
 // 获取数据
-const projectExp = ref([])
+const dataList = ref([])
 const getData = async () => {
   const data = await getResumeEduExp()
-  projectExp.value = data
+  dataList.value = data
 }
 getData()
 
 // 新增 或 编辑
 const isEdit = ref(false)
 const titleStatus = ref(0)
-const rowObj = ref({})
 const handle = (item) => {
   titleStatus.value = item ? 1 : 0
   if (item) { // 编辑
-    rowObj.value = item
-    formItems.value.options.forEach(_i => { if (item[_i.key]) _i.value = item[_i.key] })
+    editId.value = item.id
+    formItems.value.options.forEach(e => { // 回显
+      if (item[e.key]) e.value = item[e.key]
+      if (e.type === 'datepicker') e.value = timesTampChange(item[e.key]).slice(0, 10)
+      if (e.type === 'combobox') e.value = item[e.itemTextName] // 回显中文,因为下拉框无内容,显示id无用
+    })
   } else { // 新增
-    formItems.value.options.forEach(_i => _i.value = _i.default || null)
+    editId.value = null
+    formItems.value.options.forEach(e => e.value = e.default || null)
   }
   nextTick(() => {
     isEdit.value = true
   })
 }
 
-// const transformItems = ['educationType', 'educationSystemType']
-formItems.value.options.forEach((e, index) => {
-  if (((index + 2) % 2 === 0) && Boolean(e.col) && e.col !== 12) e.flexStyle = 'mr-3' // 左侧加mr
-  // 回显
-  if (rowObj.value[e.key]) e.value = rowObj.value[e.key]
-  // // 数字转为字符串
-  // if (transformItems.includes(e.key) && e.value && e.value !== 0) e.value = e.value.toString()
-  // 日期相关
-  if (e.type === 'datepicker') e.value = timesTampChange(e.value).slice(0, 10)
-})
-
-
 // 保存-基础信息
 const handleSave = async () => {
   const { valid } = await CtFormRef.value.formRef.validate()
   if (!valid) return
   const obj = {}
   formItems.value.options.forEach(e => {
-    if (e.noReturn) return
-    else if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
+    if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
     else obj[e.key] = e.value
   })
   obj.schoolName = schoolName.value
   obj.major = major.value
-  if (rowObj.value?.id) obj.id = rowObj.value.id
+  if (editId.value) obj.id = editId.value
   await saveResumeEduExp(obj)
   Snackbar.success('保存成功!')
   isEdit.value = false
-  // 获取当前登录账户信息
   await getData()
 }
 
@@ -238,8 +234,8 @@ const handleSave = async () => {
 const handleDelete = ({ id }) => {
   Confirm('系统提示', '是否确认删除此教育经历?').then(async () => {
     await deleteResumeEduExp(id)
+    getData(id)
     Snackbar.success('删除成功!')
-    getData()
   })
 }
 

+ 1 - 1
src/views/resume/components/jobIntention.vue

@@ -30,7 +30,7 @@
           </div>
         </div>
       </div>
-      <div v-else class="resumeNoDataText">请填写您的求职意向...</div>
+      <div v-else class="resumeNoDataText">{{ $t('resume.dataDefaultPrompt') }}{{ $t('resume.jobIntention') }}</div>
     </div>
     <div v-if="isAdd" class="mt-2">
       <CtForm ref="formPageRef" :items="items" style="width: 100%;">

+ 3 - 2
src/views/resume/components/projectExperience.vue

@@ -107,7 +107,7 @@ const handleSave = async () => {
   if (!valid) return
   const obj = {}
   items.value.options.forEach(e => {
-    if (e.key === 'startTime' || e.key == 'endTime') obj[e.key] = shallowRef(getTimeStamp(e.value))
+    if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
     else obj[e.key] = e.value
   })
   if (editId.value) obj.id = editId.value
@@ -122,7 +122,8 @@ const handleSave = async () => {
 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)
+  // 日期相关
+    if (e.type === 'datepicker') e.value = timesTampChange(item[e.key]).slice(0, 10)
     else e.value = item[e.key]
   })
   isEdit.value = true

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

@@ -21,7 +21,7 @@
     </div>
     <div v-else class="content-list mt-3">
       <div v-if="advantage" class="resumeNoDataText" v-html="advantage"></div>
-      <div v-else class="resumeNoDataText">请填写您的个人优势...</div>
+      <div v-else class="resumeNoDataText">{{ $t('resume.dataDefaultPrompt') }}{{ $t('resume.personalAdvantages') }}</div>
     </div>
   </div>
 </template>

+ 1 - 1
src/views/resume/components/trainingExperience.vue

@@ -38,7 +38,7 @@
           </div>
         </div>
       </div>
-      <div v-else class="resumeNoDataText">请填写您的培训经历...</div>
+      <div v-else class="resumeNoDataText">{{ $t('resume.dataDefaultPrompt') }}{{ $t('resume.trainingExperience') }}</div>
     </div>
   </div>
 </template>