yangg 3 dias atrás
pai
commit
155c8b3672

+ 20 - 7
src/views/JobApplication/list/index.vue

@@ -46,14 +46,21 @@
 					</div>
 					
 					<!-- 待安排 -->
-					<div class="tree-item" :class="{ active: activeNode === 'status-1' }" @click="handleNodeClick({ type: 'status', value: 0, id: 'status-1' })">
+					<div class="tree-item" :class="{ active: activeNode === 'status-0' }" @click="handleNodeClick({ type: 'status', value: 0, id: 'status-0' })">
 						<div class="item-content">
-							<el-icon><Clock /></el-icon>
+							<el-icon><Message /></el-icon>
 							<span>待通知</span>
 						</div>
 						<div class="item-count" v-if="statusCounts[1]">{{ statusCounts[1] }}</div>
 					</div>
-					
+						<!-- 待安排 -->
+					<div class="tree-item" :class="{ active: activeNode === 'status-1' }" @click="handleNodeClick({ type: 'status', value: 1, id: 'status-1' })">
+						<div class="item-content">
+							<el-icon><Clock /></el-icon>
+							<span>已通知待面试</span>
+						</div>
+						<div class="item-count" v-if="statusCounts[1]">{{ statusCounts[5] }}</div>
+					</div>
 					<!-- 推进中 -->
 					<div class="tree-item" :class="{ active: activeNode === 'status-2' }" @click="handleNodeClick({ type: 'status', value: 2, id: 'status-2' })">
 						<div class="item-content">
@@ -76,7 +83,7 @@
 					<div class="tree-item" :class="{ active: activeNode === 'status-4' }" @click="handleNodeClick({ type: 'status', value: 4, id: 'status-4' })">
 						<div class="item-content">
 							<el-icon><RefreshRight /></el-icon>
-							<span>已拒绝</span>
+							<span>拒不录用</span>
 						</div>
 						<div class="item-count" v-if="statusCounts[4]">{{ statusCounts[4] }}</div>
 					</div>
@@ -102,7 +109,7 @@ import { useFs } from '@fast-crud/fast-crud';
 import { createCrudOptions } from './crud';
 import { GetPermission } from './api';
 import { handleColumnPermission } from '/@/utils/columnPermission';
-import { Grid, Clock, ArrowRight, Check, RefreshRight, Briefcase } from '@element-plus/icons-vue';
+import { Grid, Clock, ArrowRight, Check, RefreshRight, Briefcase,Message } from '@element-plus/icons-vue';
 import BatchTagsDialog from './components/index.vue';
 import BatchStatusDialog from './components/BatchStatusDialog.vue';
 import smSnotification from './components/smSnotification.vue';
@@ -139,7 +146,8 @@ const statusCounts = reactive<Record<number, number>>({
 	1: 0, // 待面试
 	2: 0, // 已面试
 	3: 0, // 已录用
-	4: 0  // 已拒绝
+	4: 0,  // 已拒绝
+	5:0//已通知待面试
 });
 
 // 职位列表
@@ -191,7 +199,8 @@ const fetchStatusSummary = async () => {
 						0: 1, // API中的0对应前端的1(待面试)
 						2: 2, // 已面试
 						3: 3, // 已录用
-						4: 4  // 已拒绝
+						4: 4,  // 已拒绝
+						5:5//已通知待面试
 					};
 					
 					const frontendStatus = statusMap[item.status];
