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}; |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
<script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | <script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | ||||
<title>菊城人才网</title> | <title>菊城人才网</title> | ||||
<script type="module" crossorigin src="/assets/index-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> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
export const PostCustomerVerify = postModel(url.CustomerVerify); | export const PostCustomerVerify = postModel(url.CustomerVerify); | ||||
export const PostJobseekerEditPwd = postModel(url.JobseekerEditPwd); | export const PostJobseekerEditPwd = postModel(url.JobseekerEditPwd); | ||||
export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile); | export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile); | ||||
export const PostJobseekerResetPwd = postModel(url.JobseekerResetPwd); | |||||
// 招聘会 | // 招聘会 | ||||
export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业 | export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业 | ||||
export const GetJobUrgentjobs = getModel(url.JobUrgentjobs); // 急招职位 | export const GetJobUrgentjobs = getModel(url.JobUrgentjobs); // 急招职位 | ||||
export const GetJobHighpayjobs = getModel(url.JobHighpayjobs); // 高薪职位 | export const GetJobHighpayjobs = getModel(url.JobHighpayjobs); // 高薪职位 | ||||
export const GetJobCampusjobs = getModel(url.JobCampusjobs); // 校园招聘 | export const GetJobCampusjobs = getModel(url.JobCampusjobs); // 校园招聘 | ||||
export const GetJobAuthDetail = getModel(url.JobAuthDetail); // 获取职位详情--需登录 | |||||
// 见习基地 | // 见习基地 | ||||
export const GetCompanyProbationList = getModel(url.CompanyProbationList); // 校园招聘 | export const GetCompanyProbationList = getModel(url.CompanyProbationList); // 校园招聘 |
JobseekerEditPwd : String, | JobseekerEditPwd : String, | ||||
CompanyLoginByMobile: String, | CompanyLoginByMobile: String, | ||||
Jobseekerlogin: String, | Jobseekerlogin: String, | ||||
JobseekerResetPwd: String, | |||||
// 招聘会 | // 招聘会 | ||||
RecruitmentBookcompany : String, | RecruitmentBookcompany : String, | ||||
JobUrgentjobs : String, | JobUrgentjobs : String, | ||||
JobHighpayjobs : String, | JobHighpayjobs : String, | ||||
JobCampusjobs : String, | JobCampusjobs : String, | ||||
JobAuthDetail : String, | |||||
// 招聘会企业预定 | // 招聘会企业预定 | ||||
RecruitmentbookAdd : String, | RecruitmentbookAdd : String, |
SmsSend: common + '/sms/send', // 短信验证码 | SmsSend: common + '/sms/send', // 短信验证码 | ||||
JobseekerSmsLogin: web + '/jobseeker/smslogin', // 个人登录 | JobseekerSmsLogin: web + '/jobseeker/smslogin', // 个人登录 | ||||
Jobseekerlogin: web + '/jobseeker/login', // 个人登录 | Jobseekerlogin: web + '/jobseeker/login', // 个人登录 | ||||
CustomerVerify: web + '/customer/verify', // 转换为HR | |||||
CustomerVerify: web + '/jobseek/verify', // 转换为HR | |||||
JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码 | JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码 | ||||
CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录 | CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录 | ||||
JobseekerResetPwd: web + '/jobseek/resetpwd', // 修改密码 | |||||
JobUrgentjobs: web + '/job/urgentjobs', // 急招职位 | JobUrgentjobs: web + '/job/urgentjobs', // 急招职位 | ||||
JobHighpayjobs: web + '/job/highpayjobs', // 高薪职位 | JobHighpayjobs: web + '/job/highpayjobs', // 高薪职位 | ||||
JobCampusjobs: web + '/job/campusjobs', // 校园招聘 | JobCampusjobs: web + '/job/campusjobs', // 校园招聘 | ||||
JobAuthDetail: web + '/job/authdetail', // 获取职位详情--需登录 | |||||
// 招聘会企业预定 | // 招聘会企业预定 | ||||
RecruitmentbookAdd: web + '/recruitmentbook/add', // 添加 | RecruitmentbookAdd: web + '/recruitmentbook/add', // 添加 |
<template> | <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> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
import { ref, onMounted, defineProps, watch, computed } from 'vue'; | import { ref, onMounted, defineProps, watch, computed } from 'vue'; | ||||
let imageBigOpen = ref<Boolean>(false) | |||||
const props = defineProps({ | const props = defineProps({ | ||||
imgObj: { | imgObj: { | ||||
type: Object, | type: Object, | ||||
default: {} | default: {} | ||||
}, | |||||
need: { | |||||
type: Boolean, | |||||
default: false | |||||
} | } | ||||
}); | }); | ||||
let needPre = ref<Boolean>(props.need) | |||||
let imageBigOpen = ref<Boolean>(false) | |||||
interface imgType { | interface imgType { | ||||
src ?: String, | src ?: String, | ||||
width ?: Number, | width ?: Number, |
<template> | <template> | ||||
<a-affix :offset-top="90"> | |||||
<a-menu v-model:selectedKeys="selectedKeys" @click="menuClick" style="width: 100%;border-radius: 8px;" mode="inline"> | <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-item v-for="(item, index) in menuList" :key="item.key">{{item.title}}</a-menu-item> | ||||
</a-menu> | </a-menu> | ||||
</a-affix> | |||||
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> |
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="成立日期" name="establishment_date"> | <a-form-item label="成立日期" name="establishment_date"> | ||||
<a-date-picker v-model:value="addOtherForm.chengli_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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-descriptions-item label="Email">{{basic.email}}</a-descriptions-item> | <a-descriptions-item label="Email">{{basic.email}}</a-descriptions-item> | ||||
<a-descriptions-item label="传真">{{basic.fax}}</a-descriptions-item> | <a-descriptions-item label="传真">{{basic.fax}}</a-descriptions-item> | ||||
</a-descriptions> | </a-descriptions> | ||||
<a-descriptions :column="3" title="企业介绍"> | |||||
<a-descriptions-item><div v-html="basic.introduction"></div></a-descriptions-item> | |||||
</a-descriptions> | |||||
</template> | </template> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { dataForm, otherDataForm, reset } from '@/components/company/information/basic/data.ts'; | import { dataForm, otherDataForm, reset } from '@/components/company/information/basic/data.ts'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, disabledDateFront } = useCommon(); | |||||
const dayjsRef = ref(dayjs); | const dayjsRef = ref(dayjs); | ||||
let props = defineProps(['form_state']); | let props = defineProps(['form_state']); | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
basic.value = res.data; | basic.value = res.data; | ||||
createForm.value = intersectionAlike(createForm.value, res.data) | createForm.value = intersectionAlike(createForm.value, res.data) | ||||
addOtherForm.value = { | 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, | 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, | company_scale_cascader: res.data.scale, | ||||
} | } | ||||
}) | }) | ||||
// 企业规模 | // 企业规模 | ||||
const scaleSave = (data) => { | 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); | let showMap = ref<Boolean>(false); |
<template v-else> | <template v-else> | ||||
<!-- <a-search @searchData="searchData"></a-search> --> | <!-- <a-search @searchData="searchData"></a-search> --> | ||||
<a-list :data-source="departmengList"> | <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> | ||||
<template #renderItem="{ item }"> | <template #renderItem="{ item }"> | ||||
<a-list-item> | <a-list-item> | ||||
<template #actions> | <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-button> | ||||
</a-popconfirm> | |||||
<a-popconfirm title="是否删除该部门" @confirm="del(item.id)"> | |||||
<a-button size="small" danger> | |||||
删除 | |||||
</a-button> | |||||
</a-popconfirm> | |||||
</a-space> | |||||
</template> | </template> | ||||
<a-skeleton avatar :title="false" :loading="!!loading" active> | <a-skeleton avatar :title="false" :loading="!!loading" active> | ||||
<a-list-item-meta> | <a-list-item-meta> |
</a-form> | </a-form> | ||||
</template> | </template> | ||||
<template v-else> | <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> | </template> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
const getBasic = () => { | const getBasic = () => { | ||||
PostCompanyDetailInfo().then(res => { | PostCompanyDetailInfo().then(res => { | ||||
createForm.value.photo = res.data.photo | |||||
createForm.value.photo = res.data.photo ? res.data.photo : '' | |||||
addOtherForm.value = { | addOtherForm.value = { | ||||
photo_img: imageprefix + res.data.photo, | |||||
photo_img: res.data.photo ? imageprefix + res.data.photo : '', | |||||
} | } | ||||
}) | }) | ||||
} | } |
</a-form> | </a-form> | ||||
</template> | </template> | ||||
<template v-else> | <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> | </template> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
const getBasic = () => { | const getBasic = () => { | ||||
PostCompanyDetailInfo().then(res => { | 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 = { | addOtherForm.value = { | ||||
license_img: imageprefix + res.data.license_path, | |||||
license_img: res.data.license_path ? imageprefix + res.data.license_path : '', | |||||
} | } | ||||
}) | }) | ||||
} | } |
<a-row :gutter="20"> | <a-row :gutter="20"> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="是否紧急" name="urgent"> | <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="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-radio-group> | ||||
<a-form-item label="选择部门" name="department_id"> | <a-form-item label="选择部门" name="department_id"> | ||||
<a-select v-model:value="addOtherForm.department_name" @change="departmentChange" | <a-select v-model:value="addOtherForm.department_name" @change="departmentChange" | ||||
placeholder="请进行搜索选择部门" show-search :filter-option="false" label-in-value | 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" | <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> | :label="item.name" label-in-value>{{item.name}}</a-select-option> | ||||
</a-select> | </a-select> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="招聘人数" name="invite_count"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="职位类别"> | |||||
<a-form-item label="职位类别"> | |||||
<a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange" | <a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange" | ||||
:tree_content="createForm.job_type"></a-shujilian> | :tree_content="createForm.job_type"></a-shujilian> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="工作区域"> | |||||
<a-form-item label="工作区域"> | |||||
<a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)" | <a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)" | ||||
@saveTreeNode="jobAddressChange" | @saveTreeNode="jobAddressChange" | ||||
:tree_content="createForm.job_location"></a-shujilian> | :tree_content="createForm.job_location"></a-shujilian> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <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" | <QuillEditor theme="snow" :options="richOption" toolbar="full" | ||||
v-model:content="addOtherForm.describe_content" | v-model:content="addOtherForm.describe_content" | ||||
@update:content="onEditorDescribeUpdate($event)" contentType="html" /> | @update:content="onEditorDescribeUpdate($event)" contentType="html" /> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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" | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="到期日期"> | |||||
<a-form-item label="到期日期"> | |||||
<a-date-picker v-model:value="addOtherForm.daoqi_date" @Change="disabledDateChange" | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="关键词"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="职位性质"> | <a-form-item label="职位性质"> | ||||
<a-radio-group v-model:value="addOtherForm.job_nature" button-style="solid" | <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="2" style="width: 20%;">兼职</a-radio-button> | ||||
<a-radio-button :value="3" 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> | <a-radio-button :value="4" style="width: 20%;">实习</a-radio-button> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="食宿要求"> | |||||
<a-form-item label="食宿要求"> | |||||
<a-xuanze :dict="2016" placeholder="请选择食宿要求" @saveSelect="saveShisu" | <a-xuanze :dict="2016" placeholder="请选择食宿要求" @saveSelect="saveShisu" | ||||
:select_content="addOtherForm.shisu_select"></a-xuanze> | :select_content="addOtherForm.shisu_select"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="节假日休息情况"> | |||||
<a-form-item label="节假日休息情况"> | |||||
<a-xuanze :dict="2017" placeholder="请选择节假日休息情况" @saveSelect="saveHolidays" | <a-xuanze :dict="2017" placeholder="请选择节假日休息情况" @saveSelect="saveHolidays" | ||||
:select_content="addOtherForm.holidays_select"></a-xuanze> | :select_content="addOtherForm.holidays_select"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
<div v-show="current == 1"> | <div v-show="current == 1"> | ||||
<a-row gutter="20"> | <a-row gutter="20"> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="工作经验"> | |||||
<a-form-item label="工作经验"> | |||||
<a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | <a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | ||||
:select_content="createForm.experience"></a-xuanze> | :select_content="createForm.experience"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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="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-radio-group> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="职称要求"> | |||||
<a-form-item label="职称要求"> | |||||
<a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel" | <a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel" | ||||
:select_content="createForm.profelevel"></a-xuanze> | :select_content="createForm.profelevel"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item required label="技能认证"> | |||||
<a-form-item label="技能认证"> | |||||
<a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification" | <a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification" | ||||
:select_content="createForm.certification"></a-xuanze> | :select_content="createForm.certification"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="掌握程度"> | <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> | :select_content="createForm.language_degree"></a-xuanze> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="性别要求" name="sex"> | <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="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="2" style="width: calc(100% / 3);">女</a-radio-button> | ||||
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | <a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="最小年龄" name="age_min"> | <a-form-item label="最小年龄" name="age_min"> | ||||
<a-input-number :min="0" type="number" v-model:value="createForm.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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="最大年龄" name="age_max"> | <a-form-item label="最大年龄" name="age_max"> | ||||
<a-input-number :min="0" type="number" v-model:value="createForm.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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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="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="2" style="width: calc(100% / 3);">未婚</a-radio-button> | ||||
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | <a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-row> | <a-row> | ||||
<template v-for="(item, index) in licenseOption"> | <template v-for="(item, index) in licenseOption"> | ||||
<a-col span="8"> | <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> | </a-col> | ||||
</template> | </template> | ||||
</a-row> | </a-row> | ||||
<div v-show="current == 2"> | <div v-show="current == 2"> | ||||
<a-row gutter="20"> | <a-row gutter="20"> | ||||
<a-col span="12"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="担任职位" name="possession"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="是否公开联系电话" name="phone_public"> | <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-button :value="2" style="width: 50%;">否</a-radio-button> | ||||
</a-radio-group> | </a-radio-group> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="手机" name="mobile"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="是否公开手机" name="mobile_public"> | <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="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-radio-group> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="邮箱" name="email"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="是否公开邮箱" name="email_public"> | <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="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-radio-group> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="传真" name="fax"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="是否公开传真" name="fax_public"> | <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="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-radio-group> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="其他地址" name="other_address"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="面试地址" name="interview_address"> | <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-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
.steps-action { | .steps-action { | ||||
margin-top: 12px; | margin-top: 12px; | ||||
} | } | ||||
:deep(.ant-steps-item-icon) { | :deep(.ant-steps-item-icon) { | ||||
background-color: #4FBE70 !important; | background-color: #4FBE70 !important; | ||||
border-color: #4FBE70 !important; | |||||
border-color: #4FBE70 !important; | |||||
} | } | ||||
</style> | </style> |
<StarOutlined /> | <StarOutlined /> | ||||
收藏 | 收藏 | ||||
</a-button> | </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 /> | <StarOutlined /> | ||||
取消收藏 | 取消收藏 | ||||
</a-button> | </a-button> | ||||
<a-button @click="applyJob(detail.id)"> | |||||
<a-button @click="applyJob(detail.id)"> | |||||
投简历 | 投简历 | ||||
</a-button> | </a-button> | ||||
</a-sapce> | </a-sapce> | ||||
<a-descriptions-item label="联系人">{{detail.contact.contact}}</a-descriptions-item> | <a-descriptions-item label="联系人">{{detail.contact.contact}}</a-descriptions-item> | ||||
<a-descriptions-item | <a-descriptions-item | ||||
label="职业类别">{{detail.base.types ? detail.base.types[0].name : '未知'}}</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> | <div v-html="detail.base.describe_text"></div> | ||||
</a-descriptions-item> | </a-descriptions-item> | ||||
</a-descriptions> | </a-descriptions> | ||||
</div> | </div> | ||||
<div style="margin-top: 30px;" > | |||||
<div style="margin-top: 30px;"> | |||||
<a-descriptions :column="1" title="地图"> | <a-descriptions :column="1" title="地图"> | ||||
<a-descriptions-item :span="24"> | <a-descriptions-item :span="24"> | ||||
<div ref="mapContainer" class="map-container"></div> | |||||
<div ref="mapJob" class="map-container"></div> | |||||
</a-descriptions-item> | </a-descriptions-item> | ||||
</a-descriptions> | </a-descriptions> | ||||
</div> | </div> | ||||
<a-login></a-login> | <a-login></a-login> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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 { useCommon } from '@/hooks/useCommon'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal, showOtherModal1 } = useCommon(); | let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal, showOtherModal1 } = useCommon(); | ||||
let detail = ref<Object>(null) | let detail = ref<Object>(null) | ||||
let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '') | let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '') | ||||
let role = ref(sessionStorage.getItem('role') ? sessionStorage.getItem('role') : '') | let role = ref(sessionStorage.getItem('role') ? sessionStorage.getItem('role') : '') | ||||
const mapContainer = ref(null); | |||||
const mapJob = ref(null); | |||||
const getDetail = () => { | 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 = () => { | 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 | center: center | ||||
}); | }); | ||||
//创建并初始化MultiMarker | //创建并初始化MultiMarker | ||||
var markerLayer = new TMap.MultiMarker({ | |||||
let markerLayer = new TMap.MultiMarker({ | |||||
map: map, //指定地图容器 | map: map, //指定地图容器 | ||||
//样式定义 | //样式定义 | ||||
styles: { | styles: { | ||||
geometries: [{ | geometries: [{ | ||||
"id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | "id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id | ||||
"styleId": 'myStyle', //指定样式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": {//自定义属性 | "properties": {//自定义属性 | ||||
"title": "marker1" | "title": "marker1" | ||||
} | } | ||||
] | ] | ||||
}); | }); | ||||
} | } | ||||
const toLogin = () => { | const toLogin = () => { | ||||
showOtherModal1() | showOtherModal1() | ||||
} | } | ||||
const confirmCollect = (job_id : Number) => { | const confirmCollect = (job_id : Number) => { | ||||
Modal.confirm({ | Modal.confirm({ | ||||
title: `是否要收藏该职位`, | title: `是否要收藏该职位`, | ||||
centered: true, | centered: true, | ||||
icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
onOk() { | onOk() { | ||||
PostJobseekAddfavorite({job_id: job_id }).then(res => { | |||||
PostJobseekAddfavorite({ job_id: job_id }).then(res => { | |||||
successToast('已收藏') | successToast('已收藏') | ||||
mapContainer.value = null | |||||
mapJob.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, | ||||
onCancel() { | onCancel() { | ||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
const cancelCollect = (job_id : Number) => { | |||||
const cancelCollect = (id : Number) => { | |||||
Modal.confirm({ | Modal.confirm({ | ||||
title: `是否要取消收藏该职位`, | title: `是否要取消收藏该职位`, | ||||
centered: true, | centered: true, | ||||
icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
onOk() { | onOk() { | ||||
PostJobseekDelfavorite({job_id: job_id }).then(res => { | |||||
PostJobseekDelfavorite({ id: id }).then(res => { | |||||
successToast('已取消收藏') | successToast('已取消收藏') | ||||
mapContainer.value = null | |||||
mapJob.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, | ||||
onCancel() { | onCancel() { | ||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
const applyJob = (job_id : Number) => { | const applyJob = (job_id : Number) => { | ||||
Modal.confirm({ | Modal.confirm({ | ||||
title: `是否要投递该职位`, | title: `是否要投递该职位`, | ||||
centered: true, | centered: true, | ||||
icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
onOk() { | onOk() { | ||||
PostJobseekAddapplication({job_id: job_id }).then(res => { | |||||
PostJobseekAddapplication({ job_id: job_id }).then(res => { | |||||
successToast('已投递') | successToast('已投递') | ||||
mapContainer.value = null | |||||
mapJob.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, | ||||
onCancel() { | onCancel() { | ||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
watch(() => props.id, (newVal) => { | watch(() => props.id, (newVal) => { | ||||
job_id.value = newVal | job_id.value = newVal | ||||
if (job_id.value) { | if (job_id.value) { | ||||
mapContainer.value = null | |||||
mapJob.value = null | |||||
getDetail() | getDetail() | ||||
} | } | ||||
}, { immediate: true }) | }, { immediate: true }) | ||||
:deep(.ant-btn) { | :deep(.ant-btn) { | ||||
border-radius: 0 !important; | border-radius: 0 !important; | ||||
} | } | ||||
.map-container { | .map-container { | ||||
width: 100%; | width: 100%; | ||||
height: 400px; | height: 400px; |
background-color: #4FBE70; | background-color: #4FBE70; | ||||
transform: rotate(10deg); | transform: rotate(10deg); | ||||
position: absolute; | position: absolute; | ||||
top: 4px | |||||
top: 4px; | |||||
left: 4px; | |||||
} | } | ||||
.text-content { | .text-content { |
</a-card-meta> | </a-card-meta> | ||||
<a-divider /> | <a-divider /> | ||||
<div v-html="detail.content"></div> | <div v-html="detail.content"></div> | ||||
<div class="company-box"> | |||||
<a-typography> | |||||
<a-typography-title :level="5">参与的企业</a-typography-title> | |||||
<a-typography-paragraph> | |||||
<a-row :gutter="[10,10]"> | |||||
<a-col v-for="(item, index) in companyList"> | |||||
<div style="color: #808080" @click="toCompanyDetail(item.id)">{{item.company_name}}</div> | |||||
</a-col> | |||||
</a-row> | |||||
</a-typography-paragraph> | |||||
</a-typography> | |||||
</div> | |||||
</a-card> | </a-card> | ||||
</a-page-header> | </a-page-header> | ||||
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<a-list item-layout="horizontal" :data-source="recruitmentList" style="cursor: pointer;"> | <a-list item-layout="horizontal" :data-source="recruitmentList" style="cursor: pointer;"> | ||||
<template #renderItem="{ item }"> | <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 :title="item.title" :description="'发布时间:'+item.created_at"> | ||||
</a-list-item-meta> | </a-list-item-meta> | ||||
</a-list-item> | </a-list-item> | ||||
</template> | </template> | ||||
</a-list> | </a-list> | ||||
<a-flex align="center" justify="center"> | <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> | </a-flex> | ||||
</template> | </template> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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 { ArrowLeftOutlined } from '@ant-design/icons-vue'; | ||||
import { router } from '@/router'; | |||||
const emit = defineEmits(); | |||||
let recruitmentList = ref<object[]>([]) | let recruitmentList = ref<object[]>([]) | ||||
let detail = ref<Object>(null) | let detail = ref<Object>(null) | ||||
let current = ref<Number>(1) | let current = ref<Number>(1) | ||||
let total = ref<Number>(0) | let total = ref<Number>(0) | ||||
let companyList = ref<Object>([]) | |||||
const pageChange = (page) => { | const pageChange = (page) => { | ||||
current.value = page | current.value = page | ||||
getRecruitmentList() | getRecruitmentList() | ||||
} | } | ||||
const getRecruitmentList = (page) => { | const getRecruitmentList = (page) => { | ||||
PostRecruitmentList({page: current.value}).then(res => { | |||||
PostRecruitmentList({ page: current.value }).then(res => { | |||||
recruitmentList.value = res.data.recruitments; | recruitmentList.value = res.data.recruitments; | ||||
total.value = res.data.total; | total.value = res.data.total; | ||||
}) | }) | ||||
const toDetail = (data) => { | const toDetail = (data) => { | ||||
detail.value = 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) => { | const back = (data) => { | ||||
detail.value = null | detail.value = null | ||||
} | } | ||||
</script> | </script> | ||||
<style> | |||||
<style lang="less" scoped> | |||||
.company-box { | |||||
width: 100%; | |||||
padding: 20px; | |||||
cursor: pointer; | |||||
border: 1px solid #f0f0f0; | |||||
border-radius: 8px; | |||||
} | |||||
</style> | </style> |
<a-col span="8" v-for="(item, index) in jobList"> | <a-col span="8" v-for="(item, index) in jobList"> | ||||
<a-card :title="item.job_name"> | <a-card :title="item.job_name"> | ||||
<template #extra> | <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> | </template> | ||||
<a-row> | <a-row> | ||||
<a-col span="20"> | <a-col span="20"> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, computed, onMounted, defineEmits, createVNode } from 'vue'; | 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 JobDetail from '@/components/jobseeker/invite/detail/index.vue' | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
centered: true, | centered: true, | ||||
icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
onOk() { | onOk() { | ||||
PostJobseekUpdatefavorite({ id: id, job_id: job_id }).then(res => { | |||||
PostJobseekDelfavorite({ id: id, job_id: job_id }).then(res => { | |||||
successToast('已取消收藏') | successToast('已取消收藏') | ||||
getData(); | getData(); | ||||
}) | }) |
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="出生日期" name="dob"> | <a-form-item label="出生日期" name="dob"> | ||||
<a-date-picker v-model:value="addOtherForm.dob" @Change="dobChange" style="width: 100%;" | <a-date-picker v-model:value="addOtherForm.dob" @Change="dobChange" style="width: 100%;" | ||||
size="large" /> | |||||
size="large" :disabledDate="disabledDateFront" /> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts'; | import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts'; | ||||
import { useCommon } from '@/hooks/useCommon'; | 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); | const dayjsRef = ref(dayjs); | ||||
let props = defineProps(['form_state']); | let props = defineProps(['form_state']); | ||||
const emit = defineEmits(); | const emit = defineEmits(); |
warnToast('请输入验证码') | warnToast('请输入验证码') | ||||
return; | return; | ||||
} else { | } 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') | |||||
}) | |||||
} | } | ||||
} | } |
:deep(.ant-menu-submenu-open) { | :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; | border-bottom-color: #4FBE70 !important; | ||||
} | } | ||||
const disabledDate = (val : Dayjs) => { | const disabledDate = (val : Dayjs) => { | ||||
return val && val < dayjs().endOf('day'); | return val && val < dayjs().endOf('day'); | ||||
}; | }; | ||||
const disabledDateFront = (val : Dayjs) => { | |||||
return val && val > dayjs().endOf('day'); | |||||
}; | |||||
// 照片前缀 | // 照片前缀 | ||||
// const imageprefix : string = 'https://admin1.jcjob.cn/img/' | // const imageprefix : string = 'https://admin1.jcjob.cn/img/' | ||||
richOption, | richOption, | ||||
message, | message, | ||||
disabledDate, | disabledDate, | ||||
disabledDateFront, | |||||
imageprefix, | imageprefix, | ||||
openSearchModel, | openSearchModel, | ||||
showSearch, | showSearch, |
.ant-btn-primary { | .ant-btn-primary { | ||||
background-color: #4FBE70 !important; | 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 { | .ant-menu-submenu-selected::after { | ||||
border-bottom-color: #4FBE70 !important; | border-bottom-color: #4FBE70 !important; | ||||
} | } |
</a-row> | </a-row> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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' | 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 menu_list = ref([{ title: '个人求职', key: 10 },{ title: '企业招聘', key: 11},{ title: '应届毕业生', key: 12},{ title: '人才入户', key: 13},{ title: '其他下载', key: 14}]) | ||||
let curKey = ref<Number>(10) | let curKey = ref<Number>(10) | ||||
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; | ||||
} | } | ||||
onMounted(() => { | |||||
if (sessionStorage.getItem('section_id')) { | |||||
selectedKeys.value = [sessionStorage.getItem('section_id')] | |||||
} | |||||
}) | |||||
onBeforeUnmount(() => { | |||||
sessionStorage.removeItem('section_id') | |||||
sessionStorage.removeItem('acticle_id') | |||||
}) | |||||
</script> | </script> | ||||
<style> | <style> |
</a-row> | </a-row> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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' | 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}]) | ||||
let curKey = ref<Number>(3) | let curKey = ref<Number>(3) | ||||
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; | ||||
} | } | ||||
onMounted(() => { | |||||
if (sessionStorage.getItem('section_id')) { | |||||
selectedKeys.value = [sessionStorage.getItem('section_id')] | |||||
} | |||||
}) | |||||
onBeforeUnmount(() => { | |||||
sessionStorage.removeItem('section_id') | |||||
sessionStorage.removeItem('acticle_id') | |||||
}) | |||||
</script> | </script> | ||||
<style> | <style> |
</a-list-item> | </a-list-item> | ||||
</a-list> | </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="企业信息"> | <a-tab-pane :key="1" tab="企业信息"> | ||||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | ||||
<a-descriptions title="公司介绍" layout="vertical"> | <a-descriptions title="公司介绍" layout="vertical"> | ||||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | ||||
<a-descriptions :column="7" title="企业相册" layout="vertical"> | <a-descriptions :column="7" title="企业相册" layout="vertical"> | ||||
<a-descriptions-item><image-container | <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> | </a-descriptions> | ||||
</div> | </div> | ||||
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | ||||
<job-card :list="jobList" @detail="toDetail"></job-card> | <job-card :list="jobList" @detail="toDetail"></job-card> | ||||
<a-flex justify="center"> | <a-flex justify="center"> | ||||
<a-space> | <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-space> | ||||
</a-flex> | </a-flex> | ||||
<!-- <a-card hoverable :bordered="false" style="width: 100%"> | <!-- <a-card hoverable :bordered="false" style="width: 100%"> | ||||
</template> | </template> | ||||
</a-card> --> | </a-card> --> | ||||
</div> | </div> | ||||
</a-col> | </a-col> | ||||
<a-col span="18"> | <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> | <job-detail :id="job_id"></job-detail> | ||||
</div> | </div> | ||||
</a-col> | </a-col> | ||||
const toDetail = (data) => { | const toDetail = (data) => { | ||||
job_id.value = data.id; | job_id.value = data.id; | ||||
} | } | ||||
const pageChange = (page) => { | const pageChange = (page) => { | ||||
current.value = page | current.value = page | ||||
getJobCompanyjobs(page) | getJobCompanyjobs(page) | ||||
var map = new TMap.Map(mapContainer.value, { | var map = new TMap.Map(mapContainer.value, { | ||||
center: center | center: center | ||||
}); | }); | ||||
//创建并初始化MultiMarker | //创建并初始化MultiMarker | ||||
var markerLayer = new TMap.MultiMarker({ | var markerLayer = new TMap.MultiMarker({ | ||||
map: map, //指定地图容器 | map: map, //指定地图容器 | ||||
} | } | ||||
] | ] | ||||
}); | }); | ||||
} | } | ||||
if (sessionStorage.getItem('pubilc_id') != 0 || sessionStorage.getItem('id') != 0) { | if (sessionStorage.getItem('pubilc_id') != 0 || sessionStorage.getItem('id') != 0) { | ||||
PostCompanyInfo({ id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id') }).then(res => { | PostCompanyInfo({ id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id') }).then(res => { | ||||
companyDetail.value = res.data; | 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) | getJobCompanyjobs(current.value) | ||||
} | } | ||||
} else { | |||||
initMap() | |||||
} | } | ||||
}) | }) | ||||
.map-container { | .map-container { | ||||
width: 100%; | width: 100%; | ||||
height: 400px; | |||||
height: 600px; | |||||
} | } | ||||
:deep(.ant-card) { | :deep(.ant-card) { | ||||
padding: 0 !important; | padding: 0 !important; | ||||
} | } | ||||
:deep(.ant-card-body) { | :deep(.ant-card-body) { | ||||
padding: 0 !important; | padding: 0 !important; | ||||
} | } |
<a-row :gutter="20"> | <a-row :gutter="20"> | ||||
<a-col span="4"> | <a-col span="4"> | ||||
<div style="position: fixed; top: 90px; z-index:99;"> | <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> | @click="anchorClick"></a-anchor> | ||||
</div> | </div> | ||||
</a-col> | </a-col> | ||||
<a-col span="20"> | <a-col span="20"> | ||||
<div style="width: 100%;background-color: #fff;padding: 0 20px;border-radius: 8px;"> | <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" | <a-space direction="vertical" justify="space-between" :size="36" | ||||
style="width: 100% !important;"> | style="width: 100% !important;"> | ||||
<div id="basic"> | <div id="basic"> |
</template> | </template> | ||||
<a-list-item-meta> | <a-list-item-meta> | ||||
<template #title> | <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> | ||||
<template #description> | <template #description> | ||||
<div> | <div> | ||||
</template> | </template> | ||||
<template #avatar> | <template #avatar> | ||||
<image-container | <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> | </template> | ||||
</a-list-item-meta> | </a-list-item-meta> | ||||
</a-list-item> | </a-list-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24" v-if="jobList.length > 0"> | <a-col span="24" v-if="jobList.length > 0"> | ||||
<a-flex justify="center"> | <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-flex> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
import { PostCompanyProfile, GetCompanyRecommentResume, PostCompanyTalentPoolAdd, PostCompanyResumeInterviewAdd ,PostCompanyJobList} from '@/apis/models'; | import { PostCompanyProfile, GetCompanyRecommentResume, PostCompanyTalentPoolAdd, PostCompanyResumeInterviewAdd ,PostCompanyJobList} from '@/apis/models'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { useCommon } from '@/hooks/useCommon'; | 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); | const dayjsRef = ref(dayjs); | ||||
let jobList = ref<Object[]>([]) | let jobList = ref<Object[]>([]) | ||||
let basic = ref<Object>({}) | let basic = ref<Object>({}) | ||||
}) | }) | ||||
} | } | ||||
const positionChange = (val : Object) => { | const positionChange = (val : Object) => { | ||||
debugger | |||||
position_name.value = val.option.label; | position_name.value = val.option.label; | ||||
form.job_id = Number(val.key); | form.job_id = Number(val.key); | ||||
} | } |
</div> | </div> | ||||
</template> | </template> | ||||
<template #avatar> | <template #avatar> | ||||
<a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" /> | |||||
<a-avatar :src="imageprefix+basic.photo" :size="96" /> | |||||
</template> | </template> | ||||
</a-list-item-meta> | </a-list-item-meta> | ||||
<div style="margin-left: 108px;"> | <div style="margin-left: 108px;"> | ||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item :span="3" label="关注公众号,接收面试消息"> | <a-descriptions-item :span="3" label="关注公众号,接收面试消息"> | ||||
<image-container | <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-item> | ||||
</a-descriptions> | </a-descriptions> | ||||
</div> | </div> | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue'; | import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue'; | ||||
import { useCommon } from '@/hooks/useCommon'; | 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 jobList = ref<Object[]>([]) | ||||
let basic = ref<Object>({}) | let basic = ref<Object>({}) | ||||
let seeLength = ref<Number>(0) | let seeLength = ref<Number>(0) |
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | 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'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
let smsForm = ref<Object>({ | let smsForm = ref<Object>({ | ||||
mobile: "", | mobile: "", | ||||
capt_id: "" | capt_id: "" | ||||
}) | }) | ||||
let createForm = ref({ | let createForm = ref({ | ||||
mobile: '', | |||||
sms_code: '', | sms_code: '', | ||||
new_password: '', | |||||
new_pwd: '', | |||||
}) | }) | ||||
let capt_id = ref<String>('') | let capt_id = ref<String>('') | ||||
const saveForm = () => { | const saveForm = () => { | ||||
PostJobseekerEditPwd(createForm.value).then(res => { | |||||
successToast('修改成功') | |||||
PostJobseekerResetPwd(createForm.value).then(res => { | |||||
successToast('重置成功') | |||||
resetForm() | resetForm() | ||||
}) | }) | ||||
} | } | ||||
const resetForm = () => { | const resetForm = () => { | ||||
smsForm.value = { | |||||
mobile: "", | |||||
captcha: "", | |||||
capt_id: "" | |||||
} | |||||
createForm.value = { | createForm.value = { | ||||
sms_code: '', | sms_code: '', | ||||
new_password: '', | new_password: '', |
</a-col> | </a-col> | ||||
<template v-if="loginMethod == 'password'"> | <template v-if="loginMethod == 'password'"> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-input v-model:value="createForm.captcha" placeholder="验证码" size="large" /> | <a-input v-model:value="createForm.captcha" placeholder="验证码" size="large" /> | ||||
</a-col> | </a-col> | ||||
<template v-if="registerSegmentedValue == '求职者注册'"> | <template v-if="registerSegmentedValue == '求职者注册'"> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-input v-model:value="personalForm.captcha" placeholder="验证码" size="large" /> | <a-input v-model:value="personalForm.captcha" placeholder="验证码" size="large" /> | ||||
</template> | </template> | ||||
<template v-if="registerSegmentedValue == '企业注册'"> | <template v-if="registerSegmentedValue == '企业注册'"> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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" /> | size="large" /> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="24"> | <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> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-input v-model:value="companyForm.captcha" placeholder="验证码" size="large" /> | <a-input v-model:value="companyForm.captcha" placeholder="验证码" size="large" /> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | 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 { store } from '@/store/index'; | ||||
import { router } from '@/router/index'; | import { router } from '@/router/index'; | ||||
import { dataForm, otherDataForm, personalDataForm, companyDataForm, smsDataForm, smsLoginDataForm, reset } from '@/views/login/data.ts'; | import { dataForm, otherDataForm, personalDataForm, companyDataForm, smsDataForm, smsLoginDataForm, reset } from '@/views/login/data.ts'; | ||||
smsForm.value.mobile = createForm.value.username ? createForm.value.username : ''; | smsForm.value.mobile = createForm.value.username ? createForm.value.username : ''; | ||||
smsForm.value.capt_id = capt_id.value; | smsForm.value.capt_id = capt_id.value; | ||||
if (!smsForm.value.mobile) { | if (!smsForm.value.mobile) { | ||||
warnToast('请输入手机号') | |||||
warnToast('手机号') | |||||
return false; | return false; | ||||
} | } | ||||
if (!smsForm.value.captcha) { | if (!smsForm.value.captcha) { | ||||
warnToast('请输入图形验证码') | |||||
warnToast('图形验证码') | |||||
return false; | return false; | ||||
} | } | ||||
PostSmsSend(smsForm.value).then(res => { | PostSmsSend(smsForm.value).then(res => { | ||||
} | } | ||||
// 进入注册 | // 进入注册 | ||||
// 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(() => { | onMounted(() => { |