@@ -5,7 +5,7 @@ | |||
<link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
<title>菊城人才市场后台管理</title> | |||
<script type="module" crossorigin src="/assets/index-DozG8ZEx.js"></script> | |||
<script type="module" crossorigin src="/assets/index-B7CKfjVf.js"></script> | |||
<link rel="stylesheet" crossorigin href="/assets/index-4yw9NuJU.css"> | |||
</head> | |||
<body> |
@@ -252,4 +252,9 @@ export const PostDictAdd = postModel(url.DictAdd); | |||
export const PostDictDel = postModel(url.DictDel); | |||
export const PostDictUpdate = postModel(url.DictUpdate); | |||
export const GetDictList = getModel(url.DictList); | |||
export const GetDictDetail = getModel(url.DictDetail); | |||
export const GetDictDetail = getModel(url.DictDetail); | |||
// 导出数据 | |||
export const PostCompanyExport = PostModel(url.CompanyExport); | |||
export const PostJobseekerExport = PostModel(url.JobseekerExport); | |||
export const PostJobExport = PostModel(url.JobExport); |
@@ -228,5 +228,10 @@ declare namespace urlType { | |||
DictUpdate: String, // 编辑 | |||
DictList: String, // 列表 | |||
DictDetail: String, // 详情 | |||
// 导出数据 | |||
CompanyExport: String, // 详情 | |||
JobseekerExport: String, // 详情 | |||
JobExport: String, // 详情 | |||
} | |||
} |
@@ -243,4 +243,9 @@ export const url : urlType.url = { | |||
DictUpdate: common + '/dict/update', // 编辑 | |||
DictList: common + '/dict/list', // 列表 | |||
DictDetail: common + '/dict/detail', // 详情 | |||
// 导出数据 | |||
CompanyExport: admin + '/company/export', | |||
JobseekerExport: admin + '/jobseeker/export', | |||
JobExport: admin + '/job/export', | |||
} |
@@ -16,7 +16,7 @@ | |||
let { routerTo } = useAsRouter(); | |||
const download = () => { | |||
PostActivityExportUsers().then(res => { | |||
let url = 'https://rcsc-test.jcjob.cn/img' + res.data.excel_url; | |||
let url = import.meta.env.MODE == 'production' ? 'https://admin1.jcjob.cn/img' + res.data.excel_url : 'https://rcsc-test.jcjob.cn/img' + res.data.excel_url; | |||
window.open(url); | |||
}) | |||
} |
@@ -1,6 +1,10 @@ | |||
<template> | |||
<list-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></list-search> | |||
<a-c-operation @refresh="clearData"></a-c-operation> | |||
<a-c-operation @refresh="clearData"> | |||
<a-col> | |||
<a-button type="primary" @click="download">导出数据</a-button> | |||
</a-col> | |||
</a-c-operation> | |||
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||
@page="getPage" :loading="loading"> | |||
<template #photo_image="{ record }"> | |||
@@ -36,7 +40,7 @@ | |||
import ListDepartment from '@/views/company/list/department/index.vue'; | |||
import ListPosition from '@/views/company/list/position/index.vue'; | |||
import ListBind from '@/views/company/list/bind/index.vue'; | |||
import { getCompanyList } from '@/apis/models'; | |||
import { getCompanyList , PostCompanyExport} from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { cols } from '@/views/company/list/columns'; | |||
import { router } from '@/router'; | |||
@@ -152,6 +156,13 @@ | |||
// getData(); | |||
// }) | |||
// } | |||
const download = () => { | |||
PostCompanyExport().then(res => { | |||
let url = import.meta.env.MODE == 'production' ? 'https://admin1.jcjob.cn/img' + res.data.excel_url : 'https://rcsc-test.jcjob.cn/img' + res.data.excel_url; | |||
window.open(url); | |||
}) | |||
} | |||
</script> | |||
<style lang="less" scoped> |
@@ -1,7 +1,11 @@ | |||
<template> | |||
<position-search @searchData="searchData" @clearData="clearData" | |||
:search_params="commomParams.search"></position-search> | |||
<a-c-operation @refresh="clearData" @add="add"></a-c-operation> | |||
<a-c-operation @refresh="clearData" @add="add"> | |||
<a-col> | |||
<a-button type="primary" @click="download">导出数据</a-button> | |||
</a-col> | |||
</a-c-operation> | |||
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||
@page="getPage" :loading="loading"> | |||
<template #default="{ record }"> | |||
@@ -13,114 +17,120 @@ | |||
dfd | |||
</template> | |||
</a-c-table> | |||
<position-add v-if="openForm" :edit_record="edit_record" @successAdd="successAdd" @closeAdd="closeAdd"></position-add> | |||
<position-add v-if="openForm" :edit_record="edit_record" @successAdd="successAdd" | |||
@closeAdd="closeAdd"></position-add> | |||
</template> | |||
<script lang="ts" setup> | |||
import { ref, onMounted, watch, computed, onBeforeUnmount } from 'vue'; | |||
import PositionSearch from '@/views/company/position/search/index.vue'; | |||
import PositionAdd from '@/views/company/position/add/add.vue'; | |||
import { GetCompanyJobList } from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { cols } from '@/views/company/position/columns'; | |||
import { message } from 'ant-design-vue'; | |||
let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | |||
let loading = ref<Boolean>(true); | |||
let openForm = ref<Boolean>(false); | |||
onMounted(() => { | |||
if(sessionStorage.getItem('company_id')) { | |||
commomParams.value.search.company_id = sessionStorage.getItem('company_id') | |||
} | |||
getData(commomParams.value.search); | |||
}) | |||
onBeforeUnmount(() => { | |||
sessionStorage.removeItem('company_id') | |||
sessionStorage.removeItem('company_name') | |||
openForm.value = false | |||
}) | |||
const add = (data : object) => { | |||
openForm.value = true | |||
import { ref, onMounted, watch, computed, onBeforeUnmount } from 'vue'; | |||
import PositionSearch from '@/views/company/position/search/index.vue'; | |||
import PositionAdd from '@/views/company/position/add/add.vue'; | |||
import { GetCompanyJobList, PostJobExport } from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { cols } from '@/views/company/position/columns'; | |||
import { message } from 'ant-design-vue'; | |||
let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | |||
let loading = ref<Boolean>(true); | |||
let openForm = ref<Boolean>(false); | |||
onMounted(() => { | |||
if (sessionStorage.getItem('company_id')) { | |||
commomParams.value.search.company_id = sessionStorage.getItem('company_id') | |||
} | |||
getData(commomParams.value.search); | |||
}) | |||
const searchData = (data : object) => { | |||
commomParams.value.search = data | |||
getData(); | |||
} | |||
onBeforeUnmount(() => { | |||
sessionStorage.removeItem('company_id') | |||
sessionStorage.removeItem('company_name') | |||
openForm.value = false | |||
}) | |||
const clearData = (data : object) => { | |||
sessionStorage.removeItem('company_id') | |||
sessionStorage.removeItem('company_name') | |||
openForm.value = false | |||
if (data) { | |||
commomParams.value.search = data | |||
} else { | |||
commomParams.value.search = { | |||
page: 1, | |||
pagesize: 10, | |||
sort: 'id', | |||
sortby: 'desc', | |||
keyword: '' | |||
} | |||
} | |||
getData(); | |||
} | |||
const add = (data: object) => { | |||
openForm.value = true | |||
} | |||
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 GetCompanyJobList(commomParams.value.search); | |||
loading.value = false; | |||
commomParams.value.table.data = res.data.rows; | |||
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 (err) { | |||
loading.value = false; | |||
const searchData = (data: object) => { | |||
commomParams.value.search = data | |||
getData(); | |||
} | |||
const clearData = (data: object) => { | |||
sessionStorage.removeItem('company_id') | |||
sessionStorage.removeItem('company_name') | |||
openForm.value = false | |||
if (data) { | |||
commomParams.value.search = data | |||
} else { | |||
commomParams.value.search = { | |||
page: 1, | |||
pagesize: 10, | |||
sort: 'id', | |||
sortby: 'desc', | |||
keyword: '' | |||
} | |||
} | |||
getData(); | |||
} | |||
// 编辑 | |||
let edit_record = ref<Object>(null) | |||
const edit = (record : object) => { | |||
openForm.value = true | |||
edit_record.value = record; | |||
showModal() | |||
} | |||
const successAdd = () => { | |||
getData(); | |||
} | |||
const closeAdd = () => { | |||
openForm.value = false | |||
edit_record.value = null; | |||
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 GetCompanyJobList(commomParams.value.search); | |||
loading.value = false; | |||
commomParams.value.table.data = res.data.rows; | |||
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 (err) { | |||
loading.value = false; | |||
} | |||
} | |||
// 删除 | |||
// const delOneRole = (id: number) => { | |||
// commomParams.value.delRecord = { id: id }; | |||
// PostRoleDel(commomParams.value.delRecord).then(res => { | |||
// message.success('删除成功'); | |||
// getData(); | |||
// }) | |||
// } | |||
</script> | |||
// 编辑 | |||
let edit_record = ref<Object>(null) | |||
const edit = (record: object) => { | |||
openForm.value = true | |||
edit_record.value = record; | |||
showModal() | |||
} | |||
const successAdd = () => { | |||
getData(); | |||
} | |||
const closeAdd = () => { | |||
openForm.value = false | |||
edit_record.value = null; | |||
} | |||
<style lang="less" scoped> | |||
</style> | |||
// 删除 | |||
// const delOneRole = (id: number) => { | |||
// commomParams.value.delRecord = { id: id }; | |||
// PostRoleDel(commomParams.value.delRecord).then(res => { | |||
// message.success('删除成功'); | |||
// getData(); | |||
// }) | |||
// } | |||
const download = () => { | |||
PostJobExport().then(res => { | |||
let url = import.meta.env.MODE == 'production' ? 'https://admin1.jcjob.cn/img' + res.data.excel_url : 'https://rcsc-test.jcjob.cn/img' + res.data.excel_url; | |||
window.open(url); | |||
}) | |||
} | |||
</script> | |||
<style lang="less" scoped></style> |
@@ -1,11 +1,15 @@ | |||
<template> | |||
<resume-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></resume-search> | |||
<a-c-operation @refresh="clearData" :need_add="false"></a-c-operation> | |||
<a-c-operation @refresh="clearData" :need_add="false"> | |||
<a-col> | |||
<a-button type="primary" @click="download">导出数据</a-button> | |||
</a-col> | |||
</a-c-operation> | |||
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||
@page="getPage" :loading="loading"> | |||
<template #status="{ record }"> | |||
{{record.status_txt}} | |||
<span v-if="record.audit_memo">({{record.audit_memo}})</span> | |||
{{ record.status_txt }} | |||
<span v-if="record.audit_memo">({{ record.audit_memo }})</span> | |||
</template> | |||
<template #default="{ record }"> | |||
<a-row :gutter="10"> | |||
@@ -14,7 +18,7 @@ | |||
<a-popconfirm title="该简历通过审核?" @confirm="pass(record)"> | |||
<a-col v-if="record.status == 1"><a-button type="primary" size="small">通过</a-button></a-col> | |||
</a-popconfirm> | |||
<a-col v-if="record.status == 1"><a-button type="primary" size="small" @click="interview(record)" | |||
<a-col v-if="record.status == 1"><a-button type="primary" size="small" @click="interview(record)" | |||
danger>不通过</a-button></a-col> | |||
<!-- <a-popconfirm title="是否要推送该简历到ES?" @confirm="pushEs(record.customer_id)"> | |||
<a-col><a-button type="primary" size="small" primary>推送该简历到ES</a-button></a-col> | |||
@@ -29,159 +33,164 @@ | |||
<a-textarea v-model:value="form.aduit_memo" placeholder="请输入不通过原因" /> | |||
</a-modal> | |||
</template> | |||
<script lang="ts" setup> | |||
import { ref, onMounted, watch, computed, createVNode } from 'vue'; | |||
import ResumeSearch from '@/views/jobSeeker/resume/search/index.vue'; | |||
import ResumeAdd from '@/views/jobSeeker/resume/add/add.vue'; | |||
import ResumeDetail from '@/views/jobSeeker/resume/detail/detail.vue'; | |||
import { PostJobseekerList, PostJobapplicantUpdate, PostEsJobseeker, GetCustomerUpdate } from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { cols } from '@/views/jobSeeker/resume/columns'; | |||
import { UserOutlined, DownOutlined } from '@ant-design/icons-vue'; | |||
let { store, commomParams, showModal, showOtherModal1, message, ExclamationCircleOutlined, Modal } = useCommon(); | |||
let loading = ref<Boolean>(true); | |||
let openForm = ref<Boolean>(false); | |||
onMounted(() => { | |||
commomParams.value.search.rand = false | |||
commomParams.value.search.sort = 'refreshtime' | |||
getData(); | |||
}) | |||
const searchData = (data : object) => { | |||
import { ref, onMounted, watch, computed, createVNode } from 'vue'; | |||
import ResumeSearch from '@/views/jobSeeker/resume/search/index.vue'; | |||
import ResumeAdd from '@/views/jobSeeker/resume/add/add.vue'; | |||
import ResumeDetail from '@/views/jobSeeker/resume/detail/detail.vue'; | |||
import { PostJobseekerList, PostJobapplicantUpdate, PostEsJobseeker, GetCustomerUpdate, PostJobseekerExport } from '@/apis/models'; | |||
import { useCommon } from '@/hooks/useCommon'; | |||
import { cols } from '@/views/jobSeeker/resume/columns'; | |||
import { UserOutlined, DownOutlined } from '@ant-design/icons-vue'; | |||
let { store, commomParams, showModal, showOtherModal1, message, ExclamationCircleOutlined, Modal } = useCommon(); | |||
let loading = ref<Boolean>(true); | |||
let openForm = ref<Boolean>(false); | |||
onMounted(() => { | |||
commomParams.value.search.rand = false | |||
commomParams.value.search.sort = 'refreshtime' | |||
getData(); | |||
}) | |||
const searchData = (data: object) => { | |||
commomParams.value.search = data | |||
getData(); | |||
} | |||
const clearData = (data: object) => { | |||
commomParams.value.search.rand = false | |||
if (data) { | |||
commomParams.value.search = data | |||
getData(); | |||
} | |||
const clearData = (data : object) => { | |||
commomParams.value.search.rand = false | |||
if (data) { | |||
commomParams.value.search = data | |||
} else { | |||
commomParams.value.search = { | |||
page: 1, | |||
pagesize: 10, | |||
sort: 'refreshtime', | |||
sortby: 'desc', | |||
keyword: '', | |||
rand: false | |||
} | |||
} | |||
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 PostJobseekerList(commomParams.value.search); | |||
loading.value = false; | |||
commomParams.value.table.data = res.data.seekers; | |||
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; | |||
} else { | |||
commomParams.value.search = { | |||
page: 1, | |||
pagesize: 10, | |||
sort: 'refreshtime', | |||
sortby: 'desc', | |||
keyword: '', | |||
rand: false | |||
} | |||
} | |||
// 编辑 | |||
let edit_record = ref<Object>(null) | |||
const edit = (record : object) => { | |||
openForm.value = true | |||
edit_record.value = record; | |||
showModal() | |||
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 PostJobseekerList(commomParams.value.search); | |||
loading.value = false; | |||
commomParams.value.table.data = res.data.seekers; | |||
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 successAdd = () => { | |||
} | |||
// 编辑 | |||
let edit_record = ref<Object>(null) | |||
const edit = (record: object) => { | |||
openForm.value = true | |||
edit_record.value = record; | |||
showModal() | |||
} | |||
const successAdd = () => { | |||
getData(); | |||
} | |||
const closeAdd = () => { | |||
openForm.value = false | |||
edit_record.value = null; | |||
} | |||
// 删除 | |||
// const delOneRole = (id : number) => { | |||
// commomParams.value.delRecord = { id: id }; | |||
// PostRoleDel(commomParams.value.delRecord).then(res => { | |||
// message.success('删除成功'); | |||
// getData(); | |||
// }) | |||
// } | |||
// 审核 | |||
const pass = (record) => { | |||
PostJobapplicantUpdate({ customer_id: record.customer_id, id: record.id, status: 2 }).then(res => { | |||
message.success('审核通过'); | |||
getData(); | |||
} | |||
const closeAdd = () => { | |||
openForm.value = false | |||
edit_record.value = null; | |||
} | |||
// 删除 | |||
// const delOneRole = (id : number) => { | |||
// commomParams.value.delRecord = { id: id }; | |||
// PostRoleDel(commomParams.value.delRecord).then(res => { | |||
// message.success('删除成功'); | |||
// getData(); | |||
// }) | |||
// } | |||
// 审核 | |||
const pass = (record) => { | |||
PostJobapplicantUpdate({ customer_id: record.customer_id, id: record.id, status: 2 }).then(res => { | |||
message.success('审核通过'); | |||
getData(); | |||
}) | |||
} | |||
// 邀请面试 | |||
let openInterview = ref<Boolean>(false); | |||
let form = { | |||
id: 0, | |||
customer_id: 0, | |||
status: 3, | |||
aduit_memo: '' | |||
} | |||
const interview = (record : Object) => { | |||
openInterview.value = true | |||
form.id = record.id; | |||
form.customer_id = record.customer_id; | |||
form.status = 3 | |||
form.aduit_memo = record.audit_memo ? record.audit_memo : '不通过' | |||
} | |||
}) | |||
} | |||
// 邀请面试 | |||
let openInterview = ref<Boolean>(false); | |||
let form = { | |||
id: 0, | |||
customer_id: 0, | |||
status: 3, | |||
aduit_memo: '' | |||
} | |||
const interview = (record: Object) => { | |||
openInterview.value = true | |||
form.id = record.id; | |||
form.customer_id = record.customer_id; | |||
form.status = 3 | |||
form.aduit_memo = record.audit_memo ? record.audit_memo : '不通过' | |||
} | |||
const unpass = () => { | |||
PostJobapplicantUpdate(form).then(res => { | |||
message.success('审核不通过'); | |||
openInterview.value = false | |||
getData(); | |||
}) | |||
} | |||
const unpass = () => { | |||
PostJobapplicantUpdate(form).then(res => { | |||
message.success('审核不通过'); | |||
openInterview.value = false | |||
getData(); | |||
}) | |||
} | |||
const pushEs = (customer_id) => { | |||
PostEsJobseeker({ customer_ids: [customer_id] }).then(res => { | |||
message.success('推送成功'); | |||
}) | |||
} | |||
const pushEs = (customer_id) => { | |||
PostEsJobseeker({ customer_ids: [customer_id] }).then(res => { | |||
message.success('推送成功'); | |||
}) | |||
} | |||
let detail_record = ref<Object>(null) | |||
const detail = (record) => { | |||
detail_record.value = record; | |||
showOtherModal1() | |||
} | |||
const successPermission = () => { | |||
detail_record.value = null; | |||
} | |||
let detail_record = ref<Object>(null) | |||
const detail = (record) => { | |||
detail_record.value = record; | |||
showOtherModal1() | |||
} | |||
const successPermission = () => { | |||
detail_record.value = null; | |||
} | |||
const closePermission = () => { | |||
detail_record.value = null; | |||
} | |||
const closePermission = () => { | |||
detail_record.value = null; | |||
} | |||
const download = () => { | |||
PostJobseekerExport().then(res => { | |||
let url = import.meta.env.MODE == 'production' ? 'https://admin1.jcjob.cn/img' + res.data.excel_url : 'https://rcsc-test.jcjob.cn/img' + res.data.excel_url; | |||
window.open(url); | |||
}) | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
</style> | |||
<style lang="less" scoped></style> |