@@ -0,0 +1,104 @@ | |||
<template> | |||
<!-- <div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 36px;">精选职位</div> --> | |||
<a-tabs v-model:activeKey="activeKey"> | |||
<a-tab-pane key="1" tab="最新招聘"> | |||
<a-row :gutter="[10,10]"> | |||
<a-col span="8" v-for="(item, index) in companyList"> | |||
<div class="job-box"> | |||
<div class="job-title"> | |||
<div class="aaaa mt10"> | |||
<div>前端工程师</div> | |||
<div>5000-7000元</div> | |||
</div> | |||
<div> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
</div> | |||
</div> | |||
<div class="job-company"> | |||
<div class="aaaa mt10"> | |||
<div>中山市海港城安域有限公司</div> | |||
<div>查看更多</div> | |||
</div> | |||
<div> | |||
小榄镇 | |||
</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
<div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 24px;">查看更多</div> | |||
</a-tab-pane> | |||
<a-tab-pane key="2" tab="急招职位" force-render>Content of Tab Pane 2</a-tab-pane> | |||
<a-tab-pane key="3" tab="高薪职位">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="校园招聘">Content of Tab Pane 3</a-tab-pane> | |||
</a-tabs> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted } from 'vue'; | |||
let companyList = ref<object[]>([{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]) | |||
let data1 = ref([]) | |||
let data2 = ref([]) | |||
let showData = ref(false) | |||
onMounted(() => { | |||
if (companyList.value.length > 9) { | |||
companyList.value = companyList.value.slice(0, 9) | |||
} else { | |||
data1.value = companyList.value; | |||
showData.value = false; | |||
} | |||
}) | |||
</script> | |||
<style lang="less" scoped> | |||
.job-box { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-around; | |||
// align-items: center; | |||
width: 100%; | |||
.job-title { | |||
padding: 20px; | |||
background-color: #ffffff; | |||
.aaaa { | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
} | |||
.job-company { | |||
padding: 20px; | |||
background-color: #cccccc; | |||
.aaaa { | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
} | |||
} | |||
.mt10 { | |||
margin-bottom: 10px; | |||
} | |||
:slotted(.ant-tabs-nav-wrap) { | |||
width: 100%; | |||
flex: none !important; | |||
justify-content: center !important; | |||
} | |||
:slotted(.ant-tabs-nav) { | |||
background-color: #fff; | |||
} | |||
</style> |
@@ -0,0 +1,96 @@ | |||
<template> | |||
<a-row :gutter="[10,16]" type="flex" justify="center"> | |||
<a-col span="18"> | |||
<a-input v-model:value="value2" placeholder="请输入关键字"> | |||
<template #addonBefore> | |||
<a-select v-model:value="value3" style="width: 90px"> | |||
<a-select-option value="Http://">Http://</a-select-option> | |||
<a-select-option value="Https://">Https://</a-select-option> | |||
</a-select> | |||
</template> | |||
<template #addonAfter> | |||
<div style="padding: 0 20px;"> | |||
搜索 | |||
</div> | |||
</template> | |||
</a-input> | |||
</a-col> | |||
<a-col span="24"> | |||
<div style="width: 100%; background-color: #fff;padding: 16px;"> | |||
<a-form> | |||
<a-form-item label="工作地区"> | |||
<a-checkable-tag v-model:checked="checked1" @change="handleChange">不限</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked1" @change="handleChange">小榄镇</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked1" @change="handleChange">永远</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked1" @change="handleChange">不限</a-checkable-tag> | |||
</a-form-item> | |||
<a-form-item label="职位性质"> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">全职</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">兼职</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">临时</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">实习</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">校园招聘</a-checkable-tag> | |||
</a-form-item> | |||
<a-form-item label="年龄要求"> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">全职</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">兼职</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">临时</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">实习</a-checkable-tag> | |||
<a-checkable-tag v-model:checked="checked" @change="handleChange">校园招聘</a-checkable-tag> | |||
</a-form-item> | |||
<a-form-item label="其他条件"> | |||
<a-row :gutter="[8,10]"> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
<a-col span="2"> | |||
<a-cascader v-model:value="cascaderValue" :options="options" size="small" /> | |||
</a-col> | |||
</a-row> | |||
</a-form-item> | |||
</a-form> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</template> | |||
<script setup lang="ts"> | |||
import { defineComponent, ref } from 'vue'; | |||
import { SettingOutlined } from '@ant-design/icons-vue'; | |||
let value3 = ref('全部') | |||
let cascaderValue = ref('职位类别') | |||
let value = ref('行业类别') | |||
let checked1 = ref(true) | |||
</script> | |||
<style lang="less" scoped> | |||
/deep/ .ant-form-item { | |||
margin-bottom: 0; | |||
} | |||
</style> |
@@ -1,137 +1,176 @@ | |||
<template> | |||
<div style="min-height: 100vh;"> | |||
<a-layout class="layout" style="width: 100%; display: flex;align-items: center;justify-items: center;"> | |||
<a-layout-header style="position: fixed; z-index: 99; width: calc(100% - 600px);"> | |||
<div class="logo" /> | |||
<a-menu theme="dark" mode="horizontal" v-model:selectedKeys="selectedKeys" | |||
:style="{ lineHeight: '64px' }"> | |||
<a-menu-item key="1">首页</a-menu-item> | |||
<a-menu-item key="2">求职招聘</a-menu-item> | |||
<a-menu-item key="3">关于菊城人才</a-menu-item> | |||
<a-sub-menu> | |||
<template #icon> | |||
<setting-outlined /> | |||
</template> | |||
<template #title>Navigation Three - Submenu</template> | |||
<a-menu-item-group title="Item 1"> | |||
<a-menu-item key="setting:1">Option 1</a-menu-item> | |||
<a-menu-item key="setting:2">Option 2</a-menu-item> | |||
</a-menu-item-group> | |||
<a-menu-item-group title="Item 2"> | |||
<a-menu-item key="setting:3">Option 3</a-menu-item> | |||
<a-menu-item key="setting:4">Option 4</a-menu-item> | |||
</a-menu-item-group> | |||
</a-sub-menu> | |||
<a-menu-item key="1">法律咨询</a-menu-item> | |||
<a-menu-item key="2">人才导师</a-menu-item> | |||
<a-menu-item key="3">专家组</a-menu-item> | |||
<a-menu-item key="2">培训列表</a-menu-item> | |||
<a-menu-item key="3">党群关系</a-menu-item> | |||
<a-menu-item key="3">新闻中心</a-menu-item> | |||
</a-menu> | |||
<a-layout-header style="position: fixed; z-index: 99;background: #000;width: 100%;"> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<a-row> | |||
<a-col span="4"> | |||
<div class="logo" /> | |||
</a-col> | |||
<a-col span="16"> | |||
<a-menu theme="dark" mode="horizontal" v-model:selectedKeys="selectedKeys" | |||
:style="{ lineHeight: '64px' }"> | |||
<a-menu-item>首页</a-menu-item> | |||
<a-menu-item @click="toRouter">求职招聘</a-menu-item> | |||
<a-sub-menu> | |||
<template #title>关于菊城人才</template> | |||
<a-menu-item-group title="Item 1"> | |||
<a-menu-item key="setting:1">Option 1</a-menu-item> | |||
<a-menu-item key="setting:2">Option 2</a-menu-item> | |||
</a-menu-item-group> | |||
<a-menu-item-group title="Item 2"> | |||
<a-menu-item key="setting:3">Option 3</a-menu-item> | |||
<a-menu-item key="setting:4">Option 4</a-menu-item> | |||
</a-menu-item-group> | |||
</a-sub-menu> | |||
<a-menu-item key="1">法律咨询</a-menu-item> | |||
<a-menu-item key="2">人才导师</a-menu-item> | |||
<a-menu-item key="3">专家组</a-menu-item> | |||
<a-menu-item key="2">培训列表</a-menu-item> | |||
<a-menu-item key="3">党群关系</a-menu-item> | |||
<a-menu-item key="3">新闻中心</a-menu-item> | |||
</a-menu> | |||
</a-col> | |||
<a-col span="4"> | |||
<div | |||
style="display: flex;flex-direction: column;align-items: flex-end;justify-content: center;"> | |||
登录/注册</div> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
</a-row> | |||
</a-layout-header> | |||
<a-layout-content style="padding: 0 50px"> | |||
<router-view></router-view> | |||
<!-- <layout-swiper ></layout-swiper> --> | |||
<layout-tabs></layout-tabs> | |||
<a-layout-content> | |||
<div> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<router-view></router-view> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
</a-layout-content> | |||
<a-layout-footer> | |||
<a-row gutter="20" type="flex" justify="space-between"> | |||
<a-col span="8"> | |||
<a-row gutter="20"> | |||
<a-col sapn="12"> | |||
<!-- <a-layout-footer> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<a-row gutter="20" type="flex" justify="space-between"> | |||
<a-col span="8"> | |||
<a-row gutter="20"> | |||
<a-col sapn="12"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>关于我们</div> | |||
<div style="display: flex;flex-direction: column;"> | |||
<div>关于我们</div> | |||
<div>联系方式</div> | |||
<div>公司地图</div> | |||
<div>关于我们</div> | |||
<div>收费方式</div> | |||
<div>汇款方式</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
<a-col sapn="12"> | |||
<div | |||
style="display: flex;flex-direction: column;align-items: flex-start;justify-content: center;"> | |||
<div>快速注册</div> | |||
<div style="display: flex;flex-direction: column;"> | |||
<div>单位用户注册</div> | |||
<div>个人用户注册</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
<a-row style="margin-top: 30px;"> | |||
<a-col sapn="24"> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="中山求职 招聘 到菊城人才网 本网站实名:中山市菊城人才网" /> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="邮编:zsjcjob@163.com 传真号码:0760-22236922 0760-22236026" /> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="Copyright@2002-2024 菊城人才网 All Right Reserved 粤ICP备05092134号" /> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
<a-col span="4"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>关于我们</div> | |||
<div style="display: flex;flex-direction: column;"> | |||
<div>关于我们</div> | |||
<div>联系方式</div> | |||
<div>公司地图</div> | |||
<div>关于我们</div> | |||
<div>收费方式</div> | |||
<div>汇款方式</div> | |||
<div>上班时间</div> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>星期一至星期五:8:30-17:30</div> | |||
<div>星期六:9:00-16:00</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
<a-col sapn="12"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;justify-content: center;"> | |||
<div>快速注册</div> | |||
<div style="display: flex;flex-direction: column;"> | |||
<div>单位用户注册</div> | |||
<div>个人用户注册</div> | |||
<a-col span="8"> | |||
<div | |||
style="display: flex;flex-direction: column;align-items: flex-end;justify-content: space-between;height: 100%;"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>联系电话</div> | |||
<div>0760-22236225、22236226</div> | |||
<div>0760-22236225、22236226</div> | |||
</div> | |||
<div style="display: flex;flex-direction: column;align-items: center;"> | |||
<a-image :width="100" | |||
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" /> | |||
<div>官方公众号</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
<a-row style="margin-top: 30px;"> | |||
<a-col sapn="24"> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="中山求职 招聘 到菊城人才网 本网站实名:中山市菊城人才网" /> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="邮编:zsjcjob@163.com 传真号码:0760-22236922 0760-22236026" /> | |||
<a-typography-paragraph style="font-size: 12px; text-align: left;" | |||
content="Copyright@2002-2024 菊城人才网 All Right Reserved 粤ICP备05092134号" /> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
<a-col span="4"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>上班时间</div> | |||
<div style="display: flex;flex-direction: column;align-items: flex-start;"> | |||
<div>星期一至星期五:8:30-17:30</div> | |||
<div>星期六:9:00-16:00</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
<a-col span="8"> | |||
<div style="display: flex;flex-direction: column;align-items: flex-end;justify-content: space-between;height: 100%;"> | |||
<!-- <div style="display: flex;flex-direction: column;align-items: flex-start;"> --> | |||
<div>联系电话</div> | |||
<div>0760-22236225、22236226</div> | |||
<div>0760-22236225、22236226</div> | |||
<!-- </div> --> | |||
<div style="display: flex;flex-direction: column;align-items: center;"> | |||
<a-image | |||
:width="100" | |||
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" | |||
/> | |||
<div>官方公众号</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</a-layout-footer> | |||
</a-layout-footer> --> | |||
</a-layout> | |||
</div> | |||
</template> | |||
<script lang="ts" setup> | |||
import { ref, computed } from 'vue'; | |||
import { store } from '@/store'; | |||
import { router } from '@/router'; | |||
import LayoutSwiper from '@/components/layout/swiper/index.vue' | |||
import LayoutTabs from '@/components/layout/tabs/index.vue' | |||
// import ASider from './sider/aSider.vue'; | |||
import AHeader from './header/aHeader.vue'; | |||
import { MenuUnfoldOutlined, MenuFoldOutlined, } from '@ant-design/icons-vue'; | |||
const collapsed = computed(() => { | |||
return store.state.collapsed | |||
}) | |||
const onBreakpoint = (broken : boolean) => { | |||
console.log(broken); | |||
const toRouter = () => { | |||
router.push('/job') | |||
} | |||
</script> | |||
<style lang="less"> | |||
::-webkit-scrollbar { | |||
/* 设置滚动条宽度 */ | |||
width: 0px; | |||
} | |||
.logo { | |||
float: left; | |||
width: 120px; | |||
height: 31px; | |||
margin: 16px 24px 16px 0; | |||
background: rgba(255, 255, 255, 0.3); | |||
margin: 16px 34px 16px 0; | |||
background: #000; | |||
} | |||
.ant-layout-content { | |||
width: 100%; | |||
padding-inline: 50px; | |||
overflow-y: auto; | |||
background-color: #f0f0f0 !important; | |||
div { | |||
padding: 30px 0; | |||
} | |||
} | |||
.ant-layout-footer { | |||
position: fixed; | |||
bottom: 0; | |||
z-index: 99; | |||
width: calc(100% - 600px); | |||
// position: absolute; | |||
// bottom: 0; | |||
// z-index: 99; | |||
// padding: 30px; | |||
width: 100%; | |||
background-color: #cccccc !important; | |||
color: #fff !important; | |||
} |
@@ -0,0 +1,79 @@ | |||
<template> | |||
<div class="aaa"> | |||
<a-image width="100vw" height="46vh" | |||
src="https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr" style="border-bottom: 1px saddlebrown | |||
solid;"/> | |||
</div> | |||
<div class="content"> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<a-row type="flex" justify="end"> | |||
<a-col span="5"> | |||
<div class="login-box"> | |||
<a-tabs v-model:activeKey="activeKey"> | |||
<a-tab-pane key="1" tab="我要找工作"> | |||
<a-row :gutter="[0, 16]"> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="账号" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="密码" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="验证码" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-button type="primary" block>登录/注册</a-button> | |||
</a-col> | |||
<a-col span="24"> | |||
忘记密码? | |||
</a-col> | |||
</a-row> | |||
</a-tab-pane> | |||
<a-tab-pane key="2" tab="我要招聘" force-render>我要招聘</a-tab-pane> | |||
</a-tabs> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed } from 'vue'; | |||
</script> | |||
<style lang="less"> | |||
.aaa { | |||
position: relative; | |||
} | |||
.content { | |||
// display: none; | |||
position: absolute; | |||
top: 94px; | |||
left: 0; | |||
right: 0; | |||
bottom: 30px; | |||
height: 46vh; | |||
padding-inline: 50px; | |||
} | |||
.login-box { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 20px 30px; | |||
border-radius: 10px; | |||
background-color: aliceblue; | |||
} | |||
.ant-tabs-nav-wrap { | |||
flex: none !important; | |||
} | |||
.ant-tabs-nav { | |||
justify-content: center !important; | |||
} | |||
</style> |
@@ -0,0 +1,59 @@ | |||
<template> | |||
<div class="tabs-content"> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="24"> | |||
<a-tabs v-model:activeKey="activeKey"> | |||
<a-tab-pane key="1" tab="求职招聘">Content of Tab Pane 1</a-tab-pane> | |||
<a-tab-pane key="2" tab="个人求职"> | |||
<div style="padding-inline: 50px;"> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<job-search></job-search> | |||
<job-list></job-list> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
</a-tab-pane> | |||
<a-tab-pane key="3" tab="企业招聘">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="家政">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="招聘会">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="职场资讯">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="下载专区">Content of Tab Pane 3</a-tab-pane> | |||
</a-tabs> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed } from 'vue'; | |||
import JobSearch from '@/components/job/search/index.vue' | |||
import JobList from '@/components/job/list/index.vue' | |||
let activeKey = ref('2') | |||
</script> | |||
<style lang="less" scoped> | |||
.tabs-content { | |||
position: absolute; | |||
top: 64px; | |||
width: 100%; | |||
// background-color: #f0f0f0; | |||
// padding-inline: 50px; | |||
} | |||
::v-deep(.ant-tabs-nav-wrap) { | |||
width: 100%; | |||
flex: none !important; | |||
justify-content: center !important; | |||
} | |||
::v-deep(.ant-tabs-nav) { | |||
background-color: #fff; | |||
} | |||
.ant-tabs-content-holder { | |||
background-color: #f0f0f0 !important; | |||
} | |||
</style> |
@@ -3,168 +3,16 @@ import { HomeOutlined } from '@ant-design/icons-vue'; | |||
import { routerList } from './routerList'; | |||
// 权限管理 | |||
const PermissionRoute : AppRouteRecordRaw = { | |||
path: '/permission', | |||
name: 'permission', | |||
component: routerList.Permission, | |||
const HomeRoute : AppRouteRecordRaw = { | |||
path: '/home', | |||
name: 'home', | |||
component: routerList.Home, | |||
meta: { | |||
title: '权限管理', | |||
title: '首页', | |||
icon: HomeOutlined | |||
}, | |||
children: [ | |||
{ | |||
path: '/role', | |||
name: 'role', | |||
component: routerList.ROLE, | |||
meta: { | |||
title: '角色管理', | |||
icon: HomeOutlined | |||
} | |||
}, | |||
{ | |||
path: '/account', | |||
name: 'account', | |||
component: routerList.Account, | |||
meta: { | |||
title: '账号管理', | |||
icon: HomeOutlined | |||
} | |||
}, | |||
{ | |||
path: '/permission/list', | |||
name: 'list', | |||
component: routerList.List, | |||
meta: { | |||
title: '权限管理', | |||
icon: HomeOutlined | |||
} | |||
} | |||
] | |||
}; | |||
// 企业相关 | |||
const CompanyRoute : AppRouteRecordRaw = { | |||
path: '/company', | |||
name: 'company', | |||
component: routerList.Company, | |||
meta: { | |||
title: '企业管理', | |||
icon: HomeOutlined | |||
}, | |||
children: [{ | |||
path: '/member', | |||
name: 'member', | |||
component: routerList.Member, | |||
meta: { | |||
title: '企业列表', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
{ | |||
path: '/vip', | |||
name: 'vip', | |||
component: routerList.Vip, | |||
meta: { | |||
title: 'VIP管理', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
{ | |||
path: '/job', | |||
name: 'job', | |||
component: routerList.Job, | |||
meta: { | |||
title: '职位管理', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
{ | |||
path: '/department', | |||
name: 'department', | |||
component: routerList.Department, | |||
meta: { | |||
title: '部门管理', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
] | |||
}; | |||
// 求职者管理 | |||
const JokSeekerRoute : AppRouteRecordRaw = { | |||
path: '/job-seeker', | |||
name: 'jobSeeker', | |||
component: routerList.JobSeeker, | |||
meta: { | |||
title: '求职者管理', | |||
icon: HomeOutlined | |||
}, | |||
children: [ | |||
{ | |||
path: '/resume', | |||
name: 'jobResume', | |||
component: routerList.JobResume, | |||
meta: { | |||
title: '简历列表', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
] | |||
}; | |||
// 招聘会管理 | |||
const JokFairRoute : AppRouteRecordRaw = { | |||
path: '/job-fair', | |||
name: 'jobFair', | |||
component: routerList.JokFair, | |||
meta: { | |||
title: '招聘会管理', | |||
icon: HomeOutlined | |||
}, | |||
children: [ | |||
{ | |||
path: '/job/fair/list', | |||
name: 'jobFairList', | |||
component: routerList.JobList, | |||
meta: { | |||
title: '招聘会列表', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
] | |||
}; | |||
// 资讯管理 | |||
const InformationRoute : AppRouteRecordRaw = { | |||
path: '/information', | |||
name: 'information', | |||
component: routerList.Information, | |||
meta: { | |||
title: '资讯管理', | |||
icon: HomeOutlined | |||
}, | |||
children: [ | |||
{ | |||
path: '/section', | |||
name: 'section', | |||
component: routerList.InformationSection, | |||
meta: { | |||
title: '栏目/频道', | |||
icon: HomeOutlined | |||
}, | |||
}, | |||
{ | |||
path: '/article', | |||
name: 'article', | |||
component: routerList.InformationArticle, | |||
meta: { | |||
title: '文章列表', | |||
icon: HomeOutlined | |||
}, | |||
} | |||
], | |||
}; | |||
export const routesModuleList : AppRouteModule[] = [CompanyRoute, JokSeekerRoute, JokFairRoute, InformationRoute, PermissionRoute]; | |||
export const routesModuleList : AppRouteModule[] = [HomeRoute]; |
@@ -1,42 +1,6 @@ | |||
import Permission from '@/views/permission/index.vue'; | |||
import ROLE from '@/views/permission/role/index.vue'; | |||
import Account from '@/views/permission/account/index.vue'; | |||
import List from '@/views/permission/list/index.vue'; | |||
// 企业管理 | |||
import Company from '@/views/company/index.vue'; | |||
import Department from '@/views/company/department/index.vue'; | |||
import Job from '@/views/company/position/index.vue'; | |||
import Member from '@/views/company/list/index.vue'; | |||
import Vip from '@/views/company/vip/index.vue'; | |||
import Home from '@/views/home/index.vue'; | |||
// 求职者管理 | |||
import JobSeeker from '@/views/jobSeeker/index.vue'; | |||
import JobResume from '@/views/jobSeeker/resume/index.vue'; | |||
// 招聘会管理 | |||
import JobFair from '@/views/jobFair/index.vue'; | |||
import JobList from '@/views/jobFair/list.vue'; | |||
// 资讯管理 | |||
import Information from '@/views/information/index.vue'; | |||
import InformationSection from '@/views/information/section/index.vue'; | |||
import InformationArticle from '@/views/information/article/index.vue'; | |||
export const routerList = { | |||
Permission, | |||
ROLE, | |||
Account, | |||
List, | |||
Company, | |||
Department, | |||
Job, | |||
Member, | |||
Vip, | |||
JobSeeker, | |||
JobResume, | |||
JobFair, | |||
JobList, | |||
Information, | |||
InformationSection, | |||
InformationArticle | |||
Home, | |||
} |
@@ -4,6 +4,8 @@ import { HomeOutlined } from '@ant-design/icons-vue'; | |||
// import LOGIN from '@/views/login/login.vue'; | |||
// import HOME from '@/views/home/home.vue'; | |||
import Layout from '@/components/layout/index.vue'; | |||
import Home from '@/views/home/index.vue'; | |||
import Job from '@/views/job/index.vue'; | |||
// // 登录路由 | |||
// export const LoginRoute: AppRouteRecordRaw = { | |||
@@ -22,7 +24,25 @@ export const LayoutRoute: AppRouteRecordRaw = { | |||
component: Layout, | |||
meta: { | |||
title: '登录' | |||
} | |||
}, | |||
children: [ | |||
{ | |||
path: '/home', | |||
name: 'home', | |||
component: Home, | |||
meta: { | |||
title: '首页' | |||
} | |||
}, | |||
{ | |||
path: '/job', | |||
name: 'job', | |||
component: Job, | |||
meta: { | |||
title: '求职招聘' | |||
} | |||
} | |||
] | |||
} | |||
export const basicRoutes = [ |
@@ -63,7 +63,7 @@ button:focus-visible { | |||
height: 100%; | |||
overflow: hidden; | |||
overflow: auto; | |||
text-align: center; | |||
background-color: #f0f0f0 !important; | |||
} | |||
@media (prefers-color-scheme: light) { | |||
@@ -78,3 +78,9 @@ button:focus-visible { | |||
background-color: #f9f9f9; | |||
} | |||
} | |||
/* 从右开始 */ | |||
.horizontal-flex-end { | |||
display: flex; | |||
justify-content: flex-end; | |||
} |
@@ -0,0 +1,288 @@ | |||
<!-- slice(0,6), 6,14 --> | |||
<template> | |||
<div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 36px;">热门企业</div> | |||
<div class="mt10"> | |||
<a-row :gutter="[10,10]"> | |||
<a-col span="18"> | |||
<a-row :gutter="[10,10]"> | |||
<a-col span="8" v-for="(item, index) in data1"> | |||
<div class="compamy-box"> | |||
<div class="compamy-img mt10"> | |||
<a-image width="50px" height="50px" :src="item.image"></a-image> | |||
</div> | |||
<div class="compamy-title mt10"> | |||
{{item.title}} | |||
</div> | |||
<div class="compamy-nature mt10"> | |||
{{item.des}} | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
<a-col span="6"> | |||
<a-row> | |||
<a-col span="24"> | |||
<a-list size="small" bordered :data-source="data" style="height: 294px"> | |||
<template #renderItem="{ item }"> | |||
<a-list-item>{{ item }}</a-list-item> | |||
</template> | |||
<template #header> | |||
<div>Header</div> | |||
</template> | |||
</a-list></a-col> | |||
</a-row> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
<template v-if="showData"> | |||
<a-row :gutter="[10,10]"> | |||
<a-col span="6" v-for="(item, index) in data2"> | |||
<div class="compamy-box"> | |||
<div class="compamy-img mt10"> | |||
<a-image width="50px" height="50px" :src="item.image"></a-image> | |||
</div> | |||
<div class="compamy-title mt10"> | |||
{{item.title}} | |||
</div> | |||
<div class="compamy-nature mt10"> | |||
{{item.des}} | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</template> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted } from 'vue'; | |||
let companyList = ref<object[]>([ | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
}, | |||
{ | |||
image: 'https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png', | |||
title: '中山市海港城安域有限公司', | |||
des: '民营企业:100-1000人' | |||
} | |||
]) | |||
let data1 = ref([]) | |||
let data2 = ref([]) | |||
let showData = ref(false) | |||
onMounted(() => { | |||
if (companyList.value.length > 14) { | |||
data1.value = companyList.value.slice(0, 6) | |||
data2.value = companyList.value.slice(6, 14) | |||
showData.value = true; | |||
} else { | |||
data1.value = companyList.value; | |||
showData.value = false; | |||
} | |||
}) | |||
</script> | |||
<style lang="less" scoped> | |||
.compamy-box { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-around; | |||
align-items: center; | |||
width: 100%; | |||
padding: 10px; | |||
background-color: #ffffff; | |||
.compamy-img {} | |||
.compamy-title {} | |||
.compamy-nature {} | |||
} | |||
.mt10 { | |||
margin-bottom: 10px; | |||
} | |||
</style> |
@@ -0,0 +1,15 @@ | |||
<template> | |||
<!-- <home-swiper></home-swiper> --> | |||
<home-hot></home-hot> | |||
<home-job></home-job> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed } from 'vue'; | |||
// import HomeSwiper from '@/views/home/swiper/index.vue' | |||
import HomeHot from '@/views/home/hot/index.vue' | |||
import HomeJob from '@/views/home/job/index.vue' | |||
</script> | |||
<style> | |||
</style> |
@@ -0,0 +1,88 @@ | |||
<template> | |||
<div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 36px;">精选职位</div> | |||
<a-tabs v-model:activeKey="activeKey"> | |||
<a-tab-pane key="1" tab="最新招聘"> | |||
<a-row :gutter="[10,10]"> | |||
<a-col span="8" v-for="(item, index) in companyList"> | |||
<div class="job-box"> | |||
<div class="job-title"> | |||
<div class="aaaa mt10"> | |||
<div>前端工程师</div> | |||
<div>5000-7000元</div> | |||
</div> | |||
<div> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
<a-tag>Tag 1</a-tag> | |||
</div> | |||
</div> | |||
<div class="job-company"> | |||
<div class="aaaa mt10"> | |||
<div>中山市海港城安域有限公司</div> | |||
<div>查看更多</div> | |||
</div> | |||
<div> | |||
小榄镇 | |||
</div> | |||
</div> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
<div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 24px;">查看更多</div> | |||
</a-tab-pane> | |||
<a-tab-pane key="2" tab="急招职位" force-render>Content of Tab Pane 2</a-tab-pane> | |||
<a-tab-pane key="3" tab="高薪职位">Content of Tab Pane 3</a-tab-pane> | |||
<a-tab-pane key="3" tab="校园招聘">Content of Tab Pane 3</a-tab-pane> | |||
</a-tabs> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed, onMounted } from 'vue'; | |||
let companyList = ref<object[]>([{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]) | |||
let data1 = ref([]) | |||
let data2 = ref([]) | |||
let showData = ref(false) | |||
onMounted(() => { | |||
if (companyList.value.length > 9) { | |||
companyList.value = companyList.value.slice(0, 9) | |||
} else { | |||
data1.value = companyList.value; | |||
showData.value = false; | |||
} | |||
}) | |||
</script> | |||
<style lang="less" scoped> | |||
.job-box { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-around; | |||
// align-items: center; | |||
width: 100%; | |||
.job-title { | |||
padding: 20px; | |||
background-color: #ffffff; | |||
.aaaa { | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
} | |||
.job-company { | |||
padding: 20px; | |||
background-color: #cccccc; | |||
.aaaa { | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
} | |||
} | |||
.mt10 { | |||
margin-bottom: 10px; | |||
} | |||
</style> |
@@ -0,0 +1,76 @@ | |||
<template> | |||
<a-image width="100vw" height="40vh" | |||
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" /> | |||
<div class="content"> | |||
<a-row type="flex" justify="center"> | |||
<a-col span="18"> | |||
<a-row type="flex" justify="end"> | |||
<a-col span="5"> | |||
<div class="login-box"> | |||
<a-tabs v-model:activeKey="activeKey"> | |||
<a-tab-pane key="1" tab="我要找工作"> | |||
<a-row :gutter="[0, 16]"> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="账号" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="密码" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-input v-model:value="value" placeholder="验证码" /> | |||
</a-col> | |||
<a-col span="24"> | |||
<a-button type="primary" block>登录/注册</a-button> | |||
</a-col> | |||
<a-col span="24"> | |||
忘记密码? | |||
</a-col> | |||
</a-row> | |||
</a-tab-pane> | |||
<a-tab-pane key="2" tab="我要招聘" force-render>我要招聘</a-tab-pane> | |||
</a-tabs> | |||
</div> | |||
</a-col> | |||
</a-row> | |||
</a-col> | |||
</a-row> | |||
</div> | |||
</template> | |||
<script setup lang="ts"> | |||
import { ref, computed } from 'vue'; | |||
</script> | |||
<style lang="less" scoped> | |||
.ant-image { | |||
position: relative; | |||
} | |||
.content { | |||
position: absolute; | |||
top: 94px; | |||
left: 0; | |||
right: 0; | |||
bottom: 30px; | |||
z-index: 99; | |||
// height: 30vh; | |||
padding-inline: 50px; | |||
} | |||
.login-box { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 20px 30px; | |||
border-radius: 10px; | |||
background-color: aliceblue; | |||
} | |||
.ant-tabs-nav-wrap { | |||
flex: none !important; | |||
} | |||
.ant-tabs-nav { | |||
justify-content: center !important; | |||
} | |||
</style> |
@@ -0,0 +1,8 @@ | |||
<template> | |||
</template> | |||
<script> | |||
</script> | |||
<style> | |||
</style> |