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