瀏覽代碼

deploy

master
Soleilw 1 年之前
父節點
當前提交
0908ff1ef8

dist/assets/404-d9O5V6co.js → dist/assets/404-3K917MHn.js 查看文件

@@ -1 +1 @@
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};

dist/assets/index-F9n6oHAB.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
dist/assets/index-HfhjWLuW.css
文件差異過大導致無法顯示
查看文件


+ 1
- 0
dist/assets/index-OlZ5X-qT.css
文件差異過大導致無法顯示
查看文件


+ 2
- 2
dist/index.html 查看文件

@@ -6,8 +6,8 @@
<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>
<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>
<body>
<div id="app"></div>

+ 2
- 2
src/apis/index.ts 查看文件

@@ -43,10 +43,9 @@ instance.interceptors.request.use(function (config) {

// 添加响应拦截器
instance.interceptors.response.use(function (response) {

switch (response.data.code) {
case -1:
// msgModel(response.data.msg)
msgModel(response.data.msg)
break;
case 0:
break;
@@ -96,6 +95,7 @@ export const httpPost : Function = (url : string, data : object, cb : Function)
const resData = res;
typeHelper.isFunction(cb) && cb(resData);
}).catch(err => {
console.log(err)
cb(err.response)
})
}

+ 25
- 7
src/components/common/image-container.vue 查看文件

@@ -1,9 +1,16 @@
<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>

<script lang="ts" setup>
import { ref, onMounted, defineProps, watch, computed } from 'vue';
let imageBigOpen = ref<Boolean>(false)

const props = defineProps({
imgObj: {
type: Object,
@@ -18,14 +25,25 @@
mode ?: String,
}
const imgObj = ref<imgType>({
src : '',
src: '',
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]
}
}, { immediate: true })

+ 4
- 2
src/components/form/upload.vue 查看文件

@@ -21,6 +21,8 @@
import { ref, onMounted, computed, defineProps, watch, defineEmits } from 'vue';
import axios from 'axios';
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 emit = defineEmits();
const headers = ref<Object>({
@@ -59,7 +61,7 @@
uid: '-1', // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
name: e.file.name, // 文件名
status: 'done', // 状态有:uploading done error removed
url: "https://rcsc-test.jcjob.cn/img" + res.data.data.filename
url: imageprefix + res.data.data.filename
}]
} else {
if (imagesList.value.length < imagesLength.value) {
@@ -68,7 +70,7 @@
uid: '-' + (imagesList.value.length + 1), // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
name: e.file.name, // 文件名
status: 'done', // 状态有:uploading done error removed
url: "https://rcsc-test.jcjob.cn/img" + res.data.data.filename
url: imageprefix + res.data.data.filename
})
} else {
message.danger('最多上传5张');

+ 3
- 0
src/components/job/detail/index.vue 查看文件

@@ -152,6 +152,7 @@
onOk() {
PostJobseekAddfavorite({job_id: job_id }).then(res => {
successToast('已收藏')
mapContainer.value = null
getDetail();
})
},
@@ -169,6 +170,7 @@
onOk() {
PostJobseekDelfavorite({job_id: job_id }).then(res => {
successToast('已取消收藏')
mapContainer.value = null
getDetail();
})
},
@@ -186,6 +188,7 @@
onOk() {
PostJobseekAddapplication({job_id: job_id }).then(res => {
successToast('已投递')
mapContainer.value = null
getDetail();
})
},

+ 2
- 2
src/components/job/home/choiceness-job/job-list.vue 查看文件

@@ -1,7 +1,7 @@
<template>
<a-row :gutter="[10,10]">
<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-space direction="vertical" :size="20">
<a-flex justify="space-between" style="width: 100%;">
@@ -20,7 +20,7 @@
<a-flex justify="space-between" style="width: 100%;">
<div>{{item.full_name}}</div>
<a-button type="primary" size="small"
@click="toDetail(item.id, item.company_id)">查看详情</a-button>
>查看详情</a-button>
</a-flex>
<a-flex style="width: 100%;color: #BEBEBE;">
{{item.locations ? item.locations[0].name : '未知地址'}}

+ 2
- 2
src/components/job/internship/index.vue 查看文件

@@ -5,7 +5,7 @@
<div class="company-box">
<a-row :gutter="[10,10]">
<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-row>
</div>
@@ -14,7 +14,7 @@
<div class="company-box">
<a-row :gutter="[10,10]">
<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-row>
</div>

+ 13
- 3
src/components/job/list/index.vue 查看文件

@@ -12,7 +12,8 @@
<template v-else>
<a-row :gutter="[10,20]" >
<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-flex justify="space-between" style="width: 100%;">
<div style="font-size: 18px; font-weight: 600;">{{item.name}}</div>
@@ -29,14 +30,14 @@
<a-space direction="vertical">
<a-flex justify="space-between" style="width: 100%;">
<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 style="width: 100%;color: #bebebe;">
{{item.locations ? item.locations[0].name : '未知地址'}}
</a-flex>
</a-space>
</a-flex>
</a-card>
</a-col>
<a-col span="24">
<a-flex justify="center">
@@ -205,6 +206,15 @@
sessionStorage.setItem('mode', '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(() => {
getData();

+ 23
- 9
src/components/jobseeker/resume/basic/basic.vue 查看文件

@@ -4,6 +4,12 @@
<template v-if="state">
<a-form :model="createForm" layout="vertical" class="resume-form">
<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-form-item label="简历是否可见" name="hide_resume">
<a-radio-group v-model:value="createForm.hide_resume" button-style="solid" size="large"
@@ -187,8 +193,8 @@
</a-row>
</a-col>
<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-row>
</template>
@@ -210,11 +216,12 @@
<script setup lang="ts">
import { ref, onMounted, computed, defineProps, watch, defineEmits, createVNode } from 'vue';
import { PostJobapplicantAdd, PostJobapplicantUpdate, GetJobapplicantDetail } from '@/apis/models';
import Upload from '@/components/form/upload.vue';
import { intersectionAlike } from '@/utils/dataHelper';
import { warnToast, successToast } from '@/utils/toastHelper';
import { dataForm, otherDataForm, reset } from '@/components/jobseeker/resume/basic/data.ts';
import { useCommon } from '@/hooks/useCommon';
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon();
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, imageprefix } = useCommon();
const dayjsRef = ref(dayjs);
let props = defineProps(['form_state']);
const emit = defineEmits();
@@ -236,10 +243,17 @@
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],
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) => {
@@ -249,31 +263,31 @@
// 学历
const educationPlaceholder = ref('请选择学历');
const saveEducation = (data) => {
createForm.value.education = data.val;
createForm.value.education = data.val.key;
}

// 职称
const titlePlaceholder = ref('请选择职称')
const saveTitle = (data) => {
createForm.value.title = data.val;
createForm.value.title = data.val.key;
}

// 婚姻状态
const maritalStatusPlaceholder = ref('请选择婚姻状态')
const saveMaritalStatus = (data) => {
createForm.value.marital_status = data.val;
createForm.value.marital_status = data.val.key;
}

// 民族
const ethnicityPlaceholder = ref('请选择民族')
const saveEthnicity = (data) => {
createForm.value.ethnicity = data.val;
createForm.value.ethnicity = data.val.key;
}

// 政治面貌
const politicalStatusPlaceholder = ref('请选择政治面貌')
const savePoliticalStatus = (data) => {
createForm.value.political_status = data.val;
createForm.value.political_status = data.val.key;
}



+ 5
- 3
src/components/jobseeker/resume/basic/data.ts 查看文件

@@ -24,14 +24,15 @@ export let dataForm = {
height: 0,
weight: 0,
political_status: 0,
native_place: 0
native_place: 0,
}

export let otherDataForm = {
dob: '',
reg_level_cascader: '',
now_level_cascader: '',
native_place_txt: ''
native_place_txt: '',
photo_img: ''
}


@@ -68,7 +69,8 @@ export const reset = () => {
dob: '',
reg_level_cascader: '',
now_level_cascader: '',
native_place_txt: ''
native_place_txt: '',
photo_img: ''
}

return { dataForm, otherDataForm }

+ 1
- 1
src/components/jobseeker/resume/contact/contact.vue 查看文件

@@ -51,7 +51,7 @@
<a-row>
<a-space direction="vertical">
<a-col span="24">
固&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;话:{{detail.mobile}}
固&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;话:{{detail.landline}}
</a-col>
<a-col span="24">
手机号码:{{detail.mobile}}

+ 1
- 1
src/components/jobseeker/resume/credential/credential.vue 查看文件

@@ -32,7 +32,7 @@
</template>
<template v-else>
<a-list :data-source="certificateList">
<template #loadMore>
<template #loadMore v-if="certificateList.length > 0">
<a-flex justify="center">
<a-space>
<div v-if="!loading">

+ 1
- 1
src/components/jobseeker/resume/experience/experience.vue 查看文件

@@ -44,7 +44,7 @@
</template>
<template v-else>
<a-list :data-source=" experienceList">
<template #loadMore>
<template #loadMore v-if="experienceList.length > 0">
<a-flex justify="center">
<a-space>
<div v-if="!loading" >

+ 82
- 79
src/components/jobseeker/resume/intention/intention.vue 查看文件

@@ -42,7 +42,7 @@
<a-tab-pane :key="3" tab="其他意向">
<a-row :gutter="20">
<a-col span="12">
<a-form-item label="其他职位" name="other_positions">
<a-form-item label="其他职位">
<a-input v-model:value="basicForm.other_positions" placeholder="请输入其他职位"
size="large" />
</a-form-item>
@@ -114,65 +114,68 @@
</a-row>
</a-tab-pane>
</a-tabs>

</a-form>
</template>
<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-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-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">
<a-typography>
<a-typography-title :level="5">
@@ -193,7 +196,7 @@
</a-button>
<a-divider type="vertical" />
<a-popconfirm title="是否删除其他意向" @confirm="delBasic(basic.id)">
<a-button size="small" type="text" >
<a-button size="small" type="text">
<DeleteOutlined />
</a-button>
</a-popconfirm>
@@ -212,7 +215,7 @@
import { dataAreaForm, dataPositionForm, dataBasicForm, otherDataForm, reset } from '@/components/jobseeker/resume/intention/data.ts';
import { EditOutlined, FileSearchOutlined, RedoOutlined, DeleteOutlined } from '@ant-design/icons-vue';
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);
let props = defineProps(['form_state']);
const emit = defineEmits();
@@ -236,6 +239,7 @@
PostJobapplicantDesirebasedetail().then(res => {
basic.value = res.data
basicForm.value = intersectionAlike(basicForm.value, res.data)
console.log(basicForm.value)
basicForm.value.id = res.data.id;
})
}
@@ -275,29 +279,27 @@
PostJobapplicantAdddesirearea(areaForm.value).then(res => {
successToast('保存成功');
getArea();
activeKey.value = 2
resetForm('area')

}).catch(err => {
})
}
}
const toEdit = (item : Object) => {
areaForm.value.id = item.id;
getDetail(areaForm.value.id)
emit("editEdit")
}
// 详情
const getDetail = (val) => {
PostJobapplicantDesireareadetail({id: val}).then(res => {
PostJobapplicantDesireareadetail({ id: val }).then(res => {
areaForm.value = intersectionAlike(areaForm.value, res.data)
areaForm.value.id = res.data.id;
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]);
}
}
})
}
@@ -328,29 +330,28 @@
PostJobapplicantAdddesireindustry(positionForm.value).then(res => {
successToast('保存成功');
getPosition();
activeKey.value = 3
resetForm('position')
}).catch(err => {
})
}
}
const toPositionEdit = (item : Object) => {
positionForm.value.id = item.id;
getPositionDetail(positionForm.value.id)
activeKey.value = 2
emit("editEdit")
}
// 详情
const getPositionDetail = (val) => {
PostJobapplicantDesireindustrydetail({id: val}).then(res => {
PostJobapplicantDesireindustrydetail({ id: val }).then(res => {
positionForm.value = intersectionAlike(positionForm.value, res.data)
positionForm.value.id = res.data.id;
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]);
}
}
})
}
@@ -423,13 +424,13 @@
})
}
}
const toBasicEdit = (item : Object) => {
getBasic()
activeKey.value = 3
emit("editEdit")
}
const delBasic = (id : number) => {
commomParams.value.delParam = { id: id };
PostJobapplicantDeldesirebase(commomParams.value.delParam).then(res => {
@@ -438,19 +439,19 @@
getBasic();
})
}

