You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apply-assistant-v3/root/detail/job.vue

1640 lines
58 KiB
Vue

6 months ago
<template>
5 months ago
<div class="p-root-detail-job g_bg_page g_pt_10 g_pl_12 g_pr_12 g_kuaishou">
6 months ago
<!-- {{ from }} -->
<!-- {{ selfJob }} -->
6 months ago
<div v-if="speed == 0">
6 months ago
<g-loading />
6 months ago
</div>
<div v-if="speed == 1">
4 months ago
<view class="r_box g_mb_10" v-if="(isSharePage && isFans == 2) || !isSharePage">
4 months ago
<div class="g_flex_row_between flex_center g_pl_16 g_pr_16 g_fs_16 g_border_e_b" @click="goUserMain" style="height: 60px">
<view class="g_fw_600 g_mr_4 g_flex_column_center">项目方</view>
<view class="g_flex_row_end flex_center g_flex_1">
<span class="g_c_6" selectable="false" space="false" decode="false">{{ jobDetail.fullName ? jobDetail.fullName : jobDetail.agencyName }}</span>
<span class="iconfont icon-gengduo11 g_fs_14 g_c_6 g_ml_4"></span>
</view>
</div>
<div class="g_mb_10 g_pl_16 g_pr_16 servicePrice" @click="showFee" style="height: 60px">
<div class="g_flex_row_between flex_center g_fs_16">
<div class="g_flex_row_start" style="flex: none">
<div class="g_fw_600 g_mr_4 g_hs_67 g_flex_column_center">代理佣金</div>
<icon :class="showPrice ? 'icon-zhengyan1' : 'icon-biyan1'" class="iconfont g_c_f40 g_fs_22 g_hs_67 g_flex_column_center" @click.stop="() => (showPrice = !showPrice)" style="width: 67px"></icon>
</div>
<div class="g_flex_row_end flex_center g_hs_67" style="flex: 1">
<span class v-if="showPrice">{{ jobDetail.serverPrice || "" }}</span>
<span class v-else>***</span>
<div class="iconfont icon-gengduo11 g_fs_14 g_c_6 g_ml_4"></div>
</div>
6 months ago
</div>
</div>
4 months ago
</view>
6 months ago
5 months ago
<!-- 基本信息 -->
4 months ago
<view class="g_bg_f g_pt_10 g_pl_16 g_pr_16 g_kuaishou g_radius_8 g_pb_16">
5 months ago
<div class="m-info g_mb_12">
<i class="iconfont icon-yitingzhao" v-if="jobDetail.recruitment == 2" style="position: absolute; right: 30px; top: 30%; transform: translateY(-50%); color: #ff4d4f; font-size: 80px; z-index: 1"></i>
5 months ago
<view class="g_mb_10 g_flex_row_between flex_center">
<view class="g_flex_1 g_c_3 g_fs_20 g_fw_bold">{{ jobDetail.jobName }}</view>
<view class="g_fs_14 g_c_9">
{{ jobDetail.updateTime }}
</view>
</view>
<template>
<view class="g_c_9">
<view class="g_flex_row_between flex_center g_mb_12">
<view class="g_fs_14 g_ml_4 g_lh_1_2 g_flex_column_center">{{ (jobDetail.addss ? jobDetail.addss + "丨" : "") + jobDetail.genderRestrict + "丨" + jobDetail.age }} </view>
</view>
</view>
</template>
<div class="g_flex_row_start">
<div v-for="(item, index) in jobDetail.jobRequestLabelNames" class="g_mr_8 g_mb_8 g_pl_4 g_pr_4" :style="{ color: labelColor[index % labelColor.length], 'background-color': bgColor[index % bgColor.length] }">{{ item }}</div>
5 months ago
</div>
<view class="g_flex_row_between flex_center g_mt_8">
<view class="g_flex_row_start flex_center">
<view class="g_fs_16 g_fw_600 g_c_f40 g_lh_1_2 g_flex_column_center" v-if="jobDetail.priceStr" v-html="jobDetail.priceStr"> </view>
<view class="g_fs_14 g_c_9" v-if="jobDetail.monthPay">
{{ jobDetail.monthPay ? "丨" + jobDetail.monthPay : "" }}
</view>
</view>
<view v-if="corpUserFlag" class="g_flex_row_start g_c_main" @click.stop="setCopy('jobName')">
<view class="iconfont icon-fuzhi mr4" style></view>
<span class="f14">复制</span>
5 months ago
</view>
</view>
<div>
<view class="m-address g_mt_16 g_mb_16 g_pt_10 g_pb_10 g_flex_row_start g_border_e_t g_border_e_b" hover-class="thover" @click="goAddress" v-if="jobDetail.storeLat && jobDetail.storeLng && jobDetail.storeDistrict">
<view class="g_flex_none g_flex_column_center">
<i class="iconfont icon-dizhi1 g_c_main g_mr_10 g_w_14 g_h_14"></i>
</view>
<view class="g_flex_1 g_ml_4 g_mr_4 g_flex_column_center">
<view class="g_fs_16 g_c_3 g_ell_1">
{{ jobDetail.storeAddr || "-" }}
</view>
</view>
<view class="g_flex_none g_flex_column_center">
<i class="iconfont icon-gengduo11 g_c_9 g_w_14 g_h_14"></i>
</view>
</view>
<view v-else class="g_border_e_t g_mt_16"></view>
6 months ago
</div>
5 months ago
<view class="g_flex_row_center g_border_e_b">
<u-tabs bg-color="transparent" :list="tabInfo.list" :current="tabInfo.active" :active-color="globalData.themeColor" bar-width="32" bar-height="6" @change="handleUpdateTab" :gutter="50" font-size="32" duration="0.05" height="76"></u-tabs>
</view>
<view class="content_card">
<view v-if="tabInfo.active == 0" style="line-height: 24px" class="">
<view class="" v-if="!jobDetail.cozeStructureRes">
<view v-if="jobDetail.notes">
<view class="detailH3">注意事项</view>
<view class="pri g_c_f40" style="line-height: 24px; padding: 3px 8px; border-radius: 4px; text-align: justify">{{ jobDetail.notes }}</view>
</view>
<view class="detailH3">薪资待遇</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 薪资明细</view>
<view class="textb1">{{ jobDetail.salaryDetail }}</view>
</view>
</view>
<view class="detailH3">职位要求</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 性别年龄</view>
<view class="textb1">{{ jobDetail.genderRestrict + " " + jobDetail.age }}</view>
</view>
</view>
<view class="detailH3">岗位说明</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 班次工时</view>
<view class="textb1">{{ jobDetail.workClasses }}</view>
</view>
<view class="g_flex_row_between">
<view class="rb1">2. 其他说明</view>
<view class="textb1">{{ jobDetail.otherDesp }}</view>
</view>
</view>
<view class="detailH3">面试对接</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 面试地点</view>
<view class="textb1 g_flex_row_between g_flex_1">
<view class>{{ jobDetail.interviewAddr || "-" }}</view>
<i v-if="jobDetail.interviewLat" class="iconfont icon-dizhi11 f16 mr4 biggerSize" style="color: #027aff" data-type="interview"></i>
</view>
</view>
</view>
<view v-if="jobDetail.OtherInfo">
<view class="detailH3">其它信息</view>
<view class="pri" style="line-height: 24px; padding: 3px 8px; border-radius: 4px; color: #333">{{ jobDetail.OtherInfo }}</view>
</view>
</view>
<view class="g_fs_15" v-else>
<template v-for="(item, index) in templateArr" :key="index">
<view class="g_flex_row_start flex_center g_fw_600 g_mt_12 g_mb_8 g_fs_16" v-if="item.show">
<view class="" v-if="item.num == 1"></view>
<view class="" v-if="item.num == 2"></view>
<view class="" v-if="item.num == 3"></view>
<view class="" v-if="item.num == 4"></view>
<view class="" v-if="item.num == 5"></view>
<view class="" v-if="item.num == 6"></view>
<view class="">
{{ item.type }}
</view>
</view>
<template v-for="(inner, index) in item.children" :key="index">
<view class="g_flex_row_start g_fs_14" style="line-height: 22px; padding-left: 16px" v-if="inner.show">
<view class="g_flex_row_start flex_start g_fw_600">
<view class="g_mr_4" hover-class="none" hover-stop-propagation="false">
{{ `${inner.num}. ` }}
</view>
<view class="g_flex_1">
{{ `${inner.key}: ` }}
<text class="g_fw_400 g_ml_4" selectable="false" space="false" decode="false">
{{ inner.value }}
</text>
</view>
</view>
<!-- @blur="inner.edit = false" -->
</view>
</template>
</template>
</view>
</view>
<!-- 职位描述富文本 -->
<view class="g_flex_column_center" v-if="tabInfo.active == 1">
<view class="g_fs_16 g_pb_32">
<view class="g_c_3 g_pt_16 pri">
<view class="" v-if="from != 'new'">
<view @click="setCopy('new')" v-if="jobDetail.jobInfoWithoutReturnFee || jobDetail.jobInfo"> <span class="desp-copy g_c_main g_border_main"></span> </view>{{ jobDetail.jobInfoWithoutReturnFee || jobDetail.jobInfo || "-" }}
</view>
<view class="" v-else>
<view @click="setCopy('new')" v-if="jobDetail.cozeJobInfoWithoutReturnFee || jobDetail.jobInfo"> <span class="desp-copy g_c_main g_border_main"></span> </view>{{ jobDetail.cozeJobInfoWithoutReturnFee || jobDetail.jobInfo || "-" }}
</view>
</view>
<view class="" v-if="isLogin">
4 months ago
<view class="contactInfo" style="white-space: pre-line">{{ loginInfo.noticeEndStr ? loginInfo.noticeEndStr : "详情咨询:" + loginInfo.tel }}</view>
<view class="g_fs_14 g_text_c g_mt_16" v-if="loginInfo.agencyStatus == 1">
5 months ago
以上联系人可以
<span class="g_fw_600" @click="changeContact" style="color: #576b95; text-decoration: underline">改成我的</span>
</view>
</view>
</view>
</view>
<view class="" v-if="tabInfo.active == 2">
<view class="g_pt_16 g_fs_16 pri" style="">
<view @click.stop="setCopy('old')">
<span class="desp-copy g_c_main g_border_main">复制</span>
</view>
<rich-text class style="text-align: justify" :nodes="jobDetail.lastNotice"></rich-text>
</view>
</view>
</view>
</div>
</view>
6 months ago
5 months ago
<!-- old+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<div v-if="false">
<div class="m-info g_mb_12">
<div class="g_flex_1">
<div class="g_mb_10 g_flex_row_between">
<div class="g_flex_1 g_c_3 g_fs_24 g_fw_bold">{{ jobDetail.jobName }}</div>
</div>
<template v-if="jobDetail.classify == 1">
<div class="g_fs_14 g_c_6 g_mb_12 g_c_f40 g_lh_1_2 g_flex_column_center g_mr_18">{{ jobDetail.priceStr }}</div>
<div class="g_flex_row_start g_mb_10">
<div class="g_flex_row_start g_mr_18" v-if="jobDetail.addressStr">
<div class="g_flex_column_center">
<i class="iconfont icon-dingwei2 g_c_6 g_fs_17 g_lh_1_2"></i>
</div>
<div class="g_fs_14 g_c_6 g_ml_4 g_lh_1_2 g_flex_column_center">{{ jobDetail.addressStr }}</div>
</div>
<div class="g_flex_row_start">
<div class="g_flex_column_center">
<i class="iconfont icon-nianling g_c_6 g_fs_16 g_lh_1_2"></i>
</div>
<div class="g_fs_14 g_c_6 g_ml_4 g_lh_1_2 g_flex_column_center">{{ jobDetail.genderAge }}</div>
6 months ago
</div>
</div>
<div class="g_flex_row_start">
<div class="g_flex_column_center">
5 months ago
<i class="iconfont icon-zhaopinqiye g_c_6 g_lh_1_2"></i>
6 months ago
</div>
5 months ago
<div class="g_fs_14 g_c_6 g_ml_4 g_lh_1_2 g_flex_column_center">{{ jobDetail.storeName }}</div>
6 months ago
</div>
5 months ago
</template>
6 months ago
</div>
</div>
5 months ago
<!-- <div class="g_flex_row_start">
6 months ago
<div v-for="(item, index) in jobDetail.jobRequestLabelNames" class="g_mr_8 g_mb_4 g_pl_4 g_pr_4 g_c_6 g_bg_f_5"> {{ item }}</div>
</div>-->
5 months ago
<!-- 所属公司信息 -->
<div class="m-boss g_mt_15 g_mb_16" hover-class="thover" @click="goUserMain">
<div class="box g_flex_row_between g_h_62 g_radius_3 g_pl_16 g_pr_16">
<div class="g_flex_row_start g_flex_1">
<div class="g_flex_column_center g_mr_9 g_flex_none">
<g-panel-image :url="jobDetail.agencyLogo" size="76" />
</div>
<div class="g_flex_1 g_flex_column_center">
<div class="g_ell_1 g_c_3 g_fs_14">{{ jobDetail.agencyName }}</div>
</div>
6 months ago
</div>
5 months ago
<div class="g_flex_column_center g_c_a g_fs_14 g_flex_none g_ml_20">{{ jobDetail.updateTime }}发布</div>
6 months ago
</div>
</div>
5 months ago
<!-- 地址 -->
5 months ago
<div class="m-address g_mt_16 g_mb_16 g_pt_10 g_pb_10 g_flex_row_start" style="border-top: 1rpx solid #ededed; border-bottom: 1rpx solid #ededed" hover-class="thover" @click="goAddress">
5 months ago
<div class="g_flex_none g_flex_column_center">
<image :src="cdnBaseImg + 'jobaddress.svg'" class="g_w_20 g_h_20"></image>
</div>
<div class="g_flex_1 g_ml_4 g_mr_4 g_flex_column_center">
<div class="g_fs_16 g_c_3 g_ell_1">
{{ jobDetail.storeAddr || "-" }}
</div>
</div>
<div class="g_flex_none g_flex_column_center">
<image :src="cdnBaseImg + 'jobmore.svg'" class="g_w_14 g_h_14"></image>
6 months ago
</div>
</div>
5 months ago
<!-- <div class="kefuBox">
6 months ago
<div class="iconBox" v-if="jobDetail.record.customServiceUser && jobDetail.record.customServiceUser.tel">
6 months ago
<i class="g_fsi_20 iconfont icon-phone g_c_main" @click="takeTel(jobDetail.record)"></i>
6 months ago
</div>
<div class="iconBox" v-if="jobDetail.storeJobDetail && jobDetail.storeJobDetail.customServiceUrl">
6 months ago
<i class="g_fsi_20 iconfont icon-weixin" style="color: #40d559" @click="kefu(jobDetail.record)"></i>
6 months ago
</div>
</div> -->
5 months ago
<!-- 轮播banner -->
<div class="m-banner g_pb_16 g_border_f5_b" v-if="swiperArray.length > 0">
<swiper class="swiper" :circular="false" :autoplay="false" :display-multiple-items="swiperArray.length < 5 ? swiperArray.length : 5" style="height: 58px">
<swiper-item v-for="(item, index) in swiperArray" style="max-width: 58px; padding-right: 12px" :key="index" :class="index == 0 ? 'g_ml_0 g_mr_0' : ''">
<u-image :radius="4" v-if="item.type == 'image'" :showLoading="true" :src="item.image" width="58px" height="58px" style="border-radius: 4px" @click="handleViewBig(item, index)"></u-image>
<div class="g_w_58 g_h_58 g_radius_4 videoContainer" style="overflow: hidden" @click="showVideo(item)" v-else>
<video class="theVideo" :show-fullscreen-btn="false" :show-play-btn="false" :show-center-play-btn="false" :enable-play-gesture="true" :id="item.id" :src="item.image" @fullscreenchange="fullScreen">
<div class="shareVideo">
<icon @click="shareVideo(item)" class="iconfont" :class="wxPlat == 'wxwork' ? 'icon-huidaodingbu' : 'icon-zhuanfa1'" hover-class="none" hover-stop-propagation="false"></icon>
</div>
</video>
</div>
</swiper-item>
</swiper>
</div>
<div class="g_flex_row_center g_border_f5_b g_mb_16" hover-class="none">
<u-tabs class="g_w_all" bg-color="transparent" from="index" gutter="0" :isScroll="false" :list="tabInfo.list" :current="tabInfo.active" active-color="#00b666" bar-width="64" bar-height="6" @change="handleUpdateTab" font-size="32" duration="0.05" height="92"></u-tabs>
</div>
<!-- 职位描述富文本 -->
<!-- <div class="m-desc g_flex_column_center g_h_28">
6 months ago
<div class="tip g_flex_row_start">
<div class="g_flex_column_center">
<div class="doc g_w_4 g_h_19 g_bg_main g_radius_2 g_mr_10"></div>
</div>
<div class="g_fs_18 g_c_3 g_fw_600 g_flex_column_center">职位描述</div>
</div>
</div> -->
5 months ago
<div class="g_position_rela" v-if="attention && tabInfo.list[tabInfo.active].tip == 1">
<view class="" v-if="!jobDetail.cozeStructureRes">
<view v-if="jobDetail.notes">
<view class="detailH3">注意事项</view>
<view class="pri g_c_f40" style="line-height: 24px; padding: 3px 8px; border-radius: 4px; text-align: justify">{{ jobDetail.notes }}</view>
6 months ago
</view>
5 months ago
<view class="detailH3">薪资待遇</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 薪资明细</view>
<view class="textb1">{{ jobDetail.salaryDetail }}</view>
</view>
6 months ago
</view>
5 months ago
<view class="detailH3">职位要求</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 性别年龄</view>
<view class="textb1">{{ (jobDetail.genderRestrict || "-") + " " + (jobDetail.age || "-") }}</view>
</view>
6 months ago
</view>
5 months ago
<view class="detailH3">岗位说明</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 班次工时</view>
<view class="textb1">{{ jobDetail.workClasses }}</view>
</view>
<view class="g_flex_row_between">
<view class="rb1">2. 其他说明</view>
<view class="textb1">{{ jobDetail.otherDesp }}</view>
</view>
6 months ago
</view>
5 months ago
<view class="detailH3">面试对接</view>
<view class="g_radius_4">
<view class="g_flex_row_between">
<view class="rb1">1. 面试地点</view>
<view class="textb1 g_flex_row_end g_flex_1">
<view class>{{ jobDetail.interviewAddr || "-" }}</view>
<i v-if="jobDetail.interviewLat" class="iconfont icon-dizhi11 f16 mr4 biggerSize" style="color: #027aff" data-type="interview"></i>
</view>
6 months ago
</view>
</view>
5 months ago
<view v-if="jobDetail.OtherInfo">
<view class="detailH3">其它信息</view>
<view class="pri" style="line-height: 24px; padding: 3px 8px; border-radius: 4px; color: #333">{{ jobDetail.OtherInfo }}</view>
</view>
6 months ago
</view>
5 months ago
<div v-else>
<template v-for="(item, index) in templateArr">
<div class="g_flex_row_start flex_center g_fw_600 g_mt_12 g_mb_8 g_fs_16" :key="index" v-if="item.show">
<div class="" v-if="item.num == 1"></div>
<div class="" v-if="item.num == 2"></div>
<div class="" v-if="item.num == 3"></div>
<div class="" v-if="item.num == 4"></div>
<div class="" v-if="item.num == 5"></div>
<div class="" v-if="item.num == 6"></div>
<div class="">
{{ item.type }}
</div>
6 months ago
</div>
5 months ago
<template v-for="(inner, index) in item.children">
<div class="g_flex_row_start g_fs_14" :key="index" style="line-height: 22px; padding-left: 16px" v-if="inner.show">
<div class="g_flex_row_start flex_start g_fw_600">
<div class="g_mr_4" hover-class="none" hover-stop-propagation="false">
{{ `${inner.num}. ` }}
</div>
<div class="g_flex_1">
{{ `${inner.key}: ` }}
<text class="g_fw_400 g_ml_4" selectable="false" space="false" decode="false">
{{ inner.value }}
</text>
</div>
6 months ago
</div>
5 months ago
<!-- @blur="inner.edit = false" -->
6 months ago
</div>
5 months ago
</template>
6 months ago
</template>
5 months ago
</div>
6 months ago
</div>
6 months ago
5 months ago
<div v-if="tabInfo.list[tabInfo.active].tip == 2">
<div class="g_fs_16 g_pb_32">
<div class="g_c_3 g_pt_16 pri">
<div class="">
<div @click="setCopy('new')" v-if="jobDetail.jobInfoWithoutReturnFee || jobDetail.jobInfo"><span class="desp-copy g_c_main g_border_main"></span></div>
{{ jobDetail.jobInfoWithoutReturnFee || jobDetail.jobInfo || "-" }}
</div>
6 months ago
</div>
6 months ago
</div>
6 months ago
</div>
5 months ago
<div class="g_position_rela" v-if="attention && tabInfo.list[tabInfo.active].tip == 3">
<div class="g_pt_16 g_fs_16 pri" style="">
<div @click.stop="setCopy('old')">
<span class="desp-copy g_c_main g_border_main">复制</span>
</div>
<rich-text class style="text-align: justify" :nodes="jobDetail.lastNotice"></rich-text>
6 months ago
</div>
</div>
5 months ago
<div v-if="tabInfo.list[tabInfo.active].tip == 4">
<div class="g_position_rela">
<div class="g_fs_14 g_c_6 contactInfo g_border_e_r g_border_e_t g_border_e_l" style="white-space: pre-line">
<div class="g_flex_row_start g_border_e_b">
<div class="g_w_110 g_border_e_r g_flex_column_center g_text_c" style="padding: 4px 12px">驻场信息</div>
<div class="g_flex_1 g_c_3" style="padding: 4px 8px">
{{
jobDetail.onSiteUsers
.map((item) => {
return item.userName + " " + item.tel;
})
.join("") || "-"
}}
</div>
6 months ago
</div>
5 months ago
<div class="g_flex_row_start g_border_e_b">
<div class="g_w_110 g_c_6 g_border_e_r g_flex_column_center g_text_c" style="padding: 4px 12px">面试地点</div>
<div class="g_flex_1 g_c_3" style="padding: 4px 8px">
{{ jobDetail.interviewAddr || "-" }}
</div>
6 months ago
</div>
5 months ago
<div class="g_flex_row_start g_border_e_b">
<div class="g_w_110 g_c_6 g_border_e_r g_flex_column_center g_text_c" style="padding: 4px 12px">其他说明</div>
<div class="g_flex_1 g_c_3" style="padding: 4px 8px">
{{ jobDetail.otherInfo || "-" }}
</div>
6 months ago
</div>
</div>
</div>
</div>
</div>
6 months ago
<!-- 底部固定操作栏 -->
6 months ago
<div class="g_h_104"></div>
6 months ago
<g-panel-fixed>
<slot>
6 months ago
<div class="g_pl_20 g_pr_20 g_flex_row_center flex_center flex_nw" style="width: 100%">
6 months ago
<!-- #ifdef MP-WEIXIN -->
6 months ago
<div class="g_flex_none g_flex_column_center" v-if="from != 'bill'">
6 months ago
<button class="g_pl_0 g_pr_0 g_bg_f g_mr_16" hover-class="thover" open-type="share" style="line-height: 1">
<icon class="iconfont icon-zhuanfa1 g_fsi_16" style="color: #787878; line-height: 1; margin-top: -5px"></icon>
6 months ago
<div class="g_fs_12 g_c_6 g_w_28" style="margin-top: 8px">分享</div>
6 months ago
</button>
6 months ago
</div>
6 months ago
<!-- #endif -->
6 months ago
<div class="g_flex_none g_flex_column_center" v-if="false && from == 'bill'">
6 months ago
<button class="g_pl_0 g_pr_0 g_bg_f g_mr_12" hover-class="thover" @click="goEditJob" style="line-height: 1">
<icon class="iconfont icon-bianji g_fsi_16" style="color: #787878; line-height: 1; margin-top: -5px"></icon>
6 months ago
<div class="g_fs_12 g_c_6 g_w_28" style="margin-top: 8px">编辑</div>
6 months ago
</button>
6 months ago
</div>
<div class="g_flex_none g_flex_column_center" v-if="attention && from != 'bill'">
6 months ago
<button class="g_pl_0 g_pr_0 g_bg_f g_mr_12 g_w_36" hover-class="thover" style="line-height: 1; border-radius: 0" @click="handleCollection">
<icon v-if="isSc" class="iconfont icon-yishoucang g_fsi_16" style="color: #ff4400; line-height: 1; margin-top: -5px"></icon>
<icon v-else class="iconfont icon-shoucang g_fsi_16" style="color: #787878; line-height: 1; margin-top: -5px"></icon>
6 months ago
<div class="g_fs_12 g_c_6" style="margin-top: 8px">{{ isSc ? "已收藏" : "收藏" }}</div>
6 months ago
</button>
6 months ago
</div>
3 months ago
<div class="g_flex_none g_flex_column_center" v-if="loginInfo && loginInfo.agencyId && loginInfo.agencyId == 72597">
<button class="g_pl_0 g_pr_0 g_bg_f g_mr_12 g_w_36" hover-class="thover" style="line-height: 1; border-radius: 0" @click="goIm">
<icon class="iconfont icon-xiaoxi" style="color: #787878; line-height: 1; margin-top: -5px; font-size: 20px !important; position: relative; top: 3px"></icon>
5 months ago
<div class="g_fs_12 g_c_6" style="margin-top: 8px">IM</div>
</button>
</div>
6 months ago
<div class="g_flex_1 g_flex_column_center">
<g-button btnText="我要报名" class="g_flex_1 g_fw_600" size="small_auto" :type="jobDetail.recruitment == 2 || !attention ? 'infro' : 'primary'" @clickBtn="handleOpenApplyPopup" style="width: calc(100% - 36px)"></g-button>
6 months ago
</div>
</div>
6 months ago
</slot>
</g-panel-fixed>
6 months ago
</div>
6 months ago
<!-- 报名弹窗 -->
<u-popup v-model="applyPopup.isShow" mode="center" border-radius="8" :mask-close-able="false" width="694rpx">
6 months ago
<div class="g_pt_24 g_pl_32 g_pr_32 g_pb_24 apply">
<div class="g_flex_row_center g_fs_18 g_c_3 g_fw_600 g_mb_16">报名确认</div>
6 months ago
<scroll-view>
6 months ago
<div class="link">
<div class="item g_flex_row_start g_mb_10">
<div class="g_flex_none g_fs_14 g_c_3 g_mr_16 g_w_60 g_text_word_c g_flex_column_center">报名岗位</div>
<div class="g_flex_1 g_ell_1 g_fs_15 g_c_3 g_fw_600 g_flex_column_center">
6 months ago
{{ jobDetail.jobName }}
6 months ago
</div>
</div>
<div class="item g_flex_row_start g_mb_12">
<div class="g_flex_none g_fs_14 g_c_3 g_mr_16 g_w_60 g_text_word_c g_flex_column_center">服务费</div>
<div class="g_flex_1 g_ell_1 g_c_f0 g_fw_700 g_flex_column_center">
6 months ago
{{ jobDetail.serverPrice }}
6 months ago
</div>
</div>
<div class="item g_mb_10">
<div class="g_fs_14 g_c_3 label g_mb_5">姓名</div>
<div>
6 months ago
<input type="text" v-model="formInfo.userName" placeholder-class="g_c_c" placeholder="请输入姓名或称呼" class="g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pr_12" />
6 months ago
</div>
</div>
<div class="item g_mb_10">
<div class="g_fs_14 g_c_3 label g_mb_5">身份证</div>
<div style="position: relative; line-height: 40px" :maxlength="18" class="g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pr_12">
6 months ago
<input type="text" maxlength="18" v-model="formInfo.idCard" placeholder-class="g_c_c" class="g_h_40 g_w_200" placeholder="手动输入或拍照自动识别" />
6 months ago
<div class="t-icon t-icon-paizhao riliIcon" style="width: 16px; height: 14px" @click="getIDCardInfo"></div>
</div>
</div>
<div class="item g_mb_8">
<div class="g_fs_14 g_c_3 label g_mb_5">联系电话</div>
<div>
6 months ago
<input type="text" v-model="formInfo.tel" :maxlength="11" placeholder-class="g_c_c" placeholder="请输入联系电话" class="g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pr_12" />
6 months ago
</div>
</div>
<div class="g_fs_11 g_mb_10" style="color: #b8b8b8">注意不同的报名人填写同一个手机号报名将会失败</div>
<div class="item g_mb_12">
<div class="g_fs_14 g_c_3 label g_mb_5">预约面试时间</div>
<div @click="show = true" style="position: relative; line-height: 40px" class="g_flex_1 g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pr_12">
<div style="position: absolute; left: 0; top: 0; width: 100%; z-index: 2; padding-left: 12px">
6 months ago
<picker mode="multiSelector" class="g_h_40" :range="dateTimeArray" :value="dateTime" @change="changeDateTime" @columnchange="changeDateTimeColumn($event)" style="color: #333">
{{ !!currentTime ? currentTime : "----" }}
</picker>
6 months ago
</div>
6 months ago
<i class="iconfont icon-rili g_fs_16 g_ml_4 g_c_9 riliIcon"></i>
6 months ago
</div>
</div>
<div class="item g_mb_16">
<div class="g_fs_14 g_c_3 g_mb_5">备注</div>
<div>
6 months ago
<!-- <input type="text" v-model="formInfo.desp" placeholder="请输入备注" class="g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pr_12"> -->
<!-- class="g_bg_f_7" -->
<textarea v-model="formInfo.desp" placeholder-class="g_c_c" type="textarea" placeholder="请输入备注" class="g_bg_f_9 g_radius_4 g_h_40 g_pl_12 g_pt_6" style="min-height: 80px" />
6 months ago
</div>
</div>
<div class="g_flex_row_center g_flex_row_center g_mb_16" style="color: rgba(0, 0, 0, 0.45)">
6 months ago
<u-checkbox-group @change="radioGroupChange" shape="circle">
<u-checkbox v-model="agreeRadio" name="agree" active-color="#00b666">
6 months ago
<div class="g_flex_row_center g_fs_12 g_flex_row_center">
<div>我已阅读并同意</div>
<div @click="goPage('/root/person/agreeUser')"></div>
<div></div>
<div @click="goPage('/root/person/agreeUser')"></div>
</div>
6 months ago
</u-checkbox>
</u-checkbox-group>
6 months ago
</div>
<div class="g_flex_row_between item">
<div class="g_fs_16 g_c_9 g_flex_c g_mr_16" hover-class="btnHoverBg" @click="applyPopup.isShow = false">取消</div>
<div class="btn g_fs_16 g_c_f g_bg_main g_flex_1 g_flex_c g_ml_16" hover-class="thover" @click="handleSubmit"></div>
</div>
</div>
6 months ago
</scroll-view>
6 months ago
</div>
6 months ago
</u-popup>
5 months ago
<canvas type="2d" style="position: absolute; left: -2000px; width: 425px; height: 350px; background: #fff" id="canvasId" ref="canvasId"></canvas>
6 months ago
</div>
6 months ago
</template>
<script>
import dateTimePicker from "../../utils/dateTimePicker.js";
import dateUtil from "../../utils/dateUtil.js";
export default {
onReady() {
this.G.setNavStyle();
},
onShareAppMessage() {
this.attention = false;
// return this.G.shareFun("/root/detail/job?id=" + this.jobDetail.id,
5 months ago
// "", this.jobDetail.jobName + " " + this.jobDetail.priceStr + " " + "好厂好工作 火热招聘中");
let that = this;
let path;
4 months ago
console.log("that.loginInfo", that.loginInfo);
4 months ago
// 职位id_职位项目方_分享人_分享人团队
4 months ago
path = `/root/detail/job?scene=id=${that.jobDetail.id}_${that.jobDetail.agencyId}_${that.shareUserId || that.loginInfo.user.id}_${that.shareUserAgencyId ? (that.isFans == 2 ? that.loginInfo.agencyId : that.shareUserAgencyId) : that.loginInfo.agencyId}`;
5 months ago
return {
promise: new Promise((resolve, reject) => {
5 months ago
uni.showLoading({
title: "生成中",
});
setTimeout(() => {
5 months ago
that.getWXCanvas("", "setShare").then((res) => {
wx.hideLoading();
resolve({
title: " ",
imageUrl: res.tempFilePath,
path,
});
5 months ago
});
}, 100);
5 months ago
}),
};
6 months ago
},
mounted() {
var obj = dateTimePicker.dateTimePicker(this.startYear, this.endYear, this.currentTime);
this.currentTime = dateUtil.formatDateYMD(new Date().toLocaleDateString()) + " 06:00";
this.dateTimeArray = obj.dateTimeArray;
this.dateTime = obj.dateTime;
},
data() {
return {
5 months ago
globalData: getApp().globalData,
6 months ago
videoContextTemp: {},
4 months ago
isSharePage: false, // 是否是分享页面的判断
4 months ago
isFans: false,
4 months ago
shareUserId: null, // 分享人id
4 months ago
shareJobAgencyId: null, // 分享人id
shareUserAgencyId: null, // 分享人id
6 months ago
corpUserFlag: false,
agreeRadio: ["agree"],
isPerson: false,
speed: 0,
uid: 0,
jobDetail: {},
isCollection: false,
swiperArray: [],
applyPopup: {
isShow: false,
},
formInfo: {
userName: "",
idCard: "",
tel: "",
interTime: "",
},
startYear: new Date().getFullYear(),
endYear: new Date().getFullYear() + 2,
currentTime: "",
dateTimeArray: null,
dateTime: [],
from: "", // 来源页面
isSc: false, // 收藏判断
attention: false, // 分享时隐藏信息
selfJob: false, // 是否是自己团队职位的判断
showPrice: true, // 隐藏服务费
labelColor: ["#c41d7f", "#096dd9", "#531dab", "#d46b08", "#389e0d", "#08979c", "#cf1322"],
bgColor: ["#fff0f6", "#e6f7ff", "#f9f0ff", "#fff7e6", "#f6ffed", "#e6fffb", "#fff1f0"],
loginInfo: {},
cdnBaseImg: this.G.store().cdnBaseImg,
IS_CREATOR: false,
tabInfo: {
list: [],
active: 0,
},
applyList: [],
wxPlat: "",
6 months ago
templateArr: [
// 职位描述模板
{
type: "工作内容",
show: false,
childrenType: ["工作内容", "工作方式", "班次工时", "休息", "工衣", "车间", "安检门", "带手机", "流水线"],
children: [],
},
{
type: "工作要求",
show: false,
childrenType: ["性别年龄", "文化学历", "身份证", "资质证件", "纹身烟疤", "案底黑户", "少数民族", "区域要求", "身体状况", "体检要求", "返厂政策"],
children: [],
},
{
type: "薪资待遇",
show: false,
childrenType: ["岗位薪资", "综合月薪", "薪资明细", "发薪日", "银行卡", "预支工资", "岗前培训", "试用期", "员工福利"],
children: [],
},
{
type: "吃饭住宿",
show: false,
childrenType: ["吃饭", "住宿", "保险"],
children: [],
},
{
type: "押金",
show: false,
childrenType: ["餐卡押金", "宿舍押金", "工装押金", "厂牌押金", "工具押金"],
children: [],
},
{
type: "面试",
show: false,
childrenType: ["面试地址", "面试评价", "面试时间", "面试注意事项", "项目驻场"],
6 months ago
children: [],
},
{
type: "其他",
show: false,
childrenType: ["职位描述"],
children: [],
},
6 months ago
],
6 months ago
};
},
onLoad(options) {
console.log("详情", options);
4 months ago
let loginUrl;
6 months ago
if (options.id) {
this.uid = options.id;
4 months ago
loginUrl = "/root/person/loginIndex?type=detail&path=/root/detail/job";
4 months ago
} else if (options.scene) {
var sceneStr = decodeURIComponent(options.scene);
var sceneJson = this.G.sceneToJson(sceneStr);
console.log("sceneJson===", sceneJson);
console.log("id对应的角色", "职位id_职位项目方_分享人_分享人团队");
4 months ago
// 职位id_职位项目方_分享人_分享人团队
4 months ago
this.uid = sceneJson.id.split("_")[0]; //职位id
4 months ago
this.shareJobAgencyId = sceneJson.id.split("_")[1]; //职位项目方id
this.shareUserId = sceneJson.id.split("_")[2]; //分享人id
this.shareUserAgencyId = sceneJson.id.split("_")[3]; //分享人团队id
4 months ago
this.isSharePage = true;
4 months ago
loginUrl = `/root/person/loginIndex?type=detail&path=/root/detail/job&scene=${JSON.stringify(sceneJson)}`;
6 months ago
}
4 months ago
this.from = options.from || "home";
6 months ago
if (!uni.getStorageSync("apply-token")) {
console.log("apply-token");
4 months ago
console.log("options.scene", options.scene);
4 months ago
uni.reLaunch({
4 months ago
url: loginUrl,
6 months ago
});
return;
}
4 months ago
this.shareJobAgencyId && this.checkIsFans(this.shareJobAgencyId);
6 months ago
this.loginInfo = uni.getStorageSync("apply-userinfo");
// if (uni.getStorageSync("apply-AGENCY_MAMBER_LIST")) {
// this.applyList = uni.getStorageSync("apply-AGENCY_MAMBER_LIST");
// console.log("this.applyList", this.applyList);
// } else {
// that.G.Get(that.api.order_peopleList, {}, (res) => {
// console.log("报名人列表:", res.recordList);
// uni.setStorageSync("apply-AGENCY_MAMBER_LIST", res.recordList);
// this.applyList = res.recordList;
// console.log("this.applyList", this.applyList);
// });
// }
},
onShow() {
let that = this;
5 months ago
that.hasSee();
6 months ago
this.IS_CREATOR = uni.getStorageSync("IS_CREATOR") == 1 ? true : false;
console.log("this.IS_CREATOR", this.IS_CREATOR);
this.corpUserFlag = uni.getStorageSync("apply-userinfo").corpUserFlag;
if (uni.getStorageSync("apply-token")) {
this.getIgnore();
this.getDetail().then((res) => {
console.log("res", res);
let objMiddle = res.cozeStructureRes ? JSON.parse(res.cozeStructureRes) : {};
// let objMiddle = JSON.parse(res.cozeStructureRes);
console.log("objMiddle", objMiddle);
delete objMiddle["佣金"];
delete objMiddle["佣金详情"];
delete objMiddle["企业位置"];
delete objMiddle["职位标签"];
delete objMiddle["职位标题"];
delete objMiddle["职位分类"];
delete objMiddle["项目驻场"];
let num1 = 1;
this.templateArr.forEach((item) => {
let num = 0;
item.children = [];
item.childrenType.forEach((innerItem) => {
if (objMiddle[innerItem]) {
num++;
}
item.children.push({
key: innerItem,
value: objMiddle[innerItem],
num,
show: objMiddle[innerItem] ? true : false,
edit: false,
});
6 months ago
});
item.num = num1;
if (item.children[item.children.length - 1].num != 0) {
item.show = true;
num1++;
6 months ago
}
});
4 months ago
that.speed = 1;
that.attention = true;
// this.toKnowInfo(res.agencyId);
6 months ago
});
}
5 months ago
uni.getSystemInfo({
success: function (res) {
console.log(res);
that.wxPlat = res.hostName;
},
});
6 months ago
},
methods: {
5 months ago
hasSee() {
var that = this;
that.G.Get(that.api.hasSee + "?jobId=" + that.uid, "", (res) => {
console.log("res", res);
});
},
6 months ago
goAddress() {
let that = this;
uni.navigateTo({
url: "/root/detail/address?uid=" + that.uid,
});
},
makePhone(tel) {
uni.makePhoneCall({
phoneNumber: tel, //仅为示例
});
},
radioGroupChange(e) {
console.log(e);
},
goPage($path) {
uni.navigateTo({
url: $path,
});
},
getIgnore() {
let that = this;
that.G.Get(that.api.job_watch + "/" + that.uid + "?classify=2", {}, (res) => {
console.log(res);
});
},
toKnowInfo(id) {
let that = this;
console.log(id);
that.G.Get(that.api.bind_enterpriseDetail + "/" + id, "", (res) => {
if (that.loginInfo.agencyId == that.jobDetail.agencyId || res.recordStatus == 1 || res.recordStatus == 2) {
that.attention = true;
} else {
that.G.handleConfirm({
title: "关注发单号",
content: "你还不是他的粉丝,无法查看职位",
confirmText: "去关注",
success: (res) => {
if (res.confirm) {
let params = {
id: that.jobDetail.agencyId,
isShowMore: false,
jobDetailShow: false,
};
uni.navigateTo({
4 months ago
url: "/root/detail/userShare?" + that.G.objToStr(params),
6 months ago
});
}
},
});
}
that.speed = 1;
});
},
handleCollection() {
let that = this;
that.G.Get(
that.api.job_updateStatus + "/" + that.uid,
{
classify: 0,
},
(res) => {
that.isSc = !that.isSc;
uni.showToast({
title: that.isSc ? "收藏成功" : "取消收藏",
icon: "success",
});
}
);
},
getDetail() {
let that = this;
that.speed = 0;
return new Promise((resolve) => {
6 months ago
that.G.Get(that.api.job_detail + "/" + that.uid, "", (res) => {
6 months ago
that.isSc = res.collect == 1 ? true : false;
console.log("职位详情:", res);
res = { ...res, ...res.record };
if (!res.hasOwnProperty("storeJobDetail")) {
6 months ago
res.storeJobDetail = {
jobDesp: "",
};
6 months ago
}
console.log("职位详情1", res);
that.isPerson = res.agencyId == uni.getStorageSync("apply-agencyId") ? true : false;
6 months ago
if (that.isPerson) {
that.tabInfo.list = [
{
name: "职位详情",
active: 1,
tip: 1,
},
{
name: "通告分享",
active: 2,
tip: 2,
},
{
name: "原始通告",
active: 3,
tip: 3,
},
];
} else {
that.tabInfo.list = [
{
name: "职位详情",
active: 1,
tip: 1,
},
{
name: "通告分享",
active: 2,
tip: 2,
},
];
}
6 months ago
// res.serverPrice = that.G.setReturnFee(res.returnFee, res.returnFeeType);
res.agencyServerPrice = that.G.setReturnFee(res.agencyReturnFee, res.agencyReturnFeeType);
res.serverPrice = that.G.setReturnFee(res.returnFee, res.returnFeeType);
let setData = that.G.disposeJobListData(res);
res.addressStr = setData.district.slice(0, -1);
res.sexStr = setData.genderAge;
5 months ago
res.genderRestrict = that.G.getGenderByMinAge(res);
res.addss = that.G.setJobInfoPositionv3(res.storeAddr);
res.monthPay = res.minMonthlyPay / 100 + "-" + res.maxMonthlyPay / 100;
6 months ago
// res.ageStr = setData.age;
// res.priceStr = that.G.getSalaryClassifyValue(res.salaryClassify, res.salaryClassifyValue);
5 months ago
res.priceStr = res.salaryClassify != 7 ? that.G.getSalaryClassifyValueHtml(res.salaryClassify, res.salaryClassifyValue) : that.G.getSalaryClassifyValue(res.salaryClassify, res.minMonthlyPay, res.maxMonthlyPay);
6 months ago
res.updateTime = that.G.setDeadLine(res.updateTime, "jiaofu");
6 months ago
console.log("res.imgs", res.imgs);
6 months ago
that.swiperArray =
6 months ago
res.imgs.length == 0
6 months ago
? []
6 months ago
: res.imgs.map((item, index) => {
6 months ago
return {
id: index + 1,
image: item.url,
type: item.url.indexOf(".mp4") > -1 ? "video" : "image",
};
});
if (res.logo) {
that.swiperArray.unshift({
id: 0,
image: res.logo,
type: "image",
});
}
that.jobDetail = res;
that.selfJob = that.jobDetail.agencyId == that.loginInfo.agencyId;
if (that.jobDetail.jobInfo.indexOf("————————" > -1)) {
that.jobDetail.jobInfo = that.jobDetail.jobInfo.replace(/\*\*\*\*\*/g, "").split("————————")[0];
} else {
that.jobDetail.jobInfo = that.jobDetail.jobInfo.replace(/\*\*\*\*\*/g, "");
}
var str = that.jobDetail.supplier;
var reg = /1[3456789]\d{9}/g;
var phone = str.match(reg);
if (phone != null) {
that.jobDetail["phone"] = phone.toString();
}
// console.log(phone.length);
// that.jobDetail.jobName = '三顿饭卡加斯冯老师独立开发技术的返利看打两发慷慨激昂收代理费'
resolve(that.jobDetail);
});
});
},
handleViewBig($item, $index) {
let that = this;
uni.previewImage({
urls: that.swiperArray.map((item) => {
return item.image;
}),
current: $index,
});
},
goUserMain() {
let that = this;
let loginId = uni.getStorageSync("apply-userinfo").agencyId;
if (loginId == this.jobDetail.agencyId) {
return;
}
let params = {
id: this.jobDetail.agencyId,
isShowMore: true,
isShowJob: true,
};
uni.navigateTo({
4 months ago
url: "/root/detail/userShare?" + that.G.objToStr(params),
6 months ago
});
},
handleOpenApplyPopup() {
let that = this;
if (!this.attention) {
return false;
}
4 months ago
let params = {
jobId: this.jobDetail.id,
jobName: this.jobDetail.jobName,
title: "报名",
type: that.jobDetail.jobType,
agencyId: that.jobDetail.agencyId,
};
if (that.isFans !== false) {
params.isFans = that.isFans;
}
that.shareUserId && (params.agencyUserId = that.isFans == 2 ? "" : that.shareUserId);
// 如果粉丝自己报名,要把自己的id传到报名页,而不是传分享人的
4 months ago
that.shareUserAgencyId && (params.shareUserAgencyId = that.isFans == 2 ? that.loginInfo.agencyId : that.shareUserAgencyId);
6 months ago
uni.navigateTo({
4 months ago
url: `/root/home/quickApplication?params=${JSON.stringify(params)}`,
6 months ago
});
// if (this.jobDetail.recruitment == 1) {
// this.formInfo = {
// userName: "",
// idCard: "",
// tel: "",
// interTime: "",
// };
// this.applyPopup = {
// isShow: true,
// };
// } else {
// uni.showToast({
// title: "停招职位不能报名",
// icon: "none",
// });
// }
},
handleToggleCollection() {
this.isCollection = !this.isCollection;
if (this.isCollection) {
uni.showToast({
icon: "success",
title: "收藏成功",
});
}
},
changeDateTime(e) {
console.log(e);
var dateTimeArray = this.dateTimeArray,
dateTime = e.detail.value;
this.currentTime = dateTimeArray[0][dateTime[0]].replace("年", "") + "-" + dateTimeArray[1][dateTime[1]].replace("月", "") + "-" + dateTimeArray[2][dateTime[2]].replace("日", "") + " " + dateTimeArray[3][dateTime[3]];
},
changeDateTimeColumn(e) {
console.log(e);
var arr = this.dateTime;
var dateArr = this.dateTimeArray;
arr[e.detail.column] = e.detail.value;
dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);
for (let index = 0; index < dateArr[2].length; index++) {
dateArr[2][index] = dateArr[2][index] + "日";
}
// .replace("年",'').replace("月",'').replace("日",'')
dateTimeArray = dateArr;
dateTime = arr;
},
handleSubmit() {
let that = this;
console.log("that.formInfo", that.formInfo);
that.formInfo.jobId = that.uid;
that.formInfo.interviewTimeStr = that.currentTime;
console.log("that.formInfo1", that.formInfo, that.agreeRadio);
if (that.formInfo.userName == "") {
uni.showToast({
icon: "none",
title: "请输入您的真实姓名,只包含中文或英文字符",
});
return false;
}
if (that.formInfo.idCard == "") {
uni.showToast({
icon: "none",
title: "请输入18位有效身份证号码",
});
return false;
}
5 months ago
if (!that.G.isValidIdCard(that.formInfo.idCard)) {
6 months ago
uni.showToast({
icon: "none",
title: "请输入正确的身份证号",
});
return false;
}
if (that.formInfo.tel == "") {
uni.showToast({
icon: "none",
title: "请输入联系电话",
});
return false;
}
if (!that.G.setReg(that.formInfo.tel, "tel")) {
uni.showToast({
icon: "none",
title: "请输入正确的联系电话",
});
return false;
}
if (!that.agreeRadio.length) {
uni.showToast({
icon: "none",
title: "请阅读协议",
});
return false;
}
that.G.Post(that.api.job_recordJob, that.formInfo, (res) => {
console.log(res);
uni.showToast({
icon: "success",
title: "报名成功",
});
that.applyPopup.isShow = false;
});
},
goEditJob() {
let that = this;
uni.navigateTo({
url: "/root/home/jobForm?id=" + that.uid,
});
},
getIDCardInfo() {
let that = this;
that.G.uploadImg((res) => {
console.log("身份证信息:", res);
this.formInfo.userName = res.info.name;
this.formInfo.idCard = res.info.num;
this.formInfo.nation = res.info.nationality;
this.formInfo.age = res.info.age;
this.formInfo.address = res.info.address;
this.formInfo.idCardImageUrl = res.image;
this.formInfo.sex = res.info.sex == "男" ? 1 : 2;
}, "idcard");
},
// 显示视频
showVideo(e) {
var that = this;
console.log("showVideo e", e);
console.log("showVideo that.swiperArray", that.swiperArray);
this.videoContext = uni.createVideoContext(`${e.id}`, this);
that.videoContextTemp = that.videoContext;
this.videoContext.requestFullScreen();
this.videoContext.hideStatusBar();
this.videoContext.play();
},
takeTel($item) {
console.log($item);
// if ($item) {
uni.makePhoneCall({
phoneNumber: $item.customServiceUser.tel,
});
// }
},
kefu(e) {
console.log(e);
console.log(this.jobDetail);
console.log(this.jobDetail.storeJobDetail);
var that = this;
let url = this.jobDetail.storeJobDetail.customServiceUrl;
// console.log('/pages/detail/index?storeJobId' + this.data.searchForm.storeJobId);
if (url != "") {
uni.openCustomerServiceChat({
// extInfo: { url: 'https://work.weixin.qq.com/kfid/kfc84d8465f4c633511' },
extInfo: { url: url || "https://work.weixin.qq.com/kfid/kfc84d8465f4c633511" },
showMessageCard: true,
sendMessagePath: `/root/detail/job.html?id=${that.uid}&classify=${that.jobDetail.classify}`,
corpId: "wwc227639d3a136c8d",
success(res) {
console.log("res", res);
},
fail(err) {
console.log("err", err);
},
});
} else {
uni.showToast({
title: "该岗位暂无客服",
icon: "none",
duration: 2000,
});
}
},
fullScreen(e) {
console.log(e);
if (!e.detail.fullScreen) {
this.videoContext.stop();
}
},
shareVideo(e) {
var that = this;
console.log(e);
uni.showLoading({
title: "下载中...",
mask: true,
});
if (this.wxPlat == "wxwork") {
uni.downloadFile({
url: e.image, // 下载url
success: (downloadRes) => {
uni.saveVideoToPhotosAlbum({
filePath: downloadRes.tempFilePath,
success: () => {
console.log("视频已保存到相册");
},
fail: () => {
console.error("保存视频到相册失败");
},
});
uni.hideLoading();
},
fail: () => {
uni.hideLoading();
console.error("下载文件失败");
},
});
} else {
uni.downloadFile({
url: e.image, // 下载url
success(res) {
// 下载完成后转发
uni.hideLoading();
uni.showLoading({
title: "分享中...",
mask: true,
});
uni.shareVideoMessage({
videoPath: res.tempFilePath,
success() {
uni.hideLoading();
console.log("=================-----=========");
console.log(that.videoContextTemp);
that.videoContextTemp.exitFullScreen();
// uni.setNavigationBarTitle({
// title: '当前页面'
// })
},
fail: (res) => {
console.log(res);
console.log("失败原因1111");
uni.hideLoading();
uni.showToast({
title: "分享失败",
});
},
});
},
fail: (res) => {
console.log("失败原因" + res);
uni.hideLoading();
uni.showToast({
title: "下载失败",
});
},
});
}
},
handleUpdateTab(e) {
console.log("e", e);
this.G.isLogin();
if (this.G.isLogin()) {
this.tabInfo.active = e;
// this.speed = -1;
// this.query.page = 1;
// this.getList();
}
},
6 months ago
showFee() {
let that = this;
let content, title;
if (that.jobDetail.returnFeeDesp) {
title = "佣金: " + that.jobDetail.serverPrice;
content = that.jobDetail.returnFeeDesp;
} else {
title = "详询客服";
content = "因三方项目政策变动太快,详情请咨询客服。页面左下角点击“联系客服”直接联系我哟~";
}
that.G.handleConfirm({
title,
content,
contentColor: "#ccc",
confirmColor: "#576b95",
confirmText: "确定",
showCancel: false,
success(res) {},
});
},
6 months ago
// 复制通告
setCopy(e) {
var that = this;
let text;
console.log(e);
if (e == "new") {
text = that.from != "new" ? that.jobDetail.jobInfoWithoutReturnFee || that.jobDetail.jobInfo : that.jobDetail.cozeJobInfoWithoutReturnFee;
} else if (e == "old") {
text = that.jobDetail.lastNotice;
} else if (e == "jobName") {
5 months ago
text = that.jobDetail.jobName + "@" + (that.jobDetail.agencyName || "-");
6 months ago
}
console.log("text", text);
uni.setClipboardData({
data: text,
success(res) {
5 months ago
console.log(res.data); // data
uni.showToast({
title: "复制成功",
icon: "success",
6 months ago
});
},
});
},
5 months ago
goIm() {
let that = this;
that.F.wyyxGet(that.api.job_get_cus + "?jobId=" + that.jobDetail.id, {}, (cusData) => {
5 months ago
that.F.wyyxPost(
that.api.wyyx_create,
{
senderUserId: uni.getStorageSync("apply-uid"),
receiverUserId: cusData,
},
(res) => {
uni.$UIKitStore.uiStore.selectConversation(res.conversationId);
that.F.wyyxPost(
that.api.wyyx_sendCard,
{
conversationType: 1,
senderUserId: uni.getStorageSync("apply-uid"), // 发送者id 即当前登录用户id
receiverUserId: cusData, // 接收方用户id
type: 100000,
jobDetail: {
title: that.jobDetail.jobName,
info: (that.jobDetail.addss ? that.jobDetail.addss + "丨" : "") + that.jobDetail.genderRestrict + "丨" + that.jobDetail.age,
label: that.jobDetail.jobRequestLabelNames.length > 0 ? that.jobDetail.jobRequestLabelNames : "",
5 months ago
salaryClassifyValue: that.jobDetail.priceStr,
serviceFee: that.jobDetail.fuWuFei,
monthPay: that.jobDetail.monthPay,
jobId: that.uid,
},
5 months ago
},
5 months ago
() => {
uni.navigateTo({
url: "/root/NEUIKit/pages/Chat/index",
});
},
() => {}
);
},
() => {}
);
});
5 months ago
},
5 months ago
// 微信端绘制
getWXCanvas(sharelImg, type) {
const that = this;
return new Promise((resolve) => {
var mycenter = 0; //文字左右居中显示
var myheight = 0; //文字高度
const query = uni.createSelectorQuery().in(this);
query
.select("#canvasId")
.fields({
node: true,
size: true,
})
.exec((res) => {
console.log("uni 获取节点信息:", res);
const canvas = res[0].node;
const ctx = canvas.getContext("2d");
that.setShareCover(ctx, canvas, mycenter).then((canvas) => {
uni.canvasToTempFilePath({
canvas: canvas,
success(res) {
resolve(res);
},
fail(res) {
uni.hideLoading();
uni.showToast({
title: res.errMsg,
icon: "error",
});
},
});
});
});
});
},
/**
* 生成分享小程序的封面
*/
setShareCover(ctx, canvas, mycenter) {
let that = this;
canvas.width = 750;
canvas.height = 600;
mycenter = canvas.width / 2;
let labelLeft = 0;
let baseLeft, logoSize, titleFontSize, mainFontSize, line1, line2, line3, line4, line5, line6, line7, line8;
baseLeft = 24; // 左侧基准线
logoSize = 132; // logo尺寸
mainFontSize = 36; // 内容字体大小
titleFontSize = 56; // 标题字体大小
5 months ago
let dis = 0,
labelHeight = 0;
5 months ago
line1 = 0; // 第一行距顶部距离
line2 = 90 - dis;
line3 = 200 - dis;
line4 = 280 - dis;
line5 = 350 - dis - labelHeight;
5 months ago
line6 = 380 - dis - labelHeight - 0;
5 months ago
line7 = 460 - dis - labelHeight;
5 months ago
// 绘制基础白色背景
console.log("that.jobDetail", that.jobDetail);
that.G.roundRect1(ctx, 0, 0, 750, 600, 0, "#fff");
return new Promise(function (imgres) {
// 岗位标题
that.G.fillTextLineBreak(ctx, that.jobDetail.jobName.length > 11 ? that.jobDetail.jobName.slice(0, 11) + "..." : that.jobDetail.jobName, baseLeft, line2, 800, 20, "#000", titleFontSize, "500", "left");
5 months ago
// 时薪
if (that.G.getSalaryClassifyValue(that.jobDetail.salaryClassify, that.jobDetail.salaryClassifyValue) == "0-0元/月") {
5 months ago
// 月工资
that.G.fillTextLineBreak(ctx, that.jobDetail.priceStr, baseLeft, line3, 600, 40, "#ff4400", titleFontSize + 6, "600", "left");
} else {
5 months ago
// 月工资
that.G.fillTextLineBreak(ctx, that.G.getSalaryClassifyValue(that.jobDetail.salaryClassify, that.jobDetail.salaryClassifyValue), baseLeft, line3, 400, 40, "#ff4400", titleFontSize + 6, "600", "left");
that.G.fillTextLineBreak(ctx, that.jobDetail.monthPay, 750 - ctx.measureText(that.jobDetail.monthPay).width, line3 + 6, 400, 20, "#ff4400", titleFontSize, "400");
5 months ago
}
if (that.jobDetail.jobRequestLabelNames.length > 0) {
that.jobDetail.jobRequestLabelNames.forEach((item1, index) => {
5 months ago
if (index <= 3) {
that.G.fillTextLineBreak(ctx, item1, baseLeft + labelLeft + 12, line4 + 4, 400, 40, "#666", mainFontSize); // 标签字符
that.G.roundRect1(ctx, baseLeft + labelLeft, line4 - 38, ctx.measureText(item1).width + 24, 56, 8, "#00000012");
labelLeft += ctx.measureText(item1).width + 42;
5 months ago
if (index == 3) {
labelLeft = 0;
}
5 months ago
} else if (index > 3 && index <= 6) {
that.G.roundRect1(ctx, baseLeft + labelLeft, line5 - 38, ctx.measureText(item1).width + 24, 56, 8, "#00000012");
that.G.fillTextLineBreak(ctx, item1, baseLeft + labelLeft + 12, line5 + 4, 400, 40, "#666", mainFontSize); // 标签字符
labelLeft += ctx.measureText(item1).width + 42;
5 months ago
}
});
}
// else if (that.jobDetail.jobRequestLabelNames.length > 0) {
// that.jobDetail.jobRequestLabelNames.forEach((item1, index) => {
5 months ago
// // if (index <= 3) {
// that.G.fillTextLineBreak(ctx, item1, baseLeft + labelLeft + 80, line4 + 4, 400, 40, "#666", mainFontSize); // 标签字符
// // that.G.roundRect1(ctx, baseLeft + labelLeft, line4 - 38, ctx.measureText(item1).width + 24, 56, 8, "#00000012");
// labelLeft += ctx.measureText(item1).width + 20;
// // if (index == 3) {
// // labelLeft = 0;
// // }
// // } else if (index > 3 && index <= 6) {
// // // that.G.roundRect1(ctx, baseLeft + labelLeft, line5 - 38, ctx.measureText(item1).width + 24, 56, 8, "#00000012");
// // that.G.fillTextLineBreak(ctx, item1, baseLeft + labelLeft + 80, line5 + 4, 400, 40, "#666", mainFontSize); // 标签字符
// // labelLeft += ctx.measureText(item1).width + 32;
// // }
// });
// }
5 months ago
// 根据标签数量调整宣传标语位置
that.G.roundRect1(ctx, mycenter - 712 / 2, line6, 712, 60, 4, "#fff6e8"); // 宣传标语背景
// 绘制立即咨询
// 根据标签数量调整立即咨询背景位置
5 months ago
that.G.roundRect1(ctx, mycenter - 712 / 2, line7, 712, 100, 4, "#00b666"); // 立即咨询背景
5 months ago
// 根据标签数量调整立即咨询位置
4 months ago
that.G.fillTextLineBreak(ctx, "立即咨询", mycenter - 24 - ctx.measureText("立即咨询").width / 2, line7 + 65, 300, 120, "#fff", titleFontSize, "500"); // 立即咨询
5 months ago
// 绘制职位logo
uni.downloadFile({
url: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/pugongying/goxj2-qpwbo.png",
success(res) {
console.log("duihao", res);
const img1 = canvas.createImage();
img1.src = res.tempFilePath;
console.log("img info img", img1);
img1.onload = (info) => {
console.log("img info", info);
let safeMarkPosition = 44;
// 宣传标语
["安全保障", "工资保障", "补贴保障"].forEach((item1, index) => {
// 根据标签数量调整安全标识位置
that.G.fillTextLineBreak(ctx, item1, baseLeft + safeMarkPosition, line6 + 40, 100, 32, "#fca025");
5 months ago
that.G.roundRect(ctx, img1, baseLeft + safeMarkPosition - 36, line6 + 12, 32, 32, 12);
safeMarkPosition += 130 + ctx.measureText(item1).width;
});
setTimeout(() => {
imgres(canvas);
}, 200);
};
},
fail(err) {
console.log("downloadFile err", err);
},
});
}).catch((err) => {
console.log("all err", err);
});
},
4 months ago
checkIsFans(upAgencyId) {
let that = this;
that.G.Post("/assistant/circle/agency/checkUserTypeForAssistant", { upAgencyId }, (res) => {
4 months ago
console.log("isFans", res);
that.isFans = res;
4 months ago
});
},
6 months ago
},
};
</script>
<style lang="scss">
.shareVideo {
position: absolute;
bottom: 80px;
right: 30px;
width: 36px;
height: 36px;
text-align: center;
z-index: 1111;
background-color: #ffffff66;
border-radius: 50%;
.iconfont {
color: #fff;
font-size: 20px;
line-height: 36px;
&.icon-huidaodingbu {
transform: rotate(180deg);
}
}
}
.p-root-detail-job {
.m-boss {
.box {
background-color: rgba(0, 182, 102, 0.05);
}
}
.m-banner {
.u-swiper__wrapper__item {
margin-right: 10px;
}
image {
border-radius: 4px !important;
}
}
.m-state {
position: fixed;
left: 0;
bottom: 0;
z-index: 1;
box-shadow: 0px -4rpx 8rpx 0px rgba(218, 218, 218, 0.5);
}
.apply {
.link {
.item {
.btn {
width: 240rpx;
height: 76rpx;
border-radius: 42rpx;
&:first-child {
border: 2rpx solid #00b666;
}
}
.label {
position: relative;
&::before {
content: "*";
color: #ff0000;
}
}
}
}
}
.riliIcon {
position: absolute;
right: 15px;
top: 50%;
transform: translateY(-50%);
z-index: 1;
}
.servicePrice {
height: 64px;
6 months ago
// background-color: #ffeee7;
// border-right-color: transparent;
// border-left-color: transparent;
// width: 100vw;
// margin-left: -20px;
6 months ago
}
.kefuBox {
position: fixed;
right: 25px;
bottom: 182px;
z-index: 9999;
.iconBox {
width: 48px;
height: 48px;
margin-bottom: 12px;
border-radius: 50%;
text-align: center;
line-height: 48px;
box-shadow: 2px 0 12px 2px rgba(108, 108, 108, 0.2);
background: #fff;
z-index: 9999;
}
}
6 months ago
.desp-copy {
font-size: 12px;
float: right;
/* top: 11px;
right: 8px;
position: relative; */
border-radius: 25rpx;
padding: 0px 8px;
height: 16px;
line-height: 16px;
margin-right: 16px;
}
.detailH3 {
font-size: 16px;
font-weight: 400;
color: #000;
line-height: 22px;
margin-top: 16px;
margin-bottom: 8px;
}
.pri {
white-space: pre-line;
}
.pri:empty:before,
.textb1:empty:before {
content: "-" !important;
color: #333;
}
6 months ago
}
.g_hs_67 {
5 months ago
height: 60px;
}
6 months ago
</style>