فهرست منبع

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

lifanagju_citu 1 ماه پیش
والد
کامیت
584c300c96

+ 10 - 4
src/layout/personal/navBar.vue

@@ -200,15 +200,21 @@ const navList = ref([
   { title: '了解门墩儿', path: '/about' }
 ])
 
-const mode = import.meta.env.VITE_NODE_ENV
-console.log(import.meta.env.VITE_NODE_ENV, '当前环境变量===========')
-
 const mall = navList.value.find(item => item.isEdit)
 // 区分生产环境展示地址
-mall.path = mode === 'production' ? '/pointsExchange' : '/mall'
+mall.path = import.meta.env.VITE_NODE_ENV === 'production' ? '/pointsExchange' : '/mall'
 
 const handleClick = (e, status) => {
   if (!e.path) return
+
+  // 火苗儿校企
+  if (e.path === '/flameLogin') {
+    // 有登录状态的则直接跳转,没有则登录
+    const path = isSchool && localStorage.getItem('schoolInfo') ? '/recruit/teacher/studentList/index' : e.path
+    window.open(path)
+    return
+  }
+
   if (status) window.open(e.path)
   else router.push(e.path)
 }

+ 25 - 16
src/views/recruit/enterprise/newTalentMap/labeling/index.vue

@@ -16,6 +16,12 @@
 				:showFixedLastItem="true"
 				itemKey="id"
 			>
+				<template #title_zh="{ item }">
+          <div v-ellipse-tooltip style="max-width: 250px;">{{ item.title_zh }}</div>
+        </template>
+        <template #hotel_zh="{ item }">
+          <div v-ellipse-tooltip style="max-width: 250px;">{{ item.hotel_zh }}</div>
+        </template>
 				<template #status="{ item }">
 					<v-chip size="small" variant="elevated" :color="item.status === 'active' ? 'primary' : 'error'">{{ item.status === 'active' ? '已启用' : '已禁用' }}</v-chip>
 				</template>
@@ -28,10 +34,10 @@
 		</v-card>
 
 		<!-- 标注 -->
-		<CtDialog :visible="showDialog" title="人才标注" :footer="false" widthType="1" @close="showDialog = false">
+		<CtDialog :visible="showDialog" title="人才标注" :footer="false" widthType="1" @close="showDialog = false" style="height: 95vh;">
 			<v-row>
 				<v-col cols="4">
-					<v-card elevation="3" class="pa-3" style="height: 100%">
+					<v-card elevation="3" class="pa-3 overflow-y-auto" :height="`calc(95vh - 154px)`">
 						<p :class="{'active': previewUrl}" @click="showPreview = true">
 							名片
 							<v-icon v-if="previewUrl">mdi-magnify-expand</v-icon>
@@ -42,7 +48,7 @@
 					</v-card>
 				</v-col>
 				<v-col cols="8">
-					<v-card elevation="3" class="pa-3" height="100%">
+					<v-card elevation="3" class="pa-3 overflow-y-auto" :height="`calc(95vh - 154px)`">
 						<div class="base-info pa-3">
 							<div class="mb-6">
 								{{ talentItem.name_zh }}
@@ -62,21 +68,22 @@
 						</div>
 						<div class="my-5">
 							<p>人才标签</p>
-							<v-chip
-								v-for="(item, index) in talentSelectedTags" :key="index"
-								class="chip mx-2 mt-4 cursor-pointer"
-								label color="primary"
-							>
-								{{ item.name }}
-								<v-icon size="18" color="primary" style="margin-left: 6px;" @click="closeClick(item)">mdi-close-circle</v-icon>
-							</v-chip>
-
+							<div v-if="talentSelectedTags?.length" class="mt-4 px-3 pb-3" style="border: 1px dashed #00B760; border-radius: 4px;">
+								<v-chip
+									v-for="(item, index) in talentSelectedTags" :key="index"
+									class="chip mr-3 mt-3 cursor-pointer"
+									label color="primary"
+								>
+									{{ item.name }}
+									<v-icon size="18" color="primary" style="margin-left: 6px;" @click="closeClick(item)">mdi-close-circle</v-icon>
+								</v-chip>
+							</div>
 							<div :class="{'mt-5': talentSelectedTags?.length > 0}">
 								<v-chip
 									v-for="(item, index) in tagList" :key="index"
-									class="chip mx-2 mt-4 cursor-pointer"
+									class="chip mr-3 mt-4 cursor-pointer"
 									label color="#248dbb"
