@@ -1 +1 @@ | |||
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}; |
@@ -6,8 +6,8 @@ | |||
<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> | |||
<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> | |||
<body> | |||
<div id="app"></div> |
@@ -6,6 +6,9 @@ | |||
<template #operation="{ record }"> | |||
<slot :record='record'></slot> | |||
</template> | |||
<template #meet_status="{ record }"> | |||
<slot name="meet_status" :record='record'></slot> | |||
</template> | |||
</a-table> | |||
</template> | |||
@@ -62,6 +62,8 @@ export let dataForm = { | |||
fax_public: 2, | |||
other_address: '', | |||
interview_address: '', | |||
longitude: 0, | |||
latitude: 0, | |||
} | |||
export let otherDataForm = { | |||
@@ -127,6 +129,8 @@ export const reset = () => { | |||
fax_public: 2, | |||
other_address: '', | |||
interview_address: '', | |||
longitude: 0, | |||
latitude: 0, | |||
} | |||
otherDataForm = { | |||
department_name: null, |
@@ -296,6 +296,28 @@ | |||
size="large" /> | |||
</a-form-item> | |||
</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-flex justify="flex-end"> | |||
<a-space> | |||
@@ -319,6 +341,7 @@ | |||
<script setup lang="ts"> | |||
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | |||
import { PostCompanyJobAdd, PostCompanyJobEdit, GetDictTree, GetCompanyDepartmentList, GetCompanyJobInfo } from '@/apis/models'; | |||
import vMap from '@/components/map/map-iframe.vue' | |||
import { intersectionAlike } from '@/utils/dataHelper'; | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { steps, dataForm, otherDataForm, reset } from '@/components/company/invite/position/data.ts'; | |||
@@ -484,6 +507,14 @@ | |||
createForm.value.location_city = data.arr1[1] ? data.arr1[1] : 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 = () => { | |||
if (!job_id.value) { |
@@ -11,7 +11,8 @@ export const cols = <ColType.type[]>[ | |||
dataIndex: 'open_date' | |||
}, { | |||
title: '开通状态', | |||
dataIndex: 'status' | |||
dataIndex: 'status', | |||
slots: { customRender: 'meet_status' }, | |||
}, | |||
{ | |||
title: '操作', |
@@ -2,6 +2,10 @@ | |||
<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" | |||
@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 }"> | |||
<a-row :gutter="20"> | |||
<a-popconfirm title="是否要申请参加该招聘会?" @confirm="applyFor(record.id)"> |
@@ -1,83 +1,86 @@ | |||
<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 #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> | |||
@@ -91,7 +94,7 @@ | |||
const dayjsRef = ref(dayjs); | |||
let props = defineProps(['search']); | |||
let seekerList = ref<object[]>([]) | |||
let loading = ref<Boolean>(true); | |||
let spinning = ref<Boolean>(true); | |||
const getPage = (data : object) => { | |||
@@ -101,9 +104,9 @@ | |||
} | |||
const getData = async () => { | |||
try { | |||
loading.value = true; | |||
spinning.value = true; | |||
let res = await PostJobseekerList(commomParams.value.search); | |||
loading.value = false; | |||
spinning.value = false; | |||
seekerList.value = res.data.seekers; | |||
commomParams.value.page = { | |||
current: commomParams.value.search.page, | |||
@@ -114,7 +117,7 @@ | |||
showSizeChanger: true | |||
}; | |||
} catch { | |||
loading.value = false; | |||
spinning.value = false; | |||
} | |||
} | |||
@@ -202,14 +205,14 @@ | |||
} | |||
onMounted(() => { | |||
getData(); | |||
// getData(); | |||
}) | |||
watch(() => [props.search], (newVal) => { | |||
if (newVal[0]) { | |||
commomParams.value.search = newVal[0]; | |||
getData(); | |||
} | |||
getData(); | |||
}, { immediate: true }) | |||
</script> | |||
@@ -61,8 +61,6 @@ | |||
watch(() => props.search_params, (newVal) => { | |||
emit('searchData', commomParams.value.search) | |||
},{ | |||
immediate: true | |||
}) | |||
const getData = () => { |
@@ -24,8 +24,6 @@ | |||
watch(() => props.search_params, (newVal) => { | |||
emit('searchData', commomParams.value.search) | |||
},{ | |||
immediate: true | |||
}) | |||
const getData = () => { |
@@ -9,7 +9,7 @@ | |||
<template #overlay> | |||
<a-menu> | |||
<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 key="1"> | |||
<a-button @click="detail(record)" block>预览简历</a-button> | |||
@@ -105,14 +105,14 @@ | |||
} | |||
} | |||
const contact = () => { | |||
const contact = (id) => { | |||
Modal.confirm({ | |||
title: `是否要放入人才库`, | |||
title: `本次将会扣除一个点数,是否继续`, | |||
centered: true, | |||
icon: createVNode(ExclamationCircleOutlined), | |||
onOk() { | |||
PostCompanyTalentPoolAdd({ customer_id: id }).then(res => { | |||
successToast('已放入人才库') | |||
GetJobapplicantContactdetail({ customer_id: id }).then(res => { | |||
successToast('请求成功,请进入已查看联系方式表查看') | |||
getData(); | |||
}) | |||
}, |
@@ -61,8 +61,6 @@ | |||
watch(() => props.search_params, (newVal) => { | |||
emit('searchData', commomParams.value.search) | |||
},{ | |||
immediate: true | |||
}) | |||
const getData = () => { |
@@ -61,8 +61,6 @@ | |||
watch(() => props.search_params, (newVal) => { | |||
emit('searchData', commomParams.value.search) | |||
},{ | |||
immediate: true | |||
}) | |||
const getData = () => { |
@@ -61,8 +61,6 @@ | |||
watch(() => props.search_params, (newVal) => { | |||
emit('searchData', commomParams.value.search) | |||
},{ | |||
immediate: true | |||
}) | |||
const getData = () => { |
@@ -31,7 +31,7 @@ | |||
</template> | |||
<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 { ArrowLeftOutlined } from '@ant-design/icons-vue'; | |||
let props = defineProps(['key_id']); | |||
@@ -41,16 +41,37 @@ | |||
let current = ref<Number>(1) | |||
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) => { | |||
current.value = page | |||
getArticleList(key.value) | |||
} | |||
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) => { | |||
@@ -63,8 +84,12 @@ | |||
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 }) | |||
</script> |
@@ -101,7 +101,7 @@ | |||
if (sessionStorage.getItem('token')) { | |||
GetJobAuthDetail({ id: job_id.value }).then(res => { | |||
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() | |||
} else { | |||
console.error('地图容器元素未找到'); | |||
@@ -123,12 +123,11 @@ | |||
} | |||
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, { | |||
center: center | |||
}); | |||
//创建并初始化MultiMarker | |||
let markerLayer = new TMap.MultiMarker({ | |||
map: map, //指定地图容器 | |||
@@ -143,11 +142,12 @@ | |||
"anchor": { x: 16, y: 32 } | |||
}) | |||
}, | |||
//点标记数据数组 longitude | |||
geometries: [{ | |||
"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": {//自定义属性 | |||
"title": "marker1" | |||
} | |||
@@ -232,6 +232,6 @@ | |||
.map-container { | |||
width: 100%; | |||
height: 400px; | |||
height: 600px; | |||
} | |||
</style> |
@@ -1,11 +1,12 @@ | |||
<template> | |||
<a-row :gutter="[10,10]"> | |||
<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-space direction="vertical" :size="20"> | |||
<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> | |||
</a-flex> | |||
<a-flex style="width: 100%;"> | |||
@@ -18,9 +19,8 @@ | |||
<a-divider /> | |||
<a-space direction="vertical"> | |||
<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 style="width: 100%;color: #BEBEBE;"> | |||
{{item.locations ? item.locations[0].name : '未知地址'}} | |||
@@ -38,6 +38,16 @@ | |||
let props = defineProps(['list']); | |||
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) => { | |||
sessionStorage.setItem('job_id', job_id) | |||
sessionStorage.setItem('tab_key', 2) | |||
@@ -57,7 +67,7 @@ | |||
:deep(.ant-card) { | |||
padding: 0 !important; | |||
} | |||
:deep(.ant-card-body) { | |||
padding: 0 !important; | |||
} |
@@ -41,9 +41,9 @@ | |||
</div> | |||
</template> | |||
<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-space> | |||
<a-space @click="toArticle(item)"> | |||
<a-avatar :size="26" style="background-color: #ff1a1a"> | |||
<a-flex justify="center" align="center"> | |||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | |||
@@ -52,8 +52,8 @@ | |||
<div style="font-size: 16px;">{{ item.title }}</div> | |||
</a-space> | |||
</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-flex justify="center" align="center"> | |||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | |||
@@ -63,8 +63,8 @@ | |||
</a-space> | |||
</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-flex justify="center" align="center"> | |||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | |||
@@ -74,8 +74,8 @@ | |||
</a-space> | |||
</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-flex justify="center" align="center"> | |||
<span style="font-size: 14px;font-weight: bold;">{{index + 1}}</span> | |||
@@ -162,6 +162,14 @@ | |||
path: '/personal' | |||
}) | |||
} | |||
const toArticle = (item) => { | |||
sessionStorage.setItem('article_data', JSON.stringify(item)) | |||
router.push({ | |||
path: '/information' | |||
}) | |||
} | |||
onMounted(() => { |
@@ -12,11 +12,11 @@ | |||
<template v-else> | |||
<a-row :gutter="[10,20]" > | |||
<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-space direction="vertical" :size="10"> | |||
<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> | |||
</a-flex> | |||
<a-flex style="width: 100%;"> | |||
@@ -29,8 +29,8 @@ | |||
<a-divider /> | |||
<a-space direction="vertical"> | |||
<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 style="width: 100%;color: #bebebe;"> | |||
{{item.locations ? item.locations[0].name : '未知地址'}} |
@@ -11,20 +11,20 @@ | |||
</a-card-meta> | |||
<a-divider /> | |||
<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> | |||
<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> | |||
</template> | |||
<template v-else> | |||
@@ -95,6 +95,7 @@ | |||
.company-box { | |||
width: 100%; | |||
padding: 20px; | |||
margin: 20px 0; | |||
cursor: pointer; | |||
border: 1px solid #f0f0f0; | |||
border-radius: 8px; |
@@ -71,7 +71,7 @@ | |||
</a-col> | |||
<a-col span="6"> | |||
<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-row> | |||
</a-col> | |||
@@ -187,7 +187,7 @@ | |||
import { GetJobseekerDetail, GetJobapplicantIntroductiondetail, PostJobapplicantTrainingdetail, PostJobapplicantDesireindustrydetail, PostJobapplicantExperiencedetail } from '@/apis/models'; | |||
import { message } from 'ant-design-vue'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
let { store, commomParams, hideOtherModal1, openOtherModel_1 } = useCommon(); | |||
let { store, commomParams, hideOtherModal1, openOtherModel_1, imageprefix} = useCommon(); | |||
const emit = defineEmits(); | |||
let props = defineProps(['detail_record']); | |||
let detailTitle = ref<String>('') |
@@ -136,7 +136,7 @@ | |||
:deep(.ant-menu-item-active) { | |||
color: #4FBE70 !important; | |||
background-color: #ffffff !important; | |||
/* background-color: #ffffff !important; */ | |||
} | |||
:deep(.ant-menu-item-active::after) { |
@@ -11,7 +11,8 @@ export const cols = <ColType.type[]>[ | |||
dataIndex: 'open_date' | |||
}, { | |||
title: '开通状态', | |||
dataIndex: 'status' | |||
dataIndex: 'status', | |||
}, | |||
{ | |||
title: '操作', |
@@ -2,7 +2,7 @@ | |||
<a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | |||
<a-card title="转换验证码"> | |||
<template #extra> | |||
<a-button @click="getCode">生成验证码</a-button> | |||
<a-button @click="getCode" type="primary" size="large">生成验证码</a-button> | |||
</template> | |||
<a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||
@page="getPage" :loading="loading"> |
@@ -11,7 +11,7 @@ | |||
</a-col> | |||
<a-col span="24"> | |||
<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-col> | |||
</a-row> |
@@ -31,16 +31,7 @@ | |||
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> | |||
<style> |
@@ -24,23 +24,23 @@ | |||
<script setup lang="ts"> | |||
import { ref, onMounted, computed, watch ,onBeforeUnmount} from '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 selectedKeys = ref<Number[]>([3]) | |||
const changeKey = (data) => { | |||
curKey.value = data.key; | |||
} | |||
onMounted(() => { | |||
if (sessionStorage.getItem('section_id')) { | |||
selectedKeys.value = [sessionStorage.getItem('section_id')] | |||
if(sessionStorage.getItem('article_data')) { | |||
selectedKeys.value = [1]; | |||
curKey.value = 1; | |||
} | |||
}) | |||
onBeforeUnmount(() => { | |||
sessionStorage.removeItem('section_id') | |||
sessionStorage.removeItem('acticle_id') | |||
sessionStorage.removeItem('article_data') | |||
}) | |||
</script> | |||
<style> |
@@ -184,7 +184,8 @@ | |||
} | |||
} | |||
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, { | |||
center: center | |||
@@ -229,8 +230,6 @@ | |||
}) | |||
getJobCompanyjobs(current.value) | |||
} | |||
} else { | |||
initMap() | |||
} | |||
}) | |||
@@ -30,7 +30,7 @@ | |||
import ResumeRead from '@/components/company/resume/read/index.vue' | |||
import ResumeRecycle from '@/components/company/resume/recycle/index.vue' | |||
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) | |||
const changeKey = (data) => { | |||
curKey.value = data.key; |