| @@ -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; | |||