<link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | <link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | ||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
<title>菊城人才市场后台管理</title> | <title>菊城人才市场后台管理</title> | ||||
<script type="module" crossorigin src="/assets/index-Nuxh33De.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-LsV7U6wr.css"> | |||||
<script type="module" crossorigin src="/assets/index-FqUzogG2.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-16BdRqwF.css"> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
<template> | <template> | ||||
<a-row :gutter="16" style="margin-bottom: 16px;"> | <a-row :gutter="16" style="margin-bottom: 16px;"> | ||||
<a-col v-if="needAdd"> | <a-col v-if="needAdd"> | ||||
<a-button type="primary" @click="showModal"> | |||||
<a-button type="primary" @click="createForm"> | |||||
<template #icon> | <template #icon> | ||||
<PlusOutlined /> | <PlusOutlined /> | ||||
</template> | </template> | ||||
default: true | default: true | ||||
} | } | ||||
}); | }); | ||||
const createForm = () => { | |||||
showModal(); | |||||
emit('add'); | |||||
} | |||||
let needAdd = ref<Boolean>(props.need_add) | let needAdd = ref<Boolean>(props.need_add) | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
const refreshTable = () => { | const refreshTable = () => { |
onMounted(() => { | onMounted(() => { | ||||
if(sessionStorage.getItem('company_id') && sessionStorage.getItem('company_name')) { | |||||
createForm.value.company_id = sessionStorage.getItem('company_id') | |||||
addOtherForm.value.full_name = sessionStorage.getItem('company_name') | |||||
} | |||||
companySearch({ page: 1, pagesize: 10 }) | companySearch({ page: 1, pagesize: 10 }) | ||||
}) | }) | ||||
<template> | <template> | ||||
<department-search @searchData="searchData" @clearData="clearData" | <department-search @searchData="searchData" @clearData="clearData" | ||||
:search_params="commomParams.search"></department-search> | :search_params="commomParams.search"></department-search> | ||||
<a-c-operation @refresh="clearData"></a-c-operation> | |||||
<a-c-operation @refresh="clearData" @add="add"></a-c-operation> | |||||
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | <a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | ||||
@page="getPage" :loading="loading"> | @page="getPage" :loading="loading"> | ||||
<template #default="{ record }"> | <template #default="{ record }"> | ||||
</a-row> | </a-row> | ||||
</template> | </template> | ||||
</a-c-table> | </a-c-table> | ||||
<department-add :edit_record="edit_record" @successAdd="successAdd" @closeAdd="closeAdd"></department-add> | |||||
<department-add v-if="openForm" :edit_record="edit_record" @successAdd="successAdd" @closeAdd="closeAdd"></department-add> | |||||
</template> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | ||||
let loading = ref<Boolean>(true); | let loading = ref<Boolean>(true); | ||||
let openForm = ref<Boolean>(false); | |||||
onMounted(() => { | onMounted(() => { | ||||
if(sessionStorage.getItem('company_id')) { | if(sessionStorage.getItem('company_id')) { | ||||
commomParams.value.search.company_id = sessionStorage.getItem('company_id') | commomParams.value.search.company_id = sessionStorage.getItem('company_id') | ||||
onBeforeUnmount(() => { | onBeforeUnmount(() => { | ||||
sessionStorage.removeItem('company_id') | sessionStorage.removeItem('company_id') | ||||
sessionStorage.removeItem('company_name') | |||||
openForm.value = false | |||||
}) | }) | ||||
const add = (data : object) => { | |||||
openForm.value = true | |||||
} | |||||
const searchData = (data : object) => { | const searchData = (data : object) => { | ||||
commomParams.value.search = data | commomParams.value.search = data | ||||
} | } | ||||
const clearData = (data : object) => { | const clearData = (data : object) => { | ||||
sessionStorage.removeItem('company_id') | |||||
sessionStorage.removeItem('company_name') | |||||
openForm.value = false | |||||
if (data) { | if (data) { | ||||
commomParams.value.search = data | commomParams.value.search = data | ||||
} else { | } else { |
let department_record = ref<Object>(null) | let department_record = ref<Object>(null) | ||||
const showDepartment = (record : object) => { | const showDepartment = (record : object) => { | ||||
sessionStorage.setItem('company_id', record.id) | sessionStorage.setItem('company_id', record.id) | ||||
sessionStorage.setItem('company_name', record.full_name) | |||||
router.push({ | router.push({ | ||||
path: '/department', | path: '/department', | ||||
}) | }) | ||||
let position_record = ref<Object>(null) | let position_record = ref<Object>(null) | ||||
const showPosition = (record : object) => { | const showPosition = (record : object) => { | ||||
sessionStorage.setItem('company_id', record.id) | sessionStorage.setItem('company_id', record.id) | ||||
sessionStorage.setItem('company_name', record.full_name) | |||||
router.push({ | router.push({ | ||||
path: '/job', | path: '/job', | ||||
}) | }) |
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | |||||
import { ref, onMounted, computed, defineProps, watch, defineEmits, onBeforeUnmount } from 'vue'; | |||||
import { getCompanyList, GetCompanyDepartmentList, GetDictTree, PostCompanyJobAdd, PostCompanyJobEdit, PostCompanyJobInfo } from '@/apis/models'; | import { getCompanyList, GetCompanyDepartmentList, GetDictTree, PostCompanyJobAdd, PostCompanyJobEdit, PostCompanyJobInfo } from '@/apis/models'; | ||||
import { intersectionAlike } from '@/utils/dataHelper'; | import { intersectionAlike } from '@/utils/dataHelper'; | ||||
import { steps, dataForm, otherDataForm, reset } from '@/views/company/position/add/data.js'; | import { steps, dataForm, otherDataForm, reset } from '@/views/company/position/add/data.js'; | ||||
let addOtherForm = ref<companyListType.addOtherFormType>(otherDataForm) | let addOtherForm = ref<companyListType.addOtherFormType>(otherDataForm) | ||||
let licenseOption = ref<Object[]>([]) | let licenseOption = ref<Object[]>([]) | ||||
onMounted(async () => { | |||||
onMounted(() => { | |||||
if(sessionStorage.getItem('company_id') && sessionStorage.getItem('company_name')) { | |||||
createForm.value.company_id = sessionStorage.getItem('company_id') | |||||
companyVal.value = sessionStorage.getItem('company_name') | |||||
departmentSearch({key: createForm.value.company_id}) | |||||
} | |||||
companySearch({ page: 1, pagesize: 10 }) | companySearch({ page: 1, pagesize: 10 }) | ||||
GetDictTree({ | GetDictTree({ | ||||
code: 2018 | code: 2018 | ||||
licenseOption.value = res.data.dicts | licenseOption.value = res.data.dicts | ||||
}) | }) | ||||
}) | }) | ||||
// 选择企业 | // 选择企业 | ||||
} | } | ||||
watch(() => props.edit_record, (newVal1) => { | watch(() => props.edit_record, (newVal1) => { | ||||
if (newVal1) { | if (newVal1) { | ||||
PostCompanyJobInfo({ id: newVal1.id }).then(res => { | PostCompanyJobInfo({ id: newVal1.id }).then(res => { | ||||
let resData = res.data; | let resData = res.data; |
<template> | <template> | ||||
<position-search @searchData="searchData" @clearData="clearData" | <position-search @searchData="searchData" @clearData="clearData" | ||||
:search_params="commomParams.search"></position-search> | :search_params="commomParams.search"></position-search> | ||||
<a-c-operation @refresh="clearData"></a-c-operation> | |||||
<a-c-operation @refresh="clearData" @add="add"></a-c-operation> | |||||
<a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | <a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | ||||
@page="getPage" :loading="loading"> | @page="getPage" :loading="loading"> | ||||
<template #default="{ record }"> | <template #default="{ record }"> | ||||
dfd | dfd | ||||
</template> | </template> | ||||
</a-c-table> | </a-c-table> | ||||
<position-add :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> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | ||||
let loading = ref<Boolean>(true); | let loading = ref<Boolean>(true); | ||||
let openForm = ref<Boolean>(false); | |||||
onMounted(() => { | onMounted(() => { | ||||
if(sessionStorage.getItem('company_id')) { | if(sessionStorage.getItem('company_id')) { | ||||
commomParams.value.search.company_id = sessionStorage.getItem('company_id') | commomParams.value.search.company_id = sessionStorage.getItem('company_id') | ||||
onBeforeUnmount(() => { | onBeforeUnmount(() => { | ||||
sessionStorage.removeItem('company_id') | sessionStorage.removeItem('company_id') | ||||
sessionStorage.removeItem('company_name') | |||||
openForm.value = false | |||||
}) | }) | ||||
const add = (data : object) => { | |||||
openForm.value = true | |||||
} | |||||
const searchData = (data : object) => { | const searchData = (data : object) => { | ||||
commomParams.value.search = data | commomParams.value.search = data | ||||
} | } | ||||
const clearData = (data : object) => { | const clearData = (data : object) => { | ||||
sessionStorage.removeItem('company_id') | |||||
sessionStorage.removeItem('company_name') | |||||
openForm.value = false | |||||
if (data) { | if (data) { | ||||
commomParams.value.search = data | commomParams.value.search = data | ||||
} else { | } else { |
<list-detail :detail_record="detail_record"></list-detail> | <list-detail :detail_record="detail_record"></list-detail> | ||||
<list-company :company_record="company_record"></list-company> | <list-company :company_record="company_record"></list-company> | ||||
<list-add-company :add_company_record="add_company_record"></list-add-company> | <list-add-company :add_company_record="add_company_record"></list-add-company> | ||||
</template> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> |
}, { | }, { | ||||
title: '手机号', | title: '手机号', | ||||
dataIndex: 'mobile' | dataIndex: 'mobile' | ||||
}, { | |||||
}, | |||||
{ | |||||
title: '审核状态', | |||||
dataIndex: 'status_txt', | |||||
},{ | |||||
title: '操作', | title: '操作', | ||||
dataIndex: 'operation', | dataIndex: 'operation', |
<!-- <a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑</a-button></a-col> --> | <!-- <a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑</a-button></a-col> --> | ||||
<a-col><a-button type="primary" size="small" primary @click="detail(record)">预览</a-button></a-col> | <a-col><a-button type="primary" size="small" primary @click="detail(record)">预览</a-button></a-col> | ||||
<a-popconfirm title="该简历通过审核?" @confirm="pass(record)"> | <a-popconfirm title="该简历通过审核?" @confirm="pass(record)"> | ||||
<a-col><a-button type="primary" size="small" primary>通过</a-button></a-col> | |||||
</a-popconfirm> | |||||
<a-popconfirm title="该简历不通过审核?" @confirm="unpass(record)"> | |||||
<a-col><a-button type="primary" size="small" primary>不通过</a-button></a-col> | |||||
<a-col v-if="record.status == 1"><a-button type="primary" size="small" primary>通过</a-button></a-col> | |||||
</a-popconfirm> | </a-popconfirm> | ||||
<a-col v-if="record.status == 1"><a-button type="primary" size="small" primary | |||||
@click="interview(record)">不通过</a-button></a-col> | |||||
<a-popconfirm title="是否要推送该简历到ES?" @confirm="pushEs(record.customer_id)"> | <a-popconfirm title="是否要推送该简历到ES?" @confirm="pushEs(record.customer_id)"> | ||||
<a-col><a-button type="primary" size="small" primary>推送该简历到ES</a-button></a-col> | <a-col><a-button type="primary" size="small" primary>推送该简历到ES</a-button></a-col> | ||||
</a-popconfirm> | </a-popconfirm> | ||||
</a-row> | </a-row> | ||||
</template> | </template> | ||||
</a-c-table> | </a-c-table> | ||||
<!-- <role-add :edit_record="edit_record" @successAdd="successAdd" @closeAdd="closeAdd"></role-add> --> | |||||
<resume-detail :detail_record="detail_record" @closeAdd="closePermission"></resume-detail> | <resume-detail :detail_record="detail_record" @closeAdd="closePermission"></resume-detail> | ||||
<a-modal v-model:open="openInterview" centered title="不通过原因" @ok="unpass"> | |||||
<a-textarea v-model:value="form.aduit_memo" placeholder="请输入不通过原因" /> | |||||
</a-modal> | |||||
</template> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
}) | }) | ||||
} | } | ||||
const unpass = (record) => { | |||||
PostJobapplicantUpdate({ customer_id: record.customer_id, id: record.id, status: 3 }).then(res => { | |||||
// 邀请面试 | |||||
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 = '' | |||||
} | |||||
const unpass = () => { | |||||
PostJobapplicantUpdate(form).then(res => { | |||||
message.success('审核不通过'); | message.success('审核不通过'); | ||||
openInterview.value = false | |||||
getData(); | |||||
}) | }) | ||||
} | } | ||||
<a-row :gutter="[10]"> | <a-row :gutter="[10]"> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item> | <a-form-item> | ||||
<a-input addon-before="求职者名称" v-model:value="commomParams.search.keyword" placeholder="请输入求职者名称" @keyup.enter="getData"/> | |||||
<a-input addon-before="关键字" v-model:value="commomParams.search.keyword" placeholder="请输入关键字,如个人介绍" @keyup.enter="getData"/> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
</a-select> | </a-select> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | |||||
<a-form-item> | |||||
<a-xuanze :dict="2006" placeholder="请选择学历" @saveSelect="saveEducation" | |||||
:select_content="commomParams.search.education"></a-xuanze> | |||||
</a-form-item> | |||||
</a-col> | |||||
</a-row> | </a-row> | ||||
</a-form> | </a-form> | ||||
</a-drawer> | </a-drawer> | ||||
interface listType { | interface listType { | ||||
gender ?: String | gender ?: String | ||||
education ?: Number | |||||
} | } | ||||
commomParams.value.search = commomParams.value.search as listType; | commomParams.value.search = commomParams.value.search as listType; | ||||
commomParams.value.search.gender = null; | commomParams.value.search.gender = null; | ||||
commomParams.value.search.education = null; | |||||
// watch(() => props.search_params, (newVal) => { | // watch(() => props.search_params, (newVal) => { | ||||
// emit('searchData', commomParams.value.search) | // emit('searchData', commomParams.value.search) | ||||
getData() | getData() | ||||
} | } | ||||
const saveEducation = (data) => { | |||||
commomParams.value.search.education = data.val.key ? data.val.key : 0; | |||||
getData() | |||||
} | |||||
</script> | </script> | ||||
<style> | <style> |