提交 6f0bba7e authored 作者: 刘旭's avatar 刘旭

更新ui

上级 760da05b
<template>
<div class="policy flx-column-center-between">
<div class="policy-top">{{ title }}</div>
<div class="policy-content card">
<div v-for="(item, index) in list" :key="index" class="policy-item">
<div class="policy-content card" :style="{ minHeight: minHeight + 'px' }">
<div
v-for="(item, index) in list"
:key="index"
class="policy-item"
@click="handleChange(item)"
>
<span class="poliy-item-order" :class="index > 2 ? 'poliy-item-postorder' : ''">{{
index + 1
}}</span>
......@@ -35,6 +40,12 @@ defineProps({
default: 200
}
})
const emits = defineEmits(['change'])
const handleChange = (row: any) => {
emits('change', row)
}
</script>
<style lang="scss" scoped>
......@@ -51,7 +62,6 @@ defineProps({
}
.policy-content {
width: 100%;
min-height: 200px;
display: flex;
flex-direction: column;
align-items: start;
......
......@@ -8,9 +8,12 @@
>
<template #prefix>
<el-select v-model="selectValue" placeholder="">
<el-option label="找工作" value="1" />
<el-option label="找企业" value="2" />
<el-option label="找人才" value="3" />
<el-option
v-for="(item, index) in selectOptions"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
<template #suffix>
......@@ -25,11 +28,19 @@ defineProps({
placeholder: {
type: String,
default: '请输入搜索关键字'
}
},
selectOptions: {
type: Array,
default: () => [
{ label: '找工作', value: 1 },
{ label: '找企业', value: 2 },
{ label: '找人才', value: 3 }
]
} as any
})
const searchValue = ref()
const selectValue = ref('1')
const selectValue = ref(1)
const emits = defineEmits(['searchChange'])
const handleSearch = () => {
......
......@@ -32,6 +32,14 @@ const routes = [
component: () => import('@/views/recruitmentManagement/enterpriseRecruitment.vue')
},
{
path: '/recruitmentManagement/editCompany',
component: () => import('@/views/recruitmentManagement/editCompany.vue')
},
{
path: '/recruitmentManagement/addAdministrator',
component: () => import('@/views/recruitmentManagement/addAdministrator.vue')
},
{
path: '/specialRecruitment',
component: () => import('@/views/specialRecruitment/index.vue')
},
......@@ -90,6 +98,10 @@ const routes = [
{
path: '/commonDetail',
component: () => import('@/components/commonDetail.vue')
},
{
path: '/jobDetail',
component: () => import('@/views/flexibleEmploym/details.vue')
}
]
},
......
......@@ -8,6 +8,13 @@ export const getSkillTraining = (data: any) => {
)
}
export const getSkillTrainingList = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeSkillTraining,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
export const getPolicyList = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNotice,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
......
import request from '@/services'
// 查询
export const getSpecialRecruitment = (data: any) => {
return request.post(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeSubjectRecruit,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc',
data
)
}
import { defineStore } from 'pinia'
import piniaPersistConfig from '../helper/piniaPersist'
export const usejobStore = defineStore('jobStore', {
export const useJobDetailStore = defineStore('jobDetailStore', {
// 相当于data
state: () => {
return {
jobDetail: null
jobDetail: {} as any
}
},
// 相当于计算属性
......@@ -15,5 +15,6 @@ export const usejobStore = defineStore('jobStore', {
setJobDetail(jobDetail: any) {
this.jobDetail = jobDetail
}
}
},
persist: piniaPersistConfig('globalStore')
})
......@@ -26,6 +26,11 @@
display: flex;
flex-direction: column;
}
.flx-center-column {
display: flex;
align-items: center;
flex-direction: column;
}
.flx-column-center-between {
display: flex;
......
......@@ -42,7 +42,7 @@
</div>
<div v-else-if="index === 5" class="live-broadcast">
<div v-for="col in 6" :key="col" class="live-broadcast-item">
<img src="@/assets/img/Frame690(3).png" height="214" />
<img src="@/assets/img/Frame377.png" height="214" />
<p>
有时候,上天没有给你想要的,不是因为你不配,而是你值得更好的
有时候,上天没有给你想要的,不是因为你不配,而是你值得更好的
......@@ -62,7 +62,7 @@
</div>
<div v-else-if="index === 6" class="flx-direction-column">
<div v-for="col in 5" :key="col" class="entrepreneurship-item">
<img src="@/assets/img/Frame690(3).png" />
<img src="@/assets/img/Frame379.png" />
<div class="entrepreneurship-item-rg">
Lorem ipsum dolor sit amet, consectetur adipiscingelit. Aenean euismod bibendum
laoreet. Proin gravidadolor sit amet lacus accumsan et viverra justocommodo. Proin
......
......@@ -2,12 +2,14 @@
<div class="flexible flx-column-center-between">
<div class="flexible-top">{{ title }}</div>
<div class="flexible-content card">
<div v-for="(item, index) in list" :key="index" class="flexible-item">
<span class="poliy-item-order" :class="index > 2 ? 'poliy-item-postorder' : ''">{{
index + 1
}}</span>
<el-link>{{ item.FTITLE }}</el-link>
<img v-show="index < 3" src="@/assets/img/icon-new.png" width="28" height="15" alt="" />
<div>
<div v-for="(item, index) in list" :key="index" class="flexible-item">
<span class="poliy-item-order" :class="index > 2 ? 'poliy-item-postorder' : ''">{{
index + 1
}}</span>
<el-link>{{ item.FTITLE }}</el-link>
<img v-show="index < 3" src="@/assets/img/icon-new.png" width="28" height="15" alt="" />
</div>
</div>
<div v-show="isMore" class="flexible-footer">
查看更多<el-icon><i-ep-DArrowRight /></el-icon>
......@@ -55,6 +57,7 @@ defineProps({
color: #ffffff;
}
.flexible-content {
min-height: 401px;
width: 100%;
display: flex;
flex-direction: column;
......@@ -62,6 +65,9 @@ defineProps({
padding: 0 20px;
box-sizing: border-box;
padding-bottom: 16px;
display: flex;
flex-direction: column;
justify-content: space-between;
.flexible-item {
display: flex;
......
<template>
<div class="container">
<div class="details-header">
<div class="content">
<div>
<div class="details-header-top">
<div>装卸</div>
<div class="salary-range">{{ detailData?.salaryRange }}</div>
</div>
<div class="details-header-center">
{{ detailData?.cityName }}/{{
detailData?.workingLife ? detailData?.workingLife : '经验不限'
}}/{{ detailData?.academicRequirement ? detailData?.academicRequirement : '学历不限' }}
</div>
<div class="details-header-bottom">
<img src="https://rms.junrunrenli.com/static/img/money02.df9ff2d6.png" class="icon" />
推荐金额
<div>{{ detailData?.rewards }}</div>
</div>
</div>
<div class="submit">
<el-button @click="show = !show">立即投递</el-button>
<div v-if="show" class="popupbox">
<img src="https://rms.junrunrenli.com/static/img/popup02.691d38c2.png" />
</div>
</div>
</div>
</div>
<div class="details-content">
<div class="content">
<div class="title">职位描述:</div>
<div class="text">
{{ detailData?.positionDescribe }}
</div>
<div class="title">工作地点</div>
<div class="text">
<img :src="locationIcon" class="address" />
{{ detailData?.workingplaceAddress }}
</div>
<div class="title">公司信息</div>
<div class="text">
<img :src="companyIcon" class="comp" />
{{ detailData?.customerName }}
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { companyIcon, locationIcon } from '@/utils/index'
import { useJobDetailStore } from '@/stores/modules/jobDetails'
const globalStore = useJobDetailStore()
const detailData = computed(() => globalStore.getJobDtail)
const show = ref(false)
</script>
<style lang="scss" scoped>
.container {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
.details-header {
background-color: #f5f5f5;
width: 100%;
height: 238px;
display: flex;
justify-content: center;
.content {
padding-top: 40px;
width: 1316px;
display: flex;
justify-content: space-between;
.details-header-top {
display: flex;
font-size: 18px;
color: #242424;
margin-bottom: 25px;
align-items: flex-end;
.salary-range {
font-size: 16px;
color: #f3911d;
margin-left: 20px;
}
}
.details-header-center {
color: #666;
font-size: 15px;
display: inline-block;
margin-bottom: 25px;
}
.details-header-bottom {
font-size: 16px;
display: flex;
align-items: flex-end;
.icon {
width: 18px;
height: 18px;
margin-right: 10px;
}
div {
margin-left: 10px;
color: #f3911d;
}
}
.submit {
position: relative;
.el-button {
width: 140px;
height: 48px;
line-height: 48px;
background-color: #f3911d;
border-radius: 4px;
color: #fff;
padding: 0;
font-size: 20px;
}
.popupbox {
position: absolute;
z-index: 20;
right: -5px;
top: 50px;
img {
height: 171px;
width: 170px;
}
}
}
}
}
.details-content {
width: 100%;
background-color: #ffffff;
padding-top: 40px;
display: flex;
justify-content: center;
.content {
width: 1316px;
.title {
font-size: 18px;
margin-bottom: 16px;
color: #242424;
font-weight: 700;
}
.text {
font-size: 13px;
color: #666;
margin-bottom: 30px;
vertical-align: middle;
display: flex;
align-items: center;
.address {
width: 18px;
height: 20px;
display: inline-block;
margin-right: 10px;
vertical-align: middle;
padding-bottom: 2px;
}
.comp {
width: 50px;
height: 50px;
margin-right: 20px;
display: inline-block;
vertical-align: middle;
}
}
}
}
}
</style>
......@@ -27,7 +27,12 @@
class="hot-position-tab-pane"
>
<div v-if="positionList.length" class="position-list">
<div v-for="col in positionList" :key="col.id" class="position-item">
<div
v-for="col in positionList"
:key="col.id"
class="position-item"
@click="toJobDetail(col)"
>
<div class="flx-justify-between" style="margin-bottom: 20px">
<div class="position-title nowrap-ellipsis">
{{ col.postName }}
......@@ -61,8 +66,11 @@
<span>{{ col.recruitingType }}</span>
<el-divider v-show="col.recruitingType" direction="vertical" />
<span v-show="col.ageRequirement">招聘{{ col.ageRequirement }}人</span>
<el-divider v-show="col.ageRequirement" direction="vertical" />
<span>餐饮</span>
<el-divider
v-show="col.ageRequirement && col.industryType"
direction="vertical"
/>
<span>{{ col.industryType }}</span>
</div>
</div>
</div>
......@@ -78,8 +86,11 @@
<script setup lang="ts">
import { baseURL } from '@/services'
import { getPositionList, getFlexibleEmploym } from '@/services/api/flexibleEmploym'
import { useJobDetailStore } from '@/stores/modules/jobDetails'
import flexible from '@/views/flexibleEmploym/components/flexible.vue'
const jobDetailStore = useJobDetailStore()
const router = useRouter()
const tabsList = [
{ label: '安保', name: 0 },
{ label: '技术', name: 1 },
......@@ -88,9 +99,10 @@ const tabsList = [
{ label: '保洁', name: 4 },
{ label: '快递', name: 5 },
{ label: '促销员', name: 6 },
{ label: '店', name: 7 },
{ label: '店', name: 7 },
{ label: '服务', name: 8 }
]
const listQuery = reactive({
obj: {
postName: tabsList[0].label
......@@ -113,28 +125,20 @@ const flexibleNameList = [
{ name: '新闻', field: 'XwData' }
]
const flexibleList = [
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '深圳市创业带动就业补贴办事指南' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' },
{ detail: '关于协助做好2022年农村电商“省级精英训练营”宣传发动有关工作的通知' }
]
const handleChange = (name: number) => {
listQuery.obj.postName = tabsList[name].label
initPosition()
}
const toJobDetail = (row: any) => {
jobDetailStore.setJobDetail(row)
router.push({ path: 'jobDetail' })
}
const search = () => {
initPosition()
// console.log(searchValue.value)
}
const initPosition = async () => {
flexibleLoading.value = true
const res: any = await getPositionList(listQuery)
......
import Frame690 from '@/assets/img/Frame690.png'
import Frame691 from '@/assets/img/Frame690(1).png'
import Frame692 from '@/assets/img/Frame690(2).png'
import Frame693 from '@/assets/img/Frame690(3).png'
import Frame694 from '@/assets/img/Frame690(4).png'
import Frame695 from '@/assets/img/Frame690(5).png'
import Frame696 from '@/assets/img/Frame690(6).png'
import Frame697 from '@/assets/img/Frame690(7).png'
import gonggao from '@/assets/img/icon-gonggao.png'
import zhengnc from '@/assets/img/icon-zhengnc.png'
import xinwen from '@/assets/img/icon-xinwen.png'
......@@ -17,17 +9,6 @@ import tui from '@/assets/img/icon-tui.png'
import jia from '@/assets/img/icon-jia.png'
import can from '@/assets/img/icon-can.png'
export const imgList = [
{ name: '粤海街道专题', url: Frame690 },
{ name: '南头街道专题', url: Frame691 },
{ name: '西丽街道专题', url: Frame692 },
{ name: '沙河街道专题', url: Frame693 },
{ name: '南山街道专题', url: Frame694 },
{ name: '蛇口街道专题', url: Frame695 },
{ name: '招商街道专题 ', url: Frame696 },
{ name: '桃源街道专题 ', url: Frame697 }
]
export const employmentList = [
{ name: '公告', url: gonggao },
{ name: '政策', url: zhengnc },
......
......@@ -17,8 +17,8 @@
<div class="home-tp flx-direction-column">
<div class="n-title">公共就业服务政策</div>
<div class="flx-justify-between policy-bottom">
<policy title="南山就业政策公告" :list="homeData?.GgData" />
<policy title="南山就业活动" :list="homeData?.HdData" />
<policy title="南山就业政策公告" :list="homeData?.GgData" @change="handleChange" />
<policy title="南山就业活动" :list="homeData?.HdData" @change="handleChange" />
</div>
</div>
<div class="home-tp">
......@@ -111,9 +111,15 @@ import { getHome } from '@/services/api/home'
import { employmentList, sceneList } from './index'
import policy from '../../components/policy.vue'
const router = useRouter()
const loading = ref(true)
const homeData = ref()
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'B', FTITLE: row.FTITLE } })
}
const init = async () => {
loading.value = false
const res: any = await getHome()
......
......@@ -12,8 +12,20 @@
</template>
</el-input>
<div class="flx-justify-between" style="margin-bottom: 64px">
<policy title="南山就业政策公告" :list="policyData?.GgData" is-more />
<policy title="南山就业活动" :list="policyData?.HdData" is-more />
<policy
title="南山就业政策公告"
:list="policyData?.GgData"
is-more
:min-height="401"
@change="handleChange"
/>
<policy
title="南山就业活动"
:list="policyData?.HdData"
is-more
:min-height="401"
@change="handleChange"
/>
</div>
</div>
</div>
......@@ -24,6 +36,8 @@ import { baseURL } from '@/services'
import { getPolicy } from '@/services/api/policy'
import policy from '@/components/policy.vue'
const router = useRouter()
const searchValue = ref()
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10 })
......@@ -32,6 +46,9 @@ const policyData: any = ref()
const search = () => {
console.log(searchValue.value)
}
const handleChange = (row: any) => {
router.push({ path: '/commonDetail', query: { FID: row.FID, FormType: 'B', FTITLE: row.FTITLE } })
}
const init = async () => {
const res: any = await getPolicy(queryList.value)
......
<template>
<div class="administrator">
<div class="container">
<div class="content">
<div class="title">添加管理员</div>
<el-form :model="state.form" label-width="70px" label-position="left">
<el-form-item label="姓名:">
<span>货拉拉</span>
</el-form-item>
<el-form-item label="手机号:">
<span>18000875009</span>
</el-form-item>
<el-form-item label="职位:">
<span>经理</span>
</el-form-item>
</el-form>
</div>
<div class="confirm">
<span>确定</span>
</div>
</div>
</div>
</template>
<script setup lang="ts">
const state = reactive({
form: {} as any
})
</script>
<style lang="scss" scoped>
@import url(./style/addAdministrator.scss);
</style>
<template>
<div style="margin-bottom: 15px">
<div class="position-header">
<el-button type="primary" :icon="CirclePlusFilled">发布职位</el-button>
<div class="tag-list">
<el-tag
v-for="item in positionList"
:key="item.type"
:type="tagActive === item.name ? '' : 'info'"
@click="tagChange(item)"
>{{ item.name }}</el-tag
>
</div>
</div>
<div class="position-list">
<div v-for="(item, index) in 6" :key="index" class="position-item flx-justify-between">
<div>
<div class="position-title">销售经理</div>
<div>
<span class="position-label">大专</span>
<el-divider direction="vertical" />
<span class="position-label">1-3年</span>
<el-divider direction="vertical" />
<span class="position-label">招聘2人</span>
<el-divider direction="vertical" />
<span class="position-label">6K-8K.13薪</span>
<el-divider direction="vertical" />
<span class="position-label">全职</span>
</div>
</div>
<div class="options">
<span class="open"><span class="round open-round" /> 开放中</span>
<span>关闭</span>
<span>编辑</span>
<span>预览</span>
<span>删除</span>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { CirclePlusFilled } from '@element-plus/icons-vue'
import { positionList } from '../config/index'
const tagActive = ref('全部职位')
const tagChange = (row: any) => {
tagActive.value = row.name
}
</script>
<style lang="scss" scoped>
.position-header {
padding: 26px 58px;
background: #ffffff;
border-radius: 12px;
margin-bottom: 16px;
.tag-list {
margin-top: 20px;
.el-tag {
cursor: pointer;
margin-right: 20px;
}
}
}
.position-list {
.position-item {
padding: 24px 58px;
background: #ffffff;
border-radius: 12px;
margin-bottom: 16px;
.position-title {
font-size: 18px;
font-weight: 500;
color: #222222;
margin-bottom: 16px;
}
.position-label {
font-size: 16px;
font-weight: 400;
color: #666666;
}
.options {
display: flex;
font-size: 16px;
font-weight: 400;
color: #222222;
span {
cursor: pointer;
margin-left: 24px;
}
.open {
// background: linear-gradient(90deg, #a5cdff 0%, #177cfa 100%);
// color: #177cfa;
}
.round {
display: inline-block;
width: 8px;
height: 8px;
background: #666666;
border-radius: 50%;
}
// .open-round {
// background: linear-gradient(90deg, #a5cdff 0%, #177cfa 100%);
// color: #177cfa;
// }
}
}
}
</style>
<template>
<div class="resume">
<search style="margin-bottom: 24px" @search-change="searchChange" />
<div class="resume-filter">
<div v-for="item in list" :key="item.name" class="filter-item">
<span class="filter-title">{{ item.name }}</span>
<span class="filter-item-label filter-item-active">不限</span>
<span class="filter-item-label">不限</span>
<span class="filter-item-label">不限</span>
</div>
<div class="clear-filter">
<span>清空筛选</span>
</div>
</div>
<div class="resume-list">
<div v-for="item in 3" :key="item" class="resume-item">
<div style="display: flex; padding: 20px 0 20px 40px">
<div class="flx-center-column">
<el-avatar
src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"
style="width: 64px; height: 64px"
/>
<div class="salary">30-35k</div>
</div>
<div class="user-info">
<div class="user-name">陈琳</div>
<div style="margin: 10px 0">
<span>27岁</span>
<el-divider direction="vertical" />
<span></span>
<el-divider direction="vertical" />
<span>1年</span>
<el-divider direction="vertical" />
<span>硕士</span>
<el-divider direction="vertical" />
<span>离职-随时到岗</span>
</div>
<div class="flx-justify-between" style="width: 838px">
<p>
强目标导向,并基于当下战略目标持续发现问题,定义问题,输出了解增长拉新有效策略解决问题成功的0-1及1-10经历,深入.
强目标导向,并基于当下战略目标持续发现问题,定义问题,输出了解增长拉新有效策略解决问题成功的0-1及1-10经历,深入.
</p>
<div class="flx-direction-column" style="font-size: 14px">
<div class="flx-align-center" style="margin-bottom: 6px">
<div style="color: #999999">职位:</div>
<span>华熙海御</span>
<div
style="
width: 4px;
height: 4px;
background: #cccccc;
border-radius: 50%;
margin: 0 4px;
"
></div>
<span>运营经理/主管</span>
</div>
<div class="flx-align-center">
<div style="color: #999999">职位:</div>
<span>华熙海御</span>
<div
style="
width: 4px;
height: 4px;
background: #cccccc;
border-radius: 50%;
margin: 0 4px;
"
></div>
<spa>运营经理/主管</spa>
</div>
</div>
</div>
</div>
</div>
<div class="flx-direction-column" style="padding: 14px 40px 14px 0">
<div class="resume-btn flx-center">简历待定</div>
<div class="resume-btn flx-center">人才库</div>
<div class="resume-btn flx-center">人才储备</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import search from '@/components/search.vue'
const list = [
{ name: '学历要求' },
{ name: '院校要求' },
{ name: '经验要求' },
{ name: '年龄要求' }
]
const searchChange = (searchValue: string) => {}
</script>
<style lang="scss" scoped>
.resume {
display: flex;
align-items: center;
flex-direction: column;
.resume-filter {
width: 100%;
box-sizing: border-box;
background: #ffffff;
border-radius: 12px;
padding: 16px 24px;
margin-bottom: 24px;
.filter-item {
font-size: 16px;
font-weight: 400;
color: #222222;
margin-bottom: 16px;
display: flex;
flex-wrap: wrap;
align-items: center;
box-sizing: border-box;
.filter-title {
font-size: 16px;
font-weight: 400;
color: #909090;
margin-right: 32px;
}
.filter-item-label {
cursor: pointer;
padding: 4px 12px;
border-radius: 4px;
margin-right: 16px;
}
.filter-item-active {
background: #dcecff;
color: #177cfa;
}
}
.clear-filter {
font-size: 16px;
font-weight: 400;
color: #666666;
display: flex;
justify-content: flex-end;
cursor: pointer;
}
}
.resume-list {
width: 100%;
.resume-item {
margin-bottom: 16px;
background: #ffffff;
border-radius: 12px;
display: flex;
justify-content: space-between;
box-sizing: border-box;
.salary {
background: #ff3333;
border-radius: 28px;
margin-top: 7px;
font-size: 16px;
font-weight: 400;
color: #ffffff;
padding: 2px 7px;
}
.user-info {
margin-left: 16px;
color: #222222;
.user-name {
font-size: 18px;
font-weight: 400;
span {
font-size: 16px;
}
}
p {
width: 467px;
font-size: 16px;
font-weight: 400;
color: #666666;
line-height: 19px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
}
.resume-btn {
cursor: pointer;
border-radius: 4px;
border: 1px solid #177cfa;
padding: 5px 17px;
font-size: 14px;
font-weight: 400;
color: #177cfa;
margin-bottom: 15px;
&:last-child {
margin-bottom: 0;
}
}
}
}
}
</style>
<template>
<el-tabs v-model="activeName" stretch>
<el-tab-pane
v-for="(item, index) in recruitStatus"
:key="index"
:label="item.statu"
:name="item.statu"
>
<div v-for="(col, colIndex) in 4" :key="colIndex" class="tab-item">
<div class="tab-item-tp">
<div class="tab-item-tp-lf">
<el-avatar :src="can" size="large" />
<div class="user-info">
<div>龙昌萍</div>
<div class="flx-align-center">
<span>未知</span>
<el-divider direction="vertical" style="margin-bottom: 0" />
<span>20岁</span>
</div>
<div class="flx-align-center">
<el-icon><i-ep-OfficeBuilding /></el-icon>
<span style="margin-left: 3px">在职求职中</span>
</div>
<div class="flx-align-center">
<el-icon><i-ep-OfficeBuilding /></el-icon>
<span style="margin-left: 3px">2021-09至2024-07</span>
</div>
</div>
</div>
<div class="tab-item-tp-rg">
<div class="flx-align-center">
<span class="info-label">简历待定</span>
<span class="info-label">安排面试</span>
<el-dropdown>
<span class="info-label">更多</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>已面试</el-dropdown-item>
<el-dropdown-item>已录用</el-dropdown-item>
<el-dropdown-item>已入职</el-dropdown-item>
<el-dropdown-item>人才库</el-dropdown-item>
<el-dropdown-item>黑名单</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
<div class="recommend flx-align-center">
推荐指数
<el-rate v-model="rateValue" style="margin-left: 8px" />
</div>
</div>
</div>
<div class="tab-item-bt flx-justify-between">
<div>
<span class="user-label">大专</span>
<el-divider direction="vertical" />
<span class="user-label">长江工程职业技术学校</span>
<el-divider direction="vertical" />
<span class="user-label">计算机软件技术</span>
</div>
<div>
<span class="user-label">抖音运营</span>
<el-divider direction="vertical" />
<span class="user-label">2023/07/10投递</span>
<el-divider direction="vertical" />
<span class="user-label">3323234</span>
</div>
</div>
</div>
</el-tab-pane>
</el-tabs>
</template>
<script setup lang="ts">
import { recruitStatus } from '../config/index'
import can from '@/assets/img/icon-can.png'
const activeName = ref('简历未查看')
const rateValue = ref(4)
</script>
<style lang="scss" scoped>
.tab-item {
background: #ffffff;
border-radius: 12px;
margin-bottom: 16px;
.tab-item-tp {
padding: 16px 24px;
display: flex;
justify-content: space-between;
.tab-item-tp-lf {
display: flex;
.user-info {
display: flex;
flex-direction: column;
margin-left: 8px;
div {
margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
}
span {
font-size: 14px;
font-weight: 400;
color: #666666;
}
}
}
.tab-item-tp-rg {
display: flex;
flex-direction: column;
justify-content: space-between;
.recommend {
font-size: 16px;
font-weight: 400;
color: #222222;
}
:deep(.el-dropdown) {
line-height: normal;
}
}
}
.tab-item-bt {
background: linear-gradient(90deg, #e3f0ff 0%, rgba(227, 240, 255, 0.15) 100%);
border-radius: 0px 0px 12px 12px;
padding: 15px 26px 15px 86px;
.user-label {
font-size: 12px;
font-weight: 400;
color: #666666;
}
}
}
:deep(.el-tabs__active-bar) {
background: linear-gradient(90deg, #a5cdff 0%, #177cfa 100%);
}
.info-label {
padding: 4px 8px;
background: #c0dcff;
border-radius: 4px;
font-size: 14px;
font-weight: 400;
color: #177cfa;
margin-right: 8px;
cursor: pointer;
&:focus {
outline: 0 !important;
}
}
</style>
......@@ -173,10 +173,8 @@ export const recruitStatus = [
{ statu: '黑名单', value: '10份' }
]
export const talentList = [
{ name: '人才储备', value: '' },
{ name: '业绩优秀', value: '' },
{ name: '背景优秀', value: '' },
{ name: '销售', value: '' },
{ name: '技术', value: '' }
export const positionList = [
{ name: '全部职位', type: 0 },
{ name: '开放中', type: 1 },
{ name: '已关闭', type: 2 }
]
<template>
<div class="edit-company">
<div class="container">
<div class="content">
<div class="title">编辑公司信息</div>
<el-form :model="state.form" label-width="90px" label-position="left">
<el-form-item label="公司LOGO" class="flx-align-center">
<img src="@/assets/img/icon-chuang.png" width="54" height="54" />
</el-form-item>
<el-form-item label="公司名称">
<span>货拉拉科技</span>
</el-form-item>
<el-form-item label="公司类型">
<div class="flx-direction-column">
<div
class="info-collapse flx-justify-between"
@click="state.companyTypeAcive = !state.companyTypeAcive"
>
<div>请选择</div>
<el-icon v-show="state.companyTypeAcive"><i-ep-CaretTop /></el-icon>
<el-icon v-show="!state.companyTypeAcive"><i-ep-CaretBottom /></el-icon>
</div>
<div v-show="state.companyTypeAcive" class="info-list">
<span v-for="(item, index) in 20" :key="index">不限酒水</span>
</div>
</div>
</el-form-item>
<el-form-item label="公司规模">
<div class="flx-direction-column">
<div
class="info-collapse flx-justify-between"
@click="state.companyTypeAcive = !state.companyTypeAcive"
>
<div>请选择</div>
<el-icon v-show="state.companyTypeAcive"><i-ep-CaretTop /></el-icon>
<el-icon v-show="!state.companyTypeAcive"><i-ep-CaretBottom /></el-icon>
</div>
<div v-show="state.companyTypeAcive" class="info-list">
<span v-for="(item, index) in 20" :key="index">不限酒水</span>
</div>
</div>
</el-form-item>
<el-form-item label="融资情况">
<div class="flx-direction-column">
<div
class="info-collapse flx-justify-between"
@click="state.companyTypeAcive = !state.companyTypeAcive"
>
<div>请选择</div>
<el-icon v-show="state.companyTypeAcive"><i-ep-CaretTop /></el-icon>
<el-icon v-show="!state.companyTypeAcive"><i-ep-CaretBottom /></el-icon>
</div>
<div v-show="state.companyTypeAcive" class="info-list">
<span v-for="(item, index) in 20" :key="index">不限酒水</span>
</div>
</div>
</el-form-item>
<el-form-item label="公司地址">
<span>深圳市南山区南山街道办1109号7-6楼</span>
</el-form-item>
<el-form-item label="所在街道办">
<div class="flx-direction-column">
<div
class="info-collapse flx-justify-between"
@click="state.companyTypeAcive = !state.companyTypeAcive"
>
<div>请选择</div>
<el-icon v-show="state.companyTypeAcive"><i-ep-CaretTop /></el-icon>
<el-icon v-show="!state.companyTypeAcive"><i-ep-CaretBottom /></el-icon>
</div>
<div v-show="state.companyTypeAcive" class="info-list">
<span v-for="(item, index) in 20" :key="index">不限酒水</span>
</div>
</div>
</el-form-item>
<el-form-item label="公司介绍">
<el-input v-model="state.form.desc" type="textarea" :rows="4" />
</el-form-item>
</el-form>
</div>
<div class="confirm">
<span>确定</span>
</div>
</div>
</div>
</template>
<script setup lang="ts">
const state = reactive({
form: {} as any,
companyTypeAcive: false,
companyType: ''
})
</script>
<style lang="scss" scoped>
@import url(./style/editCompany.scss);
</style>
......@@ -27,7 +27,9 @@
</template>
<el-descriptions-item v-for="item1 in 4" :key="item1">
<template #default>
<el-link :underline="false" href="/job">销售业务</el-link>
<router-link :to="{ path: '#' }" style="text-decoration: none">
<el-link :underline="false">销售业务</el-link>
</router-link>
</template>
</el-descriptions-item>
</el-descriptions>
......
.administrator {
display: flex;
justify-content: center;
padding: 24px 0 46px;
.container {
width: 1316px;
.content {
padding: 24px 36px;
background: #ffffff;
box-shadow: 0px 1px 25px 0px rgba(0, 0, 0, 0.05);
border-radius: 8px;
.title {
font-size: 24px;
font-weight: 500;
color: #177cfa;
text-align: center;
margin-bottom: 16px;
}
}
.confirm {
display: flex;
justify-content: center;
text-align: center;
margin-bottom: 20px;
span {
display: block;
font-size: 20px;
font-weight: 500;
color: #ffffff;
margin-top: 36px;
width: 160px;
height: 52px;
line-height: 52px;
background: linear-gradient(90deg, #177cfa 0%, #177cfa 100%);
border-radius: 8px;
cursor: pointer;
}
}
}
}
.edit-company {
display: flex;
justify-content: center;
padding: 24px 0 46px;
.container {
width: 1316px;
.content {
padding: 24px 36px;
background: #ffffff;
box-shadow: 0px 1px 25px 0px rgba(0, 0, 0, 0.05);
border-radius: 8px;
}
.title {
font-size: 24px;
font-weight: 500;
color: #177cfa;
text-align: center;
margin-bottom: 16px;
}
.info-collapse {
cursor: pointer;
padding: 6px 8px;
height: 32px;
width: 140px;
background: #dcecff;
border-radius: 4px;
box-sizing: border-box;
font-size: 14px;
font-weight: 400;
color: #177cfa;
margin-bottom: 8px;
}
.info-list {
display: flex;
flex-wrap: wrap;
margin-bottom: 8px;
span {
cursor: pointer;
display: inline-block;
height: 20px;
font-size: 14px;
font-weight: 400;
color: #666666;
margin-bottom: 8px;
margin-right: 16px;
&:hover {
color: #177cfa;
}
}
}
:deep(.el-textarea__inner) {
background: #f8f8f8;
}
.confirm {
display: flex;
justify-content: center;
text-align: center;
span {
display: block;
font-size: 20px;
font-weight: 500;
color: #ffffff;
margin-top: 36px;
width: 160px;
height: 52px;
line-height: 52px;
background: linear-gradient(90deg, #177cfa 0%, #177cfa 100%);
border-radius: 8px;
cursor: pointer;
}
}
}
}
......@@ -5,19 +5,12 @@
width: 1316px;
padding-top: 24px;
.enterprise-header {
margin-bottom: 48px;
margin-bottom: 24px;
display: flex;
height: 462px;
.enterprise-header-lf {
width: 869px;
margin-right: 24px;
.el-input {
height: 62px;
margin-bottom: 24px;
:deep(.el-input__wrapper) {
border-radius: 29px;
padding: 0 45px;
}
}
img {
border-radius: 12px;
display: block; /* 将图片设置为块级元素 */
......@@ -33,12 +26,44 @@
font-weight: 500;
color: #ffffff;
}
.manage-list {
display: flex;
margin: 24px 0;
border: 1px solid #177cfa;
border-radius: 8px;
text-align: center;
background-color: #ffffff;
.manage-item {
cursor: pointer;
flex: 0 0 25%;
height: 58px;
line-height: 58px;
border-right: 1px solid #177cfa;
font-size: 24px;
font-weight: 500;
color: #177cfa;
&:nth-child(1) {
border-radius: 8px 0 0 8px;
}
&:nth-child(4) {
border-radius: 0 8px 8px 0;
border-right: 0;
}
}
.active {
background-color: #177cfa;
color: #ffffff;
// border-radius: 8px 0 0 8px;
}
}
}
.enterprise-header-rg {
flex: 1;
background: #ffffff;
border-radius: 12px;
padding: 20px 16px 32px;
padding: 20px 16px;
box-sizing: border-box;
.company-tp {
display: flex;
img {
......@@ -62,40 +87,16 @@
}
.company-detail {
width: 391px;
height: 80px;
height: 243px;
font-size: 12px;
font-weight: 400;
color: #666666;
margin: 24px 0 20px;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-line-clamp: 15;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 25px;
}
.recruit-status {
margin-bottom: 12px;
.status-item {
&:nth-child(2n) {
display: flex;
justify-content: flex-end;
}
.label {
width: 70px;
font-size: 14px;
font-weight: 400;
color: #222222;
text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;
}
span {
font-size: 14px;
font-weight: 400;
color: #666666;
margin-left: 12px;
}
}
}
.btn {
display: block;
......@@ -112,92 +113,6 @@
}
}
}
.talent-list {
width: 222px;
min-height: 20px;
background: #ffffff;
box-shadow: 0px 4px 25px 0px rgba(0, 0, 0, 0.05);
margin-right: 24px;
border-radius: 8px;
.talent-item {
height: 40px;
line-height: 40px;
text-align: center;
cursor: pointer;
&:first-child {
border-radius: 8px 8px 0 0;
}
&:last-child {
border-radius: 0 0 8px 8px;
}
&:hover {
background: #f8f8f8;
}
}
}
.tab-item {
background: #ffffff;
border-radius: 12px;
margin-bottom: 16px;
.tab-item-tp {
padding: 16px 24px;
display: flex;
justify-content: space-between;
.tab-item-tp-lf {
display: flex;
.user-info {
display: flex;
flex-direction: column;
margin-left: 8px;
div {
margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
}
span {
font-size: 14px;
font-weight: 400;
color: #666666;
}
}
}
.tab-item-tp-rg {
display: flex;
flex-direction: column;
justify-content: space-between;
.recommend {
font-size: 16px;
font-weight: 400;
color: #222222;
}
:deep(.el-dropdown) {
line-height: normal;
}
}
}
.tab-item-bt {
background: linear-gradient(90deg, #e3f0ff 0%, rgba(227, 240, 255, 0.15) 100%);
border-radius: 0px 0px 12px 12px;
padding: 15px 26px 15px 86px;
.user-label {
font-size: 12px;
font-weight: 400;
color: #666666;
}
}
}
:deep(.el-tabs__active-bar) {
background: linear-gradient(90deg, #a5cdff 0%, #177cfa 100%);
}
}
.info-label {
padding: 2px 8px;
......@@ -207,10 +122,5 @@
font-weight: 400;
color: #177cfa;
margin-right: 8px;
cursor: pointer;
&:focus {
outline: 0 !important;
}
}
}
......@@ -15,6 +15,7 @@
border: 1px solid #177cfa;
border-radius: 8px;
.train-item {
cursor: pointer;
flex: 0 0 20%;
height: 58px;
line-height: 58px;
......@@ -25,6 +26,10 @@
&:nth-child(5) {
border-right: 0;
}
.active {
background-color: #177cfa;
}
}
}
}
......
......@@ -16,20 +16,22 @@
<script setup lang="ts">
import { baseURL } from '@/services'
import { getSkillTraining } from '@/services/api/skillTraining'
import { getSkillTraining, getSkillTrainingList } from '@/services/api/skillTraining'
import contentBlock from '@/components/contentBlock.vue'
const loading = ref(true)
const queryList = ref({ pageIndex: 1, pageSize: 10 })
const queryList = ref({ pageIndex: 1, pageSize: 10, type: 'A' })
const skillTrainData: any = ref()
const trainList = [
{ name: '基础安全培训' },
{ name: '专业技能培训' },
{ name: '专业知识培训' },
{ name: '职业发展培训' },
{ name: '团队管理培训' }
{ name: '基础安全培训', type: 'A' },
{ name: '专业技能培训', type: 'B' },
{ name: '专业知识培训', type: 'C' },
{ name: '职业发展培训', type: 'D' },
{ name: '团队管理培训', type: 'E' }
]
const handleChange = (row: any) => {}
const init = async () => {
const res: any = await getSkillTraining(queryList.value)
if (res.code === 200) {
......
......@@ -62,6 +62,7 @@
}
.special-tag {
cursor: pointer;
width: 88px;
height: 28px;
line-height: 28px;
......
<template>
<div class="special-container">
<div v-loading="loading" class="special-container">
<div class="special-list">
<div v-for="(item, index) in 9" :key="index" class="special-item">
<img src="@/assets/img/Frame690(7).png" width="398" height="280" />
<div class="special-title">招商街道海上世界&南海意库“三新”专场</div>
<div class="special-detail">劳务对接,携手并肩</div>
<div v-for="(item, index) in specialRecruitmentData" :key="index" class="special-item">
<img :src="baseURL + '/' + item.PICTURE" width="398" height="280" />
<div class="special-title">{{ item.FNAME }}</div>
<div class="special-detail">{{ item.FSUBTITLE }}</div>
<div class="flx-justify-between">
<span class="special-tag">进入专题</span>
<span class="special-date">2024.06.07</span>
<span class="special-date">{{ item.FDATE }}</span>
</div>
<span class="piece">招聘</span>
</div>
......@@ -18,7 +18,25 @@
</div>
</template>
<script setup lang="ts"></script>
<script setup lang="ts">
import { baseURL } from '@/services'
import { getSpecialRecruitment } from '@/services/api/specialRecruitment'
const queryList = ref({ pageIndex: 1, pageSize: 10 })
const specialRecruitmentData = ref()
const loading = ref(true)
const init = async () => {
const res: any = await getSpecialRecruitment(queryList.value)
if (res.code === 200) {
console.log(res)
specialRecruitmentData.value = res.data
loading.value = false
}
}
init()
</script>
<style lang="scss" scoped>
@import './index.scss';
......
......@@ -3,7 +3,7 @@
<div class="container">
<div class="street-card">
<div style="position: relative">
<img src="@/assets/img/Frame690(1).png" width="850" />
<img src="@/assets/img/Frame377.png" width="850" />
<div class="street-card-triangle"></div>
</div>
<div class="street-card-content flx-center">
......
......@@ -15,8 +15,13 @@ declare module 'vue' {
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
ElDialog: typeof import('element-plus/es')['ElDialog']
......@@ -36,11 +41,16 @@ declare module 'vue' {
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRate: typeof import('element-plus/es')['ElRate']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
IEpArrowRight: typeof import('~icons/ep/arrow-right')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论