Bläddra i källkod

deploy

master
Soleilw 1 år sedan
förälder
incheckning
d28ddcd1d6

dist/assets/404-3K917MHn.js → dist/assets/404-OH1mt7No.js Visa fil

@@ -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-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};
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-Ua34iPmJ.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};

+ 0
- 1
dist/assets/index-OlZ5X-qT.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


dist/assets/index-Ua34iPmJ.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 1
- 0
dist/assets/index-kUK-5M1q.css
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 2
- 2
dist/index.html Visa fil

@@ -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-F9n6oHAB.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-OlZ5X-qT.css">
<script type="module" crossorigin src="/assets/index-Ua34iPmJ.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-kUK-5M1q.css">
</head>
<body>
<div id="app"></div>

+ 3
- 1
src/apis/models/index.ts Visa fil

@@ -14,7 +14,7 @@ export const PostJobseekerSmsLogin = postModel(url.JobseekerSmsLogin);
export const PostCustomerVerify = postModel(url.CustomerVerify);
export const PostJobseekerEditPwd = postModel(url.JobseekerEditPwd);
export const PostCompanyLoginByMobile = postModel(url.CompanyLoginByMobile);
export const PostJobseekerResetPwd = postModel(url.JobseekerResetPwd);

// 招聘会
export const PostRecruitmentBookcompany = getModel(url.RecruitmentBookcompany);// 获取招聘会参与的企业
@@ -111,6 +111,8 @@ export const GetJobCompanyjobs = getModel(url.JobCompanyjobs); // 企业当前
export const GetJobUrgentjobs = getModel(url.JobUrgentjobs); // 急招职位
export const GetJobHighpayjobs = getModel(url.JobHighpayjobs); // 高薪职位
export const GetJobCampusjobs = getModel(url.JobCampusjobs); // 校园招聘
export const GetJobAuthDetail = getModel(url.JobAuthDetail); // 获取职位详情--需登录


// 见习基地
export const GetCompanyProbationList = getModel(url.CompanyProbationList); // 校园招聘

+ 2
- 0
src/apis/types/url.d.ts Visa fil

