import{_ as r,r as s,o as d,c as p,a as e,b as a,w as c,d as l,p as i,e as u}from"./index-Ua34iPmJ.js";const h={},t=o=>(i("data-v-80d1ee2a"),o=o(),u(),o),m={class:"nopage"},f=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=t(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),x=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=t(()=>e("p",null,"你页面走丢了~",-1));function b(o,k){const n=s("a-button"),_=s("router-link");return d(),p("div",m,[f,v,x,e("div",null,[y,e("p",null,[a(_,{to:"/job/home"},{default:c(()=>[a(n,{type:"primary"},{default:c(()=>[l("返回首页")]),_:1})]),_:1})])])])}const w=r(h,[["render",b],["__scopeId","data-v-80d1ee2a"]]);export{w as default}; | |||||
import{_ as r,r as s,o as d,c as p,a as e,b as a,w as c,d as l,p as i,e as u}from"./index-CsbGYAgV.js";const h={},t=o=>(i("data-v-80d1ee2a"),o=o(),u(),o),m={class:"nopage"},f=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=t(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),x=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=t(()=>e("p",null,"你页面走丢了~",-1));function b(o,k){const n=s("a-button"),_=s("router-link");return d(),p("div",m,[f,v,x,e("div",null,[y,e("p",null,[a(_,{to:"/job/home"},{default:c(()=>[a(n,{type:"primary"},{default:c(()=>[l("返回首页")]),_:1})]),_:1})])])])}const w=r(h,[["render",b],["__scopeId","data-v-80d1ee2a"]]);export{w as default}; |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
<script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | <script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | ||||
<title>菊城人才网</title> | <title>菊城人才网</title> | ||||
<script type="module" crossorigin src="/assets/index-Ua34iPmJ.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-kUK-5M1q.css"> | |||||
<script type="module" crossorigin src="/assets/index-CsbGYAgV.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index--JoympCp.css"> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
<template #operation="{ record }"> | <template #operation="{ record }"> | ||||
<slot :record='record'></slot> | <slot :record='record'></slot> | ||||
</template> | </template> | ||||
<template #meet_status="{ record }"> | |||||
<slot name="meet_status" :record='record'></slot> | |||||
</template> | |||||
</a-table> | </a-table> | ||||
</template> | </template> | ||||
fax_public: 2, | fax_public: 2, | ||||
other_address: '', | other_address: '', | ||||
interview_address: '', | interview_address: '', | ||||
longitude: 0, | |||||
latitude: 0, | |||||
} | } | ||||
export let otherDataForm = { | export let otherDataForm = { | ||||
fax_public: 2, | fax_public: 2, | ||||
other_address: '', | other_address: '', | ||||
interview_address: '', | interview_address: '', | ||||
longitude: 0, | |||||
latitude: 0, | |||||
} | } | ||||
otherDataForm = { | otherDataForm = { | ||||
department_name: null, | department_name: null, |
size="large" /> | size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | |||||
<a-form-item label="地图上选择经度"> | |||||
<a-input v-model:value="createForm.longitude" placeholder="选择经度" disabled/> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="12"> | |||||
<a-form-item label="地图上选择纬度"> | |||||
<a-input v-model:value="createForm.latitude" placeholder="选择纬度" disabled/> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="24"> | |||||
<a-form-item label="选择经纬度"> | |||||
<a-flex justify="center"> | |||||
<div style="width: 90%;"> | |||||
<a-switch v-model:checked="showMap"> </a-switch> | |||||
<div v-if="showMap"> | |||||
<v-map @getLoc="getLoc"></v-map> | |||||
</div> | |||||
</div> | |||||
</a-flex> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-flex justify="flex-end"> | <a-flex justify="flex-end"> | ||||
<a-space> | <a-space> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | ||||
import { PostCompanyJobAdd, PostCompanyJobEdit, GetDictTree, GetCompanyDepartmentList, GetCompanyJobInfo } from '@/apis/models'; | import { PostCompanyJobAdd, PostCompanyJobEdit, GetDictTree, GetCompanyDepartmentList, GetCompanyJobInfo } from '@/apis/models'; | ||||
import vMap from '@/components/map/map-iframe.vue' | |||||
import { intersectionAlike } from '@/utils/dataHelper'; | import { intersectionAlike } from '@/utils/dataHelper'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { steps, dataForm, otherDataForm, reset } from '@/components/company/invite/position/data.ts'; | import { steps, dataForm, otherDataForm, reset } from '@/components/company/invite/position/data.ts'; | ||||
createForm.value.location_city = data.arr1[1] ? data.arr1[1] : 0; | createForm.value.location_city = data.arr1[1] ? data.arr1[1] : 0; | ||||
createForm.value.location_town = data.arr1[2] ? data.arr1[2] : 0; | createForm.value.location_town = data.arr1[2] ? data.arr1[2] : 0; | ||||
} | } | ||||
let showMap = ref<Boolean>(false); | |||||
// 经纬度 | |||||
const getLoc = (mapData : Object) => { | |||||
createForm.value.latitude = mapData.latlng.lng; | |||||
createForm.value.longitude = mapData.latlng.lat; | |||||
showMap.value = false; | |||||
} | |||||
const sumbitForm = () => { | const sumbitForm = () => { | ||||
if (!job_id.value) { | if (!job_id.value) { |
dataIndex: 'open_date' | dataIndex: 'open_date' | ||||
}, { | }, { | ||||
title: '开通状态', | title: '开通状态', | ||||
dataIndex: 'status' | |||||
dataIndex: 'status', | |||||
slots: { customRender: 'meet_status' }, | |||||
}, | }, | ||||
{ | { | ||||
title: '操作', | title: '操作', |
<a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | <a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | ||||
<a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | ||||
@page="getPage" :loading="loading"> | @page="getPage" :loading="loading"> | ||||
<template #meet_status="{ record }"> | |||||
<span v-if="record.status == 1">开启</span> | |||||
<span v-if="record.status == 2">关闭</span> | |||||
</template> | |||||
<template #default="{ record }"> | <template #default="{ record }"> | ||||
<a-row :gutter="20"> | <a-row :gutter="20"> | ||||
<a-popconfirm title="是否要申请参加该招聘会?" @confirm="applyFor(record.id)"> | <a-popconfirm title="是否要申请参加该招聘会?" @confirm="applyFor(record.id)"> |
<template> | <template> | ||||
<template v-if="!seekerList || seekerList.length == 0"> | |||||
<a-empty style="height: 100vh;"> | |||||
<template #description> | |||||
无求职者信息 | |||||
</template> | |||||
</a-empty> | |||||
</template> | |||||
<template v-else> | |||||
<a-row :gutter="[20,20]"> | |||||
<a-col span="24" v-for="(item, index) in seekerList"> | |||||
<a-card> | |||||
<div class="talent-box"> | |||||
<a-list> | |||||
<a-list-item> | |||||
<template #actions> | |||||
<a-button @click="detail(item)"> | |||||
<StarOutlined /> | |||||
预览 | |||||
</a-button> | |||||
<a-button @click="putInTatent(item.customer_id)"> | |||||
放入人才库 | |||||
</a-button> | |||||
<a-button @click="interview(item)"> | |||||
邀请面试 | |||||
</a-button> | |||||
</template> | |||||
<a-list-item-meta> | |||||
<template #title> | |||||
{{item.seekername}} | |||||
<a-spin :spinning="spinning"> | |||||
<template v-if="!seekerList || seekerList.length == 0"> | |||||
<a-empty style="height: 100vh;"> | |||||
<template #description> | |||||
无求职者信息 | |||||
</template> | |||||
</a-empty> | |||||
</template> | |||||
<template v-else> | |||||
<a-row :gutter="[20,20]"> | |||||
<a-col span="24" v-for="(item, index) in seekerList"> | |||||
<a-card> | |||||
<div class="talent-box"> | |||||
<a-list> | |||||
<a-list-item> | |||||
<template #actions> | |||||
<a-button @click="detail(item)"> | |||||
<StarOutlined /> | |||||
预览 | |||||
</a-button> | |||||
<a-button @click="putInTatent(item.customer_id)"> | |||||
放入人才库 | |||||
</a-button> | |||||
<a-button @click="interview(item)"> | |||||
邀请面试 | |||||
</a-button> | |||||
</template> | </template> | ||||
<template #description> | |||||
<div> | |||||
{{item.gender}} | |||||
<a-divider type="vertical" /> | |||||
{{item.education_text}} | |||||
<a-divider type="vertical" /> | |||||
{{item.now_level1_text}}{{item.now_level2_text}} | |||||
</div> | |||||
<div style="margin-top: 10px; overflow: hidden; | |||||
display: -webkit-box; | |||||
-webkit-line-clamp: 1; | |||||
-webkit-box-orient: vertical; | |||||
text-overflow: ellipsis;"> | |||||
<div v-html="item.introduction"></div> | |||||
</div> | |||||
</template> | |||||
<template #avatar> | |||||
<image-container | |||||
:imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container> | |||||
</template> | |||||
</a-list-item-meta> | |||||
</a-list-item> | |||||
</a-list> | |||||
</div> | |||||
</a-card> | |||||
</a-col> | |||||
<a-col span="24"> | |||||
<a-flex justify="center"> | |||||
<a-space> | |||||
<a-pagination hideOnSinglePage :total="commomParams.page.total" @change="getPage" /> | |||||
</a-space> | |||||
</a-flex> | |||||
</a-col> | |||||
</a-row> | |||||
<a-modal v-model:open="openInterview" centered title="面试邀请" @ok="interviewOk"> | |||||
<a-space direction="vertical" style="width: 100%;"> | |||||
<a-select v-model:value="position_name" @change="positionChange" placeholder="请进行搜索选择职位" show-search | |||||
:filter-option="false" label-in-value @search="positionSearch" size="large" style="width: 100%;"> | |||||
<a-select-option v-for="item in position_list" :key="item.id" :value="item.id" :label="item.name" | |||||
label-in-value>{{item.name}}</a-select-option> | |||||
</a-select> | |||||
<a-date-picker v-model:value="time" @Change="timeChange" show-time style="width: 100%;" | |||||
placeholder="请选择面试日期" size="large" :disabled-date="disabledDate" /> | |||||
</a-space> | |||||
</a-modal> | |||||
<resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail> | |||||
</template> | |||||
<a-list-item-meta> | |||||
<template #title> | |||||
{{item.seekername}} | |||||
</template> | |||||
<template #description> | |||||
<div> | |||||
{{item.gender}} | |||||
<a-divider type="vertical" /> | |||||
{{item.education_text}} | |||||
<a-divider type="vertical" /> | |||||
{{item.now_level1_text}}{{item.now_level2_text}} | |||||
</div> | |||||
<div style="margin-top: 10px; overflow: hidden; | |||||
display: -webkit-box; | |||||
-webkit-line-clamp: 1; | |||||
-webkit-box-orient: vertical; | |||||
text-overflow: ellipsis;"> | |||||
<div v-html="item.introduction"></div> | |||||
</div> | |||||
</template> | |||||
<template #avatar> | |||||
<image-container | |||||
:imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container> | |||||
</template> | |||||
</a-list-item-meta> | |||||
</a-list-item> | |||||
</a-list> | |||||
</div> | |||||
</a-card> | |||||
</a-col> | |||||
<a-col span="24"> | |||||
<a-flex justify="center"> | |||||
<a-space> | |||||
<a-pagination hideOnSinglePage :total="commomParams.page.total" @change="getPage" /> | |||||
</a-space> | |||||
</a-flex> | |||||
</a-col> | |||||
</a-row> | |||||
<a-modal v-model:open="openInterview" centered title="面试邀请" @ok="interviewOk"> | |||||
<a-space direction="vertical" style="width: 100%;"> | |||||
<a-select v-model:value="position_name" @change="positionChange" placeholder="请进行搜索选择职位" show-search | |||||
:filter-option="false" label-in-value @search="positionSearch" size="large" | |||||
style="width: 100%;"> | |||||
<a-select-option v-for="item in position_list" :key="item.id" :value="item.id" | |||||
:label="item.name" label-in-value>{{item.name}}</a-select-option> | |||||
</a-select> | |||||
<a-date-picker v-model:value="time" @Change="timeChange" show-time style="width: 100%;" | |||||
placeholder="请选择面试日期" size="large" :disabled-date="disabledDate" /> | |||||
</a-space> | |||||
</a-modal> | |||||
<resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail> | |||||
</template> | |||||
</a-spin> | |||||
</template> | </template> | ||||
const dayjsRef = ref(dayjs); | const dayjsRef = ref(dayjs); | ||||
let props = defineProps(['search']); | let props = defineProps(['search']); | ||||
let seekerList = ref<object[]>([]) | let seekerList = ref<object[]>([]) | ||||
let loading = ref<Boolean>(true); | |||||
let spinning = ref<Boolean>(true); | |||||
const getPage = (data : object) => { | const getPage = (data : object) => { | ||||
} | } | ||||
const getData = async () => { | const getData = async () => { | ||||
try { | try { | ||||
loading.value = true; | |||||
spinning.value = true; | |||||
let res = await PostJobseekerList(commomParams.value.search); | let res = await PostJobseekerList(commomParams.value.search); | ||||
loading.value = false; | |||||
spinning.value = false; | |||||
seekerList.value = res.data.seekers; | seekerList.value = res.data.seekers; | ||||
commomParams.value.page = { | commomParams.value.page = { | ||||
current: commomParams.value.search.page, | current: commomParams.value.search.page, | ||||
showSizeChanger: true | showSizeChanger: true | ||||
}; | }; | ||||
} catch { | } catch { | ||||
loading.value = false; | |||||
spinning.value = false; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
onMounted(() => { | onMounted(() => { | ||||
getData(); | |||||
// getData(); | |||||
}) | }) | ||||
watch(() => [props.search], (newVal) => { | watch(() => [props.search], (newVal) => { | ||||
if (newVal[0]) { | if (newVal[0]) { | ||||
commomParams.value.search = newVal[0]; | commomParams.value.search = newVal[0]; | ||||
getData(); | |||||
} | } | ||||
getData(); | |||||
}, { immediate: true }) | }, { immediate: true }) | ||||
</script> | </script> | ||||
watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
},{ | |||||
immediate: true | |||||
}) | }) | ||||
const getData = () => { | const getData = () => { |
watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
},{ | |||||
immediate: true | |||||
}) | }) | ||||
const getData = () => { | const getData = () => { |
<template #overlay> | <template #overlay> | ||||
<a-menu> | <a-menu> | ||||
<a-menu-item key="1"> | <a-menu-item key="1"> | ||||
<a-button @click="contact(record)" block>查看联系方式</a-button> | |||||
<a-button @click="contact(record.customer_id)" block>查看联系方式</a-button> | |||||
</a-menu-item> | </a-menu-item> | ||||
<a-menu-item key="1"> | <a-menu-item key="1"> | ||||
<a-button @click="detail(record)" block>预览简历</a-button> | <a-button @click="detail(record)" block>预览简历</a-button> | ||||
} | } | ||||
} | } | ||||
const contact = () => { | |||||
const contact = (id) => { | |||||
Modal.confirm({ | Modal.confirm({ | ||||
title: `是否要放入人才库`, | |||||
title: `本次将会扣除一个点数,是否继续`, | |||||
centered: true, | centered: true, | ||||
icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
onOk() { | onOk() { | ||||
PostCompanyTalentPoolAdd({ customer_id: id }).then(res => { | |||||
successToast('已放入人才库') | |||||
GetJobapplicantContactdetail({ customer_id: id }).then(res => { | |||||
successToast('请求成功,请进入已查看联系方式表查看') | |||||
getData(); | getData(); | ||||
}) | }) | ||||
}, | }, |
watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
},{ | |||||
immediate: true | |||||
}) | }) | ||||
const getData = () => { | const getData = () => { |
watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
},{ | |||||
immediate: true | |||||
}) | }) | ||||
const getData = () => { | const getData = () => { |
watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
},{ | |||||
immediate: true | |||||
}) | }) | ||||
const getData = () => { | const getData = () => { |
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, computed, onMounted, defineProps, watch } from 'vue'; | |||||
import { ref, computed, onMounted, defineProps, watch, onBeforeUnmount } from 'vue'; | |||||
import { GetArticleList } from '@/apis/models'; | import { GetArticleList } from '@/apis/models'; | ||||
import { ArrowLeftOutlined } from '@ant-design/icons-vue'; | import { ArrowLeftOutlined } from '@ant-design/icons-vue'; | ||||
let props = defineProps(['key_id']); | let props = defineProps(['key_id']); | ||||
let current = ref<Number>(1) | let current = ref<Number>(1) | ||||
let total = ref<Number>(0) | let total = ref<Number>(0) | ||||
onMounted(() => { | |||||
if(sessionStorage.getItem('article_data')) { | |||||
detail.value = JSON.parse(sessionStorage.getItem('article_data')) | |||||
GetArticleList({page: current.value, hot: 2}).then(res => { | |||||
articleList.value = res.data.articles; | |||||
total.value = res.data.total; | |||||
}) | |||||
} | |||||
}) | |||||
onBeforeUnmount(() => { | |||||
sessionStorage.removeItem('article_data') | |||||
}) | |||||
const pageChange = (page) => { | const pageChange = (page) => { | ||||
current.value = page | current.value = page | ||||
getArticleList(key.value) | getArticleList(key.value) | ||||
} | } | ||||
const getArticleList = (val) => { | const getArticleList = (val) => { | ||||
GetArticleList({section_id: val, page: current.value}).then(res => { | |||||
articleList.value = res.data.articles; | |||||
total.value = res.data.total; | |||||
}) | |||||
if(val == 1) { | |||||
GetArticleList({page: current.value, hot: 2}).then(res => { | |||||
articleList.value = res.data.articles; | |||||
total.value = res.data.total; | |||||
}) | |||||
} else { | |||||
GetArticleList({section_id: val, page: current.value}).then(res => { | |||||
articleList.value = res.data.articles; | |||||
total.value = res.data.total; | |||||
}) | |||||
} | |||||
} | } | ||||
const toDetail = (data) => { | const toDetail = (data) => { | ||||
watch(() => props.key_id, (newVal) => { | watch(() => props.key_id, (newVal) => { | ||||
key.value = newVal | |||||
getArticleList(newVal) | |||||
if(sessionStorage.getItem('article_data')) { | |||||
key.value = 1 | |||||
} else { | |||||
key.value = newVal | |||||
} | |||||
getArticleList(key.value) | |||||
}, { immediate: true }) | }, { immediate: true }) | ||||
</script> | </script> |
if (sessionStorage.getItem('token')) { | if (sessionStorage.getItem('token')) { | ||||
GetJobAuthDetail({ id: job_id.value }).then(res => { | GetJobAuthDetail({ id: job_id.value }).then(res => { | ||||
detail.value = res.data; | detail.value = res.data; | ||||
if (mapJob.value && detail.value.latitude && detail.value.longitude) { | |||||
if (mapJob.value && detail.value.contact.latitude && detail.value.contact.longitude) { | |||||
initMap() | initMap() | ||||
} else { | } else { | ||||
console.error('地图容器元素未找到'); | console.error('地图容器元素未找到'); | ||||
} | } | ||||
const initMap = () => { | const initMap = () => { | ||||
let center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标 | |||||
let center = new TMap.LatLng(detail.value.contact.latitude,detail.value.contact.longitude);//设置中心点坐标 | |||||
//初始化地图 | //初始化地图 | ||||
let map = new TMap.Map(mapJob.value, { | let map = new TMap.Map(mapJob.value, { | ||||
center: center | center: center | ||||
}); | }); | ||||
//创建并初始化MultiMarker | //创建并初始化MultiMarker | ||||
let markerLayer = new TMap.MultiMarker({ | let markerLayer = new TMap.MultiMarker({ | ||||
map: map, //指定地图容器 | map: map, //指定地图容器 | ||||
"anchor": { x: 16, y: 32 } | "anchor": { x: 16, y: 32 } | ||||
}) | }) | ||||
}, | }, | ||||
//点标记数据数组 longitude | //点标记数据数组 longitude | ||||
geometries: [{ | geometries: [{ | ||||
"id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | "id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | ||||
"styleId": 'myStyle', //指定样式id | |||||
"position": new TMap.LatLng(sessionStorage.getItem('lat'), sessionStorage.getItem('lng')), //点标记坐标位置 | |||||
"styleId": 'myStyle', //指定样式id && | |||||
"position": new TMap.LatLng(detail.value.contact.latitude,detail.value.contact.longitude), //点标记坐标位置 | |||||
"properties": {//自定义属性 | "properties": {//自定义属性 | ||||
"title": "marker1" | "title": "marker1" | ||||
} | } | ||||
.map-container { | .map-container { | ||||
width: 100%; | width: 100%; | ||||
height: 400px; | |||||
height: 600px; | |||||
} | } | ||||
</style> | </style> |
<template> | <template> | ||||
<a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
<a-col span="8" v-for="(item, index) in jobList"> | <a-col span="8" v-for="(item, index) in jobList"> | ||||
<a-card hoverable style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;" @click="toDetail(item.id, item.company_id)"> | |||||
<a-card hoverable style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;" | |||||
> | |||||
<a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;"> | <a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;"> | ||||
<a-space direction="vertical" :size="20"> | <a-space direction="vertical" :size="20"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div style="font-size: 18px; font-weight: 600;">{{item.name}}</div> | |||||
<div style="font-size: 18px; font-weight: 600;" @click="toDetail(item.id, item.company_id)">{{item.name}}</div> | |||||
<div style="color: #4FBE70;font-size: 18px;">{{item.pay_range_text}}</div> | <div style="color: #4FBE70;font-size: 18px;">{{item.pay_range_text}}</div> | ||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;"> | <a-flex style="width: 100%;"> | ||||
<a-divider /> | <a-divider /> | ||||
<a-space direction="vertical"> | <a-space direction="vertical"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div>{{item.full_name}}</div> | |||||
<a-button type="primary" size="small" | |||||
>查看详情</a-button> | |||||
<div style="font-weight: 600;" @click="toCompany(item.id, item.company_id)">{{item.full_name}}</div> | |||||
<a-button type="primary" size="small" @click="toDetail(item.id, item.company_id)">查看详情</a-button> | |||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;color: #BEBEBE;"> | <a-flex style="width: 100%;color: #BEBEBE;"> | ||||
{{item.locations ? item.locations[0].name : '未知地址'}} | {{item.locations ? item.locations[0].name : '未知地址'}} | ||||
let props = defineProps(['list']); | let props = defineProps(['list']); | ||||
let jobList = ref<Object[]>([]) | let jobList = ref<Object[]>([]) | ||||
const toCompany = (job_id : Number, company_id : Number) => { | |||||
sessionStorage.setItem('job_id', job_id) | |||||
sessionStorage.setItem('tab_key', 1) | |||||
sessionStorage.setItem('pubilc_id', company_id) | |||||
sessionStorage.setItem('mode', 'detail') | |||||
router.push({ | |||||
path: '/personal' | |||||
}) | |||||
} | |||||
const toDetail = (job_id : Number, company_id : Number) => { | const toDetail = (job_id : Number, company_id : Number) => { | ||||
sessionStorage.setItem('job_id', job_id) | sessionStorage.setItem('job_id', job_id) | ||||
sessionStorage.setItem('tab_key', 2) | sessionStorage.setItem('tab_key', 2) | ||||
:deep(.ant-card) { | :deep(.ant-card) { | ||||
padding: 0 !important; | padding: 0 !important; | ||||
} | } | ||||
:deep(.ant-card-body) { | :deep(.ant-card-body) { | ||||
padding: 0 !important; | padding: 0 !important; | ||||
} | } |
</div> | </div> | ||||
</template> | </template> | ||||
<a-space direction="vertical" style="cursor: pointer;" :size="20"> | <a-space direction="vertical" style="cursor: pointer;" :size="20"> | ||||
<template v-for="(item,index) in articleList"> | |||||
<template v-for="(item,index) in articleList" > | |||||
<a-flex v-if="index + 1 == 1" align="center"> | <a-flex v-if="index + 1 == 1" align="center"> | ||||
<a-space> | |||||
<a-space @click="toArticle(item)"> | |||||
<a-avatar :size="26" style="background-color: #ff1a1a"> | <a-avatar :size="26" style="background-color: #ff1a1a"> | ||||
<a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | <span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | ||||
<div style="font-size: 16px;">{{ item.title }}</div> | <div style="font-size: 16px;">{{ item.title }}</div> | ||||
</a-space> | </a-space> | ||||
</a-flex> | </a-flex> | ||||
<a-flex v-if="index + 1 == 2" align="center" style="width: 100%;"> | |||||
<a-space> | |||||
<a-flex v-if="index + 1 == 2" align="center" style="width: 100%;" > | |||||
<a-space @click="toArticle(item)"> | |||||
<a-avatar :size="26" style="background-color: #ff4d4d"> | <a-avatar :size="26" style="background-color: #ff4d4d"> | ||||
<a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | <span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | ||||
</a-space> | </a-space> | ||||
</a-flex> | </a-flex> | ||||
<a-flex v-if="index + 1 == 3" align="center" style="width: 100%;"> | |||||
<a-space> | |||||
<a-flex v-if="index + 1 == 3" align="center" style="width: 100%;" > | |||||
<a-space @click="toArticle(item)"> | |||||
<a-avatar :size="26" style="background-color: #ff6b6b"> | <a-avatar :size="26" style="background-color: #ff6b6b"> | ||||
<a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | <span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | ||||
</a-space> | </a-space> | ||||
</a-flex> | </a-flex> | ||||
<a-flex v-if="index + 1 >= 4" align="center" style="width: 100%;"> | |||||
<a-space> | |||||
<a-flex v-if="index + 1 >= 4" align="center" style="width: 100%;" > | |||||
<a-space @click="toArticle(item)"> | |||||
<a-avatar :size="26"> | <a-avatar :size="26"> | ||||
<a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | <span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | ||||
path: '/personal' | path: '/personal' | ||||
}) | }) | ||||
} | } | ||||
const toArticle = (item) => { | |||||
sessionStorage.setItem('article_data', JSON.stringify(item)) | |||||
router.push({ | |||||
path: '/information' | |||||
}) | |||||
} | |||||
onMounted(() => { | onMounted(() => { |
<template v-else> | <template v-else> | ||||
<a-row :gutter="[10,20]" > | <a-row :gutter="[10,20]" > | ||||
<a-col span="8" v-for="(item, index) in jobList"> | <a-col span="8" v-for="(item, index) in jobList"> | ||||
<a-card hoverable @click="toDetail(item.id, item.company_id)"> | |||||
<a-card hoverable > | |||||
<a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;border-radius: 8px;" > | <a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;border-radius: 8px;" > | ||||
<a-space direction="vertical" :size="10"> | <a-space direction="vertical" :size="10"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div style="font-size: 18px; font-weight: 600;">{{item.name}}</div> | |||||
<div style="font-size: 18px; font-weight: 600;" @click="toDetail(item.id, item.company_id)">{{item.name}}</div> | |||||
<div style="color: #4FBE70;">{{item.pay_range_text}}</div> | <div style="color: #4FBE70;">{{item.pay_range_text}}</div> | ||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;"> | <a-flex style="width: 100%;"> | ||||
<a-divider /> | <a-divider /> | ||||
<a-space direction="vertical"> | <a-space direction="vertical"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div>{{item.full_name}}</div> | |||||
<!-- <a-button type="primary" size="small">查看详情</a-button> --> | |||||
<div style="font-weight: 600;">{{item.full_name}}</div> | |||||
<a-button type="primary" size="small" @click="toDetail(item.id, item.company_id)">查看详情</a-button> | |||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;color: #bebebe;"> | <a-flex style="width: 100%;color: #bebebe;"> | ||||
{{item.locations ? item.locations[0].name : '未知地址'}} | {{item.locations ? item.locations[0].name : '未知地址'}} |
</a-card-meta> | </a-card-meta> | ||||
<a-divider /> | <a-divider /> | ||||
<div v-html="detail.content"></div> | <div v-html="detail.content"></div> | ||||
<div class="company-box"> | |||||
<a-typography> | |||||
<a-typography-title :level="5">参与的企业</a-typography-title> | |||||
<a-typography-paragraph> | |||||
<a-row :gutter="[10,10]"> | |||||
<a-col v-for="(item, index) in companyList"> | |||||
<div style="color: #808080" @click="toCompanyDetail(item.id)">{{item.company_name}}</div> | |||||
</a-col> | |||||
</a-row> | |||||
</a-typography-paragraph> | |||||
</a-typography> | |||||
</div> | |||||
</a-card> | </a-card> | ||||
<div class="company-box"> | |||||
<a-typography> | |||||
<a-typography-title :level="5">参与的企业</a-typography-title> | |||||
<a-typography-paragraph> | |||||
<a-row :gutter="[10,10]"> | |||||
<a-col v-for="(item, index) in companyList"> | |||||
<div style="color: #808080" @click="toCompanyDetail(item.id)">{{item.company_name}}</div> | |||||
</a-col> | |||||
</a-row> | |||||
</a-typography-paragraph> | |||||
</a-typography> | |||||
</div> | |||||
</a-page-header> | </a-page-header> | ||||
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
.company-box { | .company-box { | ||||
width: 100%; | width: 100%; | ||||
padding: 20px; | padding: 20px; | ||||
margin: 20px 0; | |||||
cursor: pointer; | cursor: pointer; | ||||
border: 1px solid #f0f0f0; | border: 1px solid #f0f0f0; | ||||
border-radius: 8px; | border-radius: 8px; |
</a-col> | </a-col> | ||||
<a-col span="6"> | <a-col span="6"> | ||||
<image-container | <image-container | ||||
:imgObj="{src: 'https://rcsc-test.jcjob.cn/img'+detail.photo ,width: '150px',height:'210px'}"></image-container> | |||||
:imgObj="{src: detail.photo? imageprefix+detail.photo : '/images/gongzhonghao.png' ,width: '150px',height:'210px'}"></image-container> | |||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</a-col> | </a-col> | ||||
import { GetJobseekerDetail, GetJobapplicantIntroductiondetail, PostJobapplicantTrainingdetail, PostJobapplicantDesireindustrydetail, PostJobapplicantExperiencedetail } from '@/apis/models'; | import { GetJobseekerDetail, GetJobapplicantIntroductiondetail, PostJobapplicantTrainingdetail, PostJobapplicantDesireindustrydetail, PostJobapplicantExperiencedetail } from '@/apis/models'; | ||||
import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, commomParams, hideOtherModal1, openOtherModel_1 } = useCommon(); | |||||
let { store, commomParams, hideOtherModal1, openOtherModel_1, imageprefix} = useCommon(); | |||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
let props = defineProps(['detail_record']); | let props = defineProps(['detail_record']); | ||||
let detailTitle = ref<String>('') | let detailTitle = ref<String>('') |
:deep(.ant-menu-item-active) { | :deep(.ant-menu-item-active) { | ||||
color: #4FBE70 !important; | color: #4FBE70 !important; | ||||
background-color: #ffffff !important; | |||||
/* background-color: #ffffff !important; */ | |||||
} | } | ||||
:deep(.ant-menu-item-active::after) { | :deep(.ant-menu-item-active::after) { |
dataIndex: 'open_date' | dataIndex: 'open_date' | ||||
}, { | }, { | ||||
title: '开通状态', | title: '开通状态', | ||||
dataIndex: 'status' | |||||
dataIndex: 'status', | |||||
}, | }, | ||||
{ | { | ||||
title: '操作', | title: '操作', |
<a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | <a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | ||||
<a-card title="转换验证码"> | <a-card title="转换验证码"> | ||||
<template #extra> | <template #extra> | ||||
<a-button @click="getCode">生成验证码</a-button> | |||||
<a-button @click="getCode" type="primary" size="large">生成验证码</a-button> | |||||
</template> | </template> | ||||
<a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | ||||
@page="getPage" :loading="loading"> | @page="getPage" :loading="loading"> |
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item label="保存"> | <a-form-item label="保存"> | ||||
<a-button type="primary" block @click="saveForm">保存</a-button> | |||||
<a-button type="primary" block @click="saveForm" size="large">保存</a-button> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> |
curKey.value = data.key; | curKey.value = data.key; | ||||
} | } | ||||
onMounted(() => { | |||||
if (sessionStorage.getItem('section_id')) { | |||||
selectedKeys.value = [sessionStorage.getItem('section_id')] | |||||
} | |||||
}) | |||||
onBeforeUnmount(() => { | |||||
sessionStorage.removeItem('section_id') | |||||
sessionStorage.removeItem('acticle_id') | |||||
}) | |||||
</script> | </script> | ||||
<style> | <style> |
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed, watch ,onBeforeUnmount} from 'vue'; | import { ref, onMounted, computed, watch ,onBeforeUnmount} from 'vue'; | ||||
import WebsiteNotice from '@/components/information/website-notice/index.vue' | import WebsiteNotice from '@/components/information/website-notice/index.vue' | ||||
let menu_list = ref([{ title: '本站公告', key: 3 },{ title: '小榄动态', key: 4},{ title: '职场攻略', key: 5},{ title: '创业就业', key: 6},{ title: '劳动与法', key: 8}]) | |||||
let menu_list = ref([{ title: '本站公告', key: 3 },{ title: '小榄动态', key: 4},{ title: '职场攻略', key: 5},{ title: '创业就业', key: 6},{ title: '劳动与法', key: 8}, { title: '热门资讯', key: 1}]) | |||||
let curKey = ref<Number>(3) | let curKey = ref<Number>(3) | ||||
let selectedKeys = ref<Number[]>([3]) | let selectedKeys = ref<Number[]>([3]) | ||||
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; | ||||
} | } | ||||
onMounted(() => { | onMounted(() => { | ||||
if (sessionStorage.getItem('section_id')) { | |||||
selectedKeys.value = [sessionStorage.getItem('section_id')] | |||||
if(sessionStorage.getItem('article_data')) { | |||||
selectedKeys.value = [1]; | |||||
curKey.value = 1; | |||||
} | } | ||||
}) | }) | ||||
onBeforeUnmount(() => { | onBeforeUnmount(() => { | ||||
sessionStorage.removeItem('section_id') | |||||
sessionStorage.removeItem('acticle_id') | |||||
sessionStorage.removeItem('article_data') | |||||
}) | }) | ||||
</script> | </script> | ||||
<style> | <style> |
} | } | ||||
} | } | ||||
const initMap = () => { | const initMap = () => { | ||||
var center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标 | |||||
console.log(companyDetail.value.latitude, companyDetail.value.longitude) | |||||
var center = new TMap.LatLng(companyDetail.value.latitude, companyDetail.value.longitude);//设置中心点坐标 | |||||
//初始化地图 | //初始化地图 | ||||
var map = new TMap.Map(mapContainer.value, { | var map = new TMap.Map(mapContainer.value, { | ||||
center: center | center: center | ||||
}) | }) | ||||
getJobCompanyjobs(current.value) | getJobCompanyjobs(current.value) | ||||
} | } | ||||
} else { | |||||
initMap() | |||||
} | } | ||||
}) | }) | ||||
import ResumeRead from '@/components/company/resume/read/index.vue' | import ResumeRead from '@/components/company/resume/read/index.vue' | ||||
import ResumeRecycle from '@/components/company/resume/recycle/index.vue' | import ResumeRecycle from '@/components/company/resume/recycle/index.vue' | ||||
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | ||||
let menu_list = ref([{ title: '收到的应聘简历', key: 1 }, { title: '邀请面试简历', key: 2 }, { title: '已查看联系方式', key: 3 }, { title: '企业人才库', key: 4 }, { title: '简历回收站', key: 5 }]) | |||||
let menu_list = ref([{ title: '收到的应聘简历', key: 1 }, { title: '邀请面试的简历', key: 2 }, { title: '已查看联系方式', key: 3 }, { title: '企业人才库', key: 4 }, { title: '简历回收站', key: 5 }]) | |||||
let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; |