const resetForm = (val) => {
if (val == 'area') {
areaForm = reset().dataForm as JobseekerIntentionType.JobseekerIntentionAreaFormType;
areaForm.value = reset().dataAreaForm as JobseekerIntentionType.JobseekerIntentionAreaFormType;
}
if (val == 'position') {
positionForm = reset().dataForm as JobseekerIntentionType.JobseekerIntentionPositionFormType;
positionForm.value = reset().dataPositionForm as JobseekerIntentionType.JobseekerIntentionPositionFormType;
}
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;
emit("quitEdit")
}
@@ -458,6 +459,8 @@
watch(() => [props.form_state], (newVal) => {
state.value = newVal[0];
getBasic();
getPosition();
getArea();
})
</script>


+ 2
- 2
src/components/jobseeker/resume/introduction/introduction.vue 查看文件

@@ -81,15 +81,15 @@
if (createForm.value.id) {
PostJobapplicantUpdateintroduction(createForm.value).then(res => {
successToast('保存成功');
getBasic();
resetForm()
getBasic();
}).catch(err => {
})
} else {
PostJobapplicantAddintroduction(createForm.value).then(res => {
successToast('保存成功');
getBasic();
resetForm()
getBasic();
}).catch(err => {
})
}

+ 14
- 5
src/components/jobseeker/resume/skill/skill.vue 查看文件