@@ -205,6 +214,7 @@ const fetchStatusSummary = async () => {
 				statusCounts[2] = data.data.interviewed || 0;
 				statusCounts[3] = data.data.hired || 0;
 				statusCounts[4] = data.data.rejected || 0;
+				statusCounts[5] = data.data.notified || 0;
 			}
 		} else {
 			console.error('获取申请状态统计失败:', data.message || '未知错误');
@@ -318,6 +328,9 @@ onMounted(async () => {
 		const statusValue = Number(urlStatus);
 		switch (statusValue) {
 			case 0:
+				activeNode.value = 'status-0';
+				break;
+			case 1:
 				activeNode.value = 'status-1';
 				break;
 			case 2:

+ 86 - 20
src/views/position/detail/index.vue

@@ -1266,6 +1266,7 @@
           >
             <el-option label="开放问题" :value="0" />
             <el-option label="单选题" :value="1" />
+            <el-option label="看图选答案" :value="3" />
             <el-option label="多选题" value="multiple" />
             <el-option label="填空题" value="fill" />
             <el-option label="自言语" value="self" />
@@ -1290,7 +1291,8 @@
           </el-select>
           <div class="form-tip">选择题目适用的职位类型,可多选</div>
         </div>
-        <div class="form-item" v-if="questionForm.question_form === 1 || questionForm.question_form === 2">
+        <div class="form-item" v-if="questionForm.question_form === 1 || 
+        questionForm.question_form === 2 || questionForm.question_form === 3">
           <div class="form-label">选项</div>
           <div>
             <div class="option-header" style="display: flex; margin-bottom: 10px; font-weight: bold;">
@@ -1317,7 +1319,7 @@
               >
                 <div 
                   @click="() => {
-                    if (questionForm.question_form === 1) {
+                    if (questionForm.question_form === 1 || questionForm.question_form === 3) {
                       // 单选题:只能有一个正确答案
                       questionForm.options.forEach((item, idx) => {
                         item.is_correct = (idx === index);
@@ -1329,7 +1331,7 @@
                   }"
                   style="cursor: pointer; width: 80px; text-align: center;"
                 >
-                  <template v-if="questionForm.question_form === 1">
+                  <template v-if="questionForm.question_form === 1 || questionForm.question_form === 3">
                     <!-- 单选题使用单选按钮 -->
                     <el-radio 
                     :disabled="true"
@@ -1379,7 +1381,21 @@
           </div>
           <div class="form-tip">添加选项并设置正确答案,单选题只能有一个正确答案,多选题可以有多个正确答案</div>
         </div>
-
+        <div v-if="questionForm.question_form === 3">
+          <div class="form-label">题目图片</div>
+          <img :src="questionForm.question_image_url" alt="">
+         <!--  <el-upload
+            class="avatar-uploader"
+            :action="uploadUrl"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :auto-upload="false"
+            :file-list="questionForm.question_image_url"
+            :disabled="true"
+          >
+            <el-button size="small" type="primary">点击上传</el-button>
+          </el-upload> -->
+        </div>
         <div class="form-item">
           <div class="form-label">分类</div>
           <el-select
@@ -1966,7 +1982,7 @@
           <div class="setting-item">
             <div class="setting-info">
               <span class="setting-name">「人脸一致性检测」</span>
-              <p class="setting-desc">该强调,非本人操作人脸可视化提醒和警示,默认开启</p>
+              <p class="setting-desc">选取后,将会在候选人离开前置摄像头时进行提示,默认开启</p>
             </div>
             <el-switch v-model="interviewSettings.faceConsistency" :disabled="true"/>
           </div>
@@ -1974,7 +1990,7 @@
           <div class="setting-item">
             <div class="setting-info">
               <span class="setting-name">「 防截屏 / 录屏 」</span>
-              <p class="setting-desc">该强调,非本人前来体验截屏录屏以上行为,为防止提醒</p>
+              <p class="setting-desc">选取后,将会在候选人截屏或录屏时进行提示,为防止泄题,默认开启</p>
             </div>
             <el-switch v-model="interviewSettings.preventScreenshot" :disabled="true"/>
           </div>
@@ -1982,28 +1998,28 @@
           <div class="setting-item">
             <div class="setting-info">
               <span class="setting-name">「 切 屏 预 制 」</span>
-              <p class="setting-desc">该强调,非本人前使用切屏处理用页面,为防作弊警示</p>
+              <p class="setting-desc">选取后,将会在候选人切屏时进行提示,为防止作弊,默认开启</p>
             </div>
             <el-switch v-model="interviewSettings.screenSwitchAlert" :disabled="true">
-              <span class="switch-desc">切屏超过 2 次关闭,作本关面试</span>
+              <span class="switch-desc">切屏超过 2 次关闭,作本关面试</span>
             </el-switch>
           </div>
 
           <div class="setting-item">
             <div class="setting-info">
-              <span class="setting-name">「 情 绪 识 别」</span>
-              <p class="setting-desc">该现已,条件较差以及入侵过程中的作弊,条件等好等</p>
+              <span class="setting-name">「情绪/眼动检测」</span>
+              <p class="setting-desc">该现已,将对候选人整场面试的情绪与压力表现进行分析,建议开启</p>
             </div>
-            <el-switch v-model="interviewSettings.positionDetection" :disabled="true"/>
+            <el-switch v-model="interviewSettings.positionDetection" />
           </div>
 
-          <div class="setting-item">
+         <!--  <div class="setting-item">
             <div class="setting-info">
               <span class="setting-name">「 眼 动 检 测 」</span>
               <p class="setting-desc">视实检测候选人的眼动频率进行分析,页面等较等</p>
             </div>
             <el-switch v-model="interviewSettings.eyeMovementDetection" :disabled="true"/>
-          </div>
+          </div> -->
         </div>
 
         <!-- 其他设置 -->
@@ -2202,7 +2218,22 @@
       </div>
       
       <template #footer>
+        <!--  <div class="selected-questions-preview" v-if="selectedQuestions.length > 0">
+          <div class="preview-title">已选择的题目({{ selectedQuestions.length }}):</div>
+          <div class="preview-list">
+            <el-tag
+              v-for="(question, index) in selectedQuestions"
+              :key="index"
+              class="preview-item"
+              closable
+              @close="removeSelectedQuestion(question)"
+            >
+              {{ question.question }}
+            </el-tag>
+          </div>
+        </div> -->
         <span class="dialog-footer">
+          <el-button @click="handleQuestionSelectPreview">预览已选</el-button>
           <el-button @click="cancelQuestionSelect">取消</el-button>
           <el-button type="primary" @click="confirmSelect" style="background-color: #ed7d31;border-color: #ed7d31;">确定</el-button>
         </span>
@@ -2373,6 +2404,30 @@
         </span>
       </template>
     </el-dialog>
+    <!-- 查看已选 -->
+    <el-dialog
+     v-model="previewDialog"
+      title="预览"
+      width="60%"
+      :close-on-click-modal="false">
+        <div class="selected-questions-preview" v-if="selectedQuestions.length > 0">
+            <div class="preview-title">已选择的题目({{ selectedQuestions.length }}):</div>
+            <div class="preview-list">
+              <el-tag
+                v-for="(question, index) in selectedQuestions"
+                :key="index"
+                class="preview-item"
+                closable
+                style="margin-bottom: 10px;"
+              >
+                {{ question.question }}
+              </el-tag>
+            </div>  
+          </div> 
+          <div class="preview-footer">
+            <el-button type="primary" @click="previewDialog = false">关闭</el-button>
+          </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -2671,6 +2726,12 @@ const handleLocationChange = (value: any) => {
   }
 };
 
+const previewDialog=ref(false)
+/* 预览已选 */
+const handleQuestionSelectPreview = () => {
+  previewDialog.value = true;
+}
+
 const handleIsRequiredCorrectChange = (id: number, value: boolean) => {
     // UpdateObj({
     //     id: id,
@@ -2817,7 +2878,8 @@ const questionForm = reactive({
   category: '', // 分类
   tags: [], // 标签
   suggestedDuration: 60, // 建议时长,默认60秒
-  scoring_reference: '' // 评分标准
+  scoring_reference: '', // 评分标准
+  question_image_url: '' // 题目图片
 });
 
 // 定义胜任力标签类型
@@ -2871,7 +2933,8 @@ const resetQuestionForm = () => {
     category: '',
     tags: [],
     suggestedDuration: 60,
-    scoring_reference: ''
+    scoring_reference: '',
+    question_image_url: ''
   });
 };
 
@@ -2923,6 +2986,7 @@ const confirmAddQuestion = async () => {
       category: questionForm.category,
       suggestedDuration: questionForm.suggestedDuration,
       scoring_reference: questionForm.scoring_reference,
+      question_image_url: questionForm.question_image_url
     };
     console.log(newQuestion);
 
@@ -3937,7 +4001,7 @@ const handleImportQuestion = () => {
   // 重置表单数据
   questionBankFormData.value = {
     question: '',
-    question_form: null,
+    question_form: 0,
     competency_tags: [],
     position_types: [],
     category_id: null,
@@ -3982,7 +4046,8 @@ const handleQuestionBankFormSubmit = async (formData: any) => {
           enable_follow_up: false,
           maxAnswers: 1,
           weight: 100,
-          source: 'custom_selected' as const
+          source: 'custom_selected' as const,
+          question_image_url: formData.question_image_url || ''
         };
         
         // 添加到题目列表
@@ -4046,6 +4111,7 @@ const editQuestion = (index: number) => {
             enable_follow_up:res.data.enable_follow_up,
             maxAnswers:res.data.maxAnswers,
             weight:res.data.weight,
+            question_image_url:res.data.question_image_url
           }
           Object.assign(questionForm, data);
         }
@@ -5977,10 +6043,10 @@ const saveFieldConfig = async () => {
 const getBasicFields = () => {
   const basicFields = {
     name: fieldConfig.name,
+     id_card: fieldConfig.id_card,
+     phone: fieldConfig.phone,
     gender: fieldConfig.gender,
     three_period: fieldConfig.three_period,
-    phone: fieldConfig.phone,
-    id_card: fieldConfig.id_card,
     ethnicity: fieldConfig.ethnicity,
     height: fieldConfig.height,
     weight: fieldConfig.weight,
@@ -6693,7 +6759,7 @@ const getTreeData = () => {
 		GetCategoryList({}).then((res: any) => {
 			console.log('res', res);
 			const categoryList = res.data.items.filter((item: any) => 
-				!['技术能力', '服务意识', '职业素质','基本常识','色盲检测','内容铺垫'].includes(item.name)
+				!['技术能力', '服务意识', '职业素质','基本常识','色盲检测','内容铺垫','心理测试1'].includes(item.name)
 			);
 			GetTagList({}).then((res: any) => {
 				console.log('res', res);

+ 12 - 3
src/views/questionBank/list/components/BlankAnswerEditor.vue

@@ -65,11 +65,16 @@ const blankCount = computed(() => {
 
 // 监听数据变化
 watch(() => blankAnswers.value, (newVal) => {
-  emit('update:modelValue', newVal);
+  if (JSON.stringify(newVal) !== JSON.stringify(props.modelValue)) {
+    emit('update:modelValue', newVal);
+  }
 }, { deep: true });
 
+// 监听 props 变化
 watch(() => props.modelValue, (newVal) => {
-  blankAnswers.value = [...newVal];
+  if (JSON.stringify(blankAnswers.value) !== JSON.stringify(newVal)) {
+    blankAnswers.value = [...newVal];
+  }
 }, { deep: true });
 
 // 监听题目变化,自动调整填空数量
@@ -77,11 +82,15 @@ watch(() => props.question, (newQuestion) => {
   const newBlankCount = (newQuestion || '').split('___').length - 1;
   
   if (newBlankCount > 0 && blankAnswers.value.length !== newBlankCount) {
-    blankAnswers.value = Array.from({ length: newBlankCount }, (_, i) => ({
+    const newBlankAnswers = Array.from({ length: newBlankCount }, (_, i) => ({
       blank_index: i + 1,
       correct_answer: blankAnswers.value[i]?.correct_answer || '',
       score: blankAnswers.value[i]?.score || 5
     }));
+    
+    if (JSON.stringify(newBlankAnswers) !== JSON.stringify(blankAnswers.value)) {
+      blankAnswers.value = newBlankAnswers;
+    }
   }
 });
 

+ 49 - 5
src/views/questionBank/list/components/QuestionBankForm.vue

@@ -204,7 +204,7 @@
 
       <!-- 选项列表 (单选题、多选题、心理评估题) -->
       <el-form-item 
-        v-if="[1, 2, 4].includes(formData.question_form)"
+        v-if="[1, 2,3, 4].includes(formData.question_form)"
         label="选项列表"
       >
         <QuestionOptionsEditor
@@ -212,6 +212,37 @@
           :question-form="formData.question_form"
         />
       </el-form-item>
+      <!-- 题目图片上传 (仅看图选答案类型显示) -->
+      <el-form-item 
+        v-if="formData.question_form === 3"
+        label="题目图片"
+       
+      >
+        <el-upload
+          class="question-image-upload"
+          :action="`${apiBaseUrl}/api/system/admin_upload/`"
+          :data="{
+            'tenant_id': Session.get('tenant_id')
+          }"
+          :headers="{
+            'Authorization': `JWT ${Session.get('token')}`
+          }"
+          :show-file-list="true"
+          :limit="1"
+          accept="image/*"
+          v-model="formData.question_image_url"
+          :on-success="handleImageUploadSuccess"
+          :on-error="handleImageUploadError"
+        >
+          <el-button type="primary">点击上传图片</el-button>
+          <template #tip>
+            <div class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
+          </template>
+        </el-upload>
+        <div v-if="formData.question_image_url" style="margin-top: 10px;">
+          <img :src="formData.question_image_url" style="max-width: 200px; max-height: 200px;" />
+        </div>
+      </el-form-item>
 
       <!-- 评分标准  v-if="[4, 6].includes(formData.question_form)"-->
       <el-form-item 
@@ -247,8 +278,11 @@ import BlankAnswerEditor from './BlankAnswerEditor.vue';
 import { Session } from '/@/utils/storage';
 import {GenerateCompetency,GetPositionTags} from '../../../position/detail/api'
 import {useRoute} from 'vue-router'
-
+import { ElMessage, ElMessageBox, ElDrawer } from 'element-plus';
 const route = useRoute();
+
+const apiBaseUrl = import.meta.env.VITE_API_URL;
+
 interface Props {
   modelValue?: any;
   isEdit?: boolean;
@@ -272,7 +306,8 @@ const formRef = ref<FormInstance>();
 // 表单数据
 const formData = reactive({
   question: '',
-  question_form: null,
+  question_form: 0,
+  question_image_url: '', // 添加图片URL字段
   competency_tags: [],
   competency_tags_config: [],
   position_types: [],
@@ -293,7 +328,8 @@ const formData = reactive({
 const formRules = {
   question: [{ required: true, message: '题目内容必填', trigger: 'blur' }],
   question_form: [{ required: true, message: '题目形式必填', trigger: 'change' }],
-  status: [{ required: true, message: '状态必填', trigger: 'change' }]
+  status: [{ required: true, message: '状态必填', trigger: 'change' }],
+  question_image_url: [{ required: true, message: '看图选答案题型必须上传图片', trigger: 'change' }]
 };
 
 // 选项数据
@@ -314,7 +350,7 @@ watch(() => props.modelValue, (newVal) => {
 
 // 处理题目形式变化
 const handleQuestionFormChange = (value: number) => {
-  if (value === 1 || value === 2) {
+  if (value === 1 || value === 2|| value === 3) {
     // 单选题或多选题
     formData.options = [
       { option_text: '', is_correct: false, sort: 1 },
@@ -345,7 +381,15 @@ const handleQuestionFormChange = (value: number) => {
     formData.options = [];
   }
 };
+// 添加图片上传处理函数
+const handleImageUploadSuccess = (response: any) => {
+    formData.question_image_url = response.url;
+    ElMessage.success('图片上传成功');
+};
 
+const handleImageUploadError = () => {
+  ElMessage.error('图片上传失败');
+};
 // 处理胜任力标签变化
 const handleCompetencyTagsChange = (value: number[]) => {
   if (!formData.competency_tags_config) {

+ 3 - 2
src/views/questionBank/list/components/QuestionOptionsEditor.vue

@@ -50,7 +50,8 @@
           >
             <div style="width: 80px; text-align: center;">
               <el-radio 
-                v-if="questionForm === 1"
+                v-if="questionForm === 1 || questionForm === 3"
+
                 :model-value="option.is_correct"
                 :label="true"
                 @change="handleSingleChoice(index)"
@@ -150,7 +151,7 @@ watch(() => props.modelValue, (newVal) => {
 
 // 处理单选题的勾选逻辑
 const handleSingleChoice = (selectedIndex: number) => {
-  if (props.questionForm === 1) {
+  if (props.questionForm === 1|| props.questionForm === 3) {
     // 创建新数组,避免直接修改响应式数据
     const newOptions = options.value.map((item, index) => ({
       ...item,

+ 61 - 3
src/views/questionBank/list/crud.tsx

@@ -1267,7 +1267,7 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp
 					form: {
 						show: compute(({ form ,mode}) => {
 							form.mode= mode
-							return form && (form.question_form === 1 || form.question_form === 2 || form.question_form === 4);
+							return form && (form.question_form === 1 || form.question_form === 2 || form.question_form === 3|| form.question_form === 4);
 						}),
 						component: {
 							name: 'el-card',
@@ -1359,7 +1359,7 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp
 													>
 														<div 
 															onClick={() => {
-																if (form.question_form === 1) {
+																if (form.question_form === 1 || form.question_form === 3) {
 																	// 单选题:只能有一个正确答案
 																	form.options.forEach((item: any, idx: number) => {
 																		item.is_correct = (idx === index);
@@ -1371,7 +1371,7 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp
 															}}
 															style="cursor: pointer; width: 80px; text-align: center;"
 														>
-															{form.question_form === 1 ? (
+															{(form.question_form === 1 || form.question_form === 3)? (
 																// 单选题使用单选按钮
 																<el-radio 
 																	modelValue={option.is_correct}
@@ -1427,6 +1427,8 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp
 								return '添加单选题的选项,并标记正确答案(只能有一个正确答案)';
 							} else if (form.question_form === 2) {
 								return '添加多选题的选项,并标记正确答案(可以有多个正确答案)';
+							} else if (form.question_form === 3) {
+								return '添加看图选答案的选项,并标记正确答案(只能有一个正确答案)';
 							} else if (form.question_form === 4) {
 								return '添加心理评估题的选项,并设置每个选项的分值';
 							}
@@ -1434,6 +1436,62 @@ export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOp
 						})
 					}
 				},
+				// 添加图片上传字段
+				question_image_url: {
+					title: '题目图片',
+					search: { show: false },
+					column: { show: false },
+					form: {
+						show: compute(({ form }) => {
+							return form && form.question_form === 3; // 仅在看图选答案类型时显示
+						}),
+						component: {
+							name: 'fs-component',
+							render: ({ form, mode }: { form: any, mode: string }) => {
+								return (
+									<div>
+										<el-upload
+											action={`${import.meta.env.VITE_API_URL}/api/system/admin_upload/`}
+											data={{
+												'tenant_id':Session.get('tenant_id'),
+											}}
+											headers={{
+												'Authorization': `JWT ${Session.get('token')}`
+											}}
+											show-file-list={true}
+											limit={1}
+											accept="image/*"
+											v-model={form.question_image_url}
+											disabled={mode === 'view'}
+											onSuccess={(response: any) => {
+												console.log(response);
+												form.question_image_url = response.url;
+												successMessage('图片上传成功');
+												
+											}}
+											onError={() => {
+												warningMessage('图片上传失败');
+											}}
+										>
+											<el-button type="primary" disabled={mode === 'view'}>
+												点击上传图片
+											</el-button>
+											<div slot="tip" class="el-upload__tip">
+												只能上传jpg/png文件,且不超过500kb
+											</div>
+										</el-upload>
+										{form.question_image_url && (
+											<div style="margin-top: 10px;">
+												<img src={form.question_image_url} style="max-width: 200px; max-height: 200px;" />
+											</div>
+										)}
+									</div>
+								);
+							}
+						},
+						helper: '上传题目相关的图片(仅支持看图选答案类型)'
+					}
+				},
 				scoring_reference: {
 					title: '评分标准',
 					search: { show: false },

+ 23 - 0
src/views/system/log/operationLog/crud.tsx

@@ -17,6 +17,29 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp
 	};
 	return {
 		crudOptions: {
+			toolbar:{
+				buttons:{
+					search:{show:false},
+					// 刷新按钮
+					refresh:{show:false},
+					// 紧凑模式
+					compact:{show:false},
+					// 导出按钮
+					export:{
+						text: '导出',
+						type: 'primary',
+						size: 'small',
+						icon: 'upload',
+						circle: false,
+						display: true,
+						show:false
+					},
+					// 列设置按钮
+					columns:{
+						show:false
+					},
+				}
+			},
 			request: {
 				pageRequest,
 				addRequest,

+ 1 - 0
src/views/talent/list/components/BatchTagsDialog.vue

@@ -68,6 +68,7 @@ const getTagList = async () => {
       params: {
         page: 1,
         limit: 50,
+        employment_status:1,
         tenant_id:Session.get('tenant_id')
       },
       headers:{

+ 1 - 0
src/views/talent/overseas/components/BatchTagsDialog.vue

@@ -70,6 +70,7 @@ const getTagList = async () => {
       url: '/api/system/talent_tag/',
       method: 'get',
       params: {
+        employment_status:2,
         tenant_id: Session.get('tenant_id')
       }
     });

+ 19 - 0
src/views/talent/tagsList/crud.tsx

@@ -190,6 +190,25 @@ export const createCrudOptions = function ({crudExpose}: CreateCrudOptionsProps)
                         showOverflowTooltip: true,
                     },
                 },
+                employment_status:{
+                     title: '标签类型',
+                    search: {
+                        show: true,
+                    },
+                    type: 'dict-select',
+                    dict: dict({
+                        data: [
+                            { label: '在职', value: 1 },
+                            { label: '在外', value: 2 },
+                        ],
+                    }),
+                    form: {
+                        value: 1,
+                        component: {
+                            span: 24,
+                        }
+                    },
+                },
                 color: {
                     title: '标签颜色',
                     search: {