| import{d as r,r as o,o as p,c,w as t,a as _,b as u,e,_ as i}from"./index-cCn3CK44.js";const m=r({__name:"404",setup(l){const s=()=>{sessionStorage.pageType=="company"?e.push("/manage/home"):sessionStorage.pageType=="personal"?e.push("/jobseeker/home"):e.push("/job/home")};return(d,h)=>{const a=o("a-button"),n=o("a-result");return p(),c(n,{status:"404",title:"404","sub-title":"Sorry, the page you visited does not exist."},{extra:t(()=>[u(a,{type:"primary",onClick:s},{default:t(()=>[_("返回首页")]),_:1})]),_:1})}}}),x=i(m,[["__scopeId","data-v-9cda8440"]]);export{x as default}; | |||||
| import{d as r,r as o,o as p,c,w as t,a as _,b as u,e,_ as i}from"./index-d9zHASBb.js";const m=r({__name:"404",setup(l){const s=()=>{sessionStorage.pageType=="company"?e.push("/manage/home"):sessionStorage.pageType=="personal"?e.push("/jobseeker/home"):e.push("/job/home")};return(d,h)=>{const a=o("a-button"),n=o("a-result");return p(),c(n,{status:"404",title:"404","sub-title":"Sorry, the page you visited does not exist."},{extra:t(()=>[u(a,{type:"primary",onClick:s},{default:t(()=>[_("返回首页")]),_:1})]),_:1})}}}),x=i(m,[["__scopeId","data-v-9cda8440"]]);export{x 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-cCn3CK44.js"></script> | |||||
| <link rel="stylesheet" crossorigin href="/assets/index-ia0wri7Z.css"> | |||||
| <script type="module" crossorigin src="/assets/index-d9zHASBb.js"></script> | |||||
| <link rel="stylesheet" crossorigin href="/assets/index-lEQJ0AIX.css"> | |||||
| </head> | </head> | ||||
| <body> | <body> | ||||
| <div id="app"></div> | <div id="app"></div> |
| import { router } from '@/router'; | import { router } from '@/router'; | ||||
| import { createVNode } from 'vue'; | import { createVNode } from 'vue'; | ||||
| import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
| let { commomParams, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
| let { store, commomParams, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
| import { useMenu } from '@/hooks/useMenu'; | |||||
| let { routerCur } = useMenu(); | |||||
| const msgModel = (val) => { | |||||
| const msgModel = (val, code) => { | |||||
| Modal.confirm({ | Modal.confirm({ | ||||
| title: val, | title: val, | ||||
| centered: true, | centered: true, | ||||
| icon: createVNode(ExclamationCircleOutlined), | icon: createVNode(ExclamationCircleOutlined), | ||||
| okText: '确认', | okText: '确认', | ||||
| onOk() { | onOk() { | ||||
| }, | }, | ||||
| onCancel() { | onCancel() { | ||||
| instance.interceptors.response.use(function (response) { | instance.interceptors.response.use(function (response) { | ||||
| switch (response.data.code) { | switch (response.data.code) { | ||||
| case -1: | case -1: | ||||
| msgModel(response.data.msg) | |||||
| msgModel(response.data.msg, response.data.code) | |||||
| break; | break; | ||||
| case 0: | case 0: | ||||
| break; | break; | ||||
| return response; | return response; | ||||
| break; | break; | ||||
| case 401: | case 401: | ||||
| msgModel(response.data.msg) | |||||
| msgModel(response.data.msg, response.data.code) | |||||
| setTimeout(() => { | |||||
| if (routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| }, 2000) | |||||
| break; | |||||
| case 403: | case 403: | ||||
| msgModel(response.data.msg) | |||||
| msgModel(response.data.msg, response.data.code) | |||||
| break; | break; | ||||
| case 404: | case 404: | ||||
| break; | break; | ||||
| case 600: | case 600: | ||||
| if (response.data.errors && Object.keys(response.data.errors).length > 0) { | if (response.data.errors && Object.keys(response.data.errors).length > 0) { | ||||
| msgModel(response.data.errors) | |||||
| msgModel(response.data.errors, response.data.code) | |||||
| } else { | } else { | ||||
| msgModel(response.data.msg) | |||||
| msgModel(response.data.msg, response.data.code) | |||||
| } | } | ||||
| break; | break; | ||||
| default: | default: | ||||
| msgModel(response.data.msg) | |||||
| msgModel(response.data.msg, response.data.code) | |||||
| // warnToast(response.data.msg); | // warnToast(response.data.msg); | ||||
| } | } | ||||
| // 2xx 范围内的状态码都会触发该函数。 | // 2xx 范围内的状态码都会触发该函数。 |
| export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile); | export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile); | ||||
| export const PostJobseekerResetPwd = postModel(url.JobseekerResetPwd); | export const PostJobseekerResetPwd = postModel(url.JobseekerResetPwd); | ||||
| export const PostCustomerTokenExpiration = postModel(url.CustomerTokenExpiration); | |||||
| // 招聘会 | // 招聘会 | ||||
| export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业 | export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业 | ||||
| export const PostRecruitmentList = getModel(url.RecruitmentList);// 招聘会列表 | export const PostRecruitmentList = getModel(url.RecruitmentList);// 招聘会列表 | ||||
| export const PostCompanycustomercodeUpdate = postModel(url.CompanycustomercodeUpdate); // 编辑 | export const PostCompanycustomercodeUpdate = postModel(url.CompanycustomercodeUpdate); // 编辑 | ||||
| export const GetCompanycustomercodeList = getModel(url.CompanycustomercodeList); // 列表 | export const GetCompanycustomercodeList = getModel(url.CompanycustomercodeList); // 列表 | ||||
| export const GetCompanycustomercodeDetail = getModel(url.CompanycustomercodeDetail); // 添加 | export const GetCompanycustomercodeDetail = getModel(url.CompanycustomercodeDetail); // 添加 | ||||
| export const GetCompanyRecruiters = getModel(url.CompanyRecruiters); // 列表 | |||||
| export const PostCustomerUpdate = postModel(url.CustomerUpdate); // 编辑 | |||||
| // 展示广告位 | // 展示广告位 | ||||
| export const GetAdvertscheduleList = getModel(url.AdvertscheduleList); // 添加 | export const GetAdvertscheduleList = getModel(url.AdvertscheduleList); // 添加 | ||||
| Jobseekerlogin: String, | Jobseekerlogin: String, | ||||
| JobseekerResetPwd: String, | JobseekerResetPwd: String, | ||||
| SysconfigDetail: String, | SysconfigDetail: String, | ||||
| CustomerTokenExpiration: String, | |||||
| // 招聘会 | // 招聘会 | ||||
| RecruitmentBookcompany : String, | RecruitmentBookcompany : String, | ||||
| CompanycustomercodeUpdate : String, | CompanycustomercodeUpdate : String, | ||||
| CompanycustomercodeList : String, | CompanycustomercodeList : String, | ||||
| CompanycustomercodeDetail : String, | CompanycustomercodeDetail : String, | ||||
| CompanyRecruiters : String, | |||||
| CustomerUpdate : String, | |||||
| // 展示广告位 | // 展示广告位 | ||||
| AdvertscheduleList | AdvertscheduleList |
| JobseekerResetPwd: web + '/jobseeker/resetpwd', // 修改密码 | JobseekerResetPwd: web + '/jobseeker/resetpwd', // 修改密码 | ||||
| 'SysconfigDetail': common + '/sysconfig/detail', // 详情 | 'SysconfigDetail': common + '/sysconfig/detail', // 详情 | ||||
| 'CustomerTokenExpiration': common + '/customer/token_expiration', // 详情 | |||||
| CompanycustomercodeUpdate: web + '/companycustomercode/update', // 编辑 | CompanycustomercodeUpdate: web + '/companycustomercode/update', // 编辑 | ||||
| CompanycustomercodeList: web + '/companycustomercode/list', // 列表 | CompanycustomercodeList: web + '/companycustomercode/list', // 列表 | ||||
| CompanycustomercodeDetail: web + '/companycustomercode/detail', // 详情 | CompanycustomercodeDetail: web + '/companycustomercode/detail', // 详情 | ||||
| CompanyRecruiters: web + '/company/recruiters', // 详情 | |||||
| CustomerUpdate: common + '/customer/turn_jobseeker', // 详情 | |||||
| // 展示广告位 | // 展示广告位 | ||||
| AdvertscheduleList: web + '/advertschedule/list', // 详情 | AdvertscheduleList: web + '/advertschedule/list', // 详情 | ||||
| <template #meet_status="{ record }"> | <template #meet_status="{ record }"> | ||||
| <slot name="meet_status" :record='record'></slot> | <slot name="meet_status" :record='record'></slot> | ||||
| </template> | </template> | ||||
| <template #status="{ record }"> | |||||
| <slot name="status" :record='record'></slot> | |||||
| </template> | |||||
| </a-table> | </a-table> | ||||
| </template> | </template> | ||||
| 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 props = defineProps(['id']); | let props = defineProps(['id']); | ||||
| let job_id = ref<Number>(props.id) | |||||
| let job_id = ref<Number>(sessionStorage.getItem('job_id') ? sessionStorage.getItem('job_id') : '') | |||||
| let detail = ref<Object>(null); | let detail = ref<Object>(null); | ||||
| let spinning = ref<Boolean>(false) | let spinning = ref<Boolean>(false) | ||||
| let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '') | let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '') | ||||
| detail.value = null | detail.value = null | ||||
| getDetail() | getDetail() | ||||
| } | } | ||||
| }) | |||||
| },{immediate: true}) | |||||
| </script> | </script> | ||||
| <style scoped lang="less"> | <style scoped lang="less"> |
| > | > | ||||
| <a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;"> | <a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;"> | ||||
| <a-space direction="vertical" :size="20"> | <a-space direction="vertical" :size="20"> | ||||
| <a-flex justify="space-between" style="width: 100%;"> | |||||
| <a-flex justify="space-between" style="width: 100%;">{{item.id}} | |||||
| <div style="font-size: 18px; font-weight: 600;" @click="toDetail(item.id, item.company_id)">{{item.name}}</div> | <div style="font-size: 18px; font-weight: 600;" @click="toDetail(item.id, item.company_id)">{{item.name}}</div> | ||||
| <div style="color: #4FBE70;font-size: 18px;">{{item.pay_range_text}}</div> | <div style="color: #4FBE70;font-size: 18px;">{{item.pay_range_text}}</div> | ||||
| </a-flex> | </a-flex> | ||||
| sessionStorage.setItem('tab_key', 1) | sessionStorage.setItem('tab_key', 1) | ||||
| sessionStorage.setItem('pubilc_id', company_id) | sessionStorage.setItem('pubilc_id', company_id) | ||||
| sessionStorage.setItem('mode', 'detail') | sessionStorage.setItem('mode', 'detail') | ||||
| router.push({ | |||||
| path: '/personal' | |||||
| }) | |||||
| window.open('/company/detail', "_blank"); | |||||
| } | } | ||||
| const toDetail = (job_id : Number, company_id : Number) => { | const toDetail = (job_id : Number, company_id : Number) => { | ||||
| sessionStorage.setItem('tab_key', 2) | sessionStorage.setItem('tab_key', 2) | ||||
| sessionStorage.setItem('pubilc_id', company_id) | sessionStorage.setItem('pubilc_id', company_id) | ||||
| sessionStorage.setItem('mode', 'detail') | sessionStorage.setItem('mode', 'detail') | ||||
| router.push({ | |||||
| path: '/personal' | |||||
| }) | |||||
| window.open('/company/detail', "_blank"); | |||||
| } | } | ||||
| watch(() => props.list, (newVal) => { | watch(() => props.list, (newVal) => { | ||||
| jobList.value = newVal | jobList.value = newVal |
| <a-col span="18"> | <a-col span="18"> | ||||
| <a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
| <a-col span="8" v-for="(item, index) in data1"> | <a-col span="8" v-for="(item, index) in data1"> | ||||
| <a-card hoverable style="width: 100%;height: 222px;" @click="toCompanyDetail(item.id)"> | |||||
| <a-card hoverable style="width: 100%;height: 222px;" @click="toCompanyDetail(item.company_id)"> | |||||
| <template #cover> | <template #cover> | ||||
| <div style="width: 100%;padding-top: 20px;"> | <div style="width: 100%;padding-top: 20px;"> | ||||
| <a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
| <template v-if="showData"> | <template v-if="showData"> | ||||
| <a-row :gutter="[10,10]" style="margin-top: 10px;"> | <a-row :gutter="[10,10]" style="margin-top: 10px;"> | ||||
| <a-col span="6" v-for="(item, index) in data2"> | <a-col span="6" v-for="(item, index) in data2"> | ||||
| <a-card hoverable style="width: 100%;height: 222px;" @click="toCompanyDetail(item.id)"> | |||||
| <a-card hoverable style="width: 100%;height: 222px;" @click="toCompanyDetail(item.company_id)"> | |||||
| <template #cover> | <template #cover> | ||||
| <div style="width: 100%;padding-top: 20px;"> | <div style="width: 100%;padding-top: 20px;"> | ||||
| <a-flex justify="center" align="center"> | <a-flex justify="center" align="center"> | ||||
| const toCompanyDetail = (val : Number) => { | const toCompanyDetail = (val : Number) => { | ||||
| sessionStorage.setItem('pubilc_id', val) | sessionStorage.setItem('pubilc_id', val) | ||||
| sessionStorage.setItem('mode', 'detail') | sessionStorage.setItem('mode', 'detail') | ||||
| router.push({ | |||||
| path: '/personal' | |||||
| }) | |||||
| window.open('/company/detail', "_blank"); | |||||
| } | } | ||||
| const toArticle = (item) => { | const toArticle = (item) => { |
| <script lang="ts" setup> | <script lang="ts" setup> | ||||
| import { ref, onMounted, computed, defineProps, defineEmits } from 'vue'; | import { ref, onMounted, computed, defineProps, defineEmits } from 'vue'; | ||||
| import ATopMenu from '@/components/layout/menu/aMenu.vue'; | import ATopMenu from '@/components/layout/menu/aMenu.vue'; | ||||
| import { PostCustomerVerify, GetPersonInterviewList, GetCompanyResumeList, PostCompanyJobList } from '@/apis/models'; | |||||
| import { PostCustomerVerify, GetPersonInterviewList, GetCompanyResumeList, PostCustomerTokenExpiration, PostCompanyJobList } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
| import { store } from '@/store/index'; | import { store } from '@/store/index'; | ||||
| import { router } from '@/router/index'; | import { router } from '@/router/index'; | ||||
| } | } | ||||
| const quit = () => { | const quit = () => { | ||||
| if(routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| PostCustomerTokenExpiration().then(res => { | |||||
| if(routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| }) | |||||
| } | } | ||||
| <a-menu mode="horizontal" v-model:openKeys="openSubMenu" @openChange="onOpenChange" | <a-menu mode="horizontal" v-model:openKeys="openSubMenu" @openChange="onOpenChange" | ||||
| v-model:selectedKeys="selectedMenu" style="background: #0A130D; height: '90vh';color: #ffffff;"> | v-model:selectedKeys="selectedMenu" style="background: #0A130D; height: '90vh';color: #ffffff;"> | ||||
| <template v-for="(item,index) in menuList"> | <template v-for="(item,index) in menuList"> | ||||
| <template v-if="!item.children"> | |||||
| <a-menu-item :key="item.path" @click="onMenu(item.path)"> | |||||
| <span>{{item.meta.title}}</span> | |||||
| </a-menu-item> | |||||
| </template> | |||||
| <template v-else> | |||||
| <a-sub-menu :key="item.path"> | |||||
| <template #title>{{item.meta.title}}</template> | |||||
| <template v-for="(twoItem, twoIndex) in item.children"> | |||||
| <a-sub-menu v-if="twoItem.children" :key="twoItem.path"> | |||||
| <template #title> | |||||
| {{twoItem.meta.title}} | |||||
| </template> | |||||
| <a-menu-item v-for="(threeItem, threeIndex) in twoItem.children" :key="threeItem.path" | |||||
| @click="onMenu(threeItem.path)">{{ threeItem.meta.title }}</a-menu-item> | |||||
| </a-sub-menu> | |||||
| <a-menu-item v-else @click="onMenu(twoItem.path)" :key="twoItem.path"> | |||||
| {{ twoItem.meta.title }} | |||||
| </a-menu-item> | |||||
| </template> | |||||
| </a-sub-menu> | |||||
| <template v-if="item.meta.title != '企业详情' && item.meta.title != '职位详情'"> | |||||
| <template v-if="!item.children"> | |||||
| <a-menu-item :key="item.path" @click="onMenu(item.path)"> | |||||
| <span>{{item.meta.title}}</span> | |||||
| </a-menu-item> | |||||
| </template> | |||||
| <template v-else> | |||||
| <a-sub-menu :key="item.path"> | |||||
| <template #title>{{item.meta.title}}</template> | |||||
| <template v-for="(twoItem, twoIndex) in item.children"> | |||||
| <a-sub-menu v-if="twoItem.children" :key="twoItem.path"> | |||||
| <template #title> | |||||
| {{twoItem.meta.title}} | |||||
| </template> | |||||
| <a-menu-item v-for="(threeItem, threeIndex) in twoItem.children" :key="threeItem.path" | |||||
| @click="onMenu(threeItem.path)">{{ threeItem.meta.title }}</a-menu-item> | |||||
| </a-sub-menu> | |||||
| <a-menu-item v-else @click="onMenu(twoItem.path)" :key="twoItem.path"> | |||||
| {{ twoItem.meta.title }} | |||||
| </a-menu-item> | |||||
| </template> | |||||
| </a-sub-menu> | |||||
| </template> | |||||
| </template> | </template> | ||||
| </template> | </template> | ||||
| </a-menu> | </a-menu> |
| }, { | }, { | ||||
| title: '绑定的账号', | title: '绑定的账号', | ||||
| dataIndex: 'customer.username' | dataIndex: 'customer.username' | ||||
| }, { | |||||
| title: '联系方式', | |||||
| dataIndex: 'customer.mobile' | |||||
| }, { | }, { | ||||
| title: '使用状态', | title: '使用状态', | ||||
| dataIndex: 'customer_id' | |||||
| dataIndex: 'customer_id', | |||||
| slots: { customRender: 'status' }, | |||||
| }, { | }, { | ||||
| title: '生成时间', | title: '生成时间', | ||||
| dataIndex: 'created_at', | dataIndex: 'created_at', |
| </template> | </template> | ||||
| <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | ||||
| @page="getPage" :loading="loading"> | @page="getPage" :loading="loading"> | ||||
| <template #status="{ record }"> | |||||
| <a-tag color="green" v-if="record.customer_id ==0">未使用</a-tag> | |||||
| <a-tag color="red" v-else>已使用</a-tag> | |||||
| </template> | |||||
| <template #default="{ record }"> | <template #default="{ record }"> | ||||
| <a-row :gutter="20"> | <a-row :gutter="20"> | ||||
| <a-col> | <a-col> |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| },{ | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| export const cols = <ColType.type[]>[ | |||||
| { | |||||
| title: '绑定的账号', | |||||
| dataIndex: 'username' | |||||
| }, { | |||||
| title: '联系方式', | |||||
| dataIndex: 'mobile' | |||||
| },{ | |||||
| title: '绑定时间', | |||||
| dataIndex: 'created_at', | |||||
| }, | |||||
| { | |||||
| title: '操作', | |||||
| dataIndex: 'operation', | |||||
| slots: { customRender: 'operation' }, | |||||
| }, | |||||
| ] |
| <template> | |||||
| <a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | |||||
| <a-card title="转换验证码"> | |||||
| <template #extra> | |||||
| <a-button @click="getCode" type="primary" size="large">生成验证码</a-button> | |||||
| </template> | |||||
| <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||||
| @page="getPage" :loading="loading"> | |||||
| <template #status="{ record }"> | |||||
| <a-tag color="green" v-if="record.customer_id ==0">未使用</a-tag> | |||||
| <a-tag color="red" v-else>已使用</a-tag> | |||||
| </template> | |||||
| <template #default="{ record }"> | |||||
| <a-row :gutter="20"> | |||||
| <a-col> | |||||
| <a-dropdown placement="bottomRight"> | |||||
| <template #overlay> | |||||
| <a-menu> | |||||
| <a-menu-item key="1"> | |||||
| <a-button @click="unbind(record.id)" block>解除授权</a-button> | |||||
| </a-menu-item> | |||||
| </a-menu> | |||||
| </template> | |||||
| <a-button> | |||||
| 操作 | |||||
| <DownOutlined /> | |||||
| </a-button> | |||||
| </a-dropdown> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </template> | |||||
| </a-biaoge> | |||||
| </a-card> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, onMounted, computed, defineEmits, createVNode } from 'vue'; | |||||
| import { PostCompanycustomercodeAdd, PostCompanycustomercodeDel, PostCustomerUpdate, GetCompanyRecruiters } from '@/apis/models'; | |||||
| import ASearch from '@/components/user/manage/search.vue'; | |||||
| import { useCommon } from '@/hooks/useCommon'; | |||||
| import { cols } from '@/components/user/manage/columns'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| const emit = defineEmits(); | |||||
| let { commomParams, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
| let loading = ref<Boolean>(true); | |||||
| onMounted(() => { | |||||
| getData(); | |||||
| }) | |||||
| const searchData = (data : object) => { | |||||
| commomParams.value.search = data | |||||
| getData(); | |||||
| } | |||||
| const clearData = (data : object) => { | |||||
| if (data) { | |||||
| commomParams.value.search = data | |||||
| } else { | |||||
| commomParams.value.search = { | |||||
| page: 1, | |||||
| pagesize: 10, | |||||
| sort: 'id', | |||||
| sortby: 'asc', | |||||
| keyword: '' | |||||
| } | |||||
| } | |||||
| getData(); | |||||
| } | |||||
| const getPage = (data : object) => { | |||||
| commomParams.value.search.page = data.current; | |||||
| commomParams.value.search.pagesize = data.pageSize; | |||||
| getData(); | |||||
| } | |||||
| const getData = async () => { | |||||
| try { | |||||
| loading.value = true; | |||||
| let res = await GetCompanyRecruiters(); | |||||
| loading.value = false; | |||||
| commomParams.value.table.data = res.data.customers; | |||||
| commomParams.value.table.columns = cols; | |||||
| commomParams.value.page = { | |||||
| current: commomParams.value.search.page, | |||||
| pageSize: commomParams.value.search.pagesize, | |||||
| total: res.data.total, | |||||
| pageSizeOptions: ['10', '20', '30', '40'], | |||||
| hideOnSinglePage: false, | |||||
| showSizeChanger: true | |||||
| }; | |||||
| } catch { | |||||
| loading.value = false; | |||||
| } | |||||
| } | |||||
| // 修改 | |||||
| const edit = (record : Object) => { | |||||
| emit('toEdit', { record: record }) | |||||
| } | |||||
| const unbind = (id) => { | |||||
| Modal.confirm({ | |||||
| title: '是否要解除授权该账号', | |||||
| icon: createVNode(ExclamationCircleOutlined), | |||||
| centered: true, | |||||
| onOk() { | |||||
| PostCustomerUpdate({ id: id, role: 1 }).then(res => { | |||||
| successToast('解除授权成功') | |||||
| getData() | |||||
| }) | |||||
| }, | |||||
| onCancel() { | |||||
| }, | |||||
| }); | |||||
| } | |||||
| const del = (id : number) => { | |||||
| commomParams.value.delParam = { id: id }; | |||||
| Modal.confirm({ | |||||
| title: '是否要删除此验证码', | |||||
| icon: createVNode(ExclamationCircleOutlined), | |||||
| centered: true, | |||||
| onOk() { | |||||
| PostCompanycustomercodeDel(commomParams.value.delParam).then(res => { | |||||
| successToast('删除成功'); | |||||
| getData(); | |||||
| }) | |||||
| }, | |||||
| onCancel() { | |||||
| }, | |||||
| }); | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| </style> |
| <template> | |||||
| <a-form :model="commomParams.search"> | |||||
| <a-row :gutter="20"> | |||||
| <a-col span="6"> | |||||
| <a-form-item> | |||||
| <a-input-search v-model:value="commomParams.search.keyword" placeholder="请输入验证码" enter-button="搜索" | |||||
| @search="getData" /> | |||||
| </a-form-item> | |||||
| </a-col> | |||||
| <a-col span="6"> | |||||
| <a-button type="primary" @click="clearSearch">重置</a-button> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </a-form> | |||||
| </template> | |||||
| <script lang="ts" setup> | |||||
| import { ref, onMounted, watch, computed } from 'vue'; | |||||
| import { useCommon } from '@/hooks/useCommon'; | |||||
| let { commomParams } = useCommon(); | |||||
| let props = defineProps(['search_params']); | |||||
| const emit = defineEmits(); | |||||
| watch(() => props.search_params, (newVal) => { | |||||
| emit('searchData', commomParams.value.search) | |||||
| }) | |||||
| const getData = () => { | |||||
| emit('searchData', commomParams.value.search) | |||||
| } | |||||
| // 清空搜索 | |||||
| const clearSearch = () => { | |||||
| commomParams.value.search = { | |||||
| page: 1, | |||||
| pagesize: 10, | |||||
| sort: 'id', | |||||
| sortby: 'asc', | |||||
| keyword: '' | |||||
| } | |||||
| emit('clearData', commomParams.value.search) | |||||
| } | |||||
| </script> | |||||
| <style> | |||||
| </style> |
| <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, PostJobseekerResetPwd } from '@/apis/models'; | |||||
| import { PostJobseekerEditPwd, PostSmsSend,PostCustomerTokenExpiration, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
| import { store } from '@/store/index'; | import { store } from '@/store/index'; | ||||
| import { router } from '@/router/index'; | import { router } from '@/router/index'; | ||||
| } | } | ||||
| const quit = () => { | const quit = () => { | ||||
| if (routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| PostCustomerTokenExpiration().then(res => { | |||||
| if (routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| }) | |||||
| } | } | ||||
| const resetForm = () => { | const resetForm = () => { |
| }, | }, | ||||
| }; | }; | ||||
| // 新窗口 | |||||
| export const OutpageCompanyRoute: AppRouteRecordRaw = { | |||||
| path: '/company/detail', | |||||
| name: 'outpageCompany', | |||||
| component: routerList.OutpageCompany, | |||||
| meta: { | |||||
| title: '企业详情' | |||||
| } | |||||
| } | |||||
| export const OutpageJobRoute: AppRouteRecordRaw = { | |||||
| path: '/job/detail', | |||||
| name: 'outpageJob', | |||||
| component: routerList.OutpageJob, | |||||
| meta: { | |||||
| title: '职位详情' | |||||
| } | |||||
| } | |||||
| export const routesModuleList : AppRouteModule[] = [ | export const routesModuleList : AppRouteModule[] = [ | ||||
| RelationshipRoute, | RelationshipRoute, | ||||
| NewsRoute, | NewsRoute, | ||||
| // RegisterRoute | // RegisterRoute | ||||
| OutpageCompanyRoute, | |||||
| OutpageJobRoute | |||||
| ]; | ]; |
| import JobseekerSearch from '@/views/jobseeker/search/index.vue'; | import JobseekerSearch from '@/views/jobseeker/search/index.vue'; | ||||
| import JobseekerPassword from '@/views/jobseeker/password/index.vue'; | import JobseekerPassword from '@/views/jobseeker/password/index.vue'; | ||||
| // 新窗口 | |||||
| import OutpageCompany from '@/views/common/outpage/company.vue'; | |||||
| import OutpageJob from '@/views/common/outpage/job.vue'; | |||||
| export const routerList = { | export const routerList = { | ||||
| Home, | Home, | ||||
| Job, | Job, | ||||
| JobseekerRecommend, | JobseekerRecommend, | ||||
| JobseekerResume, | JobseekerResume, | ||||
| JobseekerSearch, | JobseekerSearch, | ||||
| JobseekerPassword | |||||
| JobseekerPassword, | |||||
| OutpageCompany, | |||||
| OutpageJob | |||||
| } | } |
| import LOGIN from '@/views/login/login.vue'; | import LOGIN from '@/views/login/login.vue'; | ||||
| // import HOME from '@/views/home/home.vue'; | // import HOME from '@/views/home/home.vue'; | ||||
| import Layout from '@/components/layout/index.vue'; | import Layout from '@/components/layout/index.vue'; | ||||
| import { routesModuleList } from '@/router/dynamic'; | import { routesModuleList } from '@/router/dynamic'; | ||||
| import { routesManageModuleList } from '@/router/manageDynamic'; | import { routesManageModuleList } from '@/router/manageDynamic'; | ||||
| // // 登录路由 | |||||
| // 登录路由 | |||||
| export const LoginRoute: AppRouteRecordRaw = { | export const LoginRoute: AppRouteRecordRaw = { | ||||
| path: '/login', | path: '/login', | ||||
| name: 'login', | name: 'login', | ||||
| } | } | ||||
| // layout路由 | // layout路由 | ||||
| export const LayoutRoute : AppRouteRecordRaw = { | export const LayoutRoute : AppRouteRecordRaw = { | ||||
| path: '', | path: '', | ||||
| } | } | ||||
| export const basicRoutes = [ | export const basicRoutes = [ | ||||
| LoginRoute, | LoginRoute, | ||||
| LayoutRoute | |||||
| LayoutRoute, | |||||
| ] | ] |
| try { | try { | ||||
| // let res = await LOGIN.permissions(); | // let res = await LOGIN.permissions(); | ||||
| // let arr = res.data.data; | // let arr = res.data.data; | ||||
| console.log(rootState) | |||||
| if(rootState.token && rootState.role === 'company' && rootState.pageType == 'company' ) { | if(rootState.token && rootState.role === 'company' && rootState.pageType == 'company' ) { | ||||
| LayoutRoute.children = []; | LayoutRoute.children = []; | ||||
| commit('SET_MENU', []); | commit('SET_MENU', []); | ||||
| routerAdd(NotFound); | routerAdd(NotFound); | ||||
| let initialRoutes = routerInit(); | let initialRoutes = routerInit(); | ||||
| commit('SET_PERMISSION', [...initialRoutes]); | commit('SET_PERMISSION', [...initialRoutes]); | ||||
| debugger | |||||
| } | } | ||||
| } catch { | } catch { |
| <template> | |||||
| <div class="content-padding-inline" style="margin: 30px 0;"> | |||||
| <a-row :gutter="[10,10]" type="flex" justify="center"> | |||||
| <a-col span="18"> | |||||
| <div v-if="mode== 'detail'"> | |||||
| <a-page-header> | |||||
| <a-list item-layout="vertical"> | |||||
| <a-list-item> | |||||
| <a-list-item-meta> | |||||
| <template #title> | |||||
| <div style="font-size: 24px; font-family: bold;">{{companyDetail.full_name}}</div> | |||||
| </template> | |||||
| <template #description> | |||||
| <div> | |||||
| 企业编号:{{companyDetail.id}} | |||||
| </div> | |||||
| </template> | |||||
| </a-list-item-meta> | |||||
| </a-list-item> | |||||
| </a-list> | |||||
| <a-tabs v-model:activeKey="activeKey" type="card" @change="activeChange"> | |||||
| <a-tab-pane :key="1" tab="企业信息"> | |||||
| <template v-if="activeKey == 1"> | |||||
| <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||||
| <a-descriptions title="公司介绍" layout="vertical"> | |||||
| <a-descriptions-item> | |||||
| <div v-html="companyDetail.introduction"></div> | |||||
| </a-descriptions-item> | |||||
| </a-descriptions> | |||||
| </div> | |||||
| <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;"> | |||||
| <a-descriptions :column="7" title="公司概况" layout="vertical"> | |||||
| <a-descriptions-item label="所属行业" span="2" | |||||
| v-if="companyDetail.situation">{{companyDetail.situation.industry_text}}/{{companyDetail.situation.industry2_text}}</a-descriptions-item> | |||||
| <a-descriptions-item label="公司性质" | |||||
| v-if="companyDetail.situation">{{companyDetail.situation.nature_text}}</a-descriptions-item> | |||||
| <a-descriptions-item label="公司规模" | |||||
| v-if="companyDetail.situation">{{companyDetail.situation.scale_text }}</a-descriptions-item> | |||||
| <a-descriptions-item label="成立时间" | |||||
| v-if="companyDetail.situation">{{companyDetail.situation.establishment_date }}</a-descriptions-item> | |||||
| </a-descriptions> | |||||
| </div> | |||||
| <div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||||
| <a-descriptions :column="7" title="联系方式" layout="vertical"> | |||||
| <a-descriptions-item label="联系地址" | |||||
| span="2">{{companyDetail.detail_address}}</a-descriptions-item> | |||||
| <a-descriptions-item label="联系人">{{companyDetail.contact}}</a-descriptions-item> | |||||
| <a-descriptions-item label="联系手机">{{companyDetail.mobile}}</a-descriptions-item> | |||||
| <a-descriptions-item label="联系电话">{{companyDetail.phone}}</a-descriptions-item> | |||||
| <a-descriptions-item label="Email">{{companyDetail.email}}</a-descriptions-item> | |||||
| <a-descriptions-item label="传真">{{companyDetail.fax}}</a-descriptions-item> | |||||
| </a-descriptions> | |||||
| </div> | |||||
| <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 :need="true" | |||||
| :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;"> | |||||
| <a-descriptions :column="1" title="地图位置" layout="vertical"> | |||||
| <a-descriptions-item span="24"> | |||||
| <map-marker v-if="companyDetail.latitude && companyDetail.longitude" :lat="companyDetail.latitude" :lng="companyDetail.longitude"></map-marker> | |||||
| </a-descriptions-item> | |||||
| </a-descriptions> | |||||
| </div> | |||||
| </template> | |||||
| </a-tab-pane> | |||||
| <a-tab-pane :key="2" tab="招聘职位" force-render> | |||||
| <template v-if="activeKey == 2"> | |||||
| <template v-if="!jobList || jobList.length == 0"> | |||||
| <a-empty style="height: 100vh;"> | |||||
| <template #description> | |||||
| 本企业未有招聘信息 | |||||
| </template> | |||||
| </a-empty> | |||||
| </template> | |||||
| <template v-else> | |||||
| <a-row :gutter="10"> | |||||
| <a-col span="8"> | |||||
| <div style="background-color: #ffffff;padding-bottom: 20px; border-radius: 8px;"> | |||||
| <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-space> | |||||
| </a-flex> | |||||
| </div> | |||||
| </a-col> | |||||
| <a-col span="16"> | |||||
| <div style="padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||||
| <job-detail v-if="job_id" :id="job_id"></job-detail> | |||||
| </div> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </template> | |||||
| </template> | |||||
| </a-tab-pane> | |||||
| </a-tabs> | |||||
| </a-page-header> | |||||
| </div> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </div> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, onMounted, computed, watch, onBeforeUnmount } from 'vue'; | |||||
| import JobDetail from '@/components/job/detail/index.vue' | |||||
| import JobCard from '@/components/job/card/index.vue' | |||||
| import JobList from '@/components/job/list/index.vue' | |||||
| import JobInternship from '@/components/job/internship/index.vue' | |||||
| import MapMarker from '@/components/map/marker.vue' | |||||
| import { PostCompanyInfo, GetJobCompanyjobs } from '@/apis/models'; | |||||
| import { ArrowLeftOutlined } from '@ant-design/icons-vue'; | |||||
| import { router } from '@/router'; | |||||
| import { useCommon } from '@/hooks/useCommon'; | |||||
| let { imageprefix } = useCommon(); | |||||
| let activeKey = ref<Number>(sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1) | |||||
| let companyDetail = ref<object>({}) | |||||
| let jobList = ref<object[]>([]) | |||||
| let pubilc_id = ref<Number>(0) | |||||
| let current = ref<Number>(1) | |||||
| let total = ref<Number>(0) | |||||
| let job_id = ref<Number>(sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0) | |||||
| let mode = ref<String>(sessionStorage.getItem('mode')) | |||||
| const toDetail = (data) => { | |||||
| job_id.value = data.id; | |||||
| } | |||||
| const activeChange = (data) => { | |||||
| sessionStorage.removeItem('job_id') | |||||
| getJobCompanyjobs() | |||||
| } | |||||
| const pageChange = (page) => { | |||||
| current.value = page | |||||
| getJobCompanyjobs(page) | |||||
| } | |||||
| const getJobCompanyjobs = (page) => { | |||||
| GetJobCompanyjobs({ company_id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id'), page: current.value, pagesize: 3 }).then(res => { | |||||
| total.value = res.data.total; | |||||
| if (res.data.jobs.length > 3) { | |||||
| jobList.value = res.data.jobs.slice(0, 3) | |||||
| } else { | |||||
| jobList.value = res.data.jobs | |||||
| } | |||||
| job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : jobList.value[0].id | |||||
| }) | |||||
| } | |||||
| const back = (page) => { | |||||
| sessionStorage.removeItem('pubilc_id') | |||||
| sessionStorage.removeItem('mode') | |||||
| sessionStorage.removeItem('tab_key') | |||||
| sessionStorage.removeItem('job_id') | |||||
| mode.value = sessionStorage.getItem('mode') | |||||
| } | |||||
| const showDetail = (page) => { | |||||
| mode.value = sessionStorage.getItem('mode') | |||||
| activeKey.value = sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1 | |||||
| job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| 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 | |||||
| }) | |||||
| getJobCompanyjobs(current.value) | |||||
| } | |||||
| if(activeKey.value == 1) { | |||||
| window.open('/company/detail', "_blank"); | |||||
| } else{ | |||||
| window.open('/job/detail', "_blank"); | |||||
| } | |||||
| } | |||||
| onMounted(() => { | |||||
| if (mode.value == 'detail') { | |||||
| // job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| // console.log(job_id.value ) | |||||
| pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| 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; | |||||
| }) | |||||
| getJobCompanyjobs(current.value) | |||||
| } | |||||
| } | |||||
| }) | |||||
| onBeforeUnmount(() => { | |||||
| sessionStorage.removeItem('pubilc_id') | |||||
| sessionStorage.removeItem('mode') | |||||
| sessionStorage.removeItem('tab_key') | |||||
| sessionStorage.removeItem('job_id') | |||||
| }) | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| :deep(.ant-list-item) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| :deep(.ant-card) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| :deep(.ant-card-body) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| </style> |
| <template> | |||||
| <div class="content-padding-inline" style="margin: 30px 0;"> | |||||
| <a-row :gutter="[10,10]" type="flex" justify="center"> | |||||
| <a-col span="18"> | |||||
| <template v-if="!jobList || jobList.length == 0"> | |||||
| <a-empty style="height: 100vh;"> | |||||
| <template #description> | |||||
| 本企业未有招聘信息 | |||||
| </template> | |||||
| </a-empty> | |||||
| </template> | |||||
| <template v-else> | |||||
| <a-row :gutter="10"> | |||||
| <a-col span="8"> | |||||
| <div style="background-color: #ffffff;padding-bottom: 20px; border-radius: 8px;"> | |||||
| <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-space> | |||||
| </a-flex> | |||||
| </div> | |||||
| </a-col> | |||||
| <a-col span="16"> | |||||
| <div style="padding: 20px;background-color: #ffffff;border-radius: 8px;"> | |||||
| <job-detail v-if="job_id" :id="job_id"></job-detail> | |||||
| </div> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </template> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </div> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, onMounted, computed, watch, onBeforeUnmount } from 'vue'; | |||||
| import JobDetail from '@/components/job/detail/index.vue' | |||||
| import JobCard from '@/components/job/card/index.vue' | |||||
| import JobList from '@/components/job/list/index.vue' | |||||
| import JobInternship from '@/components/job/internship/index.vue' | |||||
| import MapMarker from '@/components/map/marker.vue' | |||||
| import { PostCompanyInfo, GetJobCompanyjobs } from '@/apis/models'; | |||||
| import { ArrowLeftOutlined } from '@ant-design/icons-vue'; | |||||
| import { router } from '@/router'; | |||||
| import { useCommon } from '@/hooks/useCommon'; | |||||
| let { imageprefix } = useCommon(); | |||||
| let activeKey = ref<Number>(sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1) | |||||
| let companyDetail = ref<object>({}) | |||||
| let jobList = ref<object[]>([]) | |||||
| let pubilc_id = ref<Number>(0) | |||||
| let current = ref<Number>(1) | |||||
| let total = ref<Number>(0) | |||||
| let job_id = ref<Number>(0) | |||||
| let mode = ref<String>(sessionStorage.getItem('mode')) | |||||
| const toDetail = (data) => { | |||||
| job_id.value = data.id; | |||||
| } | |||||
| const pageChange = (page) => { | |||||
| current.value = page | |||||
| getJobCompanyjobs(page) | |||||
| } | |||||
| const getJobCompanyjobs = (page) => { | |||||
| GetJobCompanyjobs({ company_id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id'), page: page, pagesize: 3 }).then(res => { | |||||
| total.value = res.data.total; | |||||
| if (res.data.jobs.length > 3) { | |||||
| jobList.value = res.data.jobs.slice(0, 3) | |||||
| } else { | |||||
| jobList.value = res.data.jobs | |||||
| } | |||||
| job_id.value = jobList.value[0].id | |||||
| }) | |||||
| } | |||||
| const back = (page) => { | |||||
| sessionStorage.removeItem('pubilc_id') | |||||
| sessionStorage.removeItem('mode') | |||||
| sessionStorage.removeItem('tab_key') | |||||
| sessionStorage.removeItem('job_id') | |||||
| mode.value = sessionStorage.getItem('mode') | |||||
| } | |||||
| const showDetail = (page) => { | |||||
| mode.value = sessionStorage.getItem('mode') | |||||
| activeKey.value = sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1 | |||||
| job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| 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 | |||||
| }) | |||||
| getJobCompanyjobs(current.value) | |||||
| } | |||||
| window.open('/company/detail', "_blank"); | |||||
| } | |||||
| onMounted(() => { | |||||
| if (mode.value == 'detail') { | |||||
| job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| 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; | |||||
| }) | |||||
| getJobCompanyjobs(current.value) | |||||
| } | |||||
| } | |||||
| }) | |||||
| onBeforeUnmount(() => { | |||||
| sessionStorage.removeItem('pubilc_id') | |||||
| sessionStorage.removeItem('mode') | |||||
| sessionStorage.removeItem('tab_key') | |||||
| sessionStorage.removeItem('job_id') | |||||
| }) | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| :deep(.ant-list-item) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| :deep(.ant-card) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| :deep(.ant-card-body) { | |||||
| padding: 0 !important; | |||||
| } | |||||
| </style> |
| } | } | ||||
| const showDetail = (page) => { | const showDetail = (page) => { | ||||
| mode.value = sessionStorage.getItem('mode') | |||||
| // mode.value = sessionStorage.getItem('mode') | |||||
| activeKey.value = sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1 | activeKey.value = sessionStorage.getItem('tab_key') ? Number(sessionStorage.getItem('tab_key')) : 1 | ||||
| job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| 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 | |||||
| }) | |||||
| getJobCompanyjobs(current.value) | |||||
| } | |||||
| // job_id.value = sessionStorage.getItem('job_id') ? Number(sessionStorage.getItem('job_id')) : 0; | |||||
| // pubilc_id.value = sessionStorage.getItem('pubilc_id') ? Number(sessionStorage.getItem('pubilc_id')) : pubilc_id.value; | |||||
| // 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 | |||||
| // }) | |||||
| // getJobCompanyjobs(current.value) | |||||
| // } | |||||
| window.open('/company/detail', "_blank"); | |||||
| } | } | ||||
| <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, PostJobseekerResetPwd } from '@/apis/models'; | |||||
| import { PostJobseekerEditPwd, PostSmsSend,PostCustomerTokenExpiration, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
| import { store } from '@/store/index'; | import { store } from '@/store/index'; | ||||
| import { router } from '@/router/index'; | import { router } from '@/router/index'; | ||||
| } | } | ||||
| const quit = () => { | const quit = () => { | ||||
| if(routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| PostCustomerTokenExpiration().then(res => { | |||||
| if(routerCur() == '/job/home') { | |||||
| sessionStorage.clear() | |||||
| location.reload() | |||||
| } else { | |||||
| 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('/job/home') | |||||
| } | |||||
| }) | |||||
| } | } | ||||
| const resetForm = () => { | const resetForm = () => { |
| sessionStorage.setItem('role', 'company') | sessionStorage.setItem('role', 'company') | ||||
| sessionStorage.setItem('pageType', 'company') | sessionStorage.setItem('pageType', 'company') | ||||
| sessionStorage.setItem('id', res.data.company_id) | sessionStorage.setItem('id', res.data.company_id) | ||||
| sessionStorage.setItem('primary', res.data.is_primary) | |||||
| store.commit('permissions/SET_PERMISSION', null) | store.commit('permissions/SET_PERMISSION', null) | ||||
| store.commit('permissions/SET_MENU', []) | store.commit('permissions/SET_MENU', []) | ||||
| resetForm() | resetForm() | ||||
| sessionStorage.setItem('role', 'company') | sessionStorage.setItem('role', 'company') | ||||
| sessionStorage.setItem('pageType', 'company') | sessionStorage.setItem('pageType', 'company') | ||||
| sessionStorage.setItem('id', res.data.company_id) | sessionStorage.setItem('id', res.data.company_id) | ||||
| sessionStorage.setItem('primary', res.data.is_primary) | |||||
| store.commit('permissions/SET_PERMISSION', null) | store.commit('permissions/SET_PERMISSION', null) | ||||
| store.commit('permissions/SET_MENU', []) | store.commit('permissions/SET_MENU', []) | ||||
| resetForm() | resetForm() |
| <user-password v-if="curKey == 2"></user-password> | <user-password v-if="curKey == 2"></user-password> | ||||
| <user-email v-if="curKey == 3"></user-email> | <user-email v-if="curKey == 3"></user-email> | ||||
| <user-conver v-if="curKey == 4"></user-conver> | <user-conver v-if="curKey == 4"></user-conver> | ||||
| <user-manage v-if="curKey == 5"></user-manage> | |||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| import UserPassword from '@/components/user/password/index.vue' | import UserPassword from '@/components/user/password/index.vue' | ||||
| import UserEmail from '@/components/user/email/index.vue' | import UserEmail from '@/components/user/email/index.vue' | ||||
| import UserConver from '@/components/user/conver/index.vue' | import UserConver from '@/components/user/conver/index.vue' | ||||
| import UserManage from '@/components/user/manage/index.vue' | |||||
| let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | ||||
| let menu_list = ref([{ title: '费用管理', key: 1 },{ title: '重置密码', key: 2},{ title: '修改邮箱', key: 3},{ title: '生成招聘者代码', key: 4}]) | |||||
| let menu_list = ref([{ title: '费用管理', key: 1 },{ title: '重置密码', key: 2},{ title: '修改邮箱', key: 3}]) | |||||
| onMounted(() => { | |||||
| if(sessionStorage.getItem('primary') && sessionStorage.getItem('primary') == 1) { | |||||
| menu_list.value.push({ title: '生成招聘者代码', key: 4}, { title: '管理HR账号', key: 5}) | |||||
| } | |||||
| }) | |||||
| let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
| const changeKey = (data) => { | const changeKey = (data) => { | ||||
| curKey.value = data.key; | curKey.value = data.key; |