@@ -33,6 +33,14 @@
<a-input v-model:value="createForm.computer_skills" placeholder="请输入计算机能力" size="large"/>
</a-form-item>
</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-form>
</template>
@@ -84,7 +92,7 @@
import { PostJobapplicantAddskill, PostJobapplicantUpdateskill, PostJobapplicantSkilldetail } from '@/apis/models';
import { intersectionAlike } from '@/utils/dataHelper';
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';
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon();
const dayjsRef = ref(dayjs);
@@ -108,22 +116,22 @@

// 英语
const saveEnglish = (data) => {
createForm.value.english = data.val;
createForm.value.english = data.val.key;
}

// 国语
const saveMandarin = (data) => {
createForm.value.mandarin = data.val;
createForm.value.mandarin = data.val.key;
}

// 粤语
const saveCantonese = (data) => {
createForm.value.cantonese = data.val;
createForm.value.cantonese = data.val.key;
}

// 第二外语
const saveOtherLanguage = (data) => {
createForm.value.english = data.val;
createForm.value.other_language = data.val.key;
}

const sumbitForm = () => {
@@ -146,6 +154,7 @@

const resetForm = () => {
createForm.value = reset().dataForm as JobseekerSkillType.JobseekerSkillFormType;
console.log(createForm.value)
state.value = false;
emit("quitEdit")
}

+ 3
- 3
src/components/jobseeker/resume/train/train.vue 查看文件

@@ -55,7 +55,7 @@
</template>
<template v-else>
<a-list :data-source="trainList">
<template #loadMore>
<template #loadMore v-if="trainList.length > 0">
<a-flex justify="center">
<a-space>
<div v-if="!loading" >
@@ -63,7 +63,6 @@
</div>
</a-space>
</a-flex>
</template>
<template #renderItem="{ item }">
<a-list-item>
@@ -193,12 +192,14 @@
PostJobapplicantUpdatetraining(createForm.value).then(res => {
successToast('保存成功');
resetForm()
getData();
}).catch(err => {
})
} else {
PostJobapplicantAddtraining(createForm.value).then(res => {
successToast('保存成功');
resetForm()
getData();
}).catch(err => {
})
}
@@ -209,7 +210,6 @@
time.value = ''
createForm.value = reset().dataForm as JobseekerTrainType.JobseekerTrainFormType;
state.value = false;
getData();
emit("quitEdit")
}


