Browse Source

项目经历

Xiao_123 11 months ago
parent
commit
64f205e52d

+ 8 - 13
src/components/Enterprise/components/positions.vue

@@ -20,7 +20,7 @@
         <v-text-field
           v-model="query.content"
           variant="outlined" 
-          label="查找职位中的关键字"
+          label="查找职位关键字"
           hide-details
           color="primary"
           append-inner-icon="mdi-magnify"
@@ -97,8 +97,11 @@ const pageInfo = ref({
   pageSize: 10,
   pageNo: 1
 })
+let query = reactive({})
 const route = useRoute(); const router = useRouter()
 const routeQuery = (route?.query && route.query && Object.keys(route?.query).length) ? route.query : null
+if (routeQuery?.content) query.content = routeQuery?.content
+if (routeQuery?.positionId) positionCategory.value.find(e => e.id === routeQuery.positionId).active = true
 provide('routeQuery', routeQuery)
 
 // 职位详情
@@ -132,14 +135,14 @@ getData()
 const handleClickCategory = (k) => {
   positionCategory.value.map(e => e.active = false)
   k.active = !k.active
-  handleSearch(k.id, 'positionId')
+  handleSearch('positionId', { values: k.id })
 }
 
 const dealRouteQuery = () => {
-  const arr = Object.keys(query).map((e, i) => {
-    if (e !== 'pageNo' || e !== 'pageSize') return `${i ? '&' : ''}${e}=${query[e]}`
+  const arr = Object.keys(query).map(e => {
+    return `${e}=${query[e]}`
   })
-  const str = arr.join()
+  const str = ['key=recruitmentPositions', ...arr].join('&')
   if (str) router.push(`${route.path}?${str}`)
 }
 
@@ -152,14 +155,6 @@ const handleSearch = (key, { values }) => {
 
 // 职位列表
 const list = ref([])
-let query = reactive({
-  // content: '',
-  // areaIds: [],
-  // expType: 0,
-  // eduType: 0,
-  // payType: 0,
-  // positionId: 0,
-})
 // 职位列表
 const getPositionList = async (isSearch) => {
   query = {

+ 12 - 5
src/components/Enterprise/details.vue

@@ -27,7 +27,7 @@
     </div>
     <v-divider></v-divider>
     <div class="mt-3">
-      <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f3f3f3">
+      <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f3f3f3" @update:model-value="handleTabClick">
         <v-tab :value="1">公司简介</v-tab>
         <v-tab :value="2">在招职位({{ info.jobAdvertisedCount }})</v-tab>
       </v-tabs>
@@ -86,6 +86,7 @@ import recruitmentPositions from './components/positions.vue'
 import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe } from '@/api/enterprise'
 import { timesTampChange } from '@/utils/date'
 import { dealDictData } from '@/views/recruit/position/components/dict.js'
+import { useRoute, useRouter } from 'vue-router'
 
 const props = defineProps({
   id: {
@@ -93,7 +94,17 @@ const props = defineProps({
     default: ''
   }
 })
+
+const route = useRoute()
+const router = useRouter()
 const tab = ref(1)
+const savedTab = new URLSearchParams(window.location.search).get('key')
+tab.value = savedTab ? (savedTab === 'briefIntroduction' ? 1 : 2) : 1
+// router.push(`${route.path}?key=${savedTab ? savedTab : 'briefIntroduction'}`)
+
+const handleTabClick = () => {
+  router.push(`${route.path}?key=${tab.value === 1 ? 'briefIntroduction' : 'recruitmentPositions'}`)
+}
 
 // 企业详情
 const info = ref({})
@@ -139,10 +150,6 @@ const recruitmentSpecialist = [
   { name: '徐有道', position: '招聘专员', desc: '正在招聘“运营专员”等职位', avatar: 'https://cdn.vuetifyjs.com/images/john.jpg' },
   { name: '方晓', position: '人事经理', desc: '正在招聘“运营专员”等职位', avatar: 'https://avatars0.githubusercontent.com/u/9064066?v=4&s=460' }
 ]
-
-// 有tab的是首页中热门企业模块
-const savedTab = new URLSearchParams(window.location.search).get('tab')
-if (savedTab) tab.value = 2
 </script>
 
 <style scoped lang="scss">

+ 2 - 2
src/components/Enterprise/hotPromoted.vue

@@ -62,12 +62,12 @@ const handleClickPosition = (k) => {
 }
 // 企业详情
 const handleClickEnterprise = (item) => {
-  window.open(`/enterprise/details/${item.enterprise.id}`)
+  window.open(`/enterprise/details/${item.enterprise.id}?key=briefIntroduction`)
 }
 
 // 查看更多职位
 const handleMoreEnterprise = (item) => {
-  window.open(`/enterprise/details/${item.id}?tab=recruitmentPositions`)
+  window.open(`/enterprise/details/${item.id}?key=recruitmentPositions`)
 }
 </script>
 

+ 1 - 1
src/components/Enterprise/info.vue

@@ -46,7 +46,7 @@ const getData = async () => {
 getData()
 
 const handleEnterprise = () => {
-  window.open(`/enterprise/details/${props.info.enterprise.id}`)
+  window.open(`/enterprise/details/${props.info.enterprise.id}?key=briefIntroduction`)
 }
 </script>
 

+ 1 - 1
src/views/Home/personal/components/hotPromotedPositions.vue

@@ -44,6 +44,6 @@ const handlePosition = (item) => {
   window.open(`/recruit/position/details/${item.positionId}`)
 }
 const handleEnterprise = (item) => {
-  window.open(`/enterprise/details/${item.enterpriseId}`)
+  window.open(`/enterprise/details/${item.enterpriseId}?key=briefIntroduction`)
 }
 </script>

+ 1 - 1
src/views/recruit/company/components/companyItem.vue

@@ -26,7 +26,7 @@ defineProps({
 const welfareList = ['双休', '五险一金', '零食下午茶', '年终奖']
 
 const handleClickEnterprise = (item) => {
-  window.open(`/enterprise/details/${item.id}`)
+  window.open(`/enterprise/details/${item.id}?key=briefIntroduction`)
 }
 </script>
 

+ 1 - 0
src/views/recruit/position/components/conditionFilter/expType.vue

@@ -41,6 +41,7 @@ getDict('menduner_exp_type').then(({ data }) => {
     const str = query.expType.split(',')[0]
     const arr = str.split('_')
     if (arr?.length) {
+      title.value = `工作经验(${arr.length})`
       selectedItems.value = arr
       emits('inputChange', { values: selectedItems.value, isEmit: false })
     }

+ 14 - 12
src/views/resume/components/projectExperience.vue

@@ -12,17 +12,25 @@
         <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
       </div>
     </div>
-    <div v-else v-for="(k, i) in projectExp" :key="i" class="exp mx-n2" @mouseenter="k.active = true" @mouseleave="k.active = false">
+    <div v-else v-for="(k, i) in projectExp" :key="i" class="exp mx-n2 mt-5" @mouseenter="k.active = true" @mouseleave="k.active = false">
       <span class="float-right" v-if="k.active">
         <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="handleEdit(k)">{{ $t('common.edit') }}</v-btn>
         <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline" @click="handleDelete(k)">{{ $t('common.delete') }}</v-btn>
       </span>
-      <div v-for="(val, index) in desc" :key="index" class="my-1">
-        <span class="label-title">{{ val.label }}</span>
-        <span v-if="Array.isArray(val.value)">{{ timesTampChange(k[val.value[0]]).slice(0, 10) }} 至 {{ timesTampChange(k[val.value[1]]).slice(0, 10) }}</span>
-        <span>{{ k[val.value] }}</span>
+      <div class="d-flex align-center justify-space-between" style="height: 40px;">
+        <div>
+          <span style="font-size: 18px; font-weight: bold;">{{ k.name }}</span>
+          <span class="label-title ml-5">
+            <span>{{ timesTampChange(k.startTime).slice(0, 10) }}</span>
+            <span class="mx-1">至</span>
+            <span>{{ timesTampChange(k.endTime).slice(0, 10) }}</span>
+          </span>
+        </div>
+      </div>
+      <div>
+        <span class="label-title">项目描述:</span>
+        <span class="label-title">{{ k.content }}</span>
       </div>
-      <div v-if="i !== projectExp.length -1" class="border-bottom-dashed mt-3"></div>
     </div>
   </div>
 </template>
@@ -128,12 +136,6 @@ const handleDelete = ({ id }) => {
     getResumeTrainExpData()
   })
 }
-
-const desc = [
-  { label: '项目名称:', value: 'name' },
-  { label: '项目时间:', value: ['startTime', 'endTime'] },
-  { label: '项目描述:', value: 'content' }
-]
 </script>
 
 <style scoped lang="scss">

+ 18 - 14
src/views/resume/components/trainingExperience.vue

@@ -12,17 +12,28 @@
         <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
       </div>
     </div>
-    <div v-else v-for="(k, i) in trainExp" :key="i" class="exp mx-n2" @mouseenter="k.active = true" @mouseleave="k.active = false">
+    <div v-else v-for="(k, i) in trainExp" :key="i" class="exp mx-n2 mt-5" @mouseenter="k.active = true" @mouseleave="k.active = false">
       <span class="float-right" v-if="k.active">
         <v-btn variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="handleEdit(k)">{{ $t('common.edit') }}</v-btn>
         <v-btn variant="text" color="primary" prepend-icon="mdi-trash-can-outline" @click="handleDelete(k)">{{ $t('common.delete') }}</v-btn>
       </span>
-      <div v-for="(val, index) in desc" :key="index" class="my-1">
-        <span class="label-title">{{ val.label }}</span>
-        <span v-if="Array.isArray(val.value)">{{ timesTampChange(k[val.value[0]]).slice(0, 10) }} 至 {{ timesTampChange(k[val.value[1]]).slice(0, 10) }}</span>
-        <span>{{ k[val.value] }}</span>
-      </div>
-      <div v-if="i !== trainExp.length -1" class="border-bottom-dashed mt-3"></div>
+      <div class="level1 d-flex align-center justify-space-between" style="height: 40px;">
+          <div>
+            <span style="font-size: 18px; font-weight: bold;">{{ k.orgName }}</span>
+            <span class="label-title ml-5">
+              <span>{{ timesTampChange(k.startTime).slice(0, 10) }}</span>
+              <span class="mx-1">至</span>
+              <span>{{ timesTampChange(k.endTime).slice(0, 10) }}</span>
+            </span>
+          </div>
+        </div>
+        <div class="my-2">
+          <span class="label-title">培训课程:{{ k.course }}</span>
+        </div>
+        <div>
+          <span class="label-title">培训描述:</span>
+          <span class="label-title">{{ k.content }}</span>
+        </div>
     </div>
   </div>
 </template>
@@ -137,13 +148,6 @@ const handleDelete = ({ id }) => {
     getResumeTrainExpData()
   })
 }
-
-const desc = [
-  { label: '培训中心:', value: 'orgName' },
-  { label: '培训课程:', value: 'course' },
-  { label: '培训时间:', value: ['startTime', 'endTime'] },
-  { label: '培训描述:', value: 'content' }
-]
 </script>
 
 <style scoped lang="scss">