@@ -12,6 +12,7 @@ declare namespace urlType {
JobseekerEditPwd : String,
CompanyLoginByMobile: String,
Jobseekerlogin: String,
JobseekerResetPwd: String,

// 招聘会
RecruitmentBookcompany : String,
@@ -98,6 +99,7 @@ declare namespace urlType {
JobUrgentjobs : String,
JobHighpayjobs : String,
JobCampusjobs : String,
JobAuthDetail : String,

// 招聘会企业预定
RecruitmentbookAdd : String,

+ 3
- 2
src/apis/url.ts Visa fil

@@ -12,10 +12,10 @@ export const url : urlType.url = {
SmsSend: common + '/sms/send', // 短信验证码
JobseekerSmsLogin: web + '/jobseeker/smslogin', // 个人登录
Jobseekerlogin: web + '/jobseeker/login', // 个人登录
CustomerVerify: web + '/customer/verify', // 转换为HR
CustomerVerify: web + '/jobseek/verify', // 转换为HR
JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码
CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录
JobseekerResetPwd: web + '/jobseek/resetpwd', // 修改密码

@@ -104,6 +104,7 @@ export const url : urlType.url = {
JobUrgentjobs: web + '/job/urgentjobs', // 急招职位
JobHighpayjobs: web + '/job/highpayjobs', // 高薪职位
JobCampusjobs: web + '/job/campusjobs', // 校园招聘
JobAuthDetail: web + '/job/authdetail', // 获取职位详情--需登录

// 招聘会企业预定
RecruitmentbookAdd: web + '/recruitmentbook/add', // 添加

+ 20
- 7
src/components/common/image-container.vue Visa fil

@@ -1,23 +1,36 @@
<template>
<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>
<div v-if="needPre">
<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>
</div>
<div v-else>
<img :src="imgObj.src" alt=""
:style="{width: imgObj.width,height: imgObj.height,'object-fit': imgObj.mode, 'border-radius': 0} ">
</div>

</template>

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

const props = defineProps({
imgObj: {
type: Object,
default: {}
},
need: {
type: Boolean,
default: false
}
});

let needPre = ref<Boolean>(props.need)
let imageBigOpen = ref<Boolean>(false)
interface imgType {
src ?: String,
width ?: Number,

+ 0
- 4
src/components/common/left-sider.vue Visa fil

@@ -1,11 +1,7 @@
<template>
<a-affix :offset-top="90">
<a-menu v-model:selectedKeys="selectedKeys" @click="menuClick" style="width: 100%;border-radius: 8px;" mode="inline">
<a-menu-item v-for="(item, index) in menuList" :key="item.key">{{item.title}}</a-menu-item>
</a-menu>
</a-affix>


</template>

<script setup lang="ts">

+ 10
- 7
src/components/company/information/basic/index.vue Visa fil

@@ -17,7 +17,7 @@
<a-col span="12">
<a-form-item label="成立日期" name="establishment_date">
<a-date-picker v-model:value="addOtherForm.chengli_date"
@Change="establishmentDateChange" style="width: 100%;" size="large" />
@Change="establishmentDateChange" style="width: 100%;" size="large" :disabledDate="disabledDateFront"/>
</a-form-item>
</a-col>
<a-col span="12">
@@ -143,6 +143,9 @@
<a-descriptions-item label="Email">{{basic.email}}</a-descriptions-item>
<a-descriptions-item label="传真">{{basic.fax}}</a-descriptions-item>
</a-descriptions>
<a-descriptions :column="3" title="企业介绍">
<a-descriptions-item><div v-html="basic.introduction"></div></a-descriptions-item>
</a-descriptions>
</template>
</div>
</template>
@@ -155,7 +158,7 @@
import { warnToast, successToast } from '@/utils/toastHelper';
import { dataForm, otherDataForm, reset } from '@/components/company/information/basic/data.ts';
import { useCommon } from '@/hooks/useCommon';
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon();
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, disabledDateFront } = useCommon();
const dayjsRef = ref(dayjs);
let props = defineProps(['form_state']);
const emit = defineEmits();
@@ -173,11 +176,11 @@
basic.value = res.data;
createForm.value = intersectionAlike(createForm.value, res.data)
addOtherForm.value = {
chengli_date: dayjsRef.value(res.data.establishment_date),
chengli_date: res.data.establishment_date ? dayjsRef.value(res.data.establishment_date) : '',
content: res.data.introduction,
company_address_cascader: [res.data.province, res.data.city, res.data.district, res.data.street],
company_industry_cascader: [res.data.industry, res.data.industry2],
company_nature_cascader: [res.data.nature],
company_address_cascader: res.data.province ? [res.data.province, res.data.city, res.data.district, res.data.street] : [],
company_industry_cascader: res.data.industry ? [res.data.industry, res.data.industry2] : [],
company_nature_cascader: res.data.nature ? [res.data.nature] : 0,
company_scale_cascader: res.data.scale,
}
})
@@ -209,7 +212,7 @@
// 企业规模
const scaleSave = (data) => {
createForm.value.scale = data.val ? data.val : 0;
createForm.value.scale = data.val.key ? data.val.key : 0;
}
let showMap = ref<Boolean>(false);

+ 17
- 12
src/components/company/information/department/index.vue Visa fil

@@ -41,23 +41,28 @@
<template v-else>
<!-- <a-search @searchData="searchData"></a-search> -->
<a-list :data-source="departmengList">
<template #loadMore>
<div v-if="!loading"
:style="{ textAlign: 'center', marginTop: '12px', height: '32px', lineHeight: '32px' }">
<a-button @click="onLoadMore">加载更多</a-button>
</div>
<template #loadMore v-if="departmengList.length > 0">
<a-flex justify="center">
<a-space>
<div v-if="!loading" >
<a-button @click="onLoadMore">加载更多</a-button>
</div>
</a-space>
</a-flex>
</template>
<template #renderItem="{ item }">
<a-list-item>
<template #actions>
<a-button @click="toEdit(item)" size="small">
编辑
</a-button>
<a-popconfirm title="是否删除该部门" @confirm="del(item.id)">
<a-button size="small" danger>
删除
<a-space>
<a-button @click="toEdit(item)" type="primary" size="small">
编辑
</a-button>
</a-popconfirm>
<a-popconfirm title="是否删除该部门" @confirm="del(item.id)">
<a-button size="small" danger>
删除
</a-button>
</a-popconfirm>
</a-space>
</template>
<a-skeleton avatar :title="false" :loading="!!loading" active>
<a-list-item-meta>

+ 5
- 3
src/components/company/information/image/index.vue Visa fil

@@ -19,7 +19,9 @@
</a-form>
</template>
<template v-else>
<image-container :imgObj="{src: addOtherForm.photo_img,width: '200px',height:'280px', mode: 'fill'}"></image-container>
<div v-if="createForm.photo">
<image-container :imgObj="{src:createForm.photo? imageprefix + createForm.photo : '/images/gongzhonghao.png',width: '200px',height:'280px', mode: 'fill'}"></image-container>
</div>
</template>
</div>
</template>
@@ -44,9 +46,9 @@
const getBasic = () => {
PostCompanyDetailInfo().then(res => {
createForm.value.photo = res.data.photo
createForm.value.photo = res.data.photo ? res.data.photo : ''
addOtherForm.value = {
photo_img: imageprefix + res.data.photo,
photo_img: res.data.photo ? imageprefix + res.data.photo : '',
}
})
}

+ 5
- 3
src/components/company/information/licence/index.vue Visa fil

@@ -19,7 +19,9 @@
</a-form>
</template>
<template v-else>
<image-container :imgObj="{src: addOtherForm.license_img,width: '200px',height:'280px',mode: 'fill'}"></image-container>
<div v-if="createForm.license_path">
<image-container :imgObj="{src:createForm.license_path? imageprefix + createForm.license_path : '/images/gongzhonghao.png',width: '200px',height:'280px', mode: 'fill'}"></image-container>
</div>
</template>
</div>
</template>
@@ -45,9 +47,9 @@
const getBasic = () => {
PostCompanyDetailInfo().then(res => {
createForm.value.license_path = res.data.license_path
createForm.value.license_path = res.data.license_path ? res.data.license_path : ''
addOtherForm.value = {
license_img: imageprefix + res.data.license_path,
license_img: res.data.license_path ? imageprefix + res.data.license_path : '',
}
})
}

+ 58
- 49
src/components/company/invite/position/index.vue Visa fil

@@ -7,7 +7,8 @@
<a-row :gutter="20">
<a-col span="12">
<a-form-item label="是否紧急" name="urgent">
<a-radio-group v-model:value="createForm.urgent" button-style="solid" size="large" style="width: 100%">
<a-radio-group v-model:value="createForm.urgent" button-style="solid" size="large"
style="width: 100%">
<a-radio-button :value="1" style="width: 50%">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%">否</a-radio-button>
</a-radio-group>
@@ -17,37 +18,37 @@
<a-form-item label="选择部门" name="department_id">
<a-select v-model:value="addOtherForm.department_name" @change="departmentChange"
placeholder="请进行搜索选择部门" show-search :filter-option="false" label-in-value
@search="departmentSearch" size="large">
@search="departmentSearch" size="large">
<a-select-option v-for="item in department_list" :key="item.id" :value="item.id"
:label="item.name" label-in-value>{{item.name}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="职位名称" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入职位名称" size="large"/>
<a-form-item label="职位名称" name="name">
<a-input v-model:value="createForm.name" placeholder="请输入职位名称" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="招聘人数" name="invite_count">
<a-input v-model:value="createForm.invite_count" placeholder="请输入招聘人数" size="large"/>
<a-input v-model:value="createForm.invite_count" placeholder="请输入招聘人数" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="职位类别">
<a-form-item label="职位类别">
<a-shujilian :dict="2004" placeholder="职位类别(最多三个,多选只取前三)" @saveTreeNode="jobTypeChange"
:tree_content="createForm.job_type"></a-shujilian>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="工作区域">
<a-form-item label="工作区域">
<a-shujilian :dict="2009" placeholder="工作区域(最多四个,多选只取前四)"
@saveTreeNode="jobAddressChange"
:tree_content="createForm.job_location"></a-shujilian>
</a-form-item>
</a-col>
<a-col span="24">
<a-form-item required label="职位描述" name="describe_text">
<a-form-item label="职位描述" name="describe_text">
<QuillEditor theme="snow" :options="richOption" toolbar="full"
v-model:content="addOtherForm.describe_content"
@update:content="onEditorDescribeUpdate($event)" contentType="html" />
@@ -61,27 +62,27 @@
</a-col>

<a-col span="12">
<a-form-item required label="有效天数" name="useful_life">
<a-form-item label="有效天数" name="useful_life">
<a-input-number :min="0" type="number" v-model:value="createForm.useful_life"
placeholder="请输入有效天数" style="width: 100%;" size="large" />
placeholder="请输入有效天数" style="width: 100%;" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="到期日期">
<a-form-item label="到期日期">
<a-date-picker v-model:value="addOtherForm.daoqi_date" @Change="disabledDateChange"
style="width: 100%;" size="large"/>
style="width: 100%;" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="关键词">
<a-input v-model:value="createForm.key_word" placeholder="请输入关键词" size="large"/>
<a-input v-model:value="createForm.key_word" placeholder="请输入关键词" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="职位性质">
<a-radio-group v-model:value="addOtherForm.job_nature" button-style="solid"
@change="jobNatureChange" style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 20%;">全职</a-radio-button>
@change="jobNatureChange" style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 20%;">全职</a-radio-button>
<a-radio-button :value="2" style="width: 20%;">兼职</a-radio-button>
<a-radio-button :value="3" style="width: 20%;">临时</a-radio-button>
<a-radio-button :value="4" style="width: 20%;">实习</a-radio-button>
@@ -90,13 +91,13 @@
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="食宿要求">
<a-form-item label="食宿要求">
<a-xuanze :dict="2016" placeholder="请选择食宿要求" @saveSelect="saveShisu"
:select_content="addOtherForm.shisu_select"></a-xuanze>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="节假日休息情况">
<a-form-item label="节假日休息情况">
<a-xuanze :dict="2017" placeholder="请选择节假日休息情况" @saveSelect="saveHolidays"
:select_content="addOtherForm.holidays_select"></a-xuanze>
</a-form-item>
@@ -106,7 +107,7 @@
<div v-show="current == 1">
<a-row gutter="20">
<a-col span="12">
<a-form-item required label="工作经验">
<a-form-item label="工作经验">
<a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience"
:select_content="createForm.experience"></a-xuanze>
</a-form-item>
@@ -118,21 +119,22 @@
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="含最高学历" name="degree_better" style="width: 100%;" size="large">
<a-radio-group v-model:value="createForm.degree_better" button-style="solid">
<a-form-item label="含最高学历" name="degree_better">
<a-radio-group v-model:value="createForm.degree_better" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="职称要求">
<a-form-item label="职称要求">
<a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel"
:select_content="createForm.profelevel"></a-xuanze>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="技能认证">
<a-form-item label="技能认证">
<a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification"
:select_content="createForm.certification"></a-xuanze>
</a-form-item>
@@ -146,13 +148,14 @@
</a-col>
<a-col span="12">
<a-form-item label="掌握程度">
<a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree"
<a-xuanze :dict="2008" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree"
:select_content="createForm.language_degree"></a-xuanze>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="性别要求" name="sex">
<a-radio-group v-model:value="createForm.sex" button-style="solid" style="width: 100%;" size="large">
<a-radio-group v-model:value="createForm.sex" button-style="solid" style="width: 100%;"
size="large">
<a-radio-button :value="1" style="width: calc(100% / 3);">男</a-radio-button>
<a-radio-button :value="2" style="width: calc(100% / 3);">女</a-radio-button>
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button>
@@ -162,19 +165,20 @@
<a-col span="12">
<a-form-item label="最小年龄" name="age_min">
<a-input-number :min="0" type="number" v-model:value="createForm.age_min"
placeholder="请输入最小年龄" style="width: 100%;" size="large"/>
placeholder="请输入最小年龄" style="width: 100%;" size="large" />
</a-form-item>
</a-col>

<a-col span="12">
<a-form-item label="最大年龄" name="age_max">
<a-input-number :min="0" type="number" v-model:value="createForm.age_max"
placeholder="请输入最大年龄" style="width: 100%;" size="large"/>
placeholder="请输入最大年龄" style="width: 100%;" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="婚姻状况" name="marital_status">
<a-radio-group v-model:value="createForm.marital_status" button-style="solid" style="width: 100%;" size="large">
<a-form-item label="婚姻状况" name="marital_status">
<a-radio-group v-model:value="createForm.marital_status" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: calc(100% / 3);">已婚</a-radio-button>
<a-radio-button :value="2" style="width: calc(100% / 3);">未婚</a-radio-button>
<a-radio-button :value="3" style="width: calc(100% / 3);">不限</a-radio-button>
@@ -182,8 +186,8 @@
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="专业" name="major">
<a-input v-model:value="createForm.major" placeholder="请输入专业" size="large"/>
<a-form-item label="专业" name="major">
<a-input v-model:value="createForm.major" placeholder="请输入专业" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
@@ -192,7 +196,7 @@
<a-row>
<template v-for="(item, index) in licenseOption">
<a-col span="8">
<a-checkbox :value="item.id" size="large">{{item.name}}</a-checkbox>
<a-checkbox :value="item.id" size="large">{{item.name}}</a-checkbox>
</a-col>
</template>
</a-row>
@@ -216,36 +220,38 @@
<div v-show="current == 2">
<a-row gutter="20">
<a-col span="12">
<a-form-item required label="联系人" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" size="large"/>
<a-form-item label="联系人" name="contact">
<a-input v-model:value="createForm.contact" placeholder="请输入联系人" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="担任职位" name="possession">
<a-input v-model:value="createForm.possession" placeholder="请输入联系人职位" size="large"/>
<a-input v-model:value="createForm.possession" placeholder="请输入联系人职位" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item required label="联系电话" name="phone">
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" size="large"/>
<a-form-item label="联系电话" name="phone">
<a-input v-model:value="createForm.phone" placeholder="请输入联系电话" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="是否公开联系电话" name="phone_public">
<a-radio-group v-model:value="createForm.phone_public" button-style="solid" style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-group v-model:value="createForm.phone_public" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
</a-radio-group>
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="手机" name="mobile">
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" size="large"/>
<a-input v-model:value="createForm.mobile" placeholder="请输入手机" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="是否公开手机" name="mobile_public">
<a-radio-group v-model:value="createForm.mobile_public" button-style="solid" style="width: 100%;" size="large">
<a-radio-group v-model:value="createForm.mobile_public" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
</a-radio-group>
@@ -253,12 +259,13 @@
</a-col>
<a-col span="12">
<a-form-item label="邮箱" name="email">
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" size="large"/>
<a-input v-model:value="createForm.email" placeholder="请输入邮箱" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="是否公开邮箱" name="email_public">
<a-radio-group v-model:value="createForm.email_public" button-style="solid" style="width: 100%;" size="large">
<a-radio-group v-model:value="createForm.email_public" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
</a-radio-group>
@@ -266,12 +273,13 @@
</a-col>
<a-col span="12">
<a-form-item label="传真" name="fax">
<a-input v-model:value="createForm.fax" placeholder="请输入传真" size="large"/>
<a-input v-model:value="createForm.fax" placeholder="请输入传真" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="是否公开传真" name="fax_public">
<a-radio-group v-model:value="createForm.fax_public" button-style="solid" style="width: 100%;" size="large">
<a-radio-group v-model:value="createForm.fax_public" button-style="solid"
style="width: 100%;" size="large">
<a-radio-button :value="1" style="width: 50%;">是</a-radio-button>
<a-radio-button :value="2" style="width: 50%;">否</a-radio-button>
</a-radio-group>
@@ -279,12 +287,13 @@
</a-col>
<a-col span="12">
<a-form-item label="其他地址" name="other_address">
<a-input v-model:value="createForm.other_address" placeholder="请输入其他地址" size="large"/>
<a-input v-model:value="createForm.other_address" placeholder="请输入其他地址" size="large" />
</a-form-item>
</a-col>
<a-col span="12">
<a-form-item label="面试地址" name="interview_address">
<a-input v-model:value="createForm.interview_address" placeholder="请输入面试地址" size="large"/>
<a-input v-model:value="createForm.interview_address" placeholder="请输入面试地址"
size="large" />
</a-form-item>
</a-col>
<a-col span="24">
@@ -564,9 +573,9 @@
.steps-action {
margin-top: 12px;
}
:deep(.ant-steps-item-icon) {
background-color: #4FBE70 !important;
border-color: #4FBE70 !important;
border-color: #4FBE70 !important;
}
</style>

+ 61
- 45
src/components/job/detail/index.vue Visa fil

@@ -29,11 +29,11 @@
<StarOutlined />
收藏
</a-button>
<a-button v-if="detail.favorited != 0" type="primary" @click="cancelCollect(detail.id)">
<a-button v-if="detail.favorited != 0" type="primary" @click="cancelCollect(detail.favorited)">
<StarOutlined />
取消收藏
</a-button>
<a-button @click="applyJob(detail.id)">
<a-button @click="applyJob(detail.id)">
投简历
</a-button>
</a-sapce>
@@ -60,30 +60,34 @@
<a-descriptions-item label="联系人">{{detail.contact.contact}}</a-descriptions-item>
<a-descriptions-item
label="职业类别">{{detail.base.types ? detail.base.types[0].name : '未知'}}</a-descriptions-item>
<a-descriptions-item label="联系电话">{{detail.contact.mobile}} <a-button size="small">
查看
</a-button></a-descriptions-item>
<a-descriptions-item></a-descriptions-item>
<a-descriptions-item label="职业描述">
<a-descriptions-item label="联系电话">
<span v-if="detail.contact.mobile_public == 1">{{detail.contact.mobile}}</span>
<span v-else>未公开</span>
</a-descriptions-item>
<a-descriptions-item label="联系固话">
<span v-if="detail.contact.phone_public == 1">{{detail.contact.phone}}</span>
<span v-else>未公开</span>
</a-descriptions-item>
<a-descriptions-item :span="2" label="职业描述">
<div v-html="detail.base.describe_text"></div>
</a-descriptions-item>
</a-descriptions>
</div>
<div style="margin-top: 30px;" >
<div style="margin-top: 30px;">
<a-descriptions :column="1" title="地图">
<a-descriptions-item :span="24">
<div ref="mapContainer" class="map-container"></div>
<div ref="mapJob" class="map-container"></div>
</a-descriptions-item>
</a-descriptions>
</div>
<a-login></a-login>

</template>

<script setup lang="ts">
import { ref, computed, onMounted, defineProps, watch ,createVNode} from 'vue';
import { GetJobDetail,PostJobseekAddfavorite, PostJobseekDelfavorite, PostJobseekAddapplication } from '@/apis/models';
import { ref, computed, onMounted, defineProps, watch, createVNode } from 'vue';
import { GetJobDetail, GetJobAuthDetail, PostJobseekAddfavorite, PostJobseekDelfavorite, PostJobseekAddapplication } from '@/apis/models';
import { useCommon } from '@/hooks/useCommon';
import { warnToast, successToast } from '@/utils/toastHelper';
let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal, showOtherModal1 } = useCommon();
@@ -92,29 +96,41 @@
let detail = ref<Object>(null)
let token = ref(sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '')
let role = ref(sessionStorage.getItem('role') ? sessionStorage.getItem('role') : '')
const mapContainer = ref(null);
const mapJob = ref(null);
const getDetail = () => {
GetJobDetail({ id: job_id.value }).then(res => {
detail.value = res.data;
detail.value.latitude = 39.984104
detail.value.longitude = 116.307503
if (mapContainer.value) {
initMap()
} else {
console.error('地图容器元素未找到');
}
})
if (sessionStorage.getItem('token')) {
GetJobAuthDetail({ id: job_id.value }).then(res => {
detail.value = res.data;
if (mapJob.value && detail.value.latitude && detail.value.longitude) {
initMap()
} else {
console.error('地图容器元素未找到');
}
})
} else {
GetJobDetail({ id: job_id.value }).then(res => {
detail.value = res.data;
detail.value.latitude = ''
detail.value.longitude = ''
if (mapJob.value && detail.value.latitude && detail.value.longitude) {
initMap()
} else {
console.error('地图容器元素未找到');
}
})
}

}

const initMap = () => {
var center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标
let center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标
//初始化地图
var map = new TMap.Map(mapContainer.value, {
let map = new TMap.Map(mapJob.value, {
center: center
});

//创建并初始化MultiMarker
var markerLayer = new TMap.MultiMarker({
let markerLayer = new TMap.MultiMarker({
map: map, //指定地图容器
//样式定义
styles: {
@@ -131,7 +147,7 @@
geometries: [{
"id": "1", //点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id
"styleId": 'myStyle', //指定样式id
"position": new TMap.LatLng(detail.value.latitude, detail.value.longitude), //点标记坐标位置
"position": new TMap.LatLng(sessionStorage.getItem('lat'), sessionStorage.getItem('lng')), //点标记坐标位置
"properties": {//自定义属性
"title": "marker1"
}
@@ -139,71 +155,71 @@
]
});
}
const toLogin = () => {
showOtherModal1()
}
const confirmCollect = (job_id : Number) => {
Modal.confirm({
title: `是否要收藏该职位`,
centered: true,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
PostJobseekAddfavorite({job_id: job_id }).then(res => {
PostJobseekAddfavorite({ job_id: job_id }).then(res => {
successToast('已收藏')
mapContainer.value = null
mapJob.value = null
getDetail();
})
},
onCancel() {
},
});
}
const cancelCollect = (job_id : Number) => {
const cancelCollect = (id : Number) => {
Modal.confirm({
title: `是否要取消收藏该职位`,
centered: true,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
PostJobseekDelfavorite({job_id: job_id }).then(res => {
PostJobseekDelfavorite({ id: id }).then(res => {
successToast('已取消收藏')
mapContainer.value = null
mapJob.value = null
getDetail();
})
},
onCancel() {
},
});
}
const applyJob = (job_id : Number) => {
Modal.confirm({
title: `是否要投递该职位`,
centered: true,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
PostJobseekAddapplication({job_id: job_id }).then(res => {
PostJobseekAddapplication({ job_id: job_id }).then(res => {
successToast('已投递')
mapContainer.value = null
mapJob.value = null
getDetail();
})
},
onCancel() {
},
});
}

watch(() => props.id, (newVal) => {
job_id.value = newVal
if (job_id.value) {
mapContainer.value = null
mapJob.value = null
getDetail()
}
}, { immediate: true })
@@ -213,7 +229,7 @@
:deep(.ant-btn) {
border-radius: 0 !important;
}
.map-container {
width: 100%;
height: 400px;

+ 2
- 1
src/components/job/home/hot-company/index.vue Visa fil

@@ -184,7 +184,8 @@
background-color: #4FBE70;
transform: rotate(10deg);
position: absolute;
top: 4px
top: 4px;
left: 4px;
}

.text-content {

+ 43
- 10
src/components/job/meet/booking/index.vue Visa fil

@@ -11,41 +11,56 @@
</a-card-meta>
<a-divider />
<div v-html="detail.content"></div>
<div class="company-box">
<a-typography>
<a-typography-title :level="5">参与的企业</a-typography-title>
<a-typography-paragraph>
<a-row :gutter="[10,10]">
<a-col v-for="(item, index) in companyList">
<div style="color: #808080" @click="toCompanyDetail(item.id)">{{item.company_name}}</div>
</a-col>
</a-row>
</a-typography-paragraph>
</a-typography>

</div>
</a-card>
</a-page-header>
</template>
<template v-else>
<a-list item-layout="horizontal" :data-source="recruitmentList" style="cursor: pointer;">
<template #renderItem="{ item }">
<a-list-item @click="toDetail(item)" >
<a-list-item @click="toDetail(item)">
<a-list-item-meta :title="item.title" :description="'发布时间:'+item.created_at">
</a-list-item-meta>
</a-list-item>
</template>
</a-list>
<a-flex align="center" justify="center">
<a-pagination hideOnSinglePage v-model:current="current"
:total="total" @change="pageChange" />
<a-pagination hideOnSinglePage v-model:current="current" :total="total" @change="pageChange" />
</a-flex>
</template>
</template>

<script setup lang="ts">
import { ref, computed, onMounted, createVNode } from 'vue';
import { PostRecruitmentList } from '@/apis/models';
import { ref, computed, onMounted ,defineEmits} from 'vue';
import { PostRecruitmentList, PostRecruitmentBookcompany } from '@/apis/models';
import { ArrowLeftOutlined } from '@ant-design/icons-vue';
import { router } from '@/router';
const emit = defineEmits();
let recruitmentList = ref<object[]>([])
let detail = ref<Object>(null)
let current = ref<Number>(1)
let total = ref<Number>(0)
let companyList = ref<Object>([])

const pageChange = (page) => {
current.value = page
getRecruitmentList()
}
const getRecruitmentList = (page) => {
PostRecruitmentList({page: current.value}).then(res => {
PostRecruitmentList({ page: current.value }).then(res => {
recruitmentList.value = res.data.recruitments;
total.value = res.data.total;
})
@@ -57,13 +72,31 @@

const toDetail = (data) => {
detail.value = data
PostRecruitmentBookcompany({ pagesize: 100, recruitment_id: data.id }).then(res => {
companyList.value = res.data.recruitmentbooks
})
}
const toCompanyDetail = (val : Number) => {
sessionStorage.setItem('tab_key', 1)
sessionStorage.setItem('pubilc_id', val)
sessionStorage.setItem('mode', 'detail')
router.push({
path: '/personal'
})
}

const back = (data) => {
detail.value = null
}
</script>

<style>
<style lang="less" scoped>
.company-box {
width: 100%;
padding: 20px;
cursor: pointer;
border: 1px solid #f0f0f0;
border-radius: 8px;
}
</style>

+ 3
- 3
src/components/jobseeker/invite/collect/index.vue Visa fil

@@ -11,7 +11,7 @@
<a-col span="8" v-for="(item, index) in jobList">
<a-card :title="item.job_name">
<template #extra>
<a-button @click="cancelCollect(item.id,item.job_id)">取消收藏</a-button>
<a-button @click="cancelCollect(item.id,item.job_id)" type="primary">取消收藏</a-button>
</template>
<a-row>
<a-col span="20">
@@ -37,7 +37,7 @@

<script setup lang="ts">
import { ref, computed, onMounted, defineEmits, createVNode } from 'vue';
import { GetJobseekListfavorite, PostJobseekUpdatefavorite } from '@/apis/models';
import { GetJobseekListfavorite, PostJobseekDelfavorite } from '@/apis/models';
import JobDetail from '@/components/jobseeker/invite/detail/index.vue'
import { warnToast, successToast } from '@/utils/toastHelper';
import { useCommon } from '@/hooks/useCommon';
@@ -98,7 +98,7 @@
centered: true,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
PostJobseekUpdatefavorite({ id: id, job_id: job_id }).then(res => {
PostJobseekDelfavorite({ id: id, job_id: job_id }).then(res => {
successToast('已取消收藏')
getData();
})

+ 2
- 2
src/components/jobseeker/resume/basic/basic.vue Visa fil

@@ -45,7 +45,7 @@
<a-col span="12">
<a-form-item label="出生日期" name="dob">
<a-date-picker v-model:value="addOtherForm.dob" @Change="dobChange" style="width: 100%;"
size="large" />
size="large" :disabledDate="disabledDateFront" />
</a-form-item>
</a-col>
<a-col span="12">
@@ -221,7 +221,7 @@
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, imageprefix } = useCommon();
let { store, dayjs, richOption, ExclamationCircleOutlined, Modal, imageprefix, disabledDateFront } = useCommon();
const dayjsRef = ref(dayjs);
let props = defineProps(['form_state']);
const emit = defineEmits();

+ 15
- 7
src/components/layout/header/aHeader.vue Visa fil

@@ -305,13 +305,21 @@
warnToast('请输入验证码')
return;
} else {
successToast('已经成为招聘者,请重新登录')
quit()
router.push('/login')
// PostCustomerVerify(form.value).then(res => {
// successToast('已经成为招聘者,请重新登录')
// quit()
// })
form.value.code = Number(form.value.code)
PostCustomerVerify(form.value).then(res => {
successToast('已经成为招聘者,请重新登录')
store.commit('getPageType', {
pageType: ''
})
store.commit('setShowLoginBox', {
showLoginBox: false
})
sessionStorage.clear()
sessionStorage.setItem('pageType', '')
store.commit('permissions/SET_PERMISSION', null)
store.commit('permissions/SET_MENU', [])
router.push('/login')
})
}

}

+ 14
- 2
src/components/layout/menu/aMenu.vue Visa fil

@@ -113,11 +113,23 @@
:deep(.ant-menu-submenu-open) {
color: #4FBE70 !important;
background-color: #ffffff !important;
color: #ffffff !important;
background-color: #0A130D !important;
border-bottom-color: #4FBE70 !important;
}
:deep(.ant-menu-submenu-title:hover) {
color: #ffffff !important;
}
:deep(.ant-menu-submenu-active::after) {
color: #ffffff !important;
background-color: #4FBE70 !important;
border-bottom-color: #4FBE70 !important;
}



+ 5
- 0
src/hooks/useCommon.ts Visa fil

@@ -138,6 +138,10 @@ export const useCommon = () => {
const disabledDate = (val : Dayjs) => {
return val && val < dayjs().endOf('day');
};
const disabledDateFront = (val : Dayjs) => {
return val && val > dayjs().endOf('day');
};

// 照片前缀
// const imageprefix : string = 'https://admin1.jcjob.cn/img/'
@@ -159,6 +163,7 @@ export const useCommon = () => {
richOption,
message,
disabledDate,
disabledDateFront,
imageprefix,
openSearchModel,
showSearch,

+ 3
- 1
src/style.css Visa fil

@@ -114,9 +114,11 @@ button:focus-visible {

.ant-btn-primary {
background-color: #4FBE70 !important;
box-shadow: 0 2px 0 rgba(79, 190, 112, 0.1)important;
border-color: #4FBE70 !important;
}



.ant-menu-submenu-selected::after {
border-bottom-color: #4FBE70 !important;
}

+ 12
- 1
src/views/common/download/index.vue Visa fil

@@ -22,7 +22,7 @@
</a-row>
</template>
<script setup lang="ts">
import { ref, onMounted, computed, watch } from 'vue';
import { ref, onMounted, computed, watch, onBeforeUnmount } from 'vue';
import Download from '@/components/download/index.vue'
let menu_list = ref([{ title: '个人求职', key: 10 },{ title: '企业招聘', key: 11},{ title: '应届毕业生', key: 12},{ title: '人才入户', key: 13},{ title: '其他下载', key: 14}])
let curKey = ref<Number>(10)
@@ -30,6 +30,17 @@
const changeKey = (data) => {
curKey.value = data.key;
}
onMounted(() => {
if (sessionStorage.getItem('section_id')) {
selectedKeys.value = [sessionStorage.getItem('section_id')]
}
})
onBeforeUnmount(() => {
sessionStorage.removeItem('section_id')
sessionStorage.removeItem('acticle_id')
})
</script>

<style>

+ 12
- 1
src/views/common/information/index.vue Visa fil

@@ -22,7 +22,7 @@
</a-row>
</template>
<script setup lang="ts">
import { ref, onMounted, computed, watch } from 'vue';
import { ref, onMounted, computed, watch ,onBeforeUnmount} from 'vue';
import WebsiteNotice from '@/components/information/website-notice/index.vue'
let menu_list = ref([{ title: '本站公告', key: 3 },{ title: '小榄动态', key: 4},{ title: '职场攻略', key: 5},{ title: '创业就业', key: 6},{ title: '劳动与法', key: 8}])
let curKey = ref<Number>(3)
@@ -30,6 +30,17 @@
const changeKey = (data) => {
curKey.value = data.key;
}
onMounted(() => {
if (sessionStorage.getItem('section_id')) {
selectedKeys.value = [sessionStorage.getItem('section_id')]
}
})
onBeforeUnmount(() => {
sessionStorage.removeItem('section_id')
sessionStorage.removeItem('acticle_id')
})
</script>

<style>

+ 13
- 21
src/views/common/personal/index.vue Visa fil

@@ -22,7 +22,7 @@
</a-list-item>
</a-list>

<a-tabs v-model:activeKey="activeKey" type="card">
<a-tabs v-model:activeKey="activeKey" type="card" @change="activeChange">
<a-tab-pane :key="1" tab="企业信息">
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;">
<a-descriptions title="公司介绍" layout="vertical">
@@ -57,7 +57,7 @@
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;">
<a-descriptions :column="7" title="企业相册" layout="vertical">
<a-descriptions-item><image-container
:imgObj="{src: imageprefix + companyDetail.photo,width: '153px',height:'50px'}"></image-container></a-descriptions-item>
:imgObj="{src: imageprefix + companyDetail.photo,width: '200px',height:'200px', mode: 'fill'}"></image-container></a-descriptions-item>
</a-descriptions>
</div>
<div style="margin: 20px 0; padding: 20px;background-color: #ffffff;border-radius: 8px;">
@@ -83,8 +83,8 @@
<job-card :list="jobList" @detail="toDetail"></job-card>
<a-flex justify="center">
<a-space>
<a-pagination simple v-model:current="current"
:total="total" @change="pageChange" />
<a-pagination simple v-model:current="current" :total="total"
@change="pageChange" />
</a-space>
</a-flex>
<!-- <a-card hoverable :bordered="false" style="width: 100%">
@@ -98,11 +98,10 @@
</template>
</a-card> -->
</div>
</a-col>
<a-col span="18">
<div v-if="job_id"
style="padding: 20px;background-color: #ffffff;border-radius: 8px;">
<div v-if="job_id" style="padding: 20px;background-color: #ffffff;border-radius: 8px;">
<job-detail :id="job_id"></job-detail>
</div>
</a-col>
@@ -143,9 +142,9 @@

const toDetail = (data) => {
job_id.value = data.id;

}


const pageChange = (page) => {
current.value = page
getJobCompanyjobs(page)
@@ -190,7 +189,6 @@
var map = new TMap.Map(mapContainer.value, {
center: center
});

//创建并初始化MultiMarker
var markerLayer = new TMap.MultiMarker({
map: map, //指定地图容器
@@ -216,8 +214,6 @@
}
]
});


}


@@ -229,16 +225,12 @@
if (sessionStorage.getItem('pubilc_id') != 0 || sessionStorage.getItem('id') != 0) {
PostCompanyInfo({ id: pubilc_id.value ? pubilc_id.value : sessionStorage.getItem('id') }).then(res => {
companyDetail.value = res.data;
companyDetail.value.latitude = 39.984104
companyDetail.value.longitude = 116.307503
if (mapContainer.value) {
initMap()
} else {
console.error('地图容器元素未找到');
}
initMap()
})
getJobCompanyjobs(current.value)
}
} else {
initMap()
}
})

@@ -257,13 +249,13 @@

.map-container {
width: 100%;
height: 400px;
height: 600px;
}
:deep(.ant-card) {
padding: 0 !important;
}
:deep(.ant-card-body) {
padding: 0 !important;
}

+ 2
- 3
src/views/company/basic/index.vue Visa fil

@@ -5,14 +5,13 @@
<a-row :gutter="20">
<a-col span="4">
<div style="position: fixed; top: 90px; z-index:99;">
<a-anchor :get-container="getContainer" :target-offset="50" :items="menu_list"
<a-anchor style="width: 210px !important;" :get-container="getContainer" :target-offset="50" :items="menu_list"
@click="anchorClick"></a-anchor>
</div>
</a-col>
<a-col span="20">
<div style="width: 100%;background-color: #fff;padding: 0 20px;border-radius: 8px;">
<div ref="abc" class="abc" style="height: calc(100vh - 100px);overflow: auto;">
<div ref="abc" class="abc" style="height: 100vh;overflow: auto;">
<a-space direction="vertical" justify="space-between" :size="36"
style="width: 100% !important;">
<div id="basic">

+ 4
- 6
src/views/company/home/index.vue Visa fil

@@ -62,7 +62,7 @@
</template>
<a-list-item-meta>
<template #title>
<a-button type="link" @click="detail(item)">{{item.seekername}}</a-button>
<div @click="detail(item)"> <span style="font-weight: bold;font-size: 16px;cursor: pointer;">{{item.seekername}} </span></div>
</template>
<template #description>
<div>
@@ -82,8 +82,7 @@
</template>
<template #avatar>
<image-container
:imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container>

:imgObj="{src: item.photo ? imageprefix+ item.photo : '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container>
</template>
</a-list-item-meta>
</a-list-item>
@@ -92,7 +91,7 @@
</a-col>
<a-col span="24" v-if="jobList.length > 0">
<a-flex justify="center">
<a-button size="large" class="main-color" @click="more">查看更多</a-button>
<a-button size="large" type="primary" @click="onLoadMore">查看更多</a-button>
</a-flex>
</a-col>
</a-row>
@@ -124,7 +123,7 @@
import { PostCompanyProfile, GetCompanyRecommentResume, PostCompanyTalentPoolAdd, PostCompanyResumeInterviewAdd ,PostCompanyJobList} from '@/apis/models';
import { warnToast, successToast } from '@/utils/toastHelper';
import { useCommon } from '@/hooks/useCommon';
let { commomParams, ExclamationCircleOutlined, Modal, dayjs, disabledDate, showOtherModal1 } = useCommon();
let { commomParams, ExclamationCircleOutlined, Modal, dayjs, disabledDate, showOtherModal1 , imageprefix} = useCommon();
const dayjsRef = ref(dayjs);
let jobList = ref<Object[]>([])
let basic = ref<Object>({})
@@ -168,7 +167,6 @@
})
}
const positionChange = (val : Object) => {
debugger
position_name.value = val.option.label;
form.job_id = Number(val.key);
}

+ 3
- 3
src/views/jobseeker/home/index.vue Visa fil

@@ -18,7 +18,7 @@
</div>
</template>
<template #avatar>
<a-avatar :src="'https://rcsc-test.jcjob.cn/img'+basic.photo" :size="96" />
<a-avatar :src="imageprefix+basic.photo" :size="96" />
</template>
</a-list-item-meta>
<div style="margin-left: 108px;">
@@ -60,7 +60,7 @@
</a-descriptions-item>
<a-descriptions-item :span="3" label="关注公众号,接收面试消息">
<image-container
:imgObj="{src: '/images/gongzhonghao.png',width: '50px',height:'50px'}"></image-container>
:imgObj="{src: '/images/gongzhonghao.png',width: '50px',height:'50px'}" :need="true"></image-container>
</a-descriptions-item>
</a-descriptions>
</div>
@@ -100,7 +100,7 @@
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, imageprefix } = useCommon();
let jobList = ref<Object[]>([])
let basic = ref<Object>({})
let seeLength = ref<Number>(0)

+ 10
- 4
src/views/jobseeker/password/index.vue Visa fil

@@ -63,7 +63,7 @@

<script setup lang="ts">
import { ref, onMounted, computed, onBeforeUnmount } from 'vue';
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha } from '@/apis/models';
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models';
import { warnToast, successToast } from '@/utils/toastHelper';
let smsForm = ref<Object>({
mobile: "",
@@ -71,8 +71,9 @@
capt_id: ""
})
let createForm = ref({
mobile: '',
sms_code: '',
new_password: '',
new_pwd: '',
})

let capt_id = ref<String>('')
@@ -128,13 +129,18 @@


const saveForm = () => {
PostJobseekerEditPwd(createForm.value).then(res => {
successToast('修改成功')
PostJobseekerResetPwd(createForm.value).then(res => {
successToast('重置成功')
resetForm()
})
}

const resetForm = () => {
smsForm.value = {
mobile: "",
captcha: "",
capt_id: ""
}
createForm.value = {
sms_code: '',
new_password: '',

+ 43
- 14
src/views/login/login.vue Visa fil

@@ -30,7 +30,7 @@
</a-col>
<template v-if="loginMethod == 'password'">
<a-col span="24">
<a-input v-model:value="createForm.password" placeholder="密码" size="large" />
<a-input-password v-model:value="createForm.password" placeholder="密码" size="large" />
</a-col>
<a-col span="12">
<a-input v-model:value="createForm.captcha" placeholder="验证码" size="large" />
@@ -81,10 +81,10 @@
</a-col>
<template v-if="registerSegmentedValue == '求职者注册'">
<a-col span="24">
<a-input v-model:value="personalForm.mobile" placeholder="请输入手机号" size="large" />
<a-input v-model:value="personalForm.mobile" placeholder="手机号" size="large" />
</a-col>
<a-col span="24">
<a-input-password v-model:value="personalForm.password" placeholder="请输入密码" size="large" />
<a-input-password v-model:value="personalForm.password" placeholder="密码" size="large" />
</a-col>
<a-col span="12">
<a-input v-model:value="personalForm.captcha" placeholder="验证码" size="large" />
@@ -96,26 +96,26 @@
</template>
<template v-if="registerSegmentedValue == '企业注册'">
<a-col span="24">
<a-input v-model:value="companyForm.contact_mobile" placeholder="请输入联系号码" size="large" />
<a-input v-model:value="companyForm.contact_mobile" placeholder="联系号码" size="large" />
</a-col>
<a-col span="24">
<a-input-password v-model:value="companyForm.password" placeholder="请输入密码" size="large" />
<a-input-password v-model:value="companyForm.password" placeholder="密码" size="large" />
</a-col>
<a-col span="24">
<a-input-password v-model:value="companyForm.comform_password" placeholder="请输入确认密码"
<a-input-password v-model:value="companyForm.comform_password" placeholder="确认密码"
size="large" />
</a-col>
<a-col span="24">
<a-input v-model:value="companyForm.email" placeholder="请输入邮箱" size="large" />
<a-input v-model:value="companyForm.email" placeholder="邮箱" size="large" />
</a-col>
<a-col span="24">
<a-input v-model:value="companyForm.full_name" placeholder="请输入企业名称" size="large" />
<a-input v-model:value="companyForm.full_name" placeholder="企业名称" size="large" />
</a-col>
<a-col span="24">
<a-input v-model:value="companyForm.contact_name" placeholder="请输入联系人" size="large" />
<a-input v-model:value="companyForm.contact_name" placeholder="联系人" size="large" />
</a-col>
<a-col span="24">
<a-input v-model:value="companyForm.contact_phone" placeholder="请输入联系固话" size="large" />
<a-input v-model:value="companyForm.contact_phone" placeholder="联系固话" size="large" />
</a-col>
<a-col span="12">
<a-input v-model:value="companyForm.captcha" placeholder="验证码" size="large" />
@@ -141,7 +141,7 @@

<script lang="ts" setup>
import { ref, onMounted, computed, onBeforeUnmount } from 'vue';
import { GetCaptcha, PostJobseekerlogin,PostCompanyLogin, PostSmsSend, PostJobseekerSmsLogin, PostCompanyLoginByMobile} from '@/apis/models';
import { GetCaptcha, PostJobseekerlogin,PostCompanyLogin, PostSmsSend, PostJobseekerSmsLogin, PostCompanyLoginByMobile, PostJobseekerRegister, PostCompanyRegister} from '@/apis/models';
import { store } from '@/store/index';
import { router } from '@/router/index';
import { dataForm, otherDataForm, personalDataForm, companyDataForm, smsDataForm, smsLoginDataForm, reset } from '@/views/login/data.ts';
@@ -175,11 +175,11 @@
smsForm.value.mobile = createForm.value.username ? createForm.value.username : '';
smsForm.value.capt_id = capt_id.value;
if (!smsForm.value.mobile) {
warnToast('请输入手机号')
warnToast('手机号')
return false;
}
if (!smsForm.value.captcha) {
warnToast('请输入图形验证码')
warnToast('图形验证码')
return false;
}
PostSmsSend(smsForm.value).then(res => {
@@ -363,7 +363,36 @@
}

// 进入注册
// register
const register = () => {
if(registerSegmentedValue.value == '求职者注册') {
personalForm.value.capt_id = capt_id.value;
PostJobseekerRegister(personalForm.value).then(res => {
successToast('注册成功,可以进行登录');
resetForm()
currentModule.value = 'login';
loginSegmentedValue.value = '我要求职'
loginMethod.value = 'password'
}).catch(err => {
getCaptcha()
})
} else {
companyForm.value.capt_id = capt_id.value;
if (companyForm.value.password != companyForm.value.comform_password) {
warnToast('两次密码不一致');
return false
}
PostCompanyRegister(companyForm.value).then(res => {
successToast('注册成功,可以进行登录');
resetForm()
currentModule.value = 'login';
loginSegmentedValue.value = '我要招聘'
loginMethod.value = 'password'
}).catch(err => {
getCaptcha()
})
}
}


onMounted(() => {

Laddar…
Avbryt
Spara