Browse Source

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

lifanagju_citu 1 month ago
parent
commit
91196638b4

+ 1 - 0
components.d.ts

@@ -32,6 +32,7 @@ declare module 'vue' {
     Echarts: typeof import('./src/components/Echarts/index.vue')['default']
     ElCascader: typeof import('element-plus/es')['ElCascader']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
+    ElTree: typeof import('element-plus/es')['ElTree']
     Empty: typeof import('./src/components/Empty/index.vue')['default']
     File: typeof import('./src/components/Upload/file.vue')['default']
     HeadSearch: typeof import('./src/components/headSearch/index.vue')['default']

+ 1 - 1
src/config/axios/service.js

@@ -260,7 +260,7 @@ service.interceptors.response.use(
       Confirm(t('common.confirmTitle'), t('sys.api.errMsg500'), {
         sureText: '查看联系方式'
       }).then(() => {
-        window.location.href = '/contactService'
+        window.open('/contactService')
       }).catch(() => {})
       return Promise.reject(new Error(msg))
     }

+ 3 - 2
src/layout/index.vue

@@ -26,7 +26,7 @@ import { useRouter } from 'vue-router'
 import { useMallStore } from '@/store/mall'
 
 // 不展示侧边栏名单
-const whiteList = ['/login', '/privacyPolicy', '/userAgreement', '/register', '/recruit/personal/advertisement/introduce']
+const whiteList = ['/login', '/privacyPolicy', '/userAgreement', '/register', '/recruit/personal/advertisement/introduce', '/contactService']
 // 不展示页脚白名单
 const footerWhiteList = [
   '/recruit/personal/message',
@@ -34,7 +34,8 @@ const footerWhiteList = [
   '/headhunting',
   '/headhunting/service',
   '/headhunting/service/details',
-  '/recruit/personal/resume/analysis'
+  '/recruit/personal/resume/analysis',
+  '/contactService'
 ]
 const router = useRouter()
 const sharedState = useSharedState()

+ 5 - 11
src/router/modules/recruit.js

@@ -222,17 +222,11 @@ const recruit = [
   },
   {
     path: '/contactService',
-    component: Layout,
-    children: [
-      {
-        path: '/contactService',
-        component: () => import('@/views/contactUs/index.vue'),
-        name: 'contactService',
-        meta: {
-          title: '联系客服'
-        }
-      }
-    ]
+    component: () => import('@/views/contactUs/index.vue'),
+    name: 'contactService',
+    meta: {
+      title: '联系客服'
+    }
   },
   {
       path: '/recruit/personal/jobFair',

+ 30 - 12
src/views/contactUs/index.vue

@@ -1,25 +1,35 @@
 <template>
-  <v-card class="card-box px-5 mt-16 mx-3">
+  <v-card class="card-box px-5 my-3 mx-3 elevation-5">
 		<div class="social-media common-width">
 			<h5 class="social-media-header mt-10">
 				<span class="inner-text">客服联系方式</span>
 			</h5>
 			<div class="d-flex flex-column align-center">
 				<svg-icon name="warning" size="300"></svg-icon>
-				<div class="d-flex justify-space-between">
-					<div class="d-flex align-center social-contact pa-8 mt-5 justify-space-between">
-						<div class="ml-3">
-							<p  class="mt-3 mb-2">联系电话:18621329797</p>
-							<p>电子邮箱:peter.pan@menduner.com</p>
-						</div>
-						<div class="mr-10 d-flex flex-column align-center">
-							<div style="width: 120px; height: 120px;">
-								<v-img cover aspect-ratio="1/1" src="https://minio.menduner.com/dev/menduner/contact.png" width="120" height="120"></v-img>
-							</div>
-							<div class="font-size-15 mt-2">潘青海先生 Peter Pan</div>
+				<div v-if="!isMobile" class="d-flex align-center social-contact pa-8 mt-5 justify-space-between">
+					<div class="ml-3">
+						<p  class="mt-3 mb-2">联系电话:18621329797</p>
+						<p>电子邮箱:peter.pan@menduner.com</p>
+					</div>
+					<div class="mr-10 d-flex flex-column align-center">
+						<div style="width: 120px; height: 120px;">
+							<v-img cover aspect-ratio="1/1" src="https://minio.menduner.com/dev/menduner/contact.png" width="120" height="120"></v-img>
 						</div>
+						<div class="font-size-15 mt-2">潘青海先生 Peter Pan</div>
 					</div>
 				</div>
+        <div v-else class="pa-5" style="background-color: #e8f0f7; width: 100%">
+          <div class="d-flex flex-column align-center">
+						<div style="width: 120px; height: 120px;">
+							<v-img cover aspect-ratio="1/1" src="https://minio.menduner.com/dev/menduner/contact.png" width="120" height="120"></v-img>
+						</div>
+						<div class="font-size-15 mt-2">潘青海先生 Peter Pan</div>
+					</div>
+          <div class="mt-10">
+						<p  class="mt-3 mb-2">联系电话:18621329797</p>
+						<p>电子邮箱:peter.pan@menduner.com</p>
+					</div>
+        </div>
 			</div>
 		</div>
 	</v-card>
@@ -27,6 +37,14 @@
 
 <script setup>
 defineOptions({ name: 'contactUs'})
+import { onMounted, ref } from 'vue'
+
+// 组件挂载后添加事件监听器  
+const isMobile = ref(false)
+onMounted(() => {
+  const userAgent = navigator.userAgent
+  isMobile.value = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(userAgent)
+})
 </script>
 
 <style scoped lang="scss">

+ 1 - 1
src/views/recruit/components/message/index.vue

@@ -785,7 +785,7 @@ const handleDelete = async ({ channel }) => {
 // 面试邀约
 
 const getPositionList = async () => {
-  const data = await getJobAdvertised({ status: 0 }) // 0开启 1关闭 不带则全部
+  const data = await getJobAdvertised({ status: 0, exTime: 0 }) // 0开启 1关闭 不带则全部
   if (!data.length) return
   const list = dealDictArrayData([], data)
   positionList.value = list.map(e => {

+ 1 - 1
src/views/recruit/enterprise/interviewManagement/index.vue

@@ -156,7 +156,7 @@ const handleReset = () => {
 
 // 职位
 const getPositionList = async () => {
-  const data = await getJobAdvertised()
+  const data = await getJobAdvertised({ exTime: 0 })
   if (!data.length) return
   const list = dealDictArrayData([], data)
   positionItems.value = list.map(e => {

+ 2 - 2
src/views/recruit/enterprise/jobFair/job/item.vue

@@ -3,10 +3,10 @@
     <div v-if="items.length">
       <div v-for="val in items" :key="val.id" class="itemBox mb-3 white-bgc" style="height: 134px;">
         <div class="d-flex justify-space-between" style="padding: 10px 20px;">
-          <div class="position">
+          <div class="position" style="max-width: 85%;">
             <div class="d-flex align-center">
               <svg-icon name="jobFair" class="mr-1" size="25"></svg-icon>
-              <span class="position-name">{{ formatName(val.name) }}</span>
+              <span class="position-name" v-ellipse-tooltip>{{ formatName(val.name) }}</span>
             </div>
             <div class="mt-3 other-info">
               <span>{{ !val.areaId ? '全国' : val.area?.str }}</span>

+ 2 - 2
src/views/recruit/enterprise/positionManagement/components/item.vue

@@ -15,12 +15,12 @@
         <svg-icon name="top" size="50"></svg-icon>
       </div>
       <div class="d-flex justify-space-between" style="padding: 10px 20px;">
-        <div class="position">
+        <div class="position" :style="{'max-width': (val.status-0) === 99 && tab === 0 ? '70%' : '85%'}">
           <div class="item-select ml-5" v-if="tab === 1">
             <v-checkbox v-model="val.select" hide-details color="primary" @update:model-value="handleChangeSelect"></v-checkbox>
           </div>
           <div class="d-flex align-center" :class="{'cursor-pointer': tab === 1, 'ml-15': tab === 1}" @click="handleDetail(val)">
-            <span class="position-name">{{ formatName(val.name) }}</span>
+            <span class="position-name" v-ellipse-tooltip>{{ formatName(val.name) }}</span>
             <svg-icon v-if="val.jobFairIds?.length" name="jobFair" class="ml-1" size="25"></svg-icon>
           </div>
           <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1}]">

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

@@ -154,7 +154,7 @@ onMounted(() => {
 		}
 
 		// 投递职位
-		const data = await getJobAdvertised()
+		const data = await getJobAdvertised({ exTime: 1 })
 		if (!data || !data.length) return
 		const list = dealDictArrayData([], data)
 		k.items = list.map(e => {
@@ -164,7 +164,7 @@ onMounted(() => {
 
 		// 传入jobId,默认选中
 		if (props.jobId) {
-			k.value = k.items.find(e => e.value === props.jobId)
+			k.value = k.items.find(e => e.value.toString() === props.jobId)
 			confirm()
 		}
 	})

+ 1 - 1
src/views/recruit/enterprise/resume/components/screen.vue

@@ -87,7 +87,7 @@ const list = ref([
 ])
 
 const getJobList = async (k) => {
-  const data = await getJobAdvertised()
+  const data = await getJobAdvertised({ exTime: 1 })
   if (!data.length) return
   const list = dealDictArrayData([], data)
   k.items = list.map(e => {

+ 1 - 1
src/views/recruit/enterprise/search/recommend/index.vue

@@ -101,7 +101,7 @@ const showInvite = ref(false)
 
 // 职位列表
 const getJobList = async () => {
-  const data = await getJobAdvertised({ status: 0 })
+  const data = await getJobAdvertised({ status: 0, exTime: 0 })
   if (data.length) {
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {

+ 1 - 1
src/views/recruit/enterprise/statistics/overallAnalysis.vue

@@ -77,7 +77,7 @@ const selectItems = ref({
 
 // 获取职位列表
 const getJobList = async () => {
-  const data = await getJobAdvertised()
+  const data = await getJobAdvertised({ exTime: 1 })
   selectItems.value.items = data.map(e => {
     e.name = formatName(e.name)
     return e

+ 1 - 1
src/views/recruit/enterprise/talentRecommendation/index.vue

@@ -108,7 +108,7 @@ const textItem = ref({
 
 // 已发布职位列表
 const getJobList = async () => {
-  const data = await getJobAdvertised({ status: 0 })
+  const data = await getJobAdvertised({ status: 0, exTime: 0 })
   if (data.length) {
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {