瀏覽代碼

基础信息查字典回显

lifanagju_citu 11 月之前
父節點
當前提交
b6403894f0
共有 3 個文件被更改,包括 55 次插入27 次删除
  1. 31 8
      src/store/user.js
  2. 20 5
      src/utils/getText.js
  3. 4 14
      src/views/resume/components/basicInfo.vue

+ 31 - 8
src/store/user.js

@@ -6,7 +6,7 @@ import { logout } from '@/api/common/index'
 import { getUserInfo } from '@/api/personal/user'
 import Snackbar from '@/plugins/snackbar'
 import { timesTampChange } from '@/utils/date'
-import { getDictName } from '@/utils/getText'
+import { getBaseInfoDictOfName } from '@/utils/getText'
 
 
 export const useUserStore = defineStore('user',
@@ -64,6 +64,7 @@ export const useUserStore = defineStore('user',
         const data = await getBaseInfo({ userId: userId || accountInfo.userId })
         // baseInfo = data
         baseInfo = await getFieldText(data)
+        console.log('baseInfo->', baseInfo)
         localStorage.setItem('baseInfo', JSON.stringify(baseInfo))
       } catch (error) {
         Snackbar.error(error.msg)
@@ -71,17 +72,39 @@ export const useUserStore = defineStore('user',
     }
     // 字典对应中文
     const getFieldText = async (data) => {
-      if (data.areaId && data.areaId !== 0) await getDictName(data, data.areaId, 'areaName') // 现居住地text
+      if (data.areaId && data.areaId !== 0) await getBaseInfoDictOfName(0, data, data.areaId, 'areaName') // 现居住地text
       if (data.birthday && data.birthday !== 0) data.birthdayText = timesTampChange(data.birthday).slice(0, 10) // 出生日期
-      if (data.eduType && data.eduType !== 0) data.eduTypeText = '硕士' // 学历
-      if (data.expType && data.expType !== 0) data.expTypeText = '1-3年' // 工作经验
-      if (data.sex && data.sex !== 0) data.sexTypeText = data.sex === '1' ? '男' : '女' // 性别
-      if (data.maritalStatus && data.maritalStatus !== 0) data.maritalText = '未婚' // 	婚姻状况
-      if (data.jobStatus && data.jobStatus !== 0) data.jobStatusText = '离职-随时到岗' // 	求职状态
-      if (data.jobType && data.jobType !== 0) data.jobTypeText = '全职' // 	求职类型
+      if (data.eduType && data.eduType !== 0) await getBaseInfoDictOfName(1, data, data.eduType, 'eduTypeText') // 学历
+      if (data.expType && data.expType !== 0) await getBaseInfoDictOfName(2, data, data.expType, 'expTypeText') // 工作经验
+      if (data.sex && data.sex !== 0) await getBaseInfoDictOfName(3, data, data.sex, 'sexTypeText') // 性别
+      if (data.maritalStatus && data.maritalStatus !== 0) await getMaritalText(data, data.maritalStatus) // 	婚姻状况
+      if (data.jobStatus && data.jobStatus !== 0) await getJobStatusText(data, data.jobStatus) // 	求职状态
+      if (data.jobType && data.jobType !== 0) await getBaseInfoDictOfName(4, data, data.jobType, 'jobTypeText') // 求职类型
       if (data.firstWorkTime && data.firstWorkTime !== 0) data.firstWorkTimeText = timesTampChange(data.firstWorkTime).slice(0, 10) // 首次工作时间
       return data
     }
+    const getMaritalText = async (data, value) => { // 字典未加上,暂时的
+      const items = [
+        { label: '未婚', value: '0' },
+        { label: '已婚', value: '1' },
+        { label: '离异', value: '2' },
+        { label: '保密', value: '3' }
+      ]
+      const obj = items.find(e => e.value === value)
+      const str = obj ? obj.label : '暂无'
+      data.maritalText = str
+    }
+    const getJobStatusText = async (data, value) => { // 字典未加上,暂时的
+      const items = [
+        { label: '离职-随时到岗', value: '0' },
+        { label: '在职-月内到岗', value: '1' },
+        { label: '在职-考虑机会', value: '2' },
+        { label: '在职-暂不考虑', value: '3' }
+      ]
+      const obj = items.find(e => e.value === value)
+      const str = obj ? obj.label : '暂无'
+      data.jobStatusText = str
+    }
 
     // 退出登录
     const userLogout = async () => {

+ 20 - 5
src/utils/getText.js

@@ -8,14 +8,29 @@ export const getText = (value, arr, itemText = 'label', itemValue = 'value') =>
   return item[itemText]
 }
 
+export const getBaseInfoDictOfName = async (index = 0, baseInfo, value, addKeyName) => { // 一维数组
+  const test = [
+    { dictType: 'menduner_area_type', itemText: 'name', itemValue: 'id', saveType: 'areaList' },
+    { dictType: 'menduner_education_type', itemText: 'label', itemValue: 'value' },
+    { dictType: 'menduner_exp_type', itemText: 'label', itemValue: 'value' },
+    { dictType: 'system_user_sex', itemText: 'label', itemValue: 'value' },
+    { dictType: 'menduner_job_type', itemText: 'label', itemValue: 'value' },
+  ]
+  const e = test[index]
 
-export const getDictName = async (obj, value, addKey, itemText = 'name', itemValue = 'id') => { // 一维数组
-  if (!value && value !== 0) obj[addKey] = '暂无'
-  const { data } = await getDict('menduner_area_type', {}, 'areaList')
-  const item = data.find(formItem => Number(formItem[itemValue]) === Number(value))
-  obj[addKey] = item ? item[itemText] : '暂无'
+  if (!value && value !== 0 && !e) baseInfo[addKeyName] = '暂无'
+  const { data } = await getDict(e.dictType, {}, (e.saveType || e.dictType))
+  const item = data.find(formItem => Number(formItem[e.itemValue]) === Number(value))
+  baseInfo[addKeyName] = item ? item[e.itemText] : '暂无'
 }
 
+// export const getBaseInfoDictOfName = async (baseInfo, value, addKey, itemText = 'name', itemValue = 'id') => { // 一维数组
+//   if (!value && value !== 0) baseInfo[addKey] = '暂无'
+//   const { data } = await getDict('menduner_area_type', {}, 'areaList')
+//   const item = data.find(formItem => Number(formItem[itemValue]) === Number(value))
+//   baseInfo[addKey] = item ? item[itemText] : '暂无'
+// }
+
 export const dealCanBeInputtedValueAndLabel = (formItem, item) => {
   if (item[formItem.key] && item[formItem.itemTextName]) { formItem.search(item[formItem.itemTextName], '触发下拉框内容'); formItem.value = item[formItem.key] }
   else { formItem.value = item[formItem.itemTextName]; formItem[formItem.itemTextName] = item[formItem.itemTextName] }

+ 4 - 14
src/views/resume/components/basicInfo.vue

@@ -215,17 +215,6 @@ const formItems = ref({
       slotName: 'phone',
     },
     {
-      // type: 'autocomplete',
-      // key: 'areaId',
-      // value: null,
-      // default: null,
-      // label: '所在城市 *',
-      // col: 6,
-      // outlined: true,
-      // itemText: 'label',
-      // itemValue: 'value',
-      // rules: [v => !!v || '请选择所在城市'],
-      // items: [{ label: '广州', value: '440100'}]
       slotName: 'areaType',
       key: 'areaId',
       value: null,
@@ -299,7 +288,7 @@ const formItems = ref({
       itemValue: 'value',
       rules: [v => !!v || '请选择求职状态'],
       items: [
-        { label: '离职-随时到岗 ', value: '0' },
+        { label: '离职-随时到岗', value: '0' },
         { label: '在职-月内到岗', value: '1' },
         { label: '在职-考虑机会', value: '2' },
         { label: '在职-暂不考虑', value: '3' }
@@ -317,7 +306,7 @@ const formItems = ref({
       itemValue: 'value',
       rules: [v => !!v || '请选择婚姻状况'],
       items: [
-        { label: '未婚 ', value: '0' },
+        { label: '未婚', value: '0' },
         { label: '已婚', value: '1' },
         { label: '离异', value: '2' },
         { label: '保密', value: '3' }
@@ -346,7 +335,6 @@ const handleSave = async () => {
   if (!valid) return
   const obj = {}
   formItems.value.options.forEach(e => {
-    // if (e.nameKey) obj[e.nameKey] = e.nameKey
     if (e.type === 'datepicker') obj[e.key] = getTimeStamp(e.value)
     else obj[e.key] = e.value
   })
@@ -387,6 +375,8 @@ formItems.value.options.forEach((e, index) => {
   if (baseInfo.value[e.key]) e.value = baseInfo.value[e.key]
   // 日期相关
   if (e.type === 'datepicker') e.value = timesTampChange(e.value).slice(0, 10)
+  // 所在城市回显
+  if (e.nameKey) e[e.nameKey] = baseInfo.value[e.nameKey]
 })
 </script>
 <style lang="scss" scoped>