| export const PostRecruitmentbookDel = postModel(url.RecruitmentbookDel); // 删除 | export const PostRecruitmentbookDel = postModel(url.RecruitmentbookDel); // 删除 | ||||
| export const PostRecruitmentbookUpdate = postModel(url.RecruitmentbookUpdate); // 编辑 | export const PostRecruitmentbookUpdate = postModel(url.RecruitmentbookUpdate); // 编辑 | ||||
| export const GetRecruitmentbookList = getModel(url.RecruitmentbookList); // 列表 | export const GetRecruitmentbookList = getModel(url.RecruitmentbookList); // 列表 | ||||
| export const GetRecruitmentbookDetail = getModel(url.RecruitmentbookDetail); // 详情 | |||||
| export const GetRecruitmentbookDetail = getModel(url.RecruitmentbookDetail); // 详情 | |||||
| // 简历 | |||||
| // 列表 | |||||
| export const PostJobseekerList = postModel(url.JobseekerList); | |||||
| export const GetJobseekerDetail = getModel(url.JobseekerDetail); | |||||
| // 基本资料 | |||||
| export const PostJobapplicantAdd = postModel(url.JobapplicantAdd); | |||||
| export const PostJobapplicantDel = postModel(url.JobapplicantDel); | |||||
| export const PostJobapplicantUpdate = postModel(url.JobapplicantUpdate); | |||||
| export const GetJobapplicantList = getModel(url.JobapplicantList); | |||||
| export const GetJobapplicantDetail = getModel(url.JobapplicantDetail); | |||||
| // 联系方式 | |||||
| export const PostJobapplicantAddcontact = postModel(url.JobapplicantAddcontact); | |||||
| export const PostJobapplicantDelcontact = postModel(url.JobapplicantDelcontact); | |||||
| export const PostJobapplicantUpdatecontact = postModel(url.JobapplicantUpdatecontact); | |||||
| export const PostJobapplicantListcontact = getModel(url.JobapplicantListcontact); | |||||
| export const PostJobapplicantContactdetail = getModel(url.JobapplicantContactdetail); | |||||
| // 证书技能 | |||||
| export const PostJobapplicantAddskill = postModel(url.JobapplicantAddskill); | |||||
| export const PostJobapplicantDelskill = postModel(url.JobapplicantDelskill); | |||||
| export const PostJobapplicantUpdateskill = postModel(url.JobapplicantUpdateskill); | |||||
| export const PostJobapplicantListskill = getModel(url.JobapplicantListskill); | |||||
| export const PostJobapplicantSkilldetail = getModel(url.JobapplicantSkilldetail); | |||||
| // 培训经历 | |||||
| export const PostJobapplicantAddtraining = postModel(url.JobapplicantAddtraining); | |||||
| export const PostJobapplicantDeltraining = postModel(url.JobapplicantDeltraining); | |||||
| export const PostJobapplicantUpdatetraining = postModel(url.JobapplicantUpdatetraining); | |||||
| export const PostJobapplicantListtraining = getModel(url.JobapplicantListtraining); | |||||
| export const PostJobapplicantTrainingdetail = getModel(url.JobapplicantTrainingdetail); | |||||
| // 求职意向-基本 | |||||
| export const PostJobapplicantAdddesirebase = postModel(url.JobapplicantAdddesirebase); | |||||
| export const PostJobapplicantDeldesirebase = postModel(url.JobapplicantDeldesirebase); | |||||
| export const PostJobapplicantUpdatedesirebase = postModel(url.JobapplicantUpdatedesirebase); | |||||
| export const PostJobapplicantListdesirebase = getModel(url.JobapplicantListdesirebase); | |||||
| export const PostJobapplicantDesirebasedetail = getModel(url.JobapplicantDesirebasedetail); | |||||
| // 求职意向-地区 | |||||
| export const PostJobapplicantAdddesirearea = postModel(url.JobapplicantAdddesirearea); | |||||
| export const PostJobapplicantDeldesirearea = postModel(url.JobapplicantDeldesirearea); | |||||
| export const PostJobapplicantUpdatedesirearea = postModel(url.JobapplicantUpdatedesirearea); | |||||
| export const PostJobapplicantListdesirearea = getModel(url.JobapplicantListdesirearea); | |||||
| export const PostJobapplicantDesireareadetail = getModel(url.JobapplicantDesireareadetail); | |||||
| // 求职意向-职位 | |||||
| export const PostJobapplicantAdddesireindustry = postModel(url.JobapplicantAdddesireindustry); | |||||
| export const PostJobapplicantDeldesireindustry = postModel(url.JobapplicantDeldesireindustry); | |||||
| export const PostJobapplicantUpdatedesireindustry = postModel(url.JobapplicantUpdatedesireindustry); | |||||
| export const PostJobapplicantListdesireindustry = getModel(url.JobapplicantListdesireindustry); | |||||
| export const PostJobapplicantDesireindustrydetail = getModel(url.JobapplicantDesireindustrydetail); | |||||
| // 工作经历 | |||||
| export const PostJobapplicantAddexperience = postModel(url.JobapplicantAddexperience); | |||||
| export const PostJobapplicantDelexperience = postModel(url.JobapplicantDelexperience); | |||||
| export const PostJobapplicantUpdateexperience = postModel(url.JobapplicantUpdateexperience); | |||||
| export const PostJobapplicantListexperience = getModel(url.JobapplicantListexperience); | |||||
| export const PostJobapplicantExperiencedetail = getModel(url.JobapplicantExperiencedetail); | |||||
| // 证书 | |||||
| export const PostJobapplicantAddcertificate = postModel(url.JobapplicantAddcertificate); | |||||
| export const PostJobapplicantUpdatecertificate = postModel(url.JobapplicantUpdatecertificate); | |||||
| export const PostJobapplicantListcertificate = getModel(url.JobapplicantListcertificate); | |||||
| export const PostJobapplicantCertificatedetail = getModel(url.JobapplicantCertificatedetail); | |||||
| export const PostJobapplicantAddintroduction = postModel(url.JobapplicantAddintroduction); // 个人介绍 | |||||
| export const PostJobapplicantDelintroduction = postModel(url.JobapplicantDelintroduction); // 个人介绍 | |||||
| export const PostJobapplicantUpdateintroduction = postModel(url.JobapplicantUpdateintroduction); // 个人介绍 | |||||
| export const GetJobapplicantListintroduction = getModel(url.JobapplicantListintroduction); // 个人介绍 | |||||
| export const GetJobapplicantIntroductiondetail = getModel(url.JobapplicantIntroductiondetail); // 个人详情 | 
| <template> | |||||
| <a-tree-select v-model:value="treecCascaderParentId" style="width: 100%" | |||||
| :tree-data="treeData" tree-checkable allow-clear :show-checked-strategy="SHOW_PARENT" | |||||
| :placeholder="placeholder" tree-node-filter-prop="label" | |||||
| :fieldNames="listFieldNames" :maxTagCount="3" @change="parentChange" /> | |||||
| </template> | |||||
| <script lang="ts" setup> | |||||
| import { ref, onMounted, defineProps, watch, defineEmits } from 'vue'; | |||||
| import { GetDictTree } from '@/apis/models'; | |||||
| import { TreeSelect } from 'ant-design-vue'; | |||||
| const props = defineProps(['dict', 'placeholder', 'tree_content']); | |||||
| let treeData = ref([]); | |||||
| let treecCascaderParentId = ref<number[]>([]); | |||||
| const listFieldNames = ref({ label: 'name', value: 'id', children: 'children' }); | |||||
| let placeholder = ref('请选择'); | |||||
| placeholder.value = props.placeholder | |||||
| const SHOW_PARENT = TreeSelect.SHOW_ALL; | |||||
| watch(() => [props.dict, props.tree_content], | |||||
| (newVal, oldVal) => { | |||||
| GetDictTree({ | |||||
| code: newVal[0] | |||||
| }).then(res => { | |||||
| treeData.value = res.data.dicts | |||||
| }) | |||||
| treecCascaderParentId.value = newVal[1] | |||||
| }, {immediate: true}) | |||||
| // onMounted(() => { | |||||
| // GetDictTree({ | |||||
| // code: props.dict | |||||
| // }).then(res => { | |||||
| // treeData.value = res.data.dicts | |||||
| // }) | |||||
| // }) | |||||
| const emit = defineEmits(); | |||||
| const parentChange = (val) => { | |||||
| emit('saveTreeNode', {arr1: val}); | |||||
| } | |||||
| </script> | |||||
| <style> | |||||
| </style> | 
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="职位类别"> | <a-form-item required label="职位类别"> | ||||
| <a-tree-select v-model:value="createForm.job_type" style="width: 100%" | |||||
| :tree-data="jobTypeData" tree-checkable allow-clear :show-checked-strategy="SHOW_PARENT" | |||||
| placeholder="职位类别(最多三个,多选只取前三)" tree-node-filter-prop="label" | |||||
| :fieldNames="jobTypeFieldNames" :maxTagCount="3" @change="jobTypeChange" /> | |||||
| <a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange" | |||||
| :select_content="createForm.job_type"></a-shujilian> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="工作区域"> | <a-form-item required label="工作区域"> | ||||
| <a-tree-select v-model:value="createForm.job_location" style="width: 100%" | |||||
| :tree-data="jobAddressData" tree-checkable allow-clear | |||||
| :show-checked-strategy="SHOW_PARENT" placeholder="工作区域(最多四个,多选只取前四)" | |||||
| tree-node-filter-prop="label" :fieldNames="jobAddressFieldNames" :maxTagCount="4" | |||||
| @change="jobAddressChange" /> | |||||
| <a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)" @saveTreeNode="jobAddressChange" | |||||
| :select_content="createForm.job_location"></a-shujilian> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | ||||
| import { GetDictTree, GetCompanyDepartmentList, PostCompanyJobAdd } from '@/apis/models'; | import { GetDictTree, GetCompanyDepartmentList, PostCompanyJobAdd } from '@/apis/models'; | ||||
| import { TreeSelect } from 'ant-design-vue'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
| import { intersectionAlike } from '@/utils/dataHelper'; | import { intersectionAlike } from '@/utils/dataHelper'; | ||||
| const emit = defineEmits(); | const emit = defineEmits(); | ||||
| let jobTypeData = ref<Object[]>([]) | |||||
| const jobTypeFieldNames = ref({ label: 'name', value: 'id', children: 'children' }); | |||||
| let jobAddressData = ref<Object[]>([]) | |||||
| const jobAddressFieldNames = ref({ label: 'name', value: 'id', children: 'children' }); | |||||
| const SHOW_PARENT = TreeSelect.SHOW_ALL; | |||||
| onMounted(async () => { | onMounted(async () => { | ||||
| }) | }) | ||||
| } | } | ||||
| // 职位类别 | // 职位类别 | ||||
| const jobTypeChange = (val) => { | |||||
| createForm.value.job_type = val.slice(0, 3); | |||||
| const jobTypeChange = (data) => { | |||||
| createForm.value.job_type = data.arr1.slice(0, 3); | |||||
| } | } | ||||
| // 工作区域 | // 工作区域 | ||||
| const jobAddressChange = (val) => { | const jobAddressChange = (val) => { | ||||
| createForm.value.job_location = val.slice(0, 4); | |||||
| createForm.value.job_location = data.arr1.slice(0, 4); | |||||
| } | } | ||||
| // 职位描述 | // 职位描述 | 
| <template> | |||||
| <a-list item-layout="horizontal" :data-source="recruitmentList"> | |||||
| <template #renderItem="{ item }"> | |||||
| <a-list-item @click="toDetail(item)"> | |||||
| <a-list-item-meta> | |||||
| <template #title> | |||||
| {{ item.title }} | |||||
| </template> | |||||
| </a-list-item-meta> | |||||
| </a-list-item> | |||||
| </template> | |||||
| </a-list> | |||||
| <a-pagination v-model:current="current" :total="500" style="text-align: center;" /> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, computed, onMounted, createVNode } from 'vue'; | |||||
| import { PostRecruitmentList } from '@/apis/models'; | |||||
| import { FileTextOutlined } from '@ant-design/icons-vue'; | |||||
| import { Modal } from 'ant-design-vue'; | |||||
| let recruitmentList = ref<object[]>([]) | |||||
| onMounted(() => { | |||||
| PostRecruitmentList().then(res => { | |||||
| recruitmentList.value = res.data.recruitments | |||||
| }) | |||||
| }) | |||||
| const toDetail = (data) => { | |||||
| Modal.confirm({ | |||||
| title: data.title, | |||||
| icon: createVNode(FileTextOutlined), | |||||
| content: createVNode('div', { innerHTML: data.content }), | |||||
| width: '888px', | |||||
| onOk() { | |||||
| console.log('OK'); | |||||
| }, | |||||
| onCancel() { | |||||
| console.log('Cancel'); | |||||
| }, | |||||
| class: 'test', | |||||
| }); | |||||
| } | |||||
| </script> | |||||
| <style> | |||||
| </style> | 
| <template> | |||||
| <a-timeline> | |||||
| <a-timeline-item>求职者领取求职登记表</a-timeline-item> | |||||
| <a-timeline-item>写求职登记表(填表区设在一楼和三楼)</a-timeline-item> | |||||
| <a-timeline-item>留一份求职登记表或个人简历给人才市场</a-timeline-item> | |||||
| <a-timeline-item> | |||||
| 免费参加现场招聘会 | |||||
| </a-timeline-item> | |||||
| <a-timeline-item> | |||||
| 会后继续免费在菊城人才市场发布求职信息和免费推荐就业 | |||||
| </a-timeline-item> | |||||
| </a-timeline> | |||||
| <a-typography> | |||||
| <a-typography-title :level="3">★乘车指引</a-typography-title> | |||||
| <a-typography-paragraph> | |||||
| 沙口总部:在小榄乘坐501、502、505路公交车(原榄运1、2、5),在江滨公园站下车即到(即菊城人才市场门口)。 | |||||
| </a-typography-paragraph> | |||||
| <a-typography-title :level="3">★菊城人才市场沙口总部地图</a-typography-title> | |||||
| <a-typography-paragraph> | |||||
| </a-typography-paragraph> | |||||
| </a-typography> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, computed, onMounted } from 'vue'; | |||||
| </script> | |||||
| <style> | |||||
| </style> | 
| <template> | |||||
| <a-timeline mode="alternate"> | |||||
| <a-timeline-item>电话预定展位</a-timeline-item> | |||||
| <a-timeline-item>传真(电邮)招聘资料</a-timeline-item> | |||||
| <a-timeline-item>资料及展位号确认</a-timeline-item> | |||||
| <a-timeline-item> | |||||
| 参会交费进场招聘 | |||||
| </a-timeline-item> | |||||
| </a-timeline> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| </script> | |||||
| <style> | |||||
| </style> | 
| <a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
| <a-col span="12" v-for="(item, index) in list"> | <a-col span="12" v-for="(item, index) in list"> | ||||
| <div class="talent-box"> | <div class="talent-box"> | ||||
| <a-list item-layout="vertical"> | |||||
| <!-- <a-list item-layout="vertical"> | |||||
| <a-list-item> | <a-list-item> | ||||
| <a-list-item-meta> | <a-list-item-meta> | ||||
| <template #title> | <template #title> | ||||
| <div v-html="item.introduction"></div> | <div v-html="item.introduction"></div> | ||||
| </div> | </div> | ||||
| </a-list-item> | </a-list-item> | ||||
| </a-list> | |||||
| <!-- <a-list item-layout="horizontal" :split="false" position="bottom"> | |||||
| </a-list> --> | |||||
| <a-list item-layout="horizontal" :split="false" position="bottom"> | |||||
| <a-list-item> | <a-list-item> | ||||
| <template #actions> | <template #actions> | ||||
| <a-button> | <a-button> | ||||
| </div> | </div> | ||||
| </a-list-item> | </a-list-item> | ||||
| </a-list> --> | |||||
| </a-list> | |||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | 
| <template> | |||||
| <job-talents :list="jobList"></job-talents> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, computed, onMounted } from 'vue'; | |||||
| import JobTalents from '@/components/job/talents/index.vue' | |||||
| import { PostJobseekerList } from '@/apis/models'; | |||||
| let jobList = ref<object[]>([]) | |||||
| onMounted(() => { | |||||
| PostJobseekerList().then(res => { | |||||
| if (res.data.list.length > 10) { | |||||
| jobList.value = res.data.list.slice(0, 10) | |||||
| } else { | |||||
| jobList.value = res.data.list | |||||
| } | |||||
| }) | |||||
| }) | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| </style> | 
| <a-col span="12"> | <a-col span="12"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="关键字" name="full_name"> | |||||
| <a-input v-model:value="value" placeholder="Basic usage" /> | |||||
| <a-form-item label="关键字" name="keyword"> | |||||
| <a-input v-model:value="createForm.keyword" placeholder="Basic usage" /> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="关键词匹配" name="registration_number"> | |||||
| <a-form-item label="关键词匹配"> | |||||
| <a-checkbox-group> | <a-checkbox-group> | ||||
| <a-checkbox>求职意向</a-checkbox> | <a-checkbox>求职意向</a-checkbox> | ||||
| <a-checkbox>工作经历</a-checkbox> | <a-checkbox>工作经历</a-checkbox> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="应聘职位" name="mandarin"> | |||||
| <!-- <a-c-cascader :dict="2009" @saveCascader="compantJiguanSave" placeholder="请选择籍贯" | |||||
| :cascader_content="addOtherForm.company_jiguan_cascader"></a-c-cascader> --> | |||||
| <a-form-item label="应聘职位"> | |||||
| <a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange" | |||||
| :select_content="job_type"></a-shujilian> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="期望地区" name="mandarin"> | |||||
| <!-- <a-c-cascader :dict="2009" @saveCascader="compantJiguanSave" placeholder="请选择籍贯" | |||||
| :cascader_content="addOtherForm.company_jiguan_cascader"></a-c-cascader> --> | |||||
| <a-form-item label="期望地区"> | |||||
| <a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)" @saveTreeNode="jobAddressChange" | |||||
| :select_content="job_location"></a-shujilian> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="户口所在地" name="mandarin"> | |||||
| <!-- <a-c-cascader :dict="2009" @saveCascader="compantSuozaidiSave" placeholder="请选择所在地" | |||||
| :cascader_content="addOtherForm.company_suozaidi_cascader"></a-c-cascader> --> | |||||
| <a-form-item label="户口所在地"> | |||||
| <a-jilian :dict="2009" @saveCascader="regLevelSave" placeholder="请选择籍贯" | |||||
| :cascader_content="addOtherForm.company_jiguan_cascader"></a-jilian> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="学历"> | <a-form-item label="学历"> | ||||
| <!-- <a-c-select :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree"></a-c-select> --> | |||||
| <a-xuanze :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree" | |||||
| :select_content="createForm.school_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="英语"> | <a-form-item required label="英语"> | ||||
| <!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> --> | |||||
| <a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveEnglish" | |||||
| :select_content="createForm.language_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="国语"> | <a-form-item required label="国语"> | ||||
| <!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> --> | |||||
| <a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveMandarin" | |||||
| :select_content="createForm.language_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="粤语"> | <a-form-item required label="粤语"> | ||||
| <!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> --> | |||||
| <a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveCantonese" | |||||
| :select_content="createForm.language_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="第二外语"> | <a-form-item required label="第二外语"> | ||||
| <!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> --> | |||||
| <a-xuanze :dict="2007" placeholder="请选择第二外语" @saveSelect="saveOtherLanguage" | |||||
| :select_content="createForm.language"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="计算机能力"> | <a-form-item required label="计算机能力"> | ||||
| <!-- <a-c-select :dict="2014" placeholder="请选择职称要求" @saveSelect="saveProfelevel"></a-c-select> --> | |||||
| <a-input v-model:value="value" placeholder="请输入计算机能力" /> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="工作经验"> | <a-form-item required label="工作经验"> | ||||
| <!-- <a-c-select :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience"></a-c-select> --> | |||||
| <a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | |||||
| :select_content="createForm.experience"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="性别" name="sex"> | <a-form-item label="性别" name="sex"> | ||||
| <a-radio-group v-model:value="createForm.sex" button-style="solid"> | |||||
| <a-radio-button :value="1">男</a-radio-button> | |||||
| <a-radio-button :value="2">女</a-radio-button> | |||||
| <a-radio-button :value="3">不限</a-radio-button> | |||||
| <a-radio-group v-model:value="createForm.gender" button-style="solid"> | |||||
| <a-radio-button value="男">男</a-radio-button> | |||||
| <a-radio-button value="女">女</a-radio-button> | |||||
| <a-radio-button value="不限">不限</a-radio-button> | |||||
| </a-radio-group> | </a-radio-group> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| placeholder="请输入最小年龄" style="width: 100%;" /> | placeholder="请输入最小年龄" style="width: 100%;" /> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="最大年龄" name="age_max"> | <a-form-item label="最大年龄" name="age_max"> | ||||
| <a-input-number :min="0" type="number" v-model:value="createForm.age_max" | <a-input-number :min="0" type="number" v-model:value="createForm.age_max" | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="简历更新" name="marital_status"> | <a-form-item required label="简历更新" name="marital_status"> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-input v-model:value="createForm.major" placeholder="请输入专业" /> | <a-input v-model:value="createForm.major" placeholder="请输入专业" /> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | |||||
| <a-form-item label="搜索"> | |||||
| <a-button type="primary" block @click="saveForm">搜索</a-button> | |||||
| </a-form-item> | |||||
| </a-col> | |||||
| </a-row> | </a-row> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| </a-form> | </a-form> | ||||
| <a-button block>保存</a-button> | |||||
| </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 } from 'vue'; | ||||
| // import dayjs from 'dayjs'; | |||||
| // import 'dayjs/locale/zh-cn'; | |||||
| // dayjs.locale('zh-cn'); | |||||
| // const dayjsRef = ref(dayjs); | |||||
| let createForm : companyListType.addrFormType = ref({ | let createForm : companyListType.addrFormType = ref({ | ||||
| full_name: '', | |||||
| registration_number: '', | |||||
| establishment_date: '', | |||||
| contact: '', | |||||
| phone: '', | |||||
| mobile: '', | |||||
| email: '', | |||||
| fax: '', | |||||
| website: '', | |||||
| province: 0, | |||||
| city: 0, | |||||
| district: 0, | |||||
| street: 0, | |||||
| address: '', | |||||
| industry: 0, | |||||
| nature: 0, | |||||
| scale: 0, | |||||
| introduction: '', | |||||
| photo: '', | |||||
| photo_status: 1, | |||||
| license_path: '', | |||||
| license_status: 1, | |||||
| login_name: '', | |||||
| login_pwd: '', | |||||
| company_photos: [], | |||||
| }) | |||||
| let addOtherForm = ref<companyListType.addOtherFormType>({ | |||||
| chengli_date: '', | |||||
| content: '', | |||||
| photo_img: '', | |||||
| license_img: '', | |||||
| company_photo_img: '', | |||||
| company_address_cascader: '', | |||||
| company_industry_cascader: '', | |||||
| company_nature_cascader: '', | |||||
| company_scale_cascader: '', | |||||
| keyword: "", | |||||
| gender: "女", | |||||
| title: 0, | |||||
| education: 0, | |||||
| marital_status: 0, | |||||
| ethnicity: 0, | |||||
| reg_level1: 0, | |||||
| reg_level2: 0, | |||||
| reg_level3: 0, | |||||
| reg_level4: 0, | |||||
| now_level1: 0, | |||||
| now_level2: 0, | |||||
| now_level3: 0, | |||||
| now_level4: 0, | |||||
| maxdob: "9999-12-31 23:59:59", | |||||
| mindob: "1000-01-01 00:00:00", | |||||
| maxheight: 230, | |||||
| minheight: 60, | |||||
| maxweight: 200, | |||||
| minweight: 30, | |||||
| political_status: 0, | |||||
| native_place: 0, | |||||
| desire_area: [], | |||||
| desire_position: [], | |||||
| desire_industry: [], | |||||
| job_type_desire: 0, | |||||
| talent_type_desire: 0, | |||||
| max_work_experience: 0, | |||||
| min_work_experience: 0, | |||||
| salary_range_desire: 0, | |||||
| available_date_desire: 0, | |||||
| title_requirement_desire: 0, | |||||
| skill_certification_desire: 0, | |||||
| english: 0, | |||||
| mandarin: 0, | |||||
| cantonese: 0, | |||||
| other_language: 0, | |||||
| sort: "id", | |||||
| sortby: "asc", | |||||
| page: 1, | |||||
| pagesize: 20 | |||||
| }) | }) | ||||
| onMounted(async () => { | |||||
| // let res = await listSection({ page: 1, pagesize: 10, sort: 'id', sortby: "asc", keyword: "" }); | |||||
| // section_list.value = res.data.sections; | |||||
| let addOtherForm : companyListType.addrFormType = ref({ | |||||
| company_jiguan_cascader: [] | |||||
| }) | }) | ||||
| // 上传图片 | |||||
| // 企业照片 | |||||
| // const uploadPhotoSuccess = (data : Object) => { | |||||
| // addOtherForm.value.photo_img = "http://114.132.245.7:242494" + data | |||||
| // createForm.value.photo = data | |||||
| // } | |||||
| // // 营业执照 | |||||
| // const uploadLicenseSuccess = (data : Object) => { | |||||
| // addOtherForm.value.license_img = "http://114.132.245.7:242494" + data | |||||
| // createForm.value.license_path = data | |||||
| // } | |||||
| // // 企业相册 | |||||
| // const uploadSuccess = (data : Object) => { | |||||
| // addOtherForm.value.company_photo_img = "http://114.132.245.7:242494" + data | |||||
| // createForm.value.company_photos.push({ photo: data }) | |||||
| // } | |||||
| // // 成立日期 | |||||
| // const establishmentDateChange = (val) => { | |||||
| // createForm.value.establishment_date = dayjsRef.value(val).format('YYYY-MM-DD'); | |||||
| // } | |||||
| // // 选择地址 | |||||
| // const compantAddressSave = (data) => { | |||||
| // createForm.value.province = data.arr1[0] ? data.arr1[0] : 0; | |||||
| // createForm.value.city = data.arr1[1] ? data.arr1[1] : 0; | |||||
| // createForm.value.district = data.arr1[2] ? data.arr1[2] : 0; | |||||
| // createForm.value.street = data.arr1[3] ? data.arr1[3] : 0; | |||||
| // } | |||||
| // // 所属行业 industrySave | |||||
| // const industrySave = (data) => { | |||||
| // createForm.value.industry = data.arr1[1] ? data.arr1[1] : 0; | |||||
| // } | |||||
| // // 企业性质 | |||||
| // const natureSave = (data) => { | |||||
| // createForm.value.nature = data.arr1[1] ? data.arr1[1] : 0; | |||||
| // } | |||||
| // // 企业规模 | |||||
| // const scaleSave = (data) => { | |||||
| // createForm.value.scale = data.val ? data.val : 0; | |||||
| // } | |||||
| // // 富文本 | |||||
| // const onEditorUpdate = (data) => { | |||||
| // createForm.value.introduction = data | |||||
| // } | |||||
| // const sumbitForm = () => { | |||||
| // console.log(createForm.value) | |||||
| // if (createForm.value.full_name) { | |||||
| // if (!createForm.value.id) { | |||||
| // addCompany(createForm.value).then(res => { | |||||
| // message.success('新增企业成功'); | |||||
| // hideModal(); | |||||
| // resetForm(); | |||||
| // emit('successAdd'); | |||||
| // }).catch(err => { | |||||
| // }) | |||||
| // } else { | |||||
| // PostCompanyEdit(createForm.value).then(res => { | |||||
| // message.success('修改企业信息成功'); | |||||
| // hideModal(); | |||||
| // resetForm(); | |||||
| // emit('successAdd'); | |||||
| // }).catch(err => { | |||||
| // }) | |||||
| // } | |||||
| // } else { | |||||
| // message.warning('请补充完整信息'); | |||||
| // } | |||||
| // } | |||||
| // 户口所在地 | |||||
| const regLevelSave = (data) => { | |||||
| for (let i = 0; i < 4; i++) { | |||||
| createForm.value[`reg_level${i + 1}`] = data.arr1[i] || 0; | |||||
| } | |||||
| } | |||||
| // 学历要求 | |||||
| const saveSchoolDegree = (data) => { | |||||
| createForm.value.education = data.val.key; | |||||
| } | |||||
| // 英语掌握程度 | |||||
| const saveEnglish = (data) => { | |||||
| createForm.value.english = data.val.key;; | |||||
| } | |||||
| // 国语掌握程度 | |||||
| const saveMandarin = (data) => { | |||||
| createForm.value.mandarin = data.val.key;; | |||||
| } | |||||
| // 粤语掌握程度 | |||||
| const saveCantonese = (data) => { | |||||
| createForm.value.cantonese = data.val.key;; | |||||
| } | |||||
| // 第二外语 | |||||
| const saveOtherLanguage = (data) => { | |||||
| createForm.value.other_language = data.val.key;; | |||||
| } | |||||
| // 工作经验 | |||||
| const saveExperience = (data) => { | |||||
| createForm.value.experience = data.val.key; | |||||
| } | |||||
| </script> | </script> | ||||
| <style> | <style> | 
| import CommonLeftSider from '@/components/common/left-sider.vue'; | import CommonLeftSider from '@/components/common/left-sider.vue'; | ||||
| import ABiaoge from '@/components/biaoge/index.vue'; | import ABiaoge from '@/components/biaoge/index.vue'; | ||||
| import AJilian from '@/components/form/jilian.vue'; | import AJilian from '@/components/form/jilian.vue'; | ||||
| import AShujilian from '@/components/form/shujilian.vue'; | |||||
| import AXuanze from '@/components/form/xuanze.vue'; | import AXuanze from '@/components/form/xuanze.vue'; | ||||
| import { routesModuleList } from '@/router/dynamic'; | import { routesModuleList } from '@/router/dynamic'; | ||||
| import { routesManageModuleList } from '@/router/manageDynamic'; | import { routesManageModuleList } from '@/router/manageDynamic'; | ||||
| app.component('common-left-sider', CommonLeftSider); | app.component('common-left-sider', CommonLeftSider); | ||||
| app.component('a-biaoge', ABiaoge); | app.component('a-biaoge', ABiaoge); | ||||
| app.component('a-jilian', AJilian); | app.component('a-jilian', AJilian); | ||||
| app.component('a-shujilian', AShujilian); | |||||
| app.component('a-xuanze', AXuanze); | app.component('a-xuanze', AXuanze); | ||||
| app.component('QuillEditor', QuillEditor) | app.component('QuillEditor', QuillEditor) | ||||
| app.use(router); | app.use(router); | 
| <template> | <template> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="4"> | <a-col span="4"> | ||||
| <a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" style="width: 100%;" mode="inline"> | |||||
| <a-menu-item key="1">招聘会预定</a-menu-item> | |||||
| <a-menu-item key="2">企业参会方式</a-menu-item> | |||||
| <a-menu-item key="3">求职者参会指南</a-menu-item> | |||||
| <a-menu-item key="4">乘车路线</a-menu-item> | |||||
| <a-menu-item key="5">绿色通道</a-menu-item> | |||||
| <a-menu-item key="6">联系方式</a-menu-item> | |||||
| </a-menu> | |||||
| <common-left-sider :menu_list="menu_list" :selected_key="[1]" | |||||
| @changeKey="changeKey"></common-left-sider> | |||||
| </a-col> | </a-col> | ||||
| <a-col span="16"> | <a-col span="16"> | ||||
| <div style="width: 100%;background-color: #fff;padding: 10px;"> | <div style="width: 100%;background-color: #fff;padding: 10px;"> | ||||
| <a-list item-layout="horizontal" :data-source="data"> | |||||
| <template #renderItem="{ item }"> | |||||
| <a-list-item> | |||||
| <a-list-item-meta | |||||
| description="Ant Design, a design language for background applications, is refined by Ant UED Team"> | |||||
| <template #title> | |||||
| <a href="https://www.antdv.com/">{{ item.title }}</a> | |||||
| </template> | |||||
| </a-list-item-meta> | |||||
| </a-list-item> | |||||
| </template> | |||||
| </a-list> | |||||
| <a-pagination v-model:current="current" :total="500" style="text-align: center;" /> | |||||
| <meet-booking v-if="curKey == 1"></meet-booking> | |||||
| <meet-method v-if="curKey == 2"></meet-method> | |||||
| <meet-guide v-if="curKey == 3"></meet-guide> | |||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="4"> | <a-col span="4"> | ||||
| </a-list> | </a-list> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed, watch } from 'vue'; | |||||
| const openKeys = ref<string[]>(['1']); | |||||
| const selectedKeys = ref<string[]>(['1']); | |||||
| interface DataItem { | |||||
| title : string; | |||||
| import { ref, computed, onMounted } from 'vue'; | |||||
| import MeetBooking from '@/components/job/meet/booking/index.vue' | |||||
| import MeetMethod from '@/components/job/meet/method/index.vue' | |||||
| import MeetGuide from '@/components/job/meet/guide/index.vue' | |||||
| let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | |||||
| let menu_list = ref([{ name: '招聘会预定', key: 1 },{ name: '企业参会方式', key: 2},{ name: '求职者参会指南', key: 3},{ name: '乘车路线', key: 4},{ name: '绿色通道', key: 5},{ name: '联系方式', key: 6}]) | |||||
| let curKey = ref<Number>(1) | |||||
| const changeKey = (data) => { | |||||
| curKey.value = data.key; | |||||
| } | } | ||||
| const data : DataItem[] = ref([ | |||||
| { | |||||
| title: 'Ant Design Title 1', | |||||
| }, | |||||
| { | |||||
| title: 'Ant Design Title 2', | |||||
| }, | |||||
| { | |||||
| title: 'Ant Design Title 3', | |||||
| }, | |||||
| { | |||||
| title: 'Ant Design Title 4', | |||||
| }, | |||||
| ]) | |||||
| </script> | </script> | ||||
| <style> | <style> | 
| <a-col span="20"> | <a-col span="20"> | ||||
| <div style="width: 100%;background-color: #fff;padding: 10px;"> | <div style="width: 100%;background-color: #fff;padding: 10px;"> | ||||
| <resume-search v-if="curKey == 1"></resume-search> | <resume-search v-if="curKey == 1"></resume-search> | ||||
| <resume-result v-if="curKey == 2"></resume-result> | |||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, computed, onMounted } from 'vue'; | import { ref, computed, onMounted } from 'vue'; | ||||
| import ResumeSearch from '@/components/resume/search/index.vue' | import ResumeSearch from '@/components/resume/search/index.vue' | ||||
| let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | |||||
| let menu_list = ref([{ name: '简历搜索', key: 1 }]) | |||||
| import ResumeResult from '@/components/resume/result/index.vue' | |||||
| let menu_list = ref([{ name: '简历搜索', key: 1 },{ name: '搜索结果', key: 2 }]) | |||||
| let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
| const changeKey = (data) => { | const changeKey = (data) => { | ||||
| curKey.value = data.key; | curKey.value = data.key; |