-									:disabled="talentSelectedTags.includes(item)"
+									:disabled="talentSelectedTags.find(k => k.name === item.name)"
 									@click="handleAdd(item)"
 								>
 									<v-icon icon="mdi-plus" start></v-icon>
@@ -114,6 +121,7 @@ const loading = ref(false)
 const showDialog = ref(false)
 const items = ref([])
 const headers = [
+  // { title: 'ID', key: 'id', sortable: false },
   { title: '姓名', key: 'name_zh', sortable: false },
   // { title: '英文名', key: 'name_en', sortable: false },
   { title: '职位', key: 'title_zh', sortable: false },
@@ -208,7 +216,6 @@ const showPreview = ref(false)
 const annotationLoading = ref(false)
 const handleAnnotation = async (item) => {
 	if (!item || !item.id) return
-	talentSelectedTags.value = []
 	
 	talentItem.value = item
 	// 获取所有标签列表
@@ -222,7 +229,9 @@ const handleAnnotation = async (item) => {
 
 	// 获取人才标签
 	const tagData = await getTalentTagById(item.id)
-	console.log(tagData, '人才标签')
+	talentSelectedTags.value = tagData ? tagData.map((i) => {
+		return { id: i.talent, name: i.tag }
+	}) : []
 
 	showDialog.value = true
 }

+ 3 - 3
src/views/recruit/enterprise/newTalentMap/tag/index.vue

@@ -29,12 +29,12 @@
         </template>
         <template #status="{ item }">
           <v-chip :color="item.status === 'active' ? 'primary' : 'error'" variant="elevated" size="small">
-            {{ item.status === 'active' ? '启用' : '禁用' }}
+            {{ item.status === 'active' ? '启用' : '禁用' }}
           </v-chip>
         </template>
 				<template #actions="{ item }">
-					<v-btn variant="text" color="primary" @click.stop="handleEdit(item)">编 辑</v-btn>
-					<v-btn variant="text" color="error" @click.stop="handleDelete(item)">删 除</v-btn>
+					<v-btn variant="text" color="primary" @click.stop="handleEdit(item)">编辑</v-btn>
+					<v-btn variant="text" color="error" @click.stop="handleDelete(item)">删除</v-btn>
 				</template>
 			</CtTable>
 		</v-card>

+ 3 - 2
src/views/recruit/enterprise/resume/components/table.vue

@@ -60,7 +60,7 @@
         </v-menu> -->
 
         <v-btn icon variant="text" v-for="(k, index) in actionItems(item)" :key="index" @click.stop="k.click(item)">
-          <v-icon :color="k.color">{{ k.icon }}</v-icon>
+          <v-icon :color="k?.disabled ? '#ccc' : k.color">{{ k.icon }}</v-icon>
           <v-tooltip :text="k.title" location="top" activator="parent">
             <span>{{ k.title }}</span>
           </v-tooltip>
@@ -233,6 +233,7 @@ const handlePreviewResume = async ({ url, id }) => {
 // 邀请面试
 const itemData = ref({})
 const handleInterviewInvite = (item) => {
+  if (item.interViewStatus) return
   if (item?.jobClosed) return Snackbar.warning('职位已关闭') // 职位已关闭
   itemData.value = item
   showInvite.value = true
@@ -296,7 +297,7 @@ const handleDownloadAttachment = (k) => {
 
 const actionItems = (item) => {
   const arr = []
-  if (props.tab === 0) arr.push({ title: '邀请面试', color: 'success', click: handleInterviewInvite, icon: 'mdi-account-clock-outline' }, { title: '立即沟通', color: 'primary', click: handleToCommunicate, icon: 'mdi-comment-processing-outline' })
+  if (props.tab === 0) arr.push({ title: item.interViewStatus ? '邀请面试(当前投递记录已邀约面试)' : '邀请面试', disabled: item.interViewStatus, color: 'success', click: handleInterviewInvite, icon: 'mdi-account-clock-outline' }, { title: '立即沟通', color: 'primary', click: handleToCommunicate, icon: 'mdi-comment-processing-outline' })
   if ([0, 1].includes(props.tab)) arr.push({ title: '不合适', color: 'indigo', click: handleEliminate, icon: 'mdi-account-remove-outline' })
   if (props.tab === 4) arr.push({ title: '取消不合适', color: 'light-blue', click: handleCancelEliminate, icon: 'mdi-account-check-outline' })
   if (props.tab === 2 && item?.job?.hire) arr.push({ title: '结算', click: handleSettlement, icon: 'mdi-currency-cny' })