소스 검색

修改内容

yangg 3 주 전
부모
커밋
ff05854c87

+ 8 - 7
src/views/position/detail/index.vue

@@ -3327,8 +3327,7 @@ const addSelectedStepType = async (type: string, label: string) => {
 
   // 添加视频宣讲类型的处理
   if (type === 'video_presentation') {
-    confirmResumeCollection();
-
+    showVideoLectureConfig();
     showOptionsMenu.value = false;
     return;
   }
@@ -5887,7 +5886,7 @@ const defaultConfig = {
   household_location: { visible: true, label: '户口所在地', required: false },
   marital_status: { visible: true, label: '婚育状况', required: false },
   expected_salary: { visible: true, label: '期望薪资(元/月)', required: false },
-  political_status: { visible: true, label: '政治面貌', required: false },
+/*   political_status: { visible: true, label: '政治面貌', required: false }, */
 
   // 家庭成员信息
   family_member: {
@@ -5917,8 +5916,8 @@ const defaultConfig = {
   },
 
   // 专业技能
-  require_professional_skills: { visible: true, label: '专业技能', required: true },
-  training_fields_config: { visible: true, label: '受过的培训', required: true },
+  require_professional_skills: { visible: false, label: '专业技能', required: true },
+  training_fields_config: { visible: false, label: '受过的培训', required: true },
 
   // 工作经历
   work_experience: {
@@ -5983,12 +5982,13 @@ const saveFieldConfig = async () => {
         id_card: { required: fieldConfig.id_card.required, visible: fieldConfig.id_card.visible },
         gender: { required: fieldConfig.gender.required, visible: fieldConfig.gender.visible },
         birth_date: { required: false, visible: true },
-        political_status: { required: fieldConfig.political_status.required, visible: fieldConfig.political_status.visible },
+       /*  political_status: { required: fieldConfig.political_status.required, visible: fieldConfig.political_status.visible }, */
         ethnicity: { required: fieldConfig.ethnicity.required, visible: fieldConfig.ethnicity.visible },
         height: { required: fieldConfig.height.required, visible: fieldConfig.height.visible },
         weight: { required: fieldConfig.weight.required, visible: fieldConfig.weight.visible },
         marital_status: { required: fieldConfig.marital_status.required, visible: fieldConfig.marital_status.visible },
         expected_salary: { required: fieldConfig.expected_salary.required, visible: fieldConfig.expected_salary.visible },
+         current_address: { required: fieldConfig.current_address.required, visible: fieldConfig.current_address.visible },
         household_location: { required: fieldConfig.household_location.required, visible: fieldConfig.household_location.visible }
       },
 
@@ -6015,6 +6015,7 @@ const saveFieldConfig = async () => {
         resignation_reason: { required: false, visible: true },
         company_size: { required: fieldConfig.work_experience.fields.company_size.required, visible: fieldConfig.work_experience.fields.company_size.visible },
         monthly_salary: { required: fieldConfig.work_experience.fields.monthly_salary.required, visible: fieldConfig.work_experience.fields.monthly_salary.visible },
+        direct_supervisor:{required: fieldConfig.work_experience.fields.direct_supervisor.required, visible: fieldConfig.work_experience.fields.direct_supervisor.visible},
         supervisor_phone: { required: fieldConfig.work_experience.fields.supervisor_phone.required, visible: fieldConfig.work_experience.fields.supervisor_phone.visible }
       },
 
@@ -6123,7 +6124,7 @@ const getBasicFields = () => {
     household_location: fieldConfig.household_location,
     marital_status: fieldConfig.marital_status,
     expected_salary: fieldConfig.expected_salary,
-    political_status: fieldConfig.political_status
+    /* political_status: fieldConfig.political_status */
   };
   return basicFields;
 };

+ 2 - 2
src/views/position/detail/utils.ts

@@ -6,11 +6,11 @@ import type { ProfileFieldsConfig } from './types';
  * @param responseData - 接口返回的配置数据
  */
 export function updateFieldConfig(fieldConfig: any, responseData: ProfileFieldsConfig) {
-  // 基础字段更新'three_period',
+  // 基础字段更新'three_period',, 'political_status'
   const basicFields = [
     'name', 'gender', 'phone', 'id_card', 'ethnicity', 
     'height', 'weight', 'current_address', 'household_location', 
-    'marital_status', 'expected_salary', 'political_status'
+    'marital_status', 'expected_salary'
   ];
   
   basicFields.forEach(field => {

+ 7 - 0
src/views/system/account/api.ts

@@ -57,4 +57,11 @@ export function CopyFromBase(tenantId: number) {
         },
 		timeout: 0,
     });
+}
+
+export function GetCopyTaskStatus(taskId: string) {
+    return request({
+        url: `/api/platform/tenant/copy-status/${taskId}/`,
+        method: 'get',
+    });
 } 

+ 82 - 5
src/views/system/account/crud.tsx

@@ -2,11 +2,74 @@ import * as api from './api';
 import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud';
 import * as companyApi from '../company/api';
 import { dictionary } from '/@/utils/dictionary';
-import { successMessage } from '/@/utils/message';
+import { successMessage, errorMessage } from '/@/utils/message';
 import { auth } from '/@/utils/authFunction';
 import { Md5 } from 'ts-md5';
 
 export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet {
+	// 轮询任务状态的函数
+	const pollTaskStatus = async (taskId: string, maxAttempts: number = 60): Promise<void> => {
+		let attempts = 0;
+		
+		const poll = async (): Promise<void> => {
+			try {
+				attempts++;
+				const response = await api.GetCopyTaskStatus(taskId);
+				
+				console.log(`任务状态检查 (${attempts}/${maxAttempts}):`, response);
+				
+				// 根据任务状态决定下一步操作
+				if (response.data && response.data.status) {
+					const status = response.data.status;
+					
+					if (status === 'completed' || status === 'success') {
+						console.log('配置复制任务完成');
+						successMessage('配置复制任务已完成');
+						return;
+					} else if (status === 'failed' || status === 'error') {
+						console.error('配置复制任务失败:', response.data.message || '未知错误');
+						errorMessage('配置复制任务失败: ' + (response.data.message || '未知错误'));
+						return;
+					} else if (status === 'running' || status === 'in_progress' || status === 'pending') {
+						// 任务仍在进行中,继续轮询
+						if (attempts < maxAttempts) {
+							setTimeout(poll, 5000); // 5秒后再次检查
+						} else {
+							console.warn('轮询超时,任务可能仍在进行中');
+							errorMessage('配置复制任务超时,请稍后手动检查任务状态');
+						}
+					} else {
+						// 未知状态,继续轮询
+						if (attempts < maxAttempts) {
+							setTimeout(poll, 5000);
+						} else {
+							console.warn('轮询超时,未知任务状态');
+							errorMessage('配置复制任务状态未知,请稍后手动检查');
+						}
+					}
+				} else {
+					// 响应格式异常
+					if (attempts < maxAttempts) {
+						setTimeout(poll, 5000);
+					} else {
+						console.error('任务状态响应格式异常');
+						errorMessage('无法获取任务状态,请稍后手动检查');
+					}
+				}
+			} catch (error) {
+				console.error('检查任务状态时出错:', error);
+				if (attempts < maxAttempts) {
+					setTimeout(poll, 5000);
+				} else {
+					errorMessage('检查任务状态失败,请稍后手动检查');
+				}
+			}
+		};
+		
+		// 开始轮询
+		poll();
+	};
+
 	const pageRequest = async (query: any) => {
 		console.log(query)
 		return await api.GetList(query);
@@ -26,12 +89,26 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
 			// 使用Promise.resolve().then()确保在下一个微任务中执行,不阻塞当前操作
 			Promise.resolve().then(async () => {
 				try {
-					await api.CopyFromBase(form.tenant_id);
-					console.log('Copy from base completed successfully');
+					const copyResponse = await api.CopyFromBase(form.tenant_id);
+					console.log('Copy from base response:', copyResponse);
+					
+					// 检查响应是否包含task_id
+					if (copyResponse && copyResponse.data && copyResponse.data.task_id) {
+						const taskId = copyResponse.data.task_id;
+						console.log('开始轮询任务状态,task_id:', taskId);
+						
+						// 显示任务已启动的消息
+						successMessage('用户添加成功,配置复制任务已启动');
+						
+						// 开始轮询任务状态
+						pollTaskStatus(taskId);
+					} else {
+						console.warn('Copy from base响应中未找到task_id');
+						successMessage('用户添加成功,但无法获取配置复制任务ID');
+					}
 				} catch (error) {
 					console.error('Copy from base failed:', error);
-					// 可以选择是否要显示错误消息给用户
-					// successMessage('用户添加成功,但初始化数据失败');
+					errorMessage('用户添加成功,但启动配置复制任务失败');
 				}
 			});
 		}

+ 1 - 1
src/views/talent/list/components/BatchStatusDialog.vue

@@ -13,7 +13,7 @@
           <el-option label="考察期" value="2" />
           <el-option label="在职" value="3" />
           <el-option label="已离职" value="4" />
-          <el-option label="转入在外人才库" value="7" />
+          <el-option label="转入在外人才库" value="6" />
         </el-select>
       </el-form-item>
     </el-form>

+ 2 - 1
src/views/talent/overseas/components/BatchStatusDialog.vue

@@ -9,10 +9,11 @@
     <el-form :model="form" label-width="100px">
       <el-form-item label="选择状态">
         <el-select v-model="form.status" placeholder="请选择状态" style="width: 100%">
+          <el-option label="转入在职人才库" :value="1" />
           <el-option label="曾就职" :value="6" />
           <el-option label="具备潜力" :value="7" />
           <!-- <el-option label="待面试" :value="0" />
-          <el-option label="已面试" :value="1" />
+          
           <el-option label="已录用" :value="2" />
           <el-option label="已拒绝" :value="3" /> -->
         </el-select>