import{_ as r,r as s,o as d,c as p,a as e,b as a,w as c,d as l,p as i,e as u}from"./index-XVS5hQ4e.js";const h={},t=o=>(i("data-v-80d1ee2a"),o=o(),u(),o),m={class:"nopage"},f=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=t(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),x=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=t(()=>e("p",null,"你页面走丢了~",-1));function b(o,k){const n=s("a-button"),_=s("router-link");return d(),p("div",m,[f,v,x,e("div",null,[y,e("p",null,[a(_,{to:"/job/home"},{default:c(()=>[a(n,{type:"primary"},{default:c(()=>[l("返回首页")]),_:1})]),_:1})])])])}const w=r(h,[["render",b],["__scopeId","data-v-80d1ee2a"]]);export{w as default}; | |||||
import{_ as r,r as s,o as d,c as p,a as e,b as a,w as c,d as l,p as i,e as u}from"./index-F9n6oHAB.js";const h={},t=o=>(i("data-v-80d1ee2a"),o=o(),u(),o),m={class:"nopage"},f=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=t(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),x=t(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=t(()=>e("p",null,"你页面走丢了~",-1));function b(o,k){const n=s("a-button"),_=s("router-link");return d(),p("div",m,[f,v,x,e("div",null,[y,e("p",null,[a(_,{to:"/job/home"},{default:c(()=>[a(n,{type:"primary"},{default:c(()=>[l("返回首页")]),_:1})]),_:1})])])])}const w=r(h,[["render",b],["__scopeId","data-v-80d1ee2a"]]);export{w as default}; |
<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-XVS5hQ4e.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-HfhjWLuW.css"> | |||||
<script type="module" crossorigin src="/assets/index-F9n6oHAB.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-OlZ5X-qT.css"> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
// 添加响应拦截器 | // 添加响应拦截器 | ||||
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) | |||||
break; | break; | ||||
case 0: | case 0: | ||||
break; | break; | ||||
const resData = res; | const resData = res; | ||||
typeHelper.isFunction(cb) && cb(resData); | typeHelper.isFunction(cb) && cb(resData); | ||||
}).catch(err => { | }).catch(err => { | ||||
console.log(err) | |||||
cb(err.response) | cb(err.response) | ||||
}) | }) | ||||
} | } |
<template> | <template> | ||||
<img :src="imgObj.src" alt="" :style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} "> | |||||
<img :src="imgObj.src" alt="" | |||||
:style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} " | |||||
@click="preImage(imgObj.src)"> | |||||
<a-modal v-model:open="imageBigOpen" centered :footer="null" @cancel="close"> | |||||
<img :src="imgObj.src" style="width: 100%; height: 100%;"> | |||||
</a-modal> | |||||
</template> | </template> | ||||
<script lang="ts" setup> | <script lang="ts" setup> | ||||
import { ref, onMounted, defineProps, watch, computed } from 'vue'; | import { ref, onMounted, defineProps, watch, computed } from 'vue'; | ||||
let imageBigOpen = ref<Boolean>(false) | |||||
const props = defineProps({ | const props = defineProps({ | ||||
imgObj: { | imgObj: { | ||||
type: Object, | type: Object, | ||||
mode ?: String, | mode ?: String, | ||||
} | } | ||||
const imgObj = ref<imgType>({ | const imgObj = ref<imgType>({ | ||||
src : '', | |||||
src: '', | |||||
width: 0, | width: 0, | ||||
height : 0, | |||||
mode : '', | |||||
height: 0, | |||||
mode: '', | |||||
}) | }) | ||||
watch(() => [props.imgObj], (newVal: any) => { | |||||
if(newVal[0]) { | |||||
// 预览 | |||||
const preImage = (src) => { | |||||
imageBigOpen.value = true | |||||
} | |||||
const close = (src) => { | |||||
imageBigOpen.value = false | |||||
} | |||||
watch(() => [props.imgObj], (newVal : any) => { | |||||
if (newVal[0]) { | |||||
imgObj.value = newVal[0] | imgObj.value = newVal[0] | ||||
} | } | ||||
}, { immediate: true }) | }, { immediate: true }) |
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue'; | ||||
import axios from 'axios'; | import axios from 'axios'; | ||||
import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
import { useCommon } from '@/hooks/useCommon'; | |||||
let { imageprefix } = useCommon(); | |||||
const props = defineProps(['upload_txt', 'success_image', 'images_length', 'image_type']); | const props = defineProps(['upload_txt', 'success_image', 'images_length', 'image_type']); | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
const headers = ref<Object>({ | const headers = ref<Object>({ | ||||
uid: '-1', // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突 | uid: '-1', // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突 | ||||
name: e.file.name, // 文件名 | name: e.file.name, // 文件名 | ||||
status: 'done', // 状态有:uploading done error removed | status: 'done', // 状态有:uploading done error removed | ||||
url: "https://rcsc-test.jcjob.cn/img" + res.data.data.filename | |||||
url: imageprefix + res.data.data.filename | |||||
}] | }] | ||||
} else { | } else { | ||||
if (imagesList.value.length < imagesLength.value) { | if (imagesList.value.length < imagesLength.value) { | ||||
uid: '-' + (imagesList.value.length + 1), // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突 | uid: '-' + (imagesList.value.length + 1), // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突 | ||||
name: e.file.name, // 文件名 | name: e.file.name, // 文件名 | ||||
status: 'done', // 状态有:uploading done error removed | status: 'done', // 状态有:uploading done error removed | ||||
url: "https://rcsc-test.jcjob.cn/img" + res.data.data.filename | |||||
url: imageprefix + res.data.data.filename | |||||
}) | }) | ||||
} else { | } else { | ||||
message.danger('最多上传5张'); | message.danger('最多上传5张'); |
onOk() { | onOk() { | ||||
PostJobseekAddfavorite({job_id: job_id }).then(res => { | PostJobseekAddfavorite({job_id: job_id }).then(res => { | ||||
successToast('已收藏') | successToast('已收藏') | ||||
mapContainer.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, | ||||
onOk() { | onOk() { | ||||
PostJobseekDelfavorite({job_id: job_id }).then(res => { | PostJobseekDelfavorite({job_id: job_id }).then(res => { | ||||
successToast('已取消收藏') | successToast('已取消收藏') | ||||
mapContainer.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, | ||||
onOk() { | onOk() { | ||||
PostJobseekAddapplication({job_id: job_id }).then(res => { | PostJobseekAddapplication({job_id: job_id }).then(res => { | ||||
successToast('已投递') | successToast('已投递') | ||||
mapContainer.value = null | |||||
getDetail(); | getDetail(); | ||||
}) | }) | ||||
}, | }, |
<template> | <template> | ||||
<a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
<a-col span="8" v-for="(item, index) in jobList"> | <a-col span="8" v-for="(item, index) in jobList"> | ||||
<a-card hoverable style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;"> | |||||
<a-card hoverable style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;" @click="toDetail(item.id, item.company_id)"> | |||||
<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%;"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div>{{item.full_name}}</div> | <div>{{item.full_name}}</div> | ||||
<a-button type="primary" size="small" | <a-button type="primary" size="small" | ||||
@click="toDetail(item.id, item.company_id)">查看详情</a-button> | |||||
>查看详情</a-button> | |||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;color: #BEBEBE;"> | <a-flex style="width: 100%;color: #BEBEBE;"> | ||||
{{item.locations ? item.locations[0].name : '未知地址'}} | {{item.locations ? item.locations[0].name : '未知地址'}} |
<div class="company-box"> | <div class="company-box"> | ||||
<a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
<a-col v-for="(item, index) in companyList"> | <a-col v-for="(item, index) in companyList"> | ||||
<div style="color: #4FBE70" @click="toCompanyDetail(item.id)"> {{item.full_name}}</div> | |||||
<div style="color: #808080" @click="toCompanyDetail(item.id)"> {{item.full_name}}</div> | |||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</div> | </div> | ||||
<div class="company-box"> | <div class="company-box"> | ||||
<a-row :gutter="[10,10]"> | <a-row :gutter="[10,10]"> | ||||
<a-col v-for="(item, index) in companyList"> | <a-col v-for="(item, index) in companyList"> | ||||
<div style="color: #4FBE70" @click="toCompanyDetail(item.id)"> {{item.full_name}}</div> | |||||
<div style="color: #808080" @click="toCompanyDetail(item.id)"> {{item.full_name}}</div> | |||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</div> | </div> |
<template v-else> | <template v-else> | ||||
<a-row :gutter="[10,20]" > | <a-row :gutter="[10,20]" > | ||||
<a-col span="8" v-for="(item, index) in jobList"> | <a-col span="8" v-for="(item, index) in jobList"> | ||||
<a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;border-radius: 8px;"> | |||||
<a-card hoverable @click="toDetail(item.id, item.company_id)"> | |||||
<a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;border-radius: 8px;" > | |||||
<a-space direction="vertical" :size="10"> | <a-space direction="vertical" :size="10"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div style="font-size: 18px; font-weight: 600;">{{item.name}}</div> | <div style="font-size: 18px; font-weight: 600;">{{item.name}}</div> | ||||
<a-space direction="vertical"> | <a-space direction="vertical"> | ||||
<a-flex justify="space-between" style="width: 100%;"> | <a-flex justify="space-between" style="width: 100%;"> | ||||
<div>{{item.full_name}}</div> | <div>{{item.full_name}}</div> | ||||
<a-button type="primary" size="small" | |||||
@click="toDetail(item.id, item.company_id)">查看详情</a-button> | |||||
<!-- <a-button type="primary" size="small">查看详情</a-button> --> | |||||
</a-flex> | </a-flex> | ||||
<a-flex style="width: 100%;color: #bebebe;"> | <a-flex style="width: 100%;color: #bebebe;"> | ||||
{{item.locations ? item.locations[0].name : '未知地址'}} | {{item.locations ? item.locations[0].name : '未知地址'}} | ||||
</a-flex> | </a-flex> | ||||
</a-space> | </a-space> | ||||
</a-flex> | </a-flex> | ||||
</a-card> | |||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-flex justify="center"> | <a-flex justify="center"> | ||||
sessionStorage.setItem('mode', 'detail') | sessionStorage.setItem('mode', 'detail') | ||||
emit('detail') | emit('detail') | ||||
} | } | ||||
const toCompanyDetail = (company_id : Number) => { | |||||
sessionStorage.setItem('tab_key', 1) | |||||
sessionStorage.setItem('pubilc_id', company_id) | |||||
sessionStorage.setItem('mode', 'detail') | |||||
emit('detail') | |||||
} | |||||
onMounted(() => { | onMounted(() => { | ||||
getData(); | getData(); |
<template v-if="state"> | <template v-if="state"> | ||||
<a-form :model="createForm" layout="vertical" class="resume-form"> | <a-form :model="createForm" layout="vertical" class="resume-form"> | ||||
<a-row :gutter="20"> | <a-row :gutter="20"> | ||||
<a-col span="24"> | |||||
<a-form-item label="上传相片" name="photo"> | |||||
<upload upload_txt="上传相片" @uploadSuccess="uploadPhotoSuccess" | |||||
:success_image="addOtherForm.photo_img" images_length="1" image_type="1"></upload> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="简历是否可见" name="hide_resume"> | <a-form-item label="简历是否可见" name="hide_resume"> | ||||
<a-radio-group v-model:value="createForm.hide_resume" button-style="solid" size="large" | <a-radio-group v-model:value="createForm.hide_resume" button-style="solid" size="large" | ||||
</a-row> | </a-row> | ||||
</a-col> | </a-col> | ||||
<a-col span="6"> | <a-col span="6"> | ||||
<image-container | |||||
:imgObj="{src: 'https://rcsc-test.jcjob.cn/img'+detail.photo ,width: '150px',height:'210px'}"></image-container> | |||||
<image-container v-if="detail.photo" | |||||
:imgObj="{src: imageprefix + detail.photo ,width: '150px',height:'210px'}"></image-container> | |||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed, defineProps, watch, defineEmits, createVNode } from 'vue'; | import { ref, onMounted, computed, defineProps, watch, defineEmits, createVNode } from 'vue'; | ||||
import { PostJobapplicantAdd, PostJobapplicantUpdate, GetJobapplicantDetail } from '@/apis/models'; | import { PostJobapplicantAdd, PostJobapplicantUpdate, GetJobapplicantDetail } from '@/apis/models'; | ||||
import Upload from '@/components/form/upload.vue'; | |||||
import { intersectionAlike } from '@/utils/dataHelper'; | import { intersectionAlike } from '@/utils/dataHelper'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts'; | import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, imageprefix } = useCommon(); | |||||
const dayjsRef = ref(dayjs); | const dayjsRef = ref(dayjs); | ||||
let props = defineProps(['form_state']); | let props = defineProps(['form_state']); | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
dob: dayjsRef.value(res.data.dob), | dob: dayjsRef.value(res.data.dob), | ||||
reg_level_cascader: [res.data.reg_level1, res.data.reg_level2, res.data.reg_level3, res.data.reg_level4], | reg_level_cascader: [res.data.reg_level1, res.data.reg_level2, res.data.reg_level3, res.data.reg_level4], | ||||
now_level_cascader: [res.data.now_level1, res.data.now_level2, res.data.now_level3, res.data.now_level4], | now_level_cascader: [res.data.now_level1, res.data.now_level2, res.data.now_level3, res.data.now_level4], | ||||
native_place_txt: res.data.native_place_txt | |||||
native_place_txt: res.data.native_place_txt, | |||||
photo_img: imageprefix + res.data.photo | |||||
} | } | ||||
}) | }) | ||||
} | } | ||||
// 营业执照 | |||||
const uploadPhotoSuccess = (data : Object) => { | |||||
addOtherForm.value.photo_img = imageprefix + data | |||||
createForm.value.photo = data | |||||
} | |||||
// 出生日期 | // 出生日期 | ||||
const dobChange = (val) => { | const dobChange = (val) => { | ||||
// 学历 | // 学历 | ||||
const educationPlaceholder = ref('请选择学历'); | const educationPlaceholder = ref('请选择学历'); | ||||
const saveEducation = (data) => { | const saveEducation = (data) => { | ||||
createForm.value.education = data.val; | |||||
createForm.value.education = data.val.key; | |||||
} | } | ||||
// 职称 | // 职称 | ||||
const titlePlaceholder = ref('请选择职称') | const titlePlaceholder = ref('请选择职称') | ||||
const saveTitle = (data) => { | const saveTitle = (data) => { | ||||
createForm.value.title = data.val; | |||||
createForm.value.title = data.val.key; | |||||
} | } | ||||
// 婚姻状态 | // 婚姻状态 | ||||
const maritalStatusPlaceholder = ref('请选择婚姻状态') | const maritalStatusPlaceholder = ref('请选择婚姻状态') | ||||
const saveMaritalStatus = (data) => { | const saveMaritalStatus = (data) => { | ||||
createForm.value.marital_status = data.val; | |||||
createForm.value.marital_status = data.val.key; | |||||
} | } | ||||
// 民族 | // 民族 | ||||
const ethnicityPlaceholder = ref('请选择民族') | const ethnicityPlaceholder = ref('请选择民族') | ||||
const saveEthnicity = (data) => { | const saveEthnicity = (data) => { | ||||
createForm.value.ethnicity = data.val; | |||||
createForm.value.ethnicity = data.val.key; | |||||
} | } | ||||
// 政治面貌 | // 政治面貌 | ||||
const politicalStatusPlaceholder = ref('请选择政治面貌') | const politicalStatusPlaceholder = ref('请选择政治面貌') | ||||
const savePoliticalStatus = (data) => { | const savePoliticalStatus = (data) => { | ||||
createForm.value.political_status = data.val; | |||||
createForm.value.political_status = data.val.key; | |||||
} | } | ||||
height: 0, | height: 0, | ||||
weight: 0, | weight: 0, | ||||
political_status: 0, | political_status: 0, | ||||
native_place: 0 | |||||
native_place: 0, | |||||
} | } | ||||
export let otherDataForm = { | export let otherDataForm = { | ||||
dob: '', | dob: '', | ||||
reg_level_cascader: '', | reg_level_cascader: '', | ||||
now_level_cascader: '', | now_level_cascader: '', | ||||
native_place_txt: '' | |||||
native_place_txt: '', | |||||
photo_img: '' | |||||
} | } | ||||
dob: '', | dob: '', | ||||
reg_level_cascader: '', | reg_level_cascader: '', | ||||
now_level_cascader: '', | now_level_cascader: '', | ||||
native_place_txt: '' | |||||
native_place_txt: '', | |||||
photo_img: '' | |||||
} | } | ||||
return { dataForm, otherDataForm } | return { dataForm, otherDataForm } |
<a-row> | <a-row> | ||||
<a-space direction="vertical"> | <a-space direction="vertical"> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
固 话:{{detail.mobile}} | |||||
固 话:{{detail.landline}} | |||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
手机号码:{{detail.mobile}} | 手机号码:{{detail.mobile}} |
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<a-list :data-source="certificateList"> | <a-list :data-source="certificateList"> | ||||
<template #loadMore> | |||||
<template #loadMore v-if="certificateList.length > 0"> | |||||
<a-flex justify="center"> | <a-flex justify="center"> | ||||
<a-space> | <a-space> | ||||
<div v-if="!loading"> | <div v-if="!loading"> |
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<a-list :data-source=" experienceList"> | <a-list :data-source=" experienceList"> | ||||
<template #loadMore> | |||||
<template #loadMore v-if="experienceList.length > 0"> | |||||
<a-flex justify="center"> | <a-flex justify="center"> | ||||
<a-space> | <a-space> | ||||
<div v-if="!loading" > | <div v-if="!loading" > |
<a-tab-pane :key="3" tab="其他意向"> | <a-tab-pane :key="3" tab="其他意向"> | ||||
<a-row :gutter="20"> | <a-row :gutter="20"> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="其他职位" name="other_positions"> | |||||
<a-form-item label="其他职位"> | |||||
<a-input v-model:value="basicForm.other_positions" placeholder="请输入其他职位" | <a-input v-model:value="basicForm.other_positions" placeholder="请输入其他职位" | ||||
size="large" /> | size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-row> | </a-row> | ||||
</a-tab-pane> | </a-tab-pane> | ||||
</a-tabs> | </a-tabs> | ||||
</a-form> | </a-form> | ||||
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<a-typography> | |||||
<a-typography-title :level="5"> | |||||
意向职位 | |||||
</a-typography-title> | |||||
</a-typography> | |||||
<a-typography-paragraph> | |||||
<a-space direction="vertical"> | |||||
<template v-for="(item,index) in positionList"> | |||||
<div> | |||||
{{item.level1_txt}}/{{item.level2_txt}} | |||||
<a-divider type="vertical" /> | |||||
<a-button size="small" type="text" @click="toPositionEdit(item)"> | |||||
<EditOutlined /> | |||||
</a-button> | |||||
<a-divider type="vertical" /> | |||||
<a-popconfirm title="是否删除该意向职位" @confirm="delPosition(item.id)"> | |||||
<a-button size="small" type="text" > | |||||
<DeleteOutlined /> | |||||
<template v-if="positionList.length > 0"> | |||||
<a-typography> | |||||
<a-typography-title :level="5"> | |||||
意向职位 | |||||
</a-typography-title> | |||||
</a-typography> | |||||
<a-typography-paragraph> | |||||
<a-space direction="vertical"> | |||||
<template v-for="(item,index) in positionList"> | |||||
<div> | |||||
{{item.level1_txt}}/{{item.level2_txt}} | |||||
<a-divider type="vertical" /> | |||||
<a-button size="small" type="text" @click="toPositionEdit(item)"> | |||||
<EditOutlined /> | |||||
</a-button> | </a-button> | ||||
</a-popconfirm> | |||||
</div> | |||||
</template> | |||||
</a-space> | |||||
</a-typography-paragraph> | |||||
<a-typography> | |||||
<a-typography-title :level="5"> | |||||
意向地区 | |||||
</a-typography-title> | |||||
</a-typography> | |||||
<a-typography-paragraph> | |||||
<a-space direction="vertical"> | |||||
<template v-for="(item,index) in areaList"> | |||||
<div> | |||||
{{item.level1_txt}} | |||||
<span v-if="item.level2_txt">/</span> | |||||
{{item.level2_txt}} | |||||
<span v-if="item.level3_txt">/</span> | |||||
{{item.level3_txt}} | |||||
<span v-if="item.level4_txt">/</span> | |||||
{{item.level4_txt}} | |||||
<a-divider type="vertical" /> | |||||
<a-button size="small" type="text" @click="toEdit(item)"> | |||||
<EditOutlined /> | |||||
</a-button> | |||||
<a-divider type="vertical" /> | |||||
<a-popconfirm title="是否删除该意向地区" @confirm="delArea(item.id)"> | |||||
<a-button size="small" type="text" > | |||||
<DeleteOutlined /> | |||||
<a-divider type="vertical" /> | |||||
<a-popconfirm title="是否删除该意向职位" @confirm="delPosition(item.id)"> | |||||
<a-button size="small" type="text"> | |||||
<DeleteOutlined /> | |||||
</a-button> | |||||
</a-popconfirm> | |||||
</div> | |||||
</template> | |||||
</a-space> | |||||
</a-typography-paragraph> | |||||
</template> | |||||
<template v-if="areaList.length > 0"> | |||||
<a-typography> | |||||
<a-typography-title :level="5"> | |||||
意向地区 | |||||
</a-typography-title> | |||||
</a-typography> | |||||
<a-typography-paragraph> | |||||
<a-space direction="vertical"> | |||||
<template v-for="(item,index) in areaList"> | |||||
<div> | |||||
{{item.level1_txt}} | |||||
<span v-if="item.level2_txt">/</span> | |||||
{{item.level2_txt}} | |||||
<span v-if="item.level3_txt">/</span> | |||||
{{item.level3_txt}} | |||||
<span v-if="item.level4_txt">/</span> | |||||
{{item.level4_txt}} | |||||
<a-divider type="vertical" /> | |||||
<a-button size="small" type="text" @click="toEdit(item)"> | |||||
<EditOutlined /> | |||||
</a-button> | </a-button> | ||||
</a-popconfirm> | |||||
</div> | |||||
</template> | |||||
</a-space> | |||||
</a-typography-paragraph> | |||||
<a-divider type="vertical" /> | |||||
<a-popconfirm title="是否删除该意向地区" @confirm="delArea(item.id)"> | |||||
<a-button size="small" type="text"> | |||||
<DeleteOutlined /> | |||||
</a-button> | |||||
</a-popconfirm> | |||||
</div> | |||||
</template> | |||||
</a-space> | |||||
</a-typography-paragraph> | |||||
</template> | |||||
<template v-if="basic"> | <template v-if="basic"> | ||||
<a-typography> | <a-typography> | ||||
<a-typography-title :level="5"> | <a-typography-title :level="5"> | ||||
</a-button> | </a-button> | ||||
<a-divider type="vertical" /> | <a-divider type="vertical" /> | ||||
<a-popconfirm title="是否删除其他意向" @confirm="delBasic(basic.id)"> | <a-popconfirm title="是否删除其他意向" @confirm="delBasic(basic.id)"> | ||||
<a-button size="small" type="text" > | |||||
<a-button size="small" type="text"> | |||||
<DeleteOutlined /> | <DeleteOutlined /> | ||||
</a-button> | </a-button> | ||||
</a-popconfirm> | </a-popconfirm> | ||||
import { dataAreaForm, dataPositionForm, dataBasicForm, otherDataForm, reset } from '@/components/jobseeker/resume/intention/data.ts'; | import { dataAreaForm, dataPositionForm, dataBasicForm, otherDataForm, reset } from '@/components/jobseeker/resume/intention/data.ts'; | ||||
import { EditOutlined, FileSearchOutlined, RedoOutlined, DeleteOutlined } from '@ant-design/icons-vue'; | import { EditOutlined, FileSearchOutlined, RedoOutlined, DeleteOutlined } from '@ant-design/icons-vue'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, dayjs,commomParams, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
let { store, dayjs, commomParams, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
const dayjsRef = ref(dayjs); | const dayjsRef = ref(dayjs); | ||||
let props = defineProps(['form_state']); | let props = defineProps(['form_state']); | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
PostJobapplicantDesirebasedetail().then(res => { | PostJobapplicantDesirebasedetail().then(res => { | ||||
basic.value = res.data | basic.value = res.data | ||||
basicForm.value = intersectionAlike(basicForm.value, res.data) | basicForm.value = intersectionAlike(basicForm.value, res.data) | ||||
console.log(basicForm.value) | |||||
basicForm.value.id = res.data.id; | basicForm.value.id = res.data.id; | ||||
}) | }) | ||||
} | } | ||||
PostJobapplicantAdddesirearea(areaForm.value).then(res => { | PostJobapplicantAdddesirearea(areaForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
getArea(); | getArea(); | ||||
activeKey.value = 2 | |||||
resetForm('area') | resetForm('area') | ||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} | } | ||||
} | } | ||||
const toEdit = (item : Object) => { | const toEdit = (item : Object) => { | ||||
areaForm.value.id = item.id; | areaForm.value.id = item.id; | ||||
getDetail(areaForm.value.id) | getDetail(areaForm.value.id) | ||||
emit("editEdit") | emit("editEdit") | ||||
} | } | ||||
// 详情 | // 详情 | ||||
const getDetail = (val) => { | const getDetail = (val) => { | ||||
PostJobapplicantDesireareadetail({id: val}).then(res => { | |||||
PostJobapplicantDesireareadetail({ id: val }).then(res => { | |||||
areaForm.value = intersectionAlike(areaForm.value, res.data) | areaForm.value = intersectionAlike(areaForm.value, res.data) | ||||
areaForm.value.id = res.data.id; | areaForm.value.id = res.data.id; | ||||
for (var i = 1; i <= 4; i++) { | for (var i = 1; i <= 4; i++) { | ||||
if (res.data['level' + i]) { | |||||
addOtherForm.value.area.push(res.data['level' + i]); | |||||
} | |||||
if (res.data['level' + i]) { | |||||
addOtherForm.value.area.push(res.data['level' + i]); | |||||
} | |||||
} | } | ||||
}) | }) | ||||
} | } | ||||
PostJobapplicantAdddesireindustry(positionForm.value).then(res => { | PostJobapplicantAdddesireindustry(positionForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
getPosition(); | getPosition(); | ||||
activeKey.value = 3 | |||||
resetForm('position') | resetForm('position') | ||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} | } | ||||
} | } | ||||
const toPositionEdit = (item : Object) => { | const toPositionEdit = (item : Object) => { | ||||
positionForm.value.id = item.id; | positionForm.value.id = item.id; | ||||
getPositionDetail(positionForm.value.id) | getPositionDetail(positionForm.value.id) | ||||
activeKey.value = 2 | activeKey.value = 2 | ||||
emit("editEdit") | emit("editEdit") | ||||
} | } | ||||
// 详情 | // 详情 | ||||
const getPositionDetail = (val) => { | const getPositionDetail = (val) => { | ||||
PostJobapplicantDesireindustrydetail({id: val}).then(res => { | |||||
PostJobapplicantDesireindustrydetail({ id: val }).then(res => { | |||||
positionForm.value = intersectionAlike(positionForm.value, res.data) | positionForm.value = intersectionAlike(positionForm.value, res.data) | ||||
positionForm.value.id = res.data.id; | positionForm.value.id = res.data.id; | ||||
for (var i = 1; i <= 2; i++) { | for (var i = 1; i <= 2; i++) { | ||||
if (res.data['level' + i]) { | |||||
addOtherForm.value.position.push(res.data['level' + i]); | |||||
} | |||||
if (res.data['level' + i]) { | |||||
addOtherForm.value.position.push(res.data['level' + i]); | |||||
} | |||||
} | } | ||||
}) | }) | ||||
} | } | ||||
}) | }) | ||||
} | } | ||||
} | } | ||||
const toBasicEdit = (item : Object) => { | const toBasicEdit = (item : Object) => { | ||||
getBasic() | getBasic() | ||||
activeKey.value = 3 | activeKey.value = 3 | ||||
emit("editEdit") | emit("editEdit") | ||||
} | } | ||||
const delBasic = (id : number) => { | const delBasic = (id : number) => { | ||||
commomParams.value.delParam = { id: id }; | commomParams.value.delParam = { id: id }; | ||||
PostJobapplicantDeldesirebase(commomParams.value.delParam).then(res => { | PostJobapplicantDeldesirebase(commomParams.value.delParam).then(res => { | ||||
getBasic(); | getBasic(); | ||||
}) | }) | ||||
} | } | ||||
const resetForm = (val) => { | const resetForm = (val) => { | ||||
if (val == 'area') { | if (val == 'area') { | ||||
areaForm = reset().dataForm as JobseekerIntentionType.JobseekerIntentionAreaFormType; | |||||
areaForm.value = reset().dataAreaForm as JobseekerIntentionType.JobseekerIntentionAreaFormType; | |||||
} | } | ||||
if (val == 'position') { | if (val == 'position') { | ||||
positionForm = reset().dataForm as JobseekerIntentionType.JobseekerIntentionPositionFormType; | |||||
positionForm.value = reset().dataPositionForm as JobseekerIntentionType.JobseekerIntentionPositionFormType; | |||||
} | } | ||||
if (val == 'basic') { | if (val == 'basic') { | ||||
basicForm = reset().dataForm as JobseekerIntentionType.JobseekerIntentionBasicFormType; | |||||
basicForm.value = reset().dataBasicForm as JobseekerIntentionType.JobseekerIntentionBasicFormType; | |||||
} | } | ||||
addOtherForm = reset().dataForm as JobseekerIntentionType.OtherFormType; | |||||
addOtherForm.value = reset().otherDataForm as JobseekerIntentionType.OtherFormType; | |||||
state.value = false; | state.value = false; | ||||
emit("quitEdit") | emit("quitEdit") | ||||
} | } | ||||
watch(() => [props.form_state], (newVal) => { | watch(() => [props.form_state], (newVal) => { | ||||
state.value = newVal[0]; | state.value = newVal[0]; | ||||
getBasic(); | getBasic(); | ||||
getPosition(); | |||||
getArea(); | |||||
}) | }) | ||||
</script> | </script> | ||||
if (createForm.value.id) { | if (createForm.value.id) { | ||||
PostJobapplicantUpdateintroduction(createForm.value).then(res => { | PostJobapplicantUpdateintroduction(createForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
getBasic(); | |||||
resetForm() | resetForm() | ||||
getBasic(); | |||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} else { | } else { | ||||
PostJobapplicantAddintroduction(createForm.value).then(res => { | PostJobapplicantAddintroduction(createForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
getBasic(); | |||||
resetForm() | resetForm() | ||||
getBasic(); | |||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} | } |
<a-input v-model:value="createForm.computer_skills" placeholder="请输入计算机能力" size="large"/> | <a-input v-model:value="createForm.computer_skills" placeholder="请输入计算机能力" size="large"/> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | |||||
<a-flex justify="flex-end"> | |||||
<a-space> | |||||
<a-button @click="resetForm" size="large">取消</a-button> | |||||
<a-button type="primary" @click="sumbitForm" size="large">保存</a-button> | |||||
</a-space> | |||||
</a-flex> | |||||
</a-col> | |||||
</a-row> | </a-row> | ||||
</a-form> | </a-form> | ||||
</template> | </template> | ||||
import { PostJobapplicantAddskill, PostJobapplicantUpdateskill, PostJobapplicantSkilldetail } from '@/apis/models'; | import { PostJobapplicantAddskill, PostJobapplicantUpdateskill, PostJobapplicantSkilldetail } from '@/apis/models'; | ||||
import { intersectionAlike } from '@/utils/dataHelper'; | import { intersectionAlike } from '@/utils/dataHelper'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/contact/data.ts'; | |||||
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/skill/data.ts'; | |||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon(); | ||||
const dayjsRef = ref(dayjs); | const dayjsRef = ref(dayjs); | ||||
// 英语 | // 英语 | ||||
const saveEnglish = (data) => { | const saveEnglish = (data) => { | ||||
createForm.value.english = data.val; | |||||
createForm.value.english = data.val.key; | |||||
} | } | ||||
// 国语 | // 国语 | ||||
const saveMandarin = (data) => { | const saveMandarin = (data) => { | ||||
createForm.value.mandarin = data.val; | |||||
createForm.value.mandarin = data.val.key; | |||||
} | } | ||||
// 粤语 | // 粤语 | ||||
const saveCantonese = (data) => { | const saveCantonese = (data) => { | ||||
createForm.value.cantonese = data.val; | |||||
createForm.value.cantonese = data.val.key; | |||||
} | } | ||||
// 第二外语 | // 第二外语 | ||||
const saveOtherLanguage = (data) => { | const saveOtherLanguage = (data) => { | ||||
createForm.value.english = data.val; | |||||
createForm.value.other_language = data.val.key; | |||||
} | } | ||||
const sumbitForm = () => { | const sumbitForm = () => { | ||||
const resetForm = () => { | const resetForm = () => { | ||||
createForm.value = reset().dataForm as JobseekerSkillType.JobseekerSkillFormType; | createForm.value = reset().dataForm as JobseekerSkillType.JobseekerSkillFormType; | ||||
console.log(createForm.value) | |||||
state.value = false; | state.value = false; | ||||
emit("quitEdit") | emit("quitEdit") | ||||
} | } |
</template> | </template> | ||||
<template v-else> | <template v-else> | ||||
<a-list :data-source="trainList"> | <a-list :data-source="trainList"> | ||||
<template #loadMore> | |||||
<template #loadMore v-if="trainList.length > 0"> | |||||
<a-flex justify="center"> | <a-flex justify="center"> | ||||
<a-space> | <a-space> | ||||
<div v-if="!loading" > | <div v-if="!loading" > | ||||
</div> | </div> | ||||
</a-space> | </a-space> | ||||
</a-flex> | </a-flex> | ||||
</template> | </template> | ||||
<template #renderItem="{ item }"> | <template #renderItem="{ item }"> | ||||
<a-list-item> | <a-list-item> | ||||
PostJobapplicantUpdatetraining(createForm.value).then(res => { | PostJobapplicantUpdatetraining(createForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
resetForm() | resetForm() | ||||
getData(); | |||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} else { | } else { | ||||
PostJobapplicantAddtraining(createForm.value).then(res => { | PostJobapplicantAddtraining(createForm.value).then(res => { | ||||
successToast('保存成功'); | successToast('保存成功'); | ||||
resetForm() | resetForm() | ||||
getData(); | |||||
}).catch(err => { | }).catch(err => { | ||||
}) | }) | ||||
} | } | ||||
time.value = '' | time.value = '' | ||||
createForm.value = reset().dataForm as JobseekerTrainType.JobseekerTrainFormType; | createForm.value = reset().dataForm as JobseekerTrainType.JobseekerTrainFormType; | ||||
state.value = false; | state.value = false; | ||||
getData(); | |||||
emit("quitEdit") | emit("quitEdit") | ||||
} | } | ||||
:deep(.ant-menu-submenu-selected::after) { | :deep(.ant-menu-submenu-selected::after) { | ||||
border-bottom-color: #4FBE70 !important; | border-bottom-color: #4FBE70 !important; | ||||
} | } | ||||
:deep(.ant-menu-submenu-open::after) { | |||||
/* :deep(.ant-menu-submenu-open::after) { | |||||
color: #4FBE70 !important; | color: #4FBE70 !important; | ||||
} */ | |||||
:deep(.ant-menu-item-selected::after) { | |||||
border-bottom-color: #4FBE70 !important; | |||||
} | } | ||||
:deep(.ant-menu-item-selected) { | |||||
:deep(.ant-menu-submenu-open) { | |||||
color: #4FBE70 !important; | color: #4FBE70 !important; | ||||
background-color: #ffffff !important; | |||||
border-bottom-color: #4FBE70 !important; | |||||
} | |||||
:deep(.ant-menu-item-active) { | |||||
color: #4FBE70 !important; | |||||
background-color: #ffffff !important; | |||||
} | } | ||||
/* | |||||
:deep(.ant-menu-item-active::after) { | :deep(.ant-menu-item-active::after) { | ||||
color: #ffffff !important; | color: #ffffff !important; | ||||
border-bottom-color: #4FBE70 !important; | border-bottom-color: #4FBE70 !important; | ||||
.ant-menu-item-selected .ant-menu-item-title { | .ant-menu-item-selected .ant-menu-item-title { | ||||
color: #4FBE70 !important; | color: #4FBE70 !important; | ||||
} */ | |||||
} | |||||
</style> | </style> |
}; | }; | ||||
// 照片前缀 | // 照片前缀 | ||||
const imageprefix : string = 'https://admin1.jcjob.cn/img/' | |||||
// const imageprefix : string = 'https://admin1.jcjob.cn/img/' | |||||
const imageprefix : string = 'https://rcsc-test.jcjob.cn/img/' | |||||
import { routesModuleList } from '@/router/dynamic'; | import { routesModuleList } from '@/router/dynamic'; | ||||
import { routesManageModuleList } from '@/router/manageDynamic'; | import { routesManageModuleList } from '@/router/manageDynamic'; | ||||
router.beforeEach((to, from, next) => { | router.beforeEach((to, from, next) => { | ||||
document.title = `菊城人才市场后台管理`; | |||||
document.title = `菊城人才网`; | |||||
if (store.state.permissions.permissionList == null) { | if (store.state.permissions.permissionList == null) { | ||||
store.commit('getToken', { | store.commit('getToken', { | ||||
token: sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '' | token: sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '' |
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { | .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { | ||||
background: #4FBE70 !important; | background: #4FBE70 !important; | ||||
border-color: #4FBE70 !important; | border-color: #4FBE70 !important; | ||||
color: #ffffff !important; | |||||
} | } | ||||
.ant-radio-button-wrapper:hover { | .ant-radio-button-wrapper:hover { | ||||
color: #4FBE70 !important; | color: #4FBE70 !important; | ||||
background: #ffffff !important; | |||||
} | |||||
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before { | |||||
background-color: none !important; | |||||
} | } | ||||
.resume-form { | .resume-form { | ||||
background-color: #f8f8f8; | background-color: #f8f8f8; | ||||
padding: 16px; | padding: 16px; | ||||
border-radius: 8px; | border-radius: 8px; | ||||
} | |||||
} | |||||
return function (params : object) { | return function (params : object) { | ||||
return new Promise((resolve, reject) => { | return new Promise((resolve, reject) => { | ||||
httpGet(url, params, function (response) { | httpGet(url, params, function (response) { | ||||
console.log(response) | |||||
if (response.data.code == 0) { | if (response.data.code == 0) { | ||||
resolve(response.data) | resolve(response.data) | ||||
} else { | } else { | ||||
return function (params : object) { | return function (params : object) { | ||||
return new Promise((resolve, reject) => { | return new Promise((resolve, reject) => { | ||||
httpPost(url, params, function (response) { | httpPost(url, params, function (response) { | ||||
console.log(response) | |||||
if (response.data.code == 0) { | if (response.data.code == 0) { | ||||
resolve(response.data) | resolve(response.data) | ||||
} else { | } else { |
width: 100%; | width: 100%; | ||||
height: 400px; | height: 400px; | ||||
} | } | ||||
:deep(.ant-card) { | |||||
padding: 0 !important; | |||||
} | |||||
:deep(.ant-card-body) { | |||||
padding: 0 !important; | |||||
} | |||||
</style> | </style> |
<div> | <div> | ||||
会员编号:{{basic.id}} | 会员编号:{{basic.id}} | ||||
</div> | </div> | ||||
<div> | |||||
关注公众号:{{basic.id}} | |||||
</div> | |||||
</template> | </template> | ||||
<template #avatar> | <template #avatar> | ||||
<a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" /> | <a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" /> | ||||
<a-descriptions :column="3"> | <a-descriptions :column="3"> | ||||
<a-descriptions-item | <a-descriptions-item | ||||
label="登录账号">{{basic.mobile ? basic.mobile : '未知'}}</a-descriptions-item> | label="登录账号">{{basic.mobile ? basic.mobile : '未知'}}</a-descriptions-item> | ||||
<a-descriptions-item><a-button @click="detail(basic)" type="link" class="main-color"> | |||||
<a-descriptions-item><a-button @click="detail(basic)" type="link" | |||||
class="main-color"> | |||||
<FileSearchOutlined style="color: #4FBE70" />预览简历 | <FileSearchOutlined style="color: #4FBE70" />预览简历 | ||||
</a-button></a-descriptions-item> | </a-button></a-descriptions-item> | ||||
<a-descriptions-item label="简历是否可见"> | <a-descriptions-item label="简历是否可见"> | ||||
<a-switch @change="changeResumeState" v-model:checked="createForm.hide_resume" :checkedValue="1" :unCheckedValue="2" checked-children="开" un-checked-children="关"></a-switch> | |||||
<a-switch @change="changeResumeState" v-model:checked="createForm.hide_resume" | |||||
:checkedValue="1" :unCheckedValue="2" checked-children="开" | |||||
un-checked-children="关"></a-switch> | |||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item label="QQ"> | <a-descriptions-item label="QQ"> | ||||
{{basic.qq ? basic.qq : '未填写'}} | {{basic.qq ? basic.qq : '未填写'}} | ||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item> | <a-descriptions-item> | ||||
<a-button type="link" class="main-color" @click="refreshResume"> | <a-button type="link" class="main-color" @click="refreshResume"> | ||||
<RedoOutlined style="color: #4FBE70" :spin="refreshing" rotate="90"/>刷新简历 | |||||
<RedoOutlined style="color: #4FBE70" :spin="refreshing" rotate="90" />刷新简历 | |||||
</a-button> | </a-button> | ||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item label="简历是否在家政可见"> | <a-descriptions-item label="简历是否在家政可见"> | ||||
<a-switch @change="changeResumeState" v-model:checked="createForm.house_keeping_status" :checkedValue="1" :unCheckedValue="2" checked-children="开" un-checked-children="关"></a-switch> | |||||
<a-switch @change="changeResumeState" | |||||
v-model:checked="createForm.house_keeping_status" :checkedValue="1" | |||||
:unCheckedValue="2" checked-children="开" un-checked-children="关"></a-switch> | |||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item label="电子邮箱"> | <a-descriptions-item label="电子邮箱"> | ||||
{{basic.email ? basic.email : '未填写'}} | {{basic.email ? basic.email : '未填写'}} | ||||
{{seeLength}}次 | {{seeLength}}次 | ||||
</a-descriptions-item> | </a-descriptions-item> | ||||
<a-descriptions-item label="是否接收面试邀请通知"> | <a-descriptions-item label="是否接收面试邀请通知"> | ||||
<a-switch @change="changeResumeState" v-model:checked="createForm.remind_interview" :checkedValue="1" :unCheckedValue="2" checked-children="开" un-checked-children="关"></a-switch> | |||||
<a-switch @change="changeResumeState" | |||||
v-model:checked="createForm.remind_interview" :checkedValue="1" | |||||
:unCheckedValue="2" checked-children="开" un-checked-children="关"></a-switch> | |||||
</a-descriptions-item> | |||||
<a-descriptions-item :span="3" label="关注公众号,接收面试消息"> | |||||
<image-container | |||||
:imgObj="{src: '/images/gongzhonghao.png',width: '50px',height:'50px'}"></image-container> | |||||
</a-descriptions-item> | </a-descriptions-item> | ||||
</a-descriptions> | </a-descriptions> | ||||
</div> | </div> | ||||
<invite-apply v-if="activeKey == 2"></invite-apply> | <invite-apply v-if="activeKey == 2"></invite-apply> | ||||
</a-tab-pane> | </a-tab-pane> | ||||
<a-tab-pane :key="3" tab="谁看过我"> | <a-tab-pane :key="3" tab="谁看过我"> | ||||
<invite-seeme v-if="activeKey == 3"></invite-seeme> | |||||
<invite-seeme v-if="activeKey == 3"></invite-seeme> | |||||
</a-tab-pane> | </a-tab-pane> | ||||
<a-tab-pane :key="4" tab="收藏的职位"> | <a-tab-pane :key="4" tab="收藏的职位"> | ||||
<invite-collect v-if="activeKey == 4"></invite-collect> | |||||
<invite-collect v-if="activeKey == 4"></invite-collect> | |||||
</a-tab-pane> | </a-tab-pane> | ||||
</a-tabs> | </a-tabs> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</div> | </div> | ||||
<resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail> | |||||
<resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail> | |||||
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue'; | import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue'; | ||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { commomParams, ExclamationCircleOutlined, Modal, onMenu,showOtherModal1 } = useCommon(); | |||||
let { commomParams, ExclamationCircleOutlined, Modal, onMenu, showOtherModal1 } = useCommon(); | |||||
let jobList = ref<Object[]>([]) | let jobList = ref<Object[]>([]) | ||||
let basic = ref<Object>({}) | let basic = ref<Object>({}) | ||||
let seeLength = ref<Number>(0) | let seeLength = ref<Number>(0) | ||||
let activeKey = ref<Number>(1) | let activeKey = ref<Number>(1) | ||||
let refreshing = ref<Boolean>(false) | let refreshing = ref<Boolean>(false) | ||||
let createForm = ref<Object>({ | let createForm = ref<Object>({ | ||||
hide_resume: 1, | hide_resume: 1, | ||||
house_keeping_status: 2, | house_keeping_status: 2, | ||||
remind_interview: 2 | remind_interview: 2 | ||||
}) | }) | ||||
const toResume = () => { | const toResume = () => { | ||||
onMenu('/jobseeker/resume') | onMenu('/jobseeker/resume') | ||||
} | } | ||||
const refreshResume = () => { | const refreshResume = () => { | ||||
refreshing.value = true; | refreshing.value = true; | ||||
successToast('简历已刷新') | successToast('简历已刷新') | ||||
refreshing.value = false | refreshing.value = false | ||||
} | } | ||||
const changeResumeState = (val) => { | const changeResumeState = (val) => { | ||||
createForm.value.id = basic.value.id, | createForm.value.id = basic.value.id, | ||||
PostJobapplicantUpdate(createForm.value) | |||||
PostJobapplicantUpdate(createForm.value) | |||||
} | } | ||||
let detail_record = ref<Object>(null) | let detail_record = ref<Object>(null) | ||||
const detail = (record) => { | const detail = (record) => { | ||||
detail_record.value = record; | detail_record.value = record; | ||||
showOtherModal1() | showOtherModal1() | ||||
} | } | ||||
onMounted(async () => { | onMounted(async () => { | ||||
let res = await GetJobseekerDetail({ customer_id: sessionStorage.getItem('id') }) | let res = await GetJobseekerDetail({ customer_id: sessionStorage.getItem('id') }) | ||||
basic.value = res.data; | basic.value = res.data; | ||||
createForm.value.hide_resume = res.data.hide_resume; | createForm.value.hide_resume = res.data.hide_resume; | ||||
createForm.value.house_keeping_status = res.data.house_keeping_status; | createForm.value.house_keeping_status = res.data.house_keeping_status; | ||||
createForm.value.remind_interview = res.data.remind_interview; | createForm.value.remind_interview = res.data.remind_interview; | ||||
if(createForm.value.remind_interview == 1) { | |||||
let res1 =await GetPersonInterviewList({ status: 0 }) | |||||
if (createForm.value.remind_interview == 1) { | |||||
let res1 = await GetPersonInterviewList({ status: 0 }) | |||||
if (res1.data.list.length > 0) { | if (res1.data.list.length > 0) { | ||||
Modal.confirm({ | Modal.confirm({ | ||||
title: `您有${res1.data.list.length}条待查看面试邀请`, | title: `您有${res1.data.list.length}条待查看面试邀请`, | ||||
okText: '前往查看', | okText: '前往查看', | ||||
cancelText: '关闭', | cancelText: '关闭', | ||||
onOk() { | onOk() { | ||||
}, | }, | ||||
onCancel() { | onCancel() { | ||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
let res2 = GetViewHistoryList() | let res2 = GetViewHistoryList() | ||||
seeLength.value = res2.data.viewhistorys ? res2.data.viewhistorys.length : 0 | seeLength.value = res2.data.viewhistorys ? res2.data.viewhistorys.length : 0 | ||||
}) | }) | ||||
</script> | </script> | ||||
// 退出编辑 | // 退出编辑 | ||||
const quitEdit = () => { | const quitEdit = () => { | ||||
editObj.value[editingKey.value] = false; | editObj.value[editingKey.value] = false; | ||||
console.log(editObj.value) | |||||
editingKey.value = null | |||||
} | } | ||||
const abc = ref(null) | const abc = ref(null) |