@@ -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-F9n6oHAB.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-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}; |
@@ -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-F9n6oHAB.js"></script> | |||
<link rel="stylesheet" crossorigin href="/assets/index-OlZ5X-qT.css"> | |||
<script type="module" crossorigin src="/assets/index-Ua34iPmJ.js"></script> | |||
<link rel="stylesheet" crossorigin href="/assets/index-kUK-5M1q.css"> | |||
</head> | |||
<body> | |||
<div id="app"></div> |
@@ -14,7 +14,7 @@ export const PostJobseekerSmsLogin = postModel(url.JobseekerSmsLogin); | |||
export const PostCustomerVerify = postModel(url.CustomerVerify); | |||
export const PostJobseekerEditPwd = postModel(url.JobseekerEditPwd); | |||
export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile); | |||
export const PostJobseekerResetPwd = postModel(url.JobseekerResetPwd); | |||
// 招聘会 | |||
export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业 | |||
@@ -111,6 +111,8 @@ export const GetJobCompanyjobs = getModel(url.JobCompanyjobs); // 企业当前 | |||
export const GetJobUrgentjobs = getModel(url.JobUrgentjobs); // 急招职位 | |||
export const GetJobHighpayjobs = getModel(url.JobHighpayjobs); // 高薪职位 | |||
export const GetJobCampusjobs = getModel(url.JobCampusjobs); // 校园招聘 | |||
export const GetJobAuthDetail = getModel(url.JobAuthDetail); // 获取职位详情--需登录 | |||
// 见习基地 | |||
export const GetCompanyProbationList = getModel(url.CompanyProbationList); // 校园招聘 |
@@ -12,6 +12,7 @@ declare namespace urlType { | |||
JobseekerEditPwd : String, | |||
CompanyLoginByMobile: String, | |||
Jobseekerlogin: String, | |||
JobseekerResetPwd: String, | |||
// 招聘会 | |||
RecruitmentBookcompany : String, | |||
@@ -98,6 +99,7 @@ declare namespace urlType { | |||
JobUrgentjobs : String, | |||
JobHighpayjobs : String, | |||
JobCampusjobs : String, | |||
JobAuthDetail : String, | |||
// 招聘会企业预定 | |||
RecruitmentbookAdd : String, |
@@ -12,10 +12,10 @@ export const url : urlType.url = { | |||
SmsSend: common + '/sms/send', // 短信验证码 | |||
JobseekerSmsLogin: web + '/jobseeker/smslogin', // 个人登录 | |||
Jobseekerlogin: web + '/jobseeker/login', // 个人登录 | |||
CustomerVerify: web + '/customer/verify', // 转换为HR | |||
CustomerVerify: web + '/jobseek/verify', // 转换为HR | |||
JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码 | |||
CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录 | |||
JobseekerResetPwd: web + '/jobseek/resetpwd', // 修改密码 | |||
@@ -104,6 +104,7 @@ export const url : urlType.url = { | |||
JobUrgentjobs: web + '/job/urgentjobs', // 急招职位 | |||
JobHighpayjobs: web + '/job/highpayjobs', // 高薪职位 | |||
JobCampusjobs: web + '/job/campusjobs', // 校园招聘 | |||
JobAuthDetail: web + '/job/authdetail', // 获取职位详情--需登录 | |||
// 招聘会企业预定 | |||
RecruitmentbookAdd: web + '/recruitmentbook/add', // 添加 |
@@ -1,23 +1,36 @@ | |||
<template> | |||
<img :src="imgObj.src" alt="" | |||
:style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} " | |||
@click="preImage(imgObj.src)"> | |||
<a-modal v-model:open="imageBigOpen" centered :footer="null" @cancel="close"> | |||
<img :src="imgObj.src" style="width: 100%; height: 100%;"> | |||
</a-modal> | |||
<div v-if="needPre"> | |||
<img :src="imgObj.src" alt="" | |||
:style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} " | |||
@click="preImage(imgObj.src)"> | |||
<a-modal v-model:open="imageBigOpen" centered :footer="null" @cancel="close"> | |||
<img :src="imgObj.src" style="width: 100%; height: 100%;"> | |||
</a-modal> | |||
</div> | |||
<div v-else> | |||
<img :src="imgObj.src" alt="" | |||
:style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} "> | |||
</div> | |||
</template> | |||
<script lang="ts" setup> | |||
import { ref, onMounted, defineProps, watch, computed } from 'vue'; | |||
let imageBigOpen = ref<Boolean>(false) | |||
const props = defineProps({ | |||
imgObj: { | |||
type: Object, | |||
default: {} | |||
}, | |||
need: { | |||
type: Boolean, | |||
default: false | |||
} | |||
}); | |||
let needPre = ref<Boolean>(props.need) | |||
let imageBigOpen = ref<Boolean>(false) | |||
interface imgType { | |||
src ?: String, | |||
width ?: Number, |
@@ -1,11 +1,7 @@ | |||
<template> | |||
<a-affix :offset-top="90"> | |||
<a-menu v-model:selectedKeys="selectedKeys" @click="menuClick" style="width: 100%;border-radius: 8px;" mode="inline"> | |||
<a-menu-item v-for="(item, index) in menuList" :key="item.key">{{item.title}}</a-menu-item> | |||
</a-menu> | |||
</a-affix> | |||
</template> | |||
<script setup lang="ts"> |
@@ -17,7 +17,7 @@ | |||
<a-col span="12"> | |||
<a-form-item label="成立日期" name="establishment_date"> | |||
<a-date-picker v-model:value="addOtherForm.chengli_date" | |||
@Change="establishmentDateChange" style="width: 100%;" size="large" /> | |||
@Change="establishmentDateChange" style="width: 100%;" size="large" :disabledDate="disabledDateFront"/> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
@@ -143,6 +143,9 @@ | |||
<a-descriptions-item label="Email">{{basic.email}}</a-descriptions-item> | |||
<a-descriptions-item label="传真">{{basic.fax}}</a-descriptions-item> | |||
</a-descriptions> | |||
<a-descriptions :column="3" title="企业介绍"> | |||
<a-descriptions-item><div v-html="basic.introduction"></div></a-descriptions-item> | |||
</a-descriptions> | |||
</template> | |||
</div> | |||
</template> | |||
@@ -155,7 +158,7 @@ | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { dataForm, otherDataForm, reset } from '@/components/company/information/basic/data.ts'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | |||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, disabledDateFront } = useCommon(); | |||
const dayjsRef = ref(dayjs); | |||
let props = defineProps(['form_state']); | |||
const emit = defineEmits(); | |||
@@ -173,11 +176,11 @@ | |||
basic.value = res.data; | |||
createForm.value = intersectionAlike(createForm.value, res.data) | |||
addOtherForm.value = { | |||
chengli_date: dayjsRef.value(res.data.establishment_date), | |||
chengli_date: res.data.establishment_date ? dayjsRef.value(res.data.establishment_date) : '', | |||
content: res.data.introduction, | |||
company_address_cascader: [res.data.province, res.data.city, res.data.district, res.data.street], | |||
company_industry_cascader: [res.data.industry, res.data.industry2], | |||
company_nature_cascader: [res.data.nature], | |||
company_address_cascader: res.data.province ? [res.data.province, res.data.city, res.data.district, res.data.street] : [], | |||
company_industry_cascader: res.data.industry ? [res.data.industry, res.data.industry2] : [], | |||
company_nature_cascader: res.data.nature ? [res.data.nature] : 0, | |||
company_scale_cascader: res.data.scale, | |||
} | |||
}) | |||
@@ -209,7 +212,7 @@ | |||
// 企业规模 | |||
const scaleSave = (data) => { | |||
createForm.value.scale = data.val ? data.val : 0; | |||
createForm.value.scale = data.val.key ? data.val.key : 0; | |||
} | |||
let showMap = ref<Boolean>(false); |
@@ -41,23 +41,28 @@ | |||
<template v-else> | |||
<!-- <a-search @searchData="searchData"></a-search> --> | |||
<a-list :data-source="departmengList"> | |||
<template #loadMore> | |||
<div v-if="!loading" | |||
:style="{ textAlign: 'center', marginTop: '12px', height: '32px', lineHeight: '32px' }"> | |||
<a-button @click="onLoadMore">加载更多</a-button> | |||
</div> | |||
<template #loadMore v-if="departmengList.length > 0"> | |||
<a-flex justify="center"> | |||
<a-space> | |||
<div v-if="!loading" > | |||
<a-button @click="onLoadMore">加载更多</a-button> | |||
</div> | |||
</a-space> | |||
</a-flex> | |||
</template> | |||
<template #renderItem="{ item }"> | |||
<a-list-item> | |||
<template #actions> | |||
<a-button @click="toEdit(item)" size="small"> | |||
编辑 | |||
</a-button> | |||
<a-popconfirm title="是否删除该部门" @confirm="del(item.id)"> | |||
<a-button size="small" danger> | |||
删除 | |||
<a-space> | |||
<a-button @click="toEdit(item)" type="primary" size="small"> | |||
编辑 | |||
</a-button> | |||
</a-popconfirm> | |||
<a-popconfirm title="是否删除该部门" @confirm="del(item.id)"> | |||
<a-button size="small" danger> | |||
删除 | |||
</a-button> | |||
</a-popconfirm> | |||
</a-space> | |||
</template> | |||
<a-skeleton avatar :title="false" :loading="!!loading" active> | |||
<a-list-item-meta> |
@@ -19,7 +19,9 @@ | |||
</a-form> | |||
</template> | |||
<template v-else> | |||
<image-container :imgObj="{src: addOtherForm.photo_img,width: '200px',height:'280px', mode: 'fill'}"></image-container> | |||
<div v-if="createForm.photo"> | |||
<image-container :imgObj="{src:createForm.photo? imageprefix + createForm.photo : '/images/gongzhonghao.png',width: '200px',height:'280px', mode: 'fill'}"></image-container> | |||
</div> | |||
</template> | |||
</div> | |||
</template> | |||
@@ -44,9 +46,9 @@ | |||
const getBasic = () => { | |||
PostCompanyDetailInfo().then(res => { | |||
createForm.value.photo = res.data.photo | |||
createForm.value.photo = res.data.photo ? res.data.photo : '' | |||
addOtherForm.value = { | |||
photo_img: imageprefix + res.data.photo, | |||
photo_img: res.data.photo ? imageprefix + res.data.photo : '', | |||
} | |||
}) | |||
} |
@@ -19,7 +19,9 @@ | |||
</a-form> | |||
</template> | |||
<template v-else> | |||
<image-container :imgObj="{src: addOtherForm.license_img,width: '200px',height:'280px',mode: 'fill'}"></image-container> | |||
<div v-if="createForm.license_path"> | |||
<image-container :imgObj="{src:createForm.license_path? imageprefix + createForm.license_path : '/images/gongzhonghao.png',width: '200px',height:'280px', mode: 'fill'}"></image-container> | |||
</div> | |||
</template> | |||
</div> | |||
</template> | |||
@@ -45,9 +47,9 @@ | |||
const getBasic = () => { | |||
PostCompanyDetailInfo().then(res => { | |||
createForm.value.license_path = res.data.license_path | |||
createForm.value.license_path = res.data.license_path ? res.data.license_path : '' | |||
addOtherForm.value = { | |||
license_img: imageprefix + res.data.license_path, | |||
license_img: res.data.license_path ? imageprefix + res.data.license_path : '', | |||
} | |||
}) | |||
} |
@@ -7,7 +7,8 @@ | |||
<a-row :gutter="20"> | |||
<a-col span="12"> | |||
<a-form-item label="是否紧急" name="urgent"> | |||
<a-radio-group v-model:value="createForm.urgent" button-style="solid" size="large" style="width: 100%"> | |||
<a-radio-group v-model:value="createForm.urgent" button-style="solid" size="large" | |||
style="width: 100%"> | |||
<a-radio-button :value="1" style="width: 50%">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%">否</a-radio-button> | |||
</a-radio-group> | |||
@@ -17,37 +18,37 @@ | |||
<a-form-item label="选择部门" name="department_id"> | |||
<a-select v-model:value="addOtherForm.department_name" @change="departmentChange" | |||
placeholder="请进行搜索选择部门" show-search :filter-option="false" label-in-value | |||
@search="departmentSearch" size="large"> | |||
@search="departmentSearch" size="large"> | |||
<a-select-option v-for="item in department_list" :key="item.id" :value="item.id" | |||
:label="item.name" label-in-value>{{item.name}}</a-select-option> | |||
</a-select> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="职位名称" name="name"> | |||
<a-input v-model:value="createForm.name" placeholder="请输入职位名称" size="large"/> | |||
<a-form-item label="职位名称" name="name"> | |||
<a-input v-model:value="createForm.name" placeholder="请输入职位名称" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="招聘人数" name="invite_count"> | |||
<a-input v-model:value="createForm.invite_count" placeholder="请输入招聘人数" size="large"/> | |||
<a-input v-model:value="createForm.invite_count" placeholder="请输入招聘人数" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="职位类别"> | |||
<a-form-item label="职位类别"> | |||
<a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange" | |||
:tree_content="createForm.job_type"></a-shujilian> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="工作区域"> | |||
<a-form-item label="工作区域"> | |||
<a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)" | |||
@saveTreeNode="jobAddressChange" | |||
:tree_content="createForm.job_location"></a-shujilian> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-form-item required label="职位描述" name="describe_text"> | |||
<a-form-item label="职位描述" name="describe_text"> | |||
<QuillEditor theme="snow" :options="richOption" toolbar="full" | |||
v-model:content="addOtherForm.describe_content" | |||
@update:content="onEditorDescribeUpdate($event)" contentType="html" /> | |||
@@ -61,27 +62,27 @@ | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="有效天数" name="useful_life"> | |||
<a-form-item label="有效天数" name="useful_life"> | |||
<a-input-number :min="0" type="number" v-model:value="createForm.useful_life" | |||
placeholder="请输入有效天数" style="width: 100%;" size="large" /> | |||
placeholder="请输入有效天数" style="width: 100%;" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="到期日期"> | |||
<a-form-item label="到期日期"> | |||
<a-date-picker v-model:value="addOtherForm.daoqi_date" @Change="disabledDateChange" | |||
style="width: 100%;" size="large"/> | |||
style="width: 100%;" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="关键词"> | |||
<a-input v-model:value="createForm.key_word" placeholder="请输入关键词" size="large"/> | |||
<a-input v-model:value="createForm.key_word" placeholder="请输入关键词" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="职位性质"> | |||
<a-radio-group v-model:value="addOtherForm.job_nature" button-style="solid" | |||
@change="jobNatureChange" style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 20%;">全职</a-radio-button> | |||
@change="jobNatureChange" style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 20%;">全职</a-radio-button> | |||
<a-radio-button :value="2" style="width: 20%;">兼职</a-radio-button> | |||
<a-radio-button :value="3" style="width: 20%;">临时</a-radio-button> | |||
<a-radio-button :value="4" style="width: 20%;">实习</a-radio-button> | |||
@@ -90,13 +91,13 @@ | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="食宿要求"> | |||
<a-form-item label="食宿要求"> | |||
<a-xuanze :dict="2016" placeholder="请选择食宿要求" @saveSelect="saveShisu" | |||
:select_content="addOtherForm.shisu_select"></a-xuanze> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="节假日休息情况"> | |||
<a-form-item label="节假日休息情况"> | |||
<a-xuanze :dict="2017" placeholder="请选择节假日休息情况" @saveSelect="saveHolidays" | |||
:select_content="addOtherForm.holidays_select"></a-xuanze> | |||
</a-form-item> | |||
@@ -106,7 +107,7 @@ | |||
<div v-show="current == 1"> | |||
<a-row gutter="20"> | |||
<a-col span="12"> | |||
<a-form-item required label="工作经验"> | |||
<a-form-item label="工作经验"> | |||
<a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | |||
:select_content="createForm.experience"></a-xuanze> | |||
</a-form-item> | |||
@@ -118,21 +119,22 @@ | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="含最高学历" name="degree_better" style="width: 100%;" size="large"> | |||
<a-radio-group v-model:value="createForm.degree_better" button-style="solid"> | |||
<a-form-item label="含最高学历" name="degree_better"> | |||
<a-radio-group v-model:value="createForm.degree_better" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
</a-radio-group> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="职称要求"> | |||
<a-form-item label="职称要求"> | |||
<a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel" | |||
:select_content="createForm.profelevel"></a-xuanze> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="技能认证"> | |||
<a-form-item label="技能认证"> | |||
<a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification" | |||
:select_content="createForm.certification"></a-xuanze> | |||
</a-form-item> | |||
@@ -146,13 +148,14 @@ | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="掌握程度"> | |||
<a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree" | |||
<a-xuanze :dict="2008" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree" | |||
:select_content="createForm.language_degree"></a-xuanze> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="性别要求" name="sex"> | |||
<a-radio-group v-model:value="createForm.sex" button-style="solid" style="width: 100%;" size="large"> | |||
<a-radio-group v-model:value="createForm.sex" button-style="solid" style="width: 100%;" | |||
size="large"> | |||
<a-radio-button :value="1" style="width: calc(100% / 3);">男</a-radio-button> | |||
<a-radio-button :value="2" style="width: calc(100% / 3);">女</a-radio-button> | |||
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | |||
@@ -162,19 +165,20 @@ | |||
<a-col span="12"> | |||
<a-form-item label="最小年龄" name="age_min"> | |||
<a-input-number :min="0" type="number" v-model:value="createForm.age_min" | |||
placeholder="请输入最小年龄" style="width: 100%;" size="large"/> | |||
placeholder="请输入最小年龄" style="width: 100%;" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="最大年龄" name="age_max"> | |||
<a-input-number :min="0" type="number" v-model:value="createForm.age_max" | |||
placeholder="请输入最大年龄" style="width: 100%;" size="large"/> | |||
placeholder="请输入最大年龄" style="width: 100%;" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="婚姻状况" name="marital_status"> | |||
<a-radio-group v-model:value="createForm.marital_status" button-style="solid" style="width: 100%;" size="large"> | |||
<a-form-item label="婚姻状况" name="marital_status"> | |||
<a-radio-group v-model:value="createForm.marital_status" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: calc(100% / 3);">已婚</a-radio-button> | |||
<a-radio-button :value="2" style="width: calc(100% / 3);">未婚</a-radio-button> | |||
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | |||
@@ -182,8 +186,8 @@ | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="专业" name="major"> | |||
<a-input v-model:value="createForm.major" placeholder="请输入专业" size="large"/> | |||
<a-form-item label="专业" name="major"> | |||
<a-input v-model:value="createForm.major" placeholder="请输入专业" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
@@ -192,7 +196,7 @@ | |||
<a-row> | |||
<template v-for="(item, index) in licenseOption"> | |||
<a-col span="8"> | |||
<a-checkbox :value="item.id" size="large">{{item.name}}</a-checkbox> | |||
<a-checkbox :value="item.id" size="large">{{item.name}}</a-checkbox> | |||
</a-col> | |||
</template> | |||
</a-row> | |||
@@ -216,36 +220,38 @@ | |||
<div v-show="current == 2"> | |||
<a-row gutter="20"> | |||
<a-col span="12"> | |||
<a-form-item required label="联系人" name="contact"> | |||
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" size="large"/> | |||
<a-form-item label="联系人" name="contact"> | |||
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="担任职位" name="possession"> | |||
<a-input v-model:value="createForm.possession" placeholder="请输入联系人职位" size="large"/> | |||
<a-input v-model:value="createForm.possession" placeholder="请输入联系人职位" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item required label="联系电话" name="phone"> | |||
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" size="large"/> | |||
<a-form-item label="联系电话" name="phone"> | |||
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="是否公开联系电话" name="phone_public"> | |||
<a-radio-group v-model:value="createForm.phone_public" button-style="solid" style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-group v-model:value="createForm.phone_public" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
</a-radio-group> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="手机" name="mobile"> | |||
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" size="large"/> | |||
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="是否公开手机" name="mobile_public"> | |||
<a-radio-group v-model:value="createForm.mobile_public" button-style="solid" style="width: 100%;" size="large"> | |||
<a-radio-group v-model:value="createForm.mobile_public" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
</a-radio-group> | |||
@@ -253,12 +259,13 @@ | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="邮箱" name="email"> | |||
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" size="large"/> | |||
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="是否公开邮箱" name="email_public"> | |||
<a-radio-group v-model:value="createForm.email_public" button-style="solid" style="width: 100%;" size="large"> | |||
<a-radio-group v-model:value="createForm.email_public" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
</a-radio-group> | |||
@@ -266,12 +273,13 @@ | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="传真" name="fax"> | |||
<a-input v-model:value="createForm.fax" placeholder="请输入传真" size="large"/> | |||
<a-input v-model:value="createForm.fax" placeholder="请输入传真" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="是否公开传真" name="fax_public"> | |||
<a-radio-group v-model:value="createForm.fax_public" button-style="solid" style="width: 100%;" size="large"> | |||
<a-radio-group v-model:value="createForm.fax_public" button-style="solid" | |||
style="width: 100%;" size="large"> | |||
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button> | |||
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button> | |||
</a-radio-group> | |||
@@ -279,12 +287,13 @@ | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="其他地址" name="other_address"> | |||
<a-input v-model:value="createForm.other_address" placeholder="请输入其他地址" size="large"/> | |||
<a-input v-model:value="createForm.other_address" placeholder="请输入其他地址" size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-form-item label="面试地址" name="interview_address"> | |||
<a-input v-model:value="createForm.interview_address" placeholder="请输入面试地址" size="large"/> | |||
<a-input v-model:value="createForm.interview_address" placeholder="请输入面试地址" | |||
size="large" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="24"> | |||
@@ -564,9 +573,9 @@ | |||
.steps-action { | |||
margin-top: 12px; | |||
} | |||
:deep(.ant-steps-item-icon) { | |||
background-color: #4FBE70 !important; | |||
border-color: #4FBE70 !important; | |||
border-color: #4FBE70 !important; | |||
} | |||
</style> |
@@ -29,11 +29,11 @@ | |||
<StarOutlined /> | |||
收藏 | |||
</a-button> | |||
<a-button v-if="detail.favorited != 0" type="primary" @click="cancelCollect(detail.id)"> | |||
<a-button v-if="detail.favorited != 0" type="primary" @click="cancelCollect(detail.favorited)"> | |||
<StarOutlined /> | |||
取消收藏 | |||
</a-button> | |||
<a-button @click="applyJob(detail.id)"> | |||
<a-button @click="applyJob(detail.id)"> | |||
投简历 | |||
</a-button> | |||
</a-sapce> | |||
@@ -60,30 +60,34 @@ | |||
<a-descriptions-item label="联系人">{{detail.contact.contact}}</a-descriptions-item> | |||
<a-descriptions-item | |||
label="职业类别">{{detail.base.types ? detail.base.types[0].name : '未知'}}</a-descriptions-item> | |||
<a-descriptions-item label="联系电话">{{detail.contact.mobile}} <a-button size="small"> | |||
查看 | |||
</a-button></a-descriptions-item> | |||
<a-descriptions-item></a-descriptions-item> | |||
<a-descriptions-item label="职业描述"> | |||
<a-descriptions-item label="联系电话"> | |||
<span v-if="detail.contact.mobile_public == 1">{{detail.contact.mobile}}</span> | |||
<span v-else>未公开</span> | |||
</a-descriptions-item> | |||
<a-descriptions-item label="联系固话"> | |||
<span v-if="detail.contact.phone_public == 1">{{detail.contact.phone}}</span> | |||
<span v-else>未公开</span> | |||
</a-descriptions-item> | |||
<a-descriptions-item :span="2" label="职业描述"> | |||
<div v-html="detail.base.describe_text"></div> | |||
</a-descriptions-item> | |||
</a-descriptions> | |||
</div> | |||
<div style="margin-top: 30px;" > | |||
<div style="margin-top: 30px;"> | |||
<a-descriptions :column="1" title="地图"> | |||
<a-descriptions-item :span="24"> | |||
<div ref="mapContainer" class="map-container"></div> | |||
<div ref="mapJob" class="map-container"></div> | |||
</a-descriptions-item> | |||
</a-descriptions> | |||
</div> | |||
<a-login></a-login> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted, defineProps, watch ,createVNode} from 'vue'; | |||
import { GetJobDetail,PostJobseekAddfavorite, PostJobseekDelfavorite, PostJobseekAddapplication } from '@/apis/models'; | |||
import { ref, computed, onMounted, defineProps, watch, createVNode } from 'vue'; | |||
import { GetJobDetail, GetJobAuthDetail, PostJobseekAddfavorite, PostJobseekDelfavorite, PostJobseekAddapplication } from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal, showOtherModal1 } = useCommon(); | |||
@@ -92,29 +96,41 @@ | |||
let detail = ref<Object>(null) | |||
let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '') | |||
let role = ref(sessionStorage.getItem('role') ? sessionStorage.getItem('role') : '') | |||
const mapContainer = ref(null); | |||
const mapJob = ref(null); | |||
const getDetail = () => { | |||
GetJobDetail({ id: job_id.value }).then(res => { | |||
detail.value = res.data; | |||
detail.value.latitude = 39.984104 | |||
detail.value.longitude = 116.307503 | |||
if (mapContainer.value) { | |||
initMap() | |||
} else { | |||
console.error('地图容器元素未找到'); | |||
} | |||
}) | |||
if (sessionStorage.getItem('token')) { | |||
GetJobAuthDetail({ id: job_id.value }).then(res => { | |||
detail.value = res.data; | |||
if (mapJob.value && detail.value.latitude && detail.value.longitude) { | |||
initMap() | |||
} else { | |||
console.error('地图容器元素未找到'); | |||
} | |||
}) | |||
} else { | |||
GetJobDetail({ id: job_id.value }).then(res => { | |||
detail.value = res.data; | |||
detail.value.latitude = '' | |||
detail.value.longitude = '' | |||
if (mapJob.value && detail.value.latitude && detail.value.longitude) { | |||
initMap() | |||
} else { | |||
console.error('地图容器元素未找到'); | |||
} | |||
}) | |||
} | |||
} | |||
const initMap = () => { | |||
var center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标 | |||
let center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标 | |||
//初始化地图 | |||
var map = new TMap.Map(mapContainer.value, { | |||
let map = new TMap.Map(mapJob.value, { | |||
center: center | |||
}); | |||
//创建并初始化MultiMarker | |||
var markerLayer = new TMap.MultiMarker({ | |||
let markerLayer = new TMap.MultiMarker({ | |||
map: map, //指定地图容器 | |||
//样式定义 | |||
styles: { | |||
@@ -131,7 +147,7 @@ | |||
geometries: [{ | |||
"id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | |||
"styleId": 'myStyle', //指定样式id | |||
"position": new TMap.LatLng(detail.value.latitude, detail.value.longitude), //点标记坐标位置 | |||
"position": new TMap.LatLng(sessionStorage.getItem('lat'), sessionStorage.getItem('lng')), //点标记坐标位置 | |||
"properties": {//自定义属性 | |||
"title": "marker1" | |||
} | |||
@@ -139,71 +155,71 @@ | |||
] | |||
}); | |||
} | |||
const toLogin = () => { | |||
showOtherModal1() | |||
} | |||
const confirmCollect = (job_id : Number) => { | |||
Modal.confirm({ | |||
title: `是否要收藏该职位`, | |||
centered: true, | |||
icon: createVNode(ExclamationCircleOutlined), | |||
onOk() { | |||
PostJobseekAddfavorite({job_id: job_id }).then(res => { | |||
PostJobseekAddfavorite({ job_id: job_id }).then(res => { | |||
successToast('已收藏') | |||
mapContainer.value = null | |||
mapJob.value = null | |||
getDetail(); | |||
}) | |||
}, | |||
onCancel() { | |||
}, | |||
}); | |||
} | |||
const cancelCollect = (job_id : Number) => { | |||
const cancelCollect = (id : Number) => { | |||
Modal.confirm({ | |||
title: `是否要取消收藏该职位`, | |||
centered: true, | |||
icon: createVNode(ExclamationCircleOutlined), | |||
onOk() { | |||
PostJobseekDelfavorite({job_id: job_id }).then(res => { | |||
PostJobseekDelfavorite({ id: id }).then(res => { | |||
successToast('已取消收藏') | |||
mapContainer.value = null | |||
mapJob.value = null | |||
getDetail(); | |||
}) | |||
}, | |||
onCancel() { | |||
}, | |||
}); | |||
} | |||
const applyJob = (job_id : Number) => { | |||
Modal.confirm({ | |||
title: `是否要投递该职位`, | |||
centered: true, | |||
icon: createVNode(ExclamationCircleOutlined), | |||
onOk() { | |||
PostJobseekAddapplication({job_id: job_id }).then(res => { | |||
PostJobseekAddapplication({ job_id: job_id }).then(res => { | |||
successToast('已投递') | |||
mapContainer.value = null | |||
mapJob.value = null | |||
getDetail(); | |||
}) | |||
}, | |||
onCancel() { | |||
}, | |||
}); | |||
} | |||
watch(() => props.id, (newVal) => { | |||
job_id.value = newVal | |||
if (job_id.value) { | |||
mapContainer.value = null | |||
mapJob.value = null | |||
getDetail() | |||
} | |||
}, { immediate: true }) | |||
@@ -213,7 +229,7 @@ | |||
:deep(.ant-btn) { | |||
border-radius: 0 !important; | |||
} | |||
.map-container { | |||
width: 100%; | |||
height: 400px; |
@@ -184,7 +184,8 @@ | |||
background-color: #4FBE70; | |||
transform: rotate(10deg); | |||
position: absolute; | |||
top: 4px | |||
top: 4px; | |||
left: 4px; | |||
} | |||
.text-content { |
@@ -11,41 +11,56 @@ | |||
</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> | |||
</a-page-header> | |||
</template> | |||
<template v-else> | |||
<a-list item-layout="horizontal" :data-source="recruitmentList" style="cursor: pointer;"> | |||
<template #renderItem="{ item }"> | |||
<a-list-item @click="toDetail(item)" > | |||
<a-list-item @click="toDetail(item)"> | |||
<a-list-item-meta :title="item.title" :description="'发布时间:'+item.created_at"> | |||
</a-list-item-meta> | |||
</a-list-item> | |||
</template> | |||
</a-list> | |||
<a-flex align="center" justify="center"> | |||
<a-pagination hideOnSinglePage v-model:current="current" | |||
:total="total" @change="pageChange" /> | |||
<a-pagination hideOnSinglePage v-model:current="current" :total="total" @change="pageChange" /> | |||
</a-flex> | |||
</template> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted, createVNode } from 'vue'; | |||
import { PostRecruitmentList } from '@/apis/models'; | |||
import { ref, computed, onMounted ,defineEmits} from 'vue'; | |||
import { PostRecruitmentList, PostRecruitmentBookcompany } from '@/apis/models'; | |||
import { ArrowLeftOutlined } from '@ant-design/icons-vue'; | |||
import { router } from '@/router'; | |||
const emit = defineEmits(); | |||
let recruitmentList = ref<object[]>([]) | |||
let detail = ref<Object>(null) | |||
let current = ref<Number>(1) | |||
let total = ref<Number>(0) | |||
let companyList = ref<Object>([]) | |||
const pageChange = (page) => { | |||
current.value = page | |||
getRecruitmentList() | |||
} | |||
const getRecruitmentList = (page) => { | |||
PostRecruitmentList({page: current.value}).then(res => { | |||
PostRecruitmentList({ page: current.value }).then(res => { | |||
recruitmentList.value = res.data.recruitments; | |||
total.value = res.data.total; | |||
}) | |||
@@ -57,13 +72,31 @@ | |||
const toDetail = (data) => { | |||
detail.value = data | |||
PostRecruitmentBookcompany({ pagesize: 100, recruitment_id: data.id }).then(res => { | |||
companyList.value = res.data.recruitmentbooks | |||
}) | |||
} | |||
const toCompanyDetail = (val : Number) => { | |||
sessionStorage.setItem('tab_key', 1) | |||
sessionStorage.setItem('pubilc_id', val) | |||
sessionStorage.setItem('mode', 'detail') | |||
router.push({ | |||
path: '/personal' | |||
}) | |||
} | |||
const back = (data) => { | |||
detail.value = null | |||
} | |||
</script> | |||
<style> | |||
<style lang="less" scoped> | |||
.company-box { | |||
width: 100%; | |||
padding: 20px; | |||
cursor: pointer; | |||
border: 1px solid #f0f0f0; | |||
border-radius: 8px; | |||
} | |||
</style> |
@@ -11,7 +11,7 @@ | |||
<a-col span="8" v-for="(item, index) in jobList"> | |||
<a-card :title="item.job_name"> | |||
<template #extra> | |||
<a-button @click="cancelCollect(item.id,item.job_id)">取消收藏</a-button> | |||
<a-button @click="cancelCollect(item.id,item.job_id)" type="primary">取消收藏</a-button> | |||
</template> | |||
<a-row> | |||
<a-col span="20"> | |||
@@ -37,7 +37,7 @@ | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted, defineEmits, createVNode } from 'vue'; | |||
import { GetJobseekListfavorite, PostJobseekUpdatefavorite } from '@/apis/models'; | |||
import { GetJobseekListfavorite, PostJobseekDelfavorite } from '@/apis/models'; | |||
import JobDetail from '@/components/jobseeker/invite/detail/index.vue' | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
@@ -98,7 +98,7 @@ | |||
centered: true, | |||
icon: createVNode(ExclamationCircleOutlined), | |||
onOk() { | |||
PostJobseekUpdatefavorite({ id: id, job_id: job_id }).then(res => { | |||
PostJobseekDelfavorite({ id: id, job_id: job_id }).then(res => { | |||
successToast('已取消收藏') | |||
getData(); | |||
}) |
@@ -45,7 +45,7 @@ | |||
<a-col span="12"> | |||
<a-form-item label="出生日期" name="dob"> | |||
<a-date-picker v-model:value="addOtherForm.dob" @Change="dobChange" style="width: 100%;" | |||
size="large" /> | |||
size="large" :disabledDate="disabledDateFront" /> | |||
</a-form-item> | |||
</a-col> | |||
<a-col span="12"> | |||
@@ -221,7 +221,7 @@ | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, imageprefix } = useCommon(); | |||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, imageprefix, disabledDateFront } = useCommon(); | |||
const dayjsRef = ref(dayjs); | |||
let props = defineProps(['form_state']); | |||
const emit = defineEmits(); |
@@ -305,13 +305,21 @@ | |||
warnToast('请输入验证码') | |||
return; | |||
} else { | |||
successToast('已经成为招聘者,请重新登录') | |||
quit() | |||
router.push('/login') | |||
// PostCustomerVerify(form.value).then(res => { | |||
// successToast('已经成为招聘者,请重新登录') | |||
// quit() | |||
// }) | |||
form.value.code = Number(form.value.code) | |||
PostCustomerVerify(form.value).then(res => { | |||
successToast('已经成为招聘者,请重新登录') | |||
store.commit('getPageType', { | |||
pageType: '' | |||
}) | |||
store.commit('setShowLoginBox', { | |||
showLoginBox: false | |||
}) | |||
sessionStorage.clear() | |||
sessionStorage.setItem('pageType', '') | |||
store.commit('permissions/SET_PERMISSION', null) | |||
store.commit('permissions/SET_MENU', []) | |||
router.push('/login') | |||
}) | |||
} | |||
} |
@@ -113,11 +113,23 @@ | |||
:deep(.ant-menu-submenu-open) { | |||
color: #4FBE70 !important; | |||
background-color: #ffffff !important; | |||
color: #ffffff !important; | |||
background-color: #0A130D !important; | |||
border-bottom-color: #4FBE70 !important; | |||
} | |||
:deep(.ant-menu-submenu-title:hover) { | |||
color: #ffffff !important; | |||
} | |||
:deep(.ant-menu-submenu-active::after) { | |||
color: #ffffff !important; | |||
background-color: #4FBE70 !important; | |||
border-bottom-color: #4FBE70 !important; | |||
} | |||
@@ -138,6 +138,10 @@ export const useCommon = () => { | |||
const disabledDate = (val : Dayjs) => { | |||
return val && val < dayjs().endOf('day'); | |||
}; | |||
const disabledDateFront = (val : Dayjs) => { | |||
return val && val > dayjs().endOf('day'); | |||
}; | |||
// 照片前缀 | |||
// const imageprefix : string = 'https://admin1.jcjob.cn/img/' | |||
@@ -159,6 +163,7 @@ export const useCommon = () => { | |||
richOption, | |||
message, | |||
disabledDate, | |||
disabledDateFront, | |||
imageprefix, | |||
openSearchModel, | |||
showSearch, |
@@ -114,9 +114,11 @@ button:focus-visible { | |||
.ant-btn-primary { | |||
background-color: #4FBE70 !important; | |||
box-shadow: 0 2px 0 rgba(79, 190, 112, 0.1)important; | |||
border-color: #4FBE70 !important; | |||
} | |||
.ant-menu-submenu-selected::after { | |||
border-bottom-color: #4FBE70 !important; | |||
} |
@@ -22,7 +22,7 @@ | |||
</a-row> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, onMounted, computed, watch } from 'vue'; | |||
import { ref, onMounted, computed, watch, onBeforeUnmount } from 'vue'; | |||
import Download from '@/components/download/index.vue' | |||
let menu_list = ref([{ title: '个人求职', key: 10 },{ title: '企业招聘', key: 11},{ title: '应届毕业生', key: 12},{ title: '人才入户', key: 13},{ title: '其他下载', key: 14}]) | |||
let curKey = ref<Number>(10) | |||
@@ -30,6 +30,17 @@ | |||
const changeKey = (data) => { | |||
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> |
@@ -22,7 +22,7 @@ | |||
</a-row> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, onMounted, computed, watch } from 'vue'; | |||
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 curKey = ref<Number>(3) | |||
@@ -30,6 +30,17 @@ | |||
const changeKey = (data) => { | |||
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> |
@@ -22,7 +22,7 @@ | |||
</a-list-item> | |||
</a-list> | |||
<a-tabs v-model:activeKey="activeKey" type="card"> | |||
<a-tabs v-model:activeKey="activeKey" type="card" @change="activeChange"> | |||
<a-tab-pane :key="1" tab="企业信息"> | |||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||
<a-descriptions title="公司介绍" layout="vertical"> | |||
@@ -57,7 +57,7 @@ | |||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||
<a-descriptions :column="7" title="企业相册" layout="vertical"> | |||
<a-descriptions-item><image-container | |||
:imgObj="{src: imageprefix + companyDetail.photo,width: '153px',height:'50px'}"></image-container></a-descriptions-item> | |||
:imgObj="{src: imageprefix + companyDetail.photo,width: '200px',height:'200px', mode: 'fill'}"></image-container></a-descriptions-item> | |||
</a-descriptions> | |||
</div> | |||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||
@@ -83,8 +83,8 @@ | |||
<job-card :list="jobList" @detail="toDetail"></job-card> | |||
<a-flex justify="center"> | |||
<a-space> | |||
<a-pagination simple v-model:current="current" | |||
:total="total" @change="pageChange" /> | |||
<a-pagination simple v-model:current="current" :total="total" | |||
@change="pageChange" /> | |||
</a-space> | |||
</a-flex> | |||
<!-- <a-card hoverable :bordered="false" style="width: 100%"> | |||
@@ -98,11 +98,10 @@ | |||
</template> | |||
</a-card> --> | |||
</div> | |||
</a-col> | |||
<a-col span="18"> | |||
<div v-if="job_id" | |||
style="padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||
<div v-if="job_id" style="padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||
<job-detail :id="job_id"></job-detail> | |||
</div> | |||
</a-col> | |||
@@ -143,9 +142,9 @@ | |||
const toDetail = (data) => { | |||
job_id.value = data.id; | |||
} | |||
const pageChange = (page) => { | |||
current.value = page | |||
getJobCompanyjobs(page) | |||
@@ -190,7 +189,6 @@ | |||
var map = new TMap.Map(mapContainer.value, { | |||
center: center | |||
}); | |||
//创建并初始化MultiMarker | |||
var markerLayer = new TMap.MultiMarker({ | |||
map: map, //指定地图容器 | |||
@@ -216,8 +214,6 @@ | |||
} | |||
] | |||
}); | |||
} | |||
@@ -229,16 +225,12 @@ | |||
if (sessionStorage.getItem('pubilc_id') != 0 || sessionStorage.getItem('id') != 0) { | |||
PostCompanyInfo({ id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id') }).then(res => { | |||
companyDetail.value = res.data; | |||
companyDetail.value.latitude = 39.984104 | |||
companyDetail.value.longitude = 116.307503 | |||
if (mapContainer.value) { | |||
initMap() | |||
} else { | |||
console.error('地图容器元素未找到'); | |||
} | |||
initMap() | |||
}) | |||
getJobCompanyjobs(current.value) | |||
} | |||
} else { | |||
initMap() | |||
} | |||
}) | |||
@@ -257,13 +249,13 @@ | |||
.map-container { | |||
width: 100%; | |||
height: 400px; | |||
height: 600px; | |||
} | |||
:deep(.ant-card) { | |||
padding: 0 !important; | |||
} | |||
:deep(.ant-card-body) { | |||
padding: 0 !important; | |||
} |
@@ -5,14 +5,13 @@ | |||
<a-row :gutter="20"> | |||
<a-col span="4"> | |||
<div style="position: fixed; top: 90px; z-index:99;"> | |||
<a-anchor :get-container="getContainer" :target-offset="50" :items="menu_list" | |||
<a-anchor style="width: 210px !important;" :get-container="getContainer" :target-offset="50" :items="menu_list" | |||
@click="anchorClick"></a-anchor> | |||
</div> | |||
</a-col> | |||
<a-col span="20"> | |||
<div style="width: 100%;background-color: #fff;padding: 0 20px;border-radius: 8px;"> | |||
<div ref="abc" class="abc" style="height: calc(100vh - 100px);overflow: auto;"> | |||
<div ref="abc" class="abc" style="height: 100vh;overflow: auto;"> | |||
<a-space direction="vertical" justify="space-between" :size="36" | |||
style="width: 100% !important;"> | |||
<div id="basic"> |
@@ -62,7 +62,7 @@ | |||
</template> | |||
<a-list-item-meta> | |||
<template #title> | |||
<a-button type="link" @click="detail(item)">{{item.seekername}}</a-button> | |||
<div @click="detail(item)"> <span style="font-weight: bold;font-size: 16px;cursor: pointer;">{{item.seekername}} </span></div> | |||
</template> | |||
<template #description> | |||
<div> | |||
@@ -82,8 +82,7 @@ | |||
</template> | |||
<template #avatar> | |||
<image-container | |||
:imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container> | |||
:imgObj="{src: item.photo ? imageprefix+ item.photo : '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container> | |||
</template> | |||
</a-list-item-meta> | |||
</a-list-item> | |||
@@ -92,7 +91,7 @@ | |||
</a-col> | |||
<a-col span="24" v-if="jobList.length > 0"> | |||
<a-flex justify="center"> | |||
<a-button size="large" class="main-color" @click="more">查看更多</a-button> | |||
<a-button size="large" type="primary" @click="onLoadMore">查看更多</a-button> | |||
</a-flex> | |||
</a-col> | |||
</a-row> | |||
@@ -124,7 +123,7 @@ | |||
import { PostCompanyProfile, GetCompanyRecommentResume, PostCompanyTalentPoolAdd, PostCompanyResumeInterviewAdd ,PostCompanyJobList} from '@/apis/models'; | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
let { commomParams, ExclamationCircleOutlined, Modal, dayjs, disabledDate, showOtherModal1 } = useCommon(); | |||
let { commomParams, ExclamationCircleOutlined, Modal, dayjs, disabledDate, showOtherModal1 , imageprefix} = useCommon(); | |||
const dayjsRef = ref(dayjs); | |||
let jobList = ref<Object[]>([]) | |||
let basic = ref<Object>({}) | |||
@@ -168,7 +167,6 @@ | |||
}) | |||
} | |||
const positionChange = (val : Object) => { | |||
debugger | |||
position_name.value = val.option.label; | |||
form.job_id = Number(val.key); | |||
} |
@@ -18,7 +18,7 @@ | |||
</div> | |||
</template> | |||
<template #avatar> | |||
<a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" /> | |||
<a-avatar :src="imageprefix+basic.photo" :size="96" /> | |||
</template> | |||
</a-list-item-meta> | |||
<div style="margin-left: 108px;"> | |||
@@ -60,7 +60,7 @@ | |||
</a-descriptions-item> | |||
<a-descriptions-item :span="3" label="关注公众号,接收面试消息"> | |||
<image-container | |||
:imgObj="{src: '/images/gongzhonghao.png',width: '50px',height:'50px'}"></image-container> | |||
:imgObj="{src: '/images/gongzhonghao.png',width: '50px',height:'50px'}" :need="true"></image-container> | |||
</a-descriptions-item> | |||
</a-descriptions> | |||
</div> | |||
@@ -100,7 +100,7 @@ | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
let { commomParams, ExclamationCircleOutlined, Modal, onMenu, showOtherModal1 } = useCommon(); | |||
let { commomParams, ExclamationCircleOutlined, Modal, onMenu, showOtherModal1, imageprefix } = useCommon(); | |||
let jobList = ref<Object[]>([]) | |||
let basic = ref<Object>({}) | |||
let seeLength = ref<Number>(0) |
@@ -63,7 +63,7 @@ | |||
<script setup lang="ts"> | |||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | |||
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha } from '@/apis/models'; | |||
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | |||
import { warnToast, successToast } from '@/utils/toastHelper'; | |||
let smsForm = ref<Object>({ | |||
mobile: "", | |||
@@ -71,8 +71,9 @@ | |||
capt_id: "" | |||
}) | |||
let createForm = ref({ | |||
mobile: '', | |||
sms_code: '', | |||
new_password: '', | |||
new_pwd: '', | |||
}) | |||
let capt_id = ref<String>('') | |||
@@ -128,13 +129,18 @@ | |||
const saveForm = () => { | |||
PostJobseekerEditPwd(createForm.value).then(res => { | |||
successToast('修改成功') | |||
PostJobseekerResetPwd(createForm.value).then(res => { | |||
successToast('重置成功') | |||
resetForm() | |||
}) | |||
} | |||
const resetForm = () => { | |||
smsForm.value = { | |||
mobile: "", | |||
captcha: "", | |||
capt_id: "" | |||
} | |||
createForm.value = { | |||
sms_code: '', | |||
new_password: '', |
@@ -30,7 +30,7 @@ | |||
</a-col> | |||
<template v-if="loginMethod == 'password'"> | |||
<a-col span="24"> | |||
<a-input v-model:value="createForm.password" placeholder="密码" size="large" /> | |||
<a-input-password v-model:value="createForm.password" placeholder="密码" size="large" /> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-input v-model:value="createForm.captcha" placeholder="验证码" size="large" /> | |||
@@ -81,10 +81,10 @@ | |||
</a-col> | |||
<template v-if="registerSegmentedValue == '求职者注册'"> | |||
<a-col span="24"> | |||
<a-input v-model:value="personalForm.mobile" placeholder="请输入手机号" size="large" /> | |||
<a-input v-model:value="personalForm.mobile" placeholder="手机号" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input-password v-model:value="personalForm.password" placeholder="请输入密码" size="large" /> | |||
<a-input-password v-model:value="personalForm.password" placeholder="密码" size="large" /> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-input v-model:value="personalForm.captcha" placeholder="验证码" size="large" /> | |||
@@ -96,26 +96,26 @@ | |||
</template> | |||
<template v-if="registerSegmentedValue == '企业注册'"> | |||
<a-col span="24"> | |||
<a-input v-model:value="companyForm.contact_mobile" placeholder="请输入联系号码" size="large" /> | |||
<a-input v-model:value="companyForm.contact_mobile" placeholder="联系号码" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input-password v-model:value="companyForm.password" placeholder="请输入密码" size="large" /> | |||
<a-input-password v-model:value="companyForm.password" placeholder="密码" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input-password v-model:value="companyForm.comform_password" placeholder="请输入确认密码" | |||
<a-input-password v-model:value="companyForm.comform_password" placeholder="确认密码" | |||
size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="companyForm.email" placeholder="请输入邮箱" size="large" /> | |||
<a-input v-model:value="companyForm.email" placeholder="邮箱" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="companyForm.full_name" placeholder="请输入企业名称" size="large" /> | |||
<a-input v-model:value="companyForm.full_name" placeholder="企业名称" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="companyForm.contact_name" placeholder="请输入联系人" size="large" /> | |||
<a-input v-model:value="companyForm.contact_name" placeholder="联系人" size="large" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="companyForm.contact_phone" placeholder="请输入联系固话" size="large" /> | |||
<a-input v-model:value="companyForm.contact_phone" placeholder="联系固话" size="large" /> | |||
</a-col> | |||
<a-col span="12"> | |||
<a-input v-model:value="companyForm.captcha" placeholder="验证码" size="large" /> | |||
@@ -141,7 +141,7 @@ | |||
<script lang="ts" setup> | |||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | |||
import { GetCaptcha, PostJobseekerlogin,PostCompanyLogin, PostSmsSend, PostJobseekerSmsLogin, PostCompanyLoginByMobile} from '@/apis/models'; | |||
import { GetCaptcha, PostJobseekerlogin,PostCompanyLogin, PostSmsSend, PostJobseekerSmsLogin, PostCompanyLoginByMobile, PostJobseekerRegister, PostCompanyRegister} from '@/apis/models'; | |||
import { store } from '@/store/index'; | |||
import { router } from '@/router/index'; | |||
import { dataForm, otherDataForm, personalDataForm, companyDataForm, smsDataForm, smsLoginDataForm, reset } from '@/views/login/data.ts'; | |||
@@ -175,11 +175,11 @@ | |||
smsForm.value.mobile = createForm.value.username ? createForm.value.username : ''; | |||
smsForm.value.capt_id = capt_id.value; | |||
if (!smsForm.value.mobile) { | |||
warnToast('请输入手机号') | |||
warnToast('手机号') | |||
return false; | |||
} | |||
if (!smsForm.value.captcha) { | |||
warnToast('请输入图形验证码') | |||
warnToast('图形验证码') | |||
return false; | |||
} | |||
PostSmsSend(smsForm.value).then(res => { | |||
@@ -363,7 +363,36 @@ | |||
} | |||
// 进入注册 | |||
// register | |||
const register = () => { | |||
if(registerSegmentedValue.value == '求职者注册') { | |||
personalForm.value.capt_id = capt_id.value; | |||
PostJobseekerRegister(personalForm.value).then(res => { | |||
successToast('注册成功,可以进行登录'); | |||
resetForm() | |||
currentModule.value = 'login'; | |||
loginSegmentedValue.value = '我要求职' | |||
loginMethod.value = 'password' | |||
}).catch(err => { | |||
getCaptcha() | |||
}) | |||
} else { | |||
companyForm.value.capt_id = capt_id.value; | |||
if (companyForm.value.password != companyForm.value.comform_password) { | |||
warnToast('两次密码不一致'); | |||
return false | |||
} | |||
PostCompanyRegister(companyForm.value).then(res => { | |||
successToast('注册成功,可以进行登录'); | |||
resetForm() | |||
currentModule.value = 'login'; | |||
loginSegmentedValue.value = '我要招聘' | |||
loginMethod.value = 'password' | |||
}).catch(err => { | |||
getCaptcha() | |||
}) | |||
} | |||
} | |||
onMounted(() => { |