Soleilw пре 1 година
родитељ
комит
e89fb38d38

dist/assets/404-WgtG5sbN.js → dist/assets/404-GxJi1R2l.js Прегледај датотеку

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};

dist/assets/index-d9zHASBb.js
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 0
- 1
dist/assets/index-ia0wri7Z.css
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 0
dist/assets/index-lEQJ0AIX.css
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 2
- 2
dist/index.html Прегледај датотеку

<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>

+ 30
- 9
src/apis/index.ts Прегледај датотеку

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 范围内的状态码都会触发该函数。

+ 4
- 0
src/apis/models/index.ts Прегледај датотеку

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); // 添加



+ 3
- 0
src/apis/types/url.d.ts Прегледај датотеку

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

+ 4
- 1
src/apis/url.ts Прегледај датотеку

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', // 详情



+ 3
- 0
src/components/biaoge/index.vue Прегледај датотеку

<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>



+ 2
- 2
src/components/job/detail/index.vue Прегледај датотеку

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">

+ 3
- 7
src/components/job/home/choiceness-job/job-list.vue Прегледај датотеку

> >
<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

+ 3
- 5
src/components/job/home/hot-company/index.vue Прегледај датотеку

<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) => {

+ 19
- 17
src/components/layout/header/aHeader.vue Прегледај датотеку

<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')
}
})
} }



+ 23
- 21
src/components/layout/menu/aMenu.vue Прегледај датотеку

<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>

+ 5
- 1
src/components/user/conver/columns.ts Прегледај датотеку

}, { }, {
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',

+ 4
- 0
src/components/user/conver/index.vue Прегледај датотеку

</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>

+ 0
- 2
src/components/user/conver/search.vue Прегледај датотеку



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 = () => {

+ 18
- 0
src/components/user/manage/columns.ts Прегледај датотеку


export const cols = <ColType.type[]>[
{
title: '绑定的账号',
dataIndex: 'username'
}, {
title: '联系方式',
dataIndex: 'mobile'
},{
title: '绑定时间',
dataIndex: 'created_at',
},
{
title: '操作',
dataIndex: 'operation',
slots: { customRender: 'operation' },
},
]

+ 146
- 0
src/components/user/manage/index.vue Прегледај датотеку

<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>

+ 52
- 0
src/components/user/manage/search.vue Прегледај датотеку

<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>

+ 20
- 17
src/components/user/password/index.vue Прегледај датотеку



<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 = () => {

+ 22
- 0
src/router/dynamic.ts Прегледај датотеку

}, },
}; };


// 新窗口
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
]; ];

+ 7
- 1
src/router/routerList.ts Прегледај датотеку

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
} }

+ 6
- 2
src/router/routes.ts Прегледај датотеку

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,
] ]

+ 1
- 1
src/store/usePermissionStore.ts Прегледај датотеку

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 {

+ 226
- 0
src/views/common/outpage/company.vue Прегледај датотеку

<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>

+ 142
- 0
src/views/common/outpage/job.vue Прегледај датотеку

<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>

+ 10
- 9
src/views/common/personal/index.vue Прегледај датотеку

} }


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");
} }



+ 20
- 17
src/views/jobseeker/password/index.vue Прегледај датотеку



<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 = () => {

+ 2
- 0
src/views/login/login.vue Прегледај датотеку

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()

+ 9
- 1
src/views/manage/user/index.vue Прегледај датотеку

<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;

Loading…
Откажи
Сачувај