Browse Source

修改报错

yangg 1 month ago
parent
commit
e31bb1bd07
2 changed files with 69 additions and 70 deletions
  1. 63 69
      src/views/JobApplication/list/crud.tsx
  2. 6 1
      src/views/JobApplication/report/index.vue

+ 63 - 69
src/views/JobApplication/list/crud.tsx

@@ -57,7 +57,7 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt
 		}
 
 		// 创建弹窗内容
-		const { user_info, profile, educations, family_members, trainings, work_experiences } = profileData.data;
+		const { user_info = {}, profile = {}, educations = [], family_members = [], trainings = [], work_experiences = [] } = profileData.data || {};
 
 		// 创建一个容器元素
 		const container = document.createElement('div');
@@ -88,90 +88,84 @@ export const createCrudOptions = function ({ crudExpose, context}: CreateCrudOpt
 						createVNode(ElTabPane, { label: '基本信息' }, {
 							default: () => createVNode(ElDescriptions, { column: 3, border: true }, {
 								default: () => [
-									createVNode(ElDescriptionsItem, { label: '姓名' }, { default: () => user_info.name }),
-									createVNode(ElDescriptionsItem, { label: '电话' }, { default: () => user_info.phone }),
-									createVNode(ElDescriptionsItem, { label: '年龄' }, { default: () => user_info.age }),
-									createVNode(ElDescriptionsItem, { label: '出生日期' }, { default: () => user_info.birth_date }),
-									createVNode(ElDescriptionsItem, { label: '性别' }, { default: () => user_info.gender_name }),
-									createVNode(ElDescriptionsItem, { label: '身份证号' }, { default: () => user_info.id_card }),
-									createVNode(ElDescriptionsItem, { label: '政治面貌' }, { default: () => profile.political_status }),
-									createVNode(ElDescriptionsItem, { label: '民族' }, { default: () => profile.ethnicity }),
-									createVNode(ElDescriptionsItem, { label: '身高' }, { default: () => profile.height + 'cm' }),
-									createVNode(ElDescriptionsItem, { label: '体重' }, { default: () => profile.weight + 'kg' }),
-									createVNode(ElDescriptionsItem, { label: '籍贯' }, { default: () => profile.native_place }),
-									createVNode(ElDescriptionsItem, { label: '户口所在地' }, { default: () => profile.household_location }),
-									createVNode(ElDescriptionsItem, { label: '现居地址' }, { default: () => profile.current_address }),
-									createVNode(ElDescriptionsItem, { label: '婚姻状况' }, { default: () => profile.marital_status_name }),
-									createVNode(ElDescriptionsItem, { label: '是否有子女' }, { default: () => profile.has_children ? '是' : '否' }),
-									createVNode(ElDescriptionsItem, { label: '期望薪资' }, { default: () => profile.expected_salary }),
-									createVNode(ElDescriptionsItem, { label: '紧急联系人' }, { default: () => profile.emergency_contact }),
-									createVNode(ElDescriptionsItem, { label: '紧急联系电话' }, { default: () => profile.emergency_phone }),
-									createVNode(ElDescriptionsItem, { label: '特长' }, { default: () => profile.specialties }),
-									createVNode(ElDescriptionsItem, { label: '人生格言' }, { default: () => profile.life_motto }),
-									createVNode(ElDescriptionsItem, { label: '招聘来源' }, { default: () => profile.recruitment_source_name }),
-									createVNode(ElDescriptionsItem, { label: '招聘来源详情' }, { default: () => profile.recruitment_source_detail }),
+									createVNode(ElDescriptionsItem, { label: '姓名' }, { default: () => user_info?.name || '-' }),
+									createVNode(ElDescriptionsItem, { label: '电话' }, { default: () => user_info?.phone || '-' }),
+									createVNode(ElDescriptionsItem, { label: '年龄' }, { default: () => user_info?.age || '-' }),
+									createVNode(ElDescriptionsItem, { label: '出生日期' }, { default: () => user_info?.birth_date || '-' }),
+									createVNode(ElDescriptionsItem, { label: '性别' }, { default: () => user_info?.gender_name || '-' }),
+									createVNode(ElDescriptionsItem, { label: '身份证号' }, { default: () => user_info?.id_card || '-' }),
+									createVNode(ElDescriptionsItem, { label: '政治面貌' }, { default: () => profile?.political_status || '-' }),
+									createVNode(ElDescriptionsItem, { label: '民族' }, { default: () => profile?.ethnicity || '-' }),
+									createVNode(ElDescriptionsItem, { label: '身高' }, { default: () => (profile?.height ? profile.height + 'cm' : '-') }),
+									createVNode(ElDescriptionsItem, { label: '体重' }, { default: () => (profile?.weight ? profile.weight + 'kg' : '-') }),
+									createVNode(ElDescriptionsItem, { label: '籍贯' }, { default: () => profile?.native_place || '-' }),
+									createVNode(ElDescriptionsItem, { label: '户口所在地' }, { default: () => profile?.household_location || '-' }),
+									createVNode(ElDescriptionsItem, { label: '现居地址' }, { default: () => profile?.current_address || '-' }),
+									createVNode(ElDescriptionsItem, { label: '婚姻状况' }, { default: () => profile?.marital_status_name || '-' }),
+									createVNode(ElDescriptionsItem, { label: '是否有子女' }, { default: () => (profile?.has_children ? '是' : '否') }),
+									createVNode(ElDescriptionsItem, { label: '期望薪资' }, { default: () => profile?.expected_salary || '-' }),
+									createVNode(ElDescriptionsItem, { label: '紧急联系人' }, { default: () => profile?.emergency_contact || '-' }),
+									createVNode(ElDescriptionsItem, { label: '紧急联系电话' }, { default: () => profile?.emergency_phone || '-' }),
+									createVNode(ElDescriptionsItem, { label: '特长' }, { default: () => profile?.specialties || '-' }),
+									createVNode(ElDescriptionsItem, { label: '人生格言' }, { default: () => profile?.life_motto || '-' }),
+									createVNode(ElDescriptionsItem, { label: '招聘来源' }, { default: () => profile?.recruitment_source_name || '-' }),
+									createVNode(ElDescriptionsItem, { label: '招聘来源详情' }, { default: () => profile?.recruitment_source_detail || '-' }),
 								]
 							})
 						}),
 						
 						// 教育经历标签页
 						createVNode(ElTabPane, { label: '教育经历' }, {
-							default: () => createVNode(ElTable, { data: educations, border: true, stripe: true }, {
-								default: () => [
-									createVNode(ElTableColumn, { prop: 'education_type_name', label: '学历类型' }),
-									createVNode(ElTableColumn, { prop: 'degree_name', label: '学位' }),
-									createVNode(ElTableColumn, { prop: 'school_name', label: '学校名称' }),
-									createVNode(ElTableColumn, { prop: 'major', label: '专业' }),
-									createVNode(ElTableColumn, { prop: 'start_date', label: '开始日期' }),
-									createVNode(ElTableColumn, { prop: 'end_date', label: '结束日期' }),
-								]
-							})
+							default: () => educations && educations.length > 0 
+								? createVNode(ElTable, { data: educations, border: true, stripe: true }, {
+									default: () => [
+										createVNode(ElTableColumn, { prop: 'education_type_name', label: '学历类型' }),
+										createVNode(ElTableColumn, { prop: 'degree_name', label: '学位' }),
+										createVNode(ElTableColumn, { prop: 'school_name', label: '学校名称' }),
+										createVNode(ElTableColumn, { prop: 'major', label: '专业' }),
+										createVNode(ElTableColumn, { prop: 'start_date', label: '开始日期' }),
+										createVNode(ElTableColumn, { prop: 'end_date', label: '结束日期' }),
+									]
+								})
+								: createVNode('div', { style: 'text-align: center; padding: 20px;' }, { default: () => '暂无教育经历数据' })
 						}),
 						
 						// 家庭成员标签页
 						createVNode(ElTabPane, { label: '家庭成员' }, {
-							default: () => createVNode(ElTable, { data: family_members, border: true, stripe: true }, {
-								default: () => [
-									createVNode(ElTableColumn, { prop: 'relation', label: '关系' }),
-									createVNode(ElTableColumn, { prop: 'name', label: '姓名' }),
-									createVNode(ElTableColumn, { prop: 'workplace', label: '工作单位' }),
-									createVNode(ElTableColumn, { prop: 'position', label: '职位' }),
-									createVNode(ElTableColumn, { prop: 'phone', label: '联系电话' }),
-								]
-							})
+							default: () => family_members && family_members.length > 0
+								? createVNode(ElTable, { data: family_members, border: true, stripe: true }, {
+									default: () => [
+										createVNode(ElTableColumn, { prop: 'relation', label: '关系' }),
+										createVNode(ElTableColumn, { prop: 'name', label: '姓名' }),
+										createVNode(ElTableColumn, { prop: 'workplace', label: '工作单位' }),
+										createVNode(ElTableColumn, { prop: 'position', label: '职位' }),
+										createVNode(ElTableColumn, { prop: 'phone', label: '联系电话' }),
+									]
+								})
+								: createVNode('div', { style: 'text-align: center; padding: 20px;' }, { default: () => '暂无家庭成员数据' })
 						}),
 						
 						// 工作经历标签页
 						createVNode(ElTabPane, { label: '工作经历' }, {
-							default: () => createVNode(ElTable, { data: work_experiences, border: true, stripe: true }, {
-								default: () => [
-									createVNode(ElTableColumn, { prop: 'company_name', label: '公司名称' }),
-									createVNode(ElTableColumn, { prop: 'department', label: '部门' }),
-									createVNode(ElTableColumn, { prop: 'position', label: '职位' }),
-									createVNode(ElTableColumn, { prop: 'start_date', label: '开始日期' }),
-									createVNode(ElTableColumn, { prop: 'end_date', label: '结束日期' }),
-									createVNode(ElTableColumn, { prop: 'monthly_salary', label: '月薪' }),
-									createVNode(ElTableColumn, { prop: 'company_size', label: '公司规模' }),
-									createVNode(ElTableColumn, { prop: 'supervisor_name', label: '主管姓名' }),
-									createVNode(ElTableColumn, { prop: 'supervisor_phone', label: '主管电话' }),
-									createVNode(ElTableColumn, { prop: 'resignation_reason', label: '离职原因' }),
-								]
-							})
+							default: () => work_experiences && work_experiences.length > 0
+								? createVNode(ElTable, { data: work_experiences, border: true, stripe: true }, {
+									default: () => [
+										createVNode(ElTableColumn, { prop: 'company_name', label: '公司名称' }),
+										createVNode(ElTableColumn, { prop: 'department', label: '部门' }),
+										createVNode(ElTableColumn, { prop: 'position', label: '职位' }),
+										createVNode(ElTableColumn, { prop: 'start_date', label: '开始日期' }),
+										createVNode(ElTableColumn, { prop: 'end_date', label: '结束日期' }),
+										createVNode(ElTableColumn, { prop: 'monthly_salary', label: '月薪' }),
+										createVNode(ElTableColumn, { prop: 'company_size', label: '公司规模' }),
+										createVNode(ElTableColumn, { prop: 'supervisor_name', label: '主管姓名' }),
+										createVNode(ElTableColumn, { prop: 'supervisor_phone', label: '主管电话' }),
+										createVNode(ElTableColumn, { prop: 'resignation_reason', label: '离职原因' }),
+									]
+								})
+								: createVNode('div', { style: 'text-align: center; padding: 20px;' }, { default: () => '暂无工作经历数据' })
 						}),
 						
-						// 培训经历标签页
-					/* 	createVNode(ElTabPane, { label: '培训经历' }, {
-							default: () => createVNode(ElTable, { data: trainings, border: true, stripe: true }, {
-								default: () => [
-									createVNode(ElTableColumn, { prop: 'training_name', label: '培训名称' }),
-									createVNode(ElTableColumn, { prop: 'institution', label: '培训机构' }),
-									createVNode(ElTableColumn, { prop: 'start_date', label: '开始日期' }),
-									createVNode(ElTableColumn, { prop: 'end_date', label: '结束日期' }),
-									createVNode(ElTableColumn, { prop: 'description', label: '描述' }),
-									createVNode(ElTableColumn, { prop: 'certificate', label: '证书' }),
-								]
-							})
-						}), */
+						// 培训经历标签页已被注释掉,保持原样
 					]
 				}),
 				footer: () => createVNode(ElButton, {

+ 6 - 1
src/views/JobApplication/report/index.vue

@@ -1196,7 +1196,12 @@ const scrollToSection = (sectionId) => {
                 >
               </div>
               <div>
-                <h1 class="text-2xl font-bold">{{ candidateInfo.name }}</h1>
+                <div class="flex items-center gap-2">
+                  <h1 class="text-2xl font-bold">{{ candidateInfo.name }}</h1>
+                  <el-button size="small" style="color: #1d1e3a; text-decoration: underline;" type="text" @click="handleViewProfile">
+                    个人信息
+                  </el-button>
+                </div>
                 <p class="text-gray-600">{{ candidateInfo.phoneNumber }}</p>
                 <p v-if="apiData?.position" class="text-gray-500 text-sm">
                   应聘职位: {{ apiData.position.title }} - {{ apiData.position.department }}