+ 19
- 4
src/components/layout/menu/aMenu.vue 查看文件

@@ -103,15 +103,30 @@
:deep(.ant-menu-submenu-selected::after) {
border-bottom-color: #4FBE70 !important;
}
:deep(.ant-menu-submenu-open::after) {
/* :deep(.ant-menu-submenu-open::after) {
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;
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) {
color: #ffffff !important;
border-bottom-color: #4FBE70 !important;
@@ -119,7 +134,7 @@
.ant-menu-item-selected .ant-menu-item-title {
color: #4FBE70 !important;
} */
}

</style>

+ 2
- 1
src/hooks/useCommon.ts 查看文件

@@ -140,7 +140,8 @@ export const useCommon = () => {
};

// 照片前缀
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/'




+ 1
- 1
src/main.ts 查看文件

@@ -20,7 +20,7 @@ import EditButton from '@/components/common/edit-button.vue';
import { routesModuleList } from '@/router/dynamic';
import { routesManageModuleList } from '@/router/manageDynamic';
router.beforeEach((to, from, next) => {
document.title = `菊城人才市场后台管理`;
document.title = `菊城人才`;
if (store.state.permissions.permissionList == null) {
store.commit('getToken', {
token: sessionStorage.getItem('token') ? sessionStorage.getItem('token') : ''

+ 8
- 1
src/style.css 查看文件

@@ -140,14 +140,21 @@ button:focus-visible {
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
background: #4FBE70 !important;
border-color: #4FBE70 !important;
color: #ffffff !important;
}

.ant-radio-button-wrapper:hover {
color: #4FBE70 !important;
background: #ffffff !important;
}

.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: none !important;
}

.resume-form {
background-color: #f8f8f8;
padding: 16px;
border-radius: 8px;
}
}


+ 2
- 0
src/utils/reqHelper.ts 查看文件

@@ -4,6 +4,7 @@ export const getModel : Function = (url : string) => {
return function (params : object) {
return new Promise((resolve, reject) => {
httpGet(url, params, function (response) {
console.log(response)
if (response.data.code == 0) {
resolve(response.data)
} else {
@@ -18,6 +19,7 @@ export const postModel : Function = (url : string) => {
return function (params : object) {
return new Promise((resolve, reject) => {
httpPost(url, params, function (response) {
console.log(response)
if (response.data.code == 0) {
resolve(response.data)
} else {

+ 8
- 0
src/views/common/personal/index.vue 查看文件

@@ -259,4 +259,12 @@
width: 100%;
height: 400px;
}
:deep(.ant-card) {
padding: 0 !important;
}
:deep(.ant-card-body) {
padding: 0 !important;
}
</style>

+ 34
- 26
src/views/jobseeker/home/index.vue 查看文件

@@ -16,9 +16,6 @@
<div>
会员编号:{{basic.id}}
</div>
<div>
关注公众号:{{basic.id}}
</div>
</template>
<template #avatar>
<a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" />
@@ -28,22 +25,27 @@
<a-descriptions :column="3">
<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" />预览简历
</a-button></a-descriptions-item>
<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 label="QQ">
{{basic.qq ? basic.qq : '未填写'}}
</a-descriptions-item>
<a-descriptions-item>
<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-descriptions-item>
<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 label="电子邮箱">
{{basic.email ? basic.email : '未填写'}}
@@ -52,7 +54,13 @@
{{seeLength}}次
</a-descriptions-item>
<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>
</div>
@@ -69,16 +77,16 @@
<invite-apply v-if="activeKey == 2"></invite-apply>
</a-tab-pane>
<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 :key="4" tab="收藏的职位">
<invite-collect v-if="activeKey == 4"></invite-collect>
<invite-collect v-if="activeKey == 4"></invite-collect>
</a-tab-pane>
</a-tabs>
</a-col>
</a-row>
</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>

<script setup lang="ts">
@@ -92,50 +100,50 @@
import { warnToast, successToast } from '@/utils/toastHelper';
import { EditOutlined, FileSearchOutlined, RedoOutlined } from '@ant-design/icons-vue';
import { useCommon } from '@/hooks/useCommon';
let { commomParams, ExclamationCircleOutlined, Modal, onMenu,showOtherModal1 } = useCommon();
let { commomParams, ExclamationCircleOutlined, Modal, onMenu, showOtherModal1 } = useCommon();
let jobList = ref<Object[]>([])
let basic = ref<Object>({})
let seeLength = ref<Number>(0)
let activeKey = ref<Number>(1)
let refreshing = ref<Boolean>(false)
let createForm = ref<Object>({
hide_resume: 1,
house_keeping_status: 2,
remind_interview: 2
})

const toResume = () => {
onMenu('/jobseeker/resume')
}
const refreshResume = () => {
refreshing.value = true;
successToast('简历已刷新')
refreshing.value = false
}
const changeResumeState = (val) => {
createForm.value.id = basic.value.id,
PostJobapplicantUpdate(createForm.value)
PostJobapplicantUpdate(createForm.value)
}
let detail_record = ref<Object>(null)
const detail = (record) => {
detail_record.value = record;
showOtherModal1()
}
onMounted(async () => {
let res = await GetJobseekerDetail({ customer_id: sessionStorage.getItem('id') })
basic.value = res.data;
createForm.value.hide_resume = res.data.hide_resume;
createForm.value.house_keeping_status = res.data.house_keeping_status;
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) {
Modal.confirm({
title: `您有${res1.data.list.length}条待查看面试邀请`,
@@ -144,10 +152,10 @@
okText: '前往查看',
cancelText: '关闭',
onOk() {
},
onCancel() {
},
});
}
@@ -155,8 +163,8 @@

let res2 = GetViewHistoryList()
seeLength.value = res2.data.viewhistorys ? res2.data.viewhistorys.length : 0
})
</script>


+ 1
- 1
src/views/jobseeker/resume/index.vue 查看文件

@@ -249,7 +249,7 @@
// 退出编辑
const quitEdit = () => {
editObj.value[editingKey.value] = false;
console.log(editObj.value)
editingKey.value = null
}

const abc = ref(null)

Loading…
取消
儲存