cyl/dev
wangxia 2 years ago
parent 538fa78632
commit 69472a1173

@ -0,0 +1,271 @@
<template>
<div class="">
<a-modal title="职教报名" v-model="show" :maskClosable="false" centered id="demo" @cancel="modalCancel" @ok="handleOk" width="640px" :destroyOnClose="true" class="detailWindow">
<a-form-model ref="ruleForm" :model="form" :colon="true" :rules="rules">
<a-form-model-item ref="proxy" label="代理" prop :wrapperCol="{ span: 16 }" :labelCol="{ span: 6 }" style="height: 30px; margin-bottom: 20px">
<div class="pzbox" style="width: 100%">
<span v-if="proxyStatus === ''">{{ proxyinfo.userName }}</span>
<a-select v-if="proxyStatus === 'proxy'" mode="combobox" auto-focus style="width: calc(100% - 200px)" placeholder="请选择代理" @blur="proxyStatus = ''">
<a-select-option v-for="i in proxyList" :key="i.userName" @click="proxyChange(i)">{{ i.userName }}</a-select-option>
</a-select>
<span
@click="proxyStatus = 'proxy'"
:style="{
color: '#ff4400',
marginLeft: '10px',
cursor: 'pointer',
}"
v-if="proxyStatus !== 'proxy'"
>修改</span
>
</div>
</a-form-model-item>
<a-form-model-item ref="username" label=" 报名职教" prop="username" :wrapperCol="{ span: 16 }" :labelCol="{ span: 6 }" style="height: 30px; margin-bottom: 20px">
<!-- <a-input :value="firminfo.aliasName" :disabled="true" /> -->
<div class="pzbox" style="width: 100%">
<span v-if="storeStatus === ''">{{ form.aliasName }}</span>
<a-select v-if="storeStatus === 'store'" show-search auto-focus mode="combobox" placeholder="请选择企业" style="width: calc(100% - 200px)" :default-active-first-option="false" :show-arrow="false" :filter-option="false" :not-found-content="null" @search="storeSearch" @blur="storeStatus = ''">
<a-select-option v-for="i in storeList" :key="i.id + ''" @click="storeChange(i)">{{ i.aliasName }}</a-select-option>
</a-select>
<span
@click="storeStatus = 'store'"
:style="{
color: '#ff4400',
marginLeft: '10px',
cursor: 'pointer',
}"
v-if="storeStatus !== 'store'"
>修改</span
>
</div>
</a-form-model-item>
<a-form-model-item ref="fuwufei" label="服务费" prop="fuwufei" :labelCol="{ span: 6 }" :wrapperCol="{ span: 16 }" style="margin-bottom: 20px">
<div class="" style="color:#ff4400">
{{ "800元/人" }}
</div>
</a-form-model-item>
<a-form-model-item ref="userName" label="姓名" prop="userName" :labelCol="{ span: 6 }" :wrapperCol="{ span: 16 }" style="margin-bottom: 20px">
<a-input v-model="form.userName" placeholder="请输入老乡姓名" class="special-input" />
</a-form-model-item>
<a-form-model-item ref="tel" label="手机号" prop="tel" :labelCol="{ span: 6 }" :wrapperCol="{ span: 16 }" style="margin-bottom: 20px">
<a-input v-model="form.tel" placeholder="请输入手机号" :max-length="11" />
</a-form-model-item>
<a-form-model-item ref="desp" style="margin-bottom: 12px" label="备注" prop="desp" :wrapperCol="{ span: 16 }" :labelCol="{ span: 6 }">
<a-textarea v-model="form.desp" placeholder="请输入备注" :auto-size="{ minRows: 2, maxRows: 5 }" />
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</template>
<script>
import { recordBillApi, getProxyInfoApi, getStoreAliasApi, getStoreJobApi, getPolicyByJobIdApi, getPolicyListByJobIdApi, getJobDetailApi } from "@/api/job";
export default {
//
name: "",
//
components: {},
//
props: {
show: {
type: Boolean,
default: false,
},
jobDetail: {
type: Object,
default: {},
},
},
//
data() {
return {
proxyStatus: "",
storeStatus: "",
proxyList: [],
storeList: [],
proxyinfo: {},
form: {},
rules: {
//
userName: [
{
required: true,
message: "请输入姓名",
trigger: "blur",
},
{
pattern:
// /^((?![\u3000-\u303F])[\u2E80-\uFE4F]|·)*(?![\u3000-\u303F])[\u2E80-\uFE4F](·)*$/, //
/^(((?![\u3000-\u303F])[\u2E80-\uFE4F]|·)*(?![\u3000-\u303F])[\u2E80-\uFE4F][^·]{1,12})$/, //
message: "请输入正确的姓名",
trigger: "blur",
},
],
tel: [
{
required: true,
message: "请输入手机号",
trigger: "blur",
},
{
pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
// tel: [{ required: true, message: "", trigger: "submit" }],
},
};
},
//
computed: {},
//
watch: {},
created() {
this.proxyinfo = JSON.parse(localStorage.getItem("LOGIN_DATA"));
console.log("this.proxyinfo", this.proxyinfo);
this.form.aliasName = this.jobDetail.aliasName;
setTimeout(() => {
console.log("this.jobDetail", this.jobDetail);
}, 1000);
},
mounted() {},
//
methods: {
modalCancel() {
this.$emit("update:show", false);
},
async storeSearch(value) {
//
console.log(value);
const { data } = await getStoreAliasApi(value);
if (data.status === 200) {
this.storeList = data.data;
}
console.log(data);
},
handleOk() {
var that = this;
console.log(that.fileListT2);
// let dataObj = {
// ...this.form,
// storeJobPolicyId: this.currentPolicy,
// storeJobId: this.firminfo.id,
// }
// console.log(dataObj);
this.$refs.ruleForm.validate(async (ispass, no) => {
console.log(this.form);
console.log(ispass);
console.log(no);
if (this.confirmLoading == true) {
return;
}
this.confirmLoading = true;
if (ispass) {
console.log(this.form);
this.form["imgs"] = that.fileListT2.toString();
if (this.currentPolicy == 0) {
this.$message.warning("请选择政策");
this.confirmLoading = false;
return;
}
let dataObj = qs.stringify({
...this.form,
storeJobId: this.firminfo.id,
policyIdx: this.currentPolicy,
// policy: '',
});
console.log(dataObj);
const { data } = await recordBillApi(dataObj);
if (data.status === 200) {
console.log(data);
// this.$message.success("");
setTimeout(() => {
this.confirmLoading = false;
this.$router.push("/recordsuccess");
}, 1000);
} else {
this.$message.error(data.msg);
}
this.confirmLoading = false;
// setTimeout(() => {
// this.confirmLoading = false;
// this.form = {
// //
// name: "",
// tel: "",
// peoplecard: "",
// username: "",
// };
// this.visible = false;
// }, 2000);
} else {
this.confirmLoading = false;
// this.$message.error(no)
console.log(123);
}
console.log(no);
});
},
},
};
</script>
<style scoped lang="less">
/deep/ .ant-modal {
.ant-btn-primary {
// width: 64px;
padding: 0 16px;
height: 32px;
// margin-top: 21px;
background: #ff4400;
border-radius: 6px;
border: none;
font-size: 14px;
color: #fff;
&:hover {
background-color: #ff4400cc;
color: #fff !important;
}
&::selection {
background: #ff4400;
}
&:focus {
background: #ff4400;
}
&:active {
background: #ff4400;
}
}
.ant-btn {
// width: 64px;
padding: 0 16px;
height: 32px;
// margin-top: 21px;
border-radius: 6px;
// border: none;
font-size: 14px;
&:hover {
border-color: #ff4400cc;
color: #ff4400;
}
&::selection {
background: #ff4400;
}
&:focus {
background: #ff4400;
}
&:active {
background: #ff4400;
}
}
.ant-modal-footer {
border-top: none;
padding-bottom: 16px;
}
}
</style>

@ -9,30 +9,102 @@
</a-breadcrumb-item>
<a-breadcrumb-item href>
<a @click="toList">
<span>稻田职位</span>
<span>{{ from == "vocational" ? "职教职培" : "稻田职位" }}</span>
</a>
</a-breadcrumb-item>
<a-breadcrumb-item href>
<span style="color: #333">企业详情</span>
<span style="color: #333">{{ from == "vocational" ? "详情" : "企业详情" }}</span>
</a-breadcrumb-item>
</a-breadcrumb>
<!-- 主体区域 -->
<div class="maincontent w">
<div class="maincontentleft">
<!-- 职教 -->
<div class="maincontentleft" v-if="from == 'vocational'">
<div class="subset">
<a-skeleton avatar active class="skeleton1" v-show="skeletonshow" :paragraph="{ rows: 4 }" />
<div class="subsetleft" v-show="!skeletonshow">
<div class="info">
<div class="imgbox">
<img v-if="store.logo" :src="store.logo" alt />
<img v-else src="../../../static/img/nopicture.png" alt />
</div>
<div class="jobinfobox">
<div>
<div class="jobname">{{ jobDetail.jobName }}</div>
<div class="jobinfo">
<span>{{ jobDetail.district }}</span>
<span>{{ jobDetail.gender }}</span>
<span>{{ jobDetail.age }}</span>
</div>
<div class="jobpricemonth" style="margin-top: 12px">
<span style="color: #ff4d4f; background: rgba(255, 77, 79, 0.1); padding: 1px 6px">
工作薪资<template>
<span>{{ jobDetail.minMonthlyPay ? jobDetail.minMonthlyPay : "" }}</span
>-<span>{{ jobDetail.maxMonthlyPay ? jobDetail.maxMonthlyPay : "" }}</span
>
</template>
</span>
</div>
</div>
<div style="display: flex; align-items: center; height: 26px; margin-top: 16px">
<div class="jobpricehour" v-html="getSalaryClassifyValue(jobDetail.salaryClassify, jobDetail.salaryClassifyValue)"></div>
</div>
</div>
</div>
<div class="swiperBox">
<div id="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(item, index) in [...storeImage]" :key="index">
<img :src="item" alt v-if="isImg(item)" @click="showImage(index)" style="cursor: pointer" />
<div v-if="!isImg(item)">
<div style="position: absolute; width: 78px; height: 78px; left: 0; top: 0; z-index: 99; background-color: transparent; cursor: pointer" @click.stop="handlePreview(item)"></div>
<video class="imgSpan" style="width: 80px; height: 45px" controls>
<source :src="item" type="video/mp4" />
<source :src="item" type="video/ogg" />
您的浏览器不支持 HTML5 video 标签
</video>
</div>
</div>
</div>
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
<a-modal :visible="previewVisible" wrapClassName="spic" centered :footer="null" @cancel="handleCancel">
<video style="width: 100%; max-height: calc(100vh - 40px)" id="movie" autoplay :src="previewImage" controls="controls" />
</a-modal>
</div>
<div class="subsetright">
<div class="topbox">
<div>服务费</div>
<div>
<span>{{ jobDetail.servetype }}</span>
</div>
</div>
<div class="sub-bottombox">
<button type="primary" class="jobDespBtn">
<a :href="customServiceUrl" target="_blank"> <i class="iconfont icon-kefu_lan mr6"></i>联系客服</a>
</button>
<button class="dropdown bottombox1" @click="recordShow = true" v-if="jobDetail.recruitment == '1'"></button>
<button class="norecruitment bottombox1" v-else></button>
</div>
</div>
</div>
<div style="padding: 0 16px">
<div class="" style="color: #333; font-size: 20px; font-weight: 600; margin: 32px 0 16px">职教描述</div>
<div class="c7" style="white-space: pre-line; font-size: 16px">
{{ "◆招生对象:\n基本要求初中及以上学历年龄 18-35 周岁;思想端正;心理和身体健康,无危害团体的传染性疾病;热爱自动化行业;服从公司安排,适应出差。\n1.工厂中想通过学习一门技术改变自己的一线操作工;\n2.从事自动化设备机构装配人员电控知识的扩展;\n3.想从事自动化行业的自动化相关专业毕业生,在步入岗位前的充电学习;" }}
</div>
</div>
</div>
<!-- 非职教 -->
<div class="maincontentleft" v-else>
<div class="subset">
<a-skeleton avatar active class="skeleton1" v-show="skeletonshow" :paragraph="{ rows: 4 }" />
<div class="subsetleft" v-show="!skeletonshow">
<div class="info">
<div class="imgbox">
<!-- <a-carousel arrows :autoplay="true" effect="fade" :dots="true" ref="scrollimg" v-if="storeImage.length !== 0">
<div slot="prevArrow" class="custom-slick-arrow" style="left: 5px; z-index: 99">
<a-icon type="left-circle" />
</div>
<div slot="nextArrow" class="custom-slick-arrow" style="right: 5px; z-index: 99">
<a-icon type="right-circle" />
</div>
<img v-for="(item, index) in storeImage" :key="index" :src="item" alt />
</a-carousel>-->
<img v-if="store.logo" :src="store.logo" alt />
<img v-else src="../../../static/img/nopicture.png" alt />
</div>
@ -44,14 +116,12 @@
<span>{{ jobDetail.age }}</span>
</div>
<div class="jobtag">
<!-- <span>返费</span> -->
<a-tag :color="labelColor[index % labelColor.length]" v-for="(item, index) in jobDetail.jobRequestLabelNames" :key="index">{{ item }}</a-tag>
</div>
<div style="height: 27px" v-if="!jobDetail.jobRequestLabelNames" class="jobtag">
<a-tag :color="labelColor[1]">暂无要求</a-tag>
</div>
<div class="jobtag1">
<!-- <span>返费</span> -->
<a-tag v-for="(item, index) in jobDetail.jobSpecialLabelNames" :key="index">{{ item }}</a-tag>
</div>
<div style="height: 27px" v-if="!jobDetail.jobSpecialLabelNames" class="jobtag">
@ -99,22 +169,14 @@
</div>
</div>
<div class="sub-bottombox">
<!-- <a-popover title="" trigger="click" placement="bottomRight"> -->
<button type="primary" class="jobDespBtn">
<a :href="customServiceUrl" target="_blank"> <i class="iconfont icon-kefu_lan mr6"></i>联系客服</a>
</button>
<!-- </a-popover> -->
<button class="dropdown bottombox1" @click="torecord()" v-if="jobDetail.recruitment == '1'"></button>
<button class="norecruitment bottombox1" v-else></button>
</div>
</div>
</div>
<!-- <div class="proxy">
<h1><i>代理政策</i></h1>
<div>{{ jobDetail.returnFeeDesp }}</div>
</div>-->
<div class="jobinformationbox">
<h1>
<div class="infotitle">
@ -122,19 +184,6 @@
<span @click="tabchange = 0" :class="tabchange === 0 ? 'active' : ''">财务结算</span>
<span @click="tabchange = 2" :class="tabchange === 2 ? 'active' : ''">职位通告</span>
</div>
<!-- <span>我的政策更好给我供人</span> -->
<!-- <div class="copy" @click="xiangdanVisible = true">通告</div>
<a-modal v-model="xiangdanVisible" title="通告" class="xiangdan" :footer="null" @ok="handleOk">
<template slot="content" class="jobDesp_content">
<div class="copy" @click="copyText($event)"></div>
<span v-if="jobDetail.jobDesp" class="copyInfo">
{{
jobDetail.jobDesp
}}
</span>
<span v-else></span>
</template>
</a-modal>-->
</h1>
<div class="pay" id="tip" v-show="tabchange === 1">
<div class="mb12 mt20 titlestyle">温馨提示</div>
@ -146,18 +195,6 @@
<div class="pay" id="pay">
<div class="mb12 mt20">薪资待遇</div>
<a-descriptions bordered size="small" :column="1" class="leftDesc boubleLevel">
<!-- <a-descriptions-item class="test1">
<span slot="label" class="">工价</span>
<span>{{ jobDetail.calculationUnit }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">综合月薪</span>
<span>{{ jobDetail.combiSalary }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">薪资明细</span>
<span>{{ jobDetail.salaryDetail }}</span>
</a-descriptions-item>-->
<a-descriptions-item class="test1">
<span slot="label" class>薪资明细</span>
<span>{{ jobDetail.salaryDetail || "-" }}</span>
@ -192,37 +229,6 @@
{{ jobDetail.salaryDesp || "-" }}
</span>
</a-descriptions-item>
<!-- <a-descriptions-item style="padding: 0">
<span slot="label">薪资说明</span>
<a-descriptions
bordered
size="small"
:column="1"
class="leftDesc noborder"
>
<a-descriptions-item>
<span slot="label" class="">发薪日 </span>
<span>{{ jobDetail.payDay }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">计薪周期 </span>
<span>{{ jobDetail.calculationSalaryType }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">工资卡</span>
<span>{{ jobDetail.payCard }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">费用报销</span>
<span>{{
jobDetail.reimbursement
}}</span> </a-descriptions-item
><a-descriptions-item>
<span slot="label" class="">补充说明 </span>
<span v-html="jobDetail.salaryDesp"></span>
</a-descriptions-item>
</a-descriptions>
</a-descriptions-item>-->
</a-descriptions>
</div>
<!-- 岗位要求 -->
@ -260,29 +266,6 @@
<span slot="label" class>体检</span>
<span>{{ jobDetail.healthRequire || "-" }}</span>
</a-descriptions-item>
<!-- <a-descriptions-item>
<span slot="label" class="">面试资料</span>
<span>{{ jobDetail.idCard || "-" }}</span>
</a-descriptions-item>-->
<!-- <a-descriptions-item>
<span slot="label" class="">证件</span>
<span>{{ jobDetail.certificate }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">带手机</span>
<span>{{ jobDetail.carryTel }}</span>
</a-descriptions-item>-->
<!-- <a-descriptions-item>
<span slot="label" class="">体检要求</span>
<span>{{ jobDetail.healthRequire || "-" }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">其它要求</span>
<span>{{ jobDetail.otherRequire || "-" }}</span>
</a-descriptions-item>-->
</a-descriptions>
</div>
<!-- 基本信息 -->
@ -315,22 +298,6 @@
<span slot="label" class>保险</span>
<span>{{ jobDetail.employeeInsurance || "-" }}</span>
</a-descriptions-item>
<!-- <a-descriptions-item>
<span slot="label" class="">工作时长</span>
<span>{{ jobDetail.workDuration }}</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">倒班频次</span>
<span>{{ jobDetail.workByTurns }}</span>
</a-descriptions-item>-->
<!-- <a-descriptions-item>
<span slot="label" class="">换岗调班</span>
<span style="white-space: break-spaces">
{{
jobDetail.otherDesp || "-"
}}
</span>
</a-descriptions-item>-->
</a-descriptions>
</div>
@ -357,83 +324,8 @@
<span>入住条件</span>
<span>{{ jobDetail.dormitoryDesp || "-" }}</span>
</li>
<!-- <li>
<span>宿舍距离</span
><span>{{ jobDetail.dormitoryDistance }}</span>
</li>-->
<!-- <li>
<span>住宿费</span
><span>{{ jobDetail.dormitoryCost }}</span>
</li>
-->
<!-- <li>
<span>单间人数</span
><span>{{ jobDetail.dormitoryPeoples }}</span>
</li>
<li>
<span>硬件设施</span
><span>{{ jobDetail.dormitoryFacilities }}</span>
</li>-->
<!-- <li>
<span>水电费</span
><span>{{ jobDetail.waterAndElec || "-" }}</span>
</li>-->
<!-- <li>
<span>班车</span><span>{{ jobDetail.regularBus }}</span>
</li>-->
<!-- <li>
<span>补充说明</span
><span style="white-space: break-spaces">{{
jobDetail.dormitoryDesp || "-"
}}</span>
</li>-->
</ul>
<!-- <a-descriptions
bordered
size="small"
:column="1"
class="leftDesc"
>
<a-descriptions-item class="test1">
<span slot="label" class="">工作餐</span>
<a-descriptions size="small" :column="1">
<a-descriptions-item>
<span slot="label" class="">工作餐</span>
<span class="">工包早中餐作餐</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">餐费</span>
<span class="">收费先吃后扣</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">餐补</span>
<span class=""></span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">餐卡押金</span>
<span class="">10</span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">清真窗口</span>
<span class=""></span>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">工作餐 说明</span>
<span class="">有肉有菜</span>
</a-descriptions-item>
</a-descriptions>
</a-descriptions-item>
<a-descriptions-item>
<span slot="label" class="">班次时间</span>
<span>9:30-14:0017:00-22:00</span>
</a-descriptions-item>
</a-descriptions>-->
</div>
<!-- <div class="otherInfo" id="other">
<div class="mb12 mt20">其他信息</div>
<div style="white-space: break-spaces">{{ jobDetail.otherInfo || "-" }}</div>
</div>-->
<div class="required" id="abutment">
<div class="mb12 mt20">对接信息</div>
<a-descriptions bordered size="small" :column="1" class="leftDesc">
@ -449,10 +341,6 @@
<span slot="label" class>宿舍地址</span>
<span>{{ jobPoses.room.posContent ? jobPoses.room.posContent : "-" }}</span>
</a-descriptions-item>
<!-- <a-descriptions-item class="test1">
<span slot="label" class>总包驻场</span>
<span>{{jobDetail.onSiteInfo || '-'}}</span>
</a-descriptions-item>-->
<a-descriptions-item class="test1">
<span slot="label" class>面试说明</span>
<span>{{ jobDetail.interviewDesp || "-" }}</span>
@ -480,27 +368,15 @@
<!-- 财务结算 -->
<div v-else-if="tabchange == 0">
<!-- <div class="pay" id="tip">
<div class="mb12 mt20 titlestyle">代理须知</div>
<div class="showInfo" style="width: 640px">{{ jobDetail.agencyStatement || "-" }}</div>
</div>-->
<a-descriptions bordered size="small" :column="1" class="leftDesc mt20" style="width: 900px">
<a-descriptions-item class="test1">
<span slot="label" class>服务费详情</span>
<span>{{ jobDetail.agencyProfit || "-" }}</span>
</a-descriptions-item>
<!-- <a-descriptions-item>
<span slot="label" class="">代理政策</span>
<span>{{ jobDetail.returnFeeDesp }}</span>
</a-descriptions-item>-->
<a-descriptions-item>
<span slot="label" class>扣税说明</span>
<span>{{ jobDetail.deductTaxDesp || "-" }}</span>
</a-descriptions-item>
<!-- <a-descriptions-item>
<span slot="label" class="">支付周期</span>
<span>{{ jobDetail.paymentCycle }}</span>
</a-descriptions-item>-->
<a-descriptions-item>
<span slot="label">
<div class="c6">账单日</div>
@ -511,7 +387,6 @@
<a-descriptions-item>
<span slot="label" class>
<div class="c6">结算说明</div>
<!-- <div class="c6">{{'(结算时间)'}}</div> -->
</span>
<span>{{ jobDetail.settlementTime || "-" }}</span>
</a-descriptions-item>
@ -522,7 +397,6 @@
<div class="mb12 mt20 titlestyle">职位通告</div>
<div class="showInfo" style="width: unset; color: #000 !important">
<div class="copy" @click="copyText($event)"></div>
<!-- {{ jobDetail.jobDesp || "-" }}-->
<div class="copyInfo" style="border: none; padding: 0 0; width: unset; white-space: pre-line">{{ jobDetail.jobDesp || "-" }}</div>
</div>
</div>
@ -531,62 +405,35 @@
</div>
<div class="maincontentright">
<div class="hotphone">
<!-- <h1 class="bottombox">
<i>服务热线</i>
</h1>
<p>0371-6611 3723</p>-->
<h1 class="bottombox" style>
<i>客户经理</i>
</h1>
<!-- <div class="fcsc"> -->
<!-- <p>0371-6611 3723</p> -->
<img style="width: 60px; height: 60px; border-radius: 50%" class="mt24" :src="managerInfo.avatar || 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/service.jpg'" alt />
<p class="mt24 f16">{{ managerInfo.workPhone || '-'}}</p>
<p class="mt24 f16">{{ managerInfo.workPhone || "-" }}</p>
<p class="f16">
{{ managerInfo.name }}
<i class="iconfont icon-dianhua1 ml4 f14" style="line-height: 24px; color: #ff4400"></i>
</p>
</div>
<!-- <div class="jobDetailInfo" style="display:none">
<h1 class="bottombox"><i>职位详版</i> <span class="copy" @click="copyText"></span></h1>
<p class="copyInfo">{{ jobDetail.jobDesp || "-" }}</p>
</div>-->
<div class="companyinfo">
<div class="companydetail">
<h1 class="bottombox">
<i>企业详情</i>
</h1>
<!-- <p style="text-align: center">{{ jobDetail.aliasName || '-' }}</p> -->
<!-- <div class="imgbox">
<img v-if="storeImage.length !== 0" :src="storeImage[0]" alt />
<img v-else src="../../../static/img/nopicture.png" alt />
</div>-->
</div>
<div class="companylocation" style="text-align: center; padding: 0 20px 20px" v-if="positionInfo.lng">
<h2 style="padding: 16px 0; font-weight: 600">{{ store.storeName || "-" }}</h2>
<p style="padding-bottom: 20px; border-bottom: 1px solid #eee; font-size: 16px; text-indent: 16px; color: #4d575ecc; white-space: pre-line; text-align: left">{{ store.storeInfo || "-" }}</p>
<!-- <h1 class="bottombox">
<i>企业位置</i>
</h1>-->
<div class="imgbox">
<!-- <GDMap/> -->
<GDMap :positionInfo="positionInfo"></GDMap>
<!-- <img src="../../assets/map.png" alt="" /> -->
</div>
</div>
</div>
<recommend />
</div>
</div>
<!-- <div class="hotTel">
<i class="iconfont icon-kefu"></i>
<p>服务热线</p>
<div>
<p>服务热线</p>
<p>0371-6611 3723</p>
</div>
</div>-->
<div class="mask" v-if="!(jobDetail.recruitment == '1')"></div>
<recordModal :show.sync="recordShow" :jobDetail="jobDetail"></recordModal>
</div>
</template>
<script>
@ -603,6 +450,9 @@ import swiper from "swiper";
import GDMap from "../map.vue";
// import recordbill from "@/components/FirstJob/components/recordbill.vue";
import Clipboard from "clipboard";
//
import recordModal from "./components/vocationalRecord.vue";
// import map from '../map.vue'
Vue.use(Viewer, {
defaultOptions: {
@ -636,6 +486,7 @@ export default {
components: {
recommend,
GDMap,
recordModal,
// GDMap
// recordbill,
},
@ -686,7 +537,9 @@ export default {
apply: {},
myswiper: null, // swiper
managerInfo: {},
customServiceUrl:'' //
customServiceUrl: "", //
from: null, //
recordShow: false,
};
},
//
@ -703,6 +556,9 @@ export default {
// console.log(this.$router.matcher.match());
this.getJobDetail();
console.log(this.$route); // params
if (this.$route.query.type) {
this.from = this.$route.query.type;
}
this.getUserManager();
// Object.defineProperties("window.opener", "sessionStorage", {
// LOGIN_DATA: {},
@ -761,12 +617,12 @@ export default {
async getJobDetail() {
try {
const { data } = await getJobDetailApi(this.id);
console.log('data',data);
console.log("data", data);
if (data.status === 200) {
console.log(data);
this.jobDetail = disposeJobListData(data.data.storeJob);
this.jobDetail.jobDesp = data.data.storeJob.jobDesp.replaceAll('*****','')
this.customServiceUrl = data.data.customServiceUrl
this.jobDetail.jobDesp = data.data.storeJob.jobDesp.replaceAll("*****", "");
this.customServiceUrl = data.data.customServiceUrl;
this.positionInfo = data.data.store;
this.jobPoses = data.data.jobPoses;
this.store = data.data.store;
@ -809,9 +665,7 @@ export default {
// = data.data.recordList;
// console.log(data);
// console.log(this.jobDetail);
} catch (error
) {
} catch (error) {
console.log(error);
}
},
@ -1135,6 +989,9 @@ export default {
}
}
.jobinfobox {
display: flex;
flex-direction: column;
justify-content: space-between;
.jobname {
// margin: 12px 0;
font-size: 20px;

@ -219,7 +219,7 @@
</a-breadcrumb>-->
<!-- #### 主体部分 ##### -->
<div class="w" id="maincontent">
<div class="maincontentleft" style="padding-top: 50px">
<div class="maincontentleft" v-if="!isVocational" style="padding-top: 50px">
<div class="tabBar" @click="changeTab($event)">
<div class="tabSubset" :class="{ active: signType == '' }" data-type="0">全部</div>
<div class="tabSubset" :class="{ active: signType == 1 }" v-if="loginValue.agencyName == '郑州一才工作'" data-type="1"></div>
@ -501,7 +501,7 @@
>
<!-- v-if="signType == ''" -->
<router-link target="_blank" :to="signType == '' ? '/detail?' + 'id=' + item.id + '&' + 'page=' + formvalue.pageNum : '/detailYicai?' + 'id=' + item.id" rel="opener">
<router-link target="_blank" :to="signType == '' ? '/detail?id=' + item.id + '&page=' + formvalue.pageNum : '/detailYicai?id=' + item.id+ '&page=' + formvalue.pageNum " rel="opener">
<div class="subsetleft" @click="totop">
<div class="imgbox">
<img v-if="item.logo.length !== 0" :src="item.logo" />
@ -576,7 +576,7 @@
<span v-if="item.jobDesp" :class="'copyInfo' + index">{{ item.jobDesp }}</span
><span v-else></span>
</template>-->
<router-link target="_blank" :to="signType == '' ? '/detail?' + 'id=' + item.id + '&' + 'page=' + formvalue.pageNum : '/detailYicai?' + 'id=' + item.id" rel="opener">
<router-link target="_blank" :to="signType == '' ? '/detail?id=' + item.id + '&page=' + formvalue.pageNum : '/detailYicai?id=' + item.id + '&page=' + formvalue.pageNum" rel="opener">
<button
type="primary"
class="jobDesp br4"
@ -604,6 +604,98 @@
</div>
</div>
</div>
<div class="maincontentleft isVocational" v-else style="padding-top: 50px">
<div class="tabBar" @click="changeTab($event)">
<div class="tabSubset" :class="{ active: 1 }" data-type="0">全部</div>
</div>
<div style="text-align: center">
<a-spin tip="加载中..." :spinning="isspinning"></a-spin>
</div>
<template v-if="jobMainList.length === 0 && isspinning === false">
<a-empty class="nodata" description="暂无符合条件的岗位" />
</template>
<div v-if="!isspinning">
<div
class="subset"
v-for="(item, index) in jobMainList"
:key="index"
:style="{
background: item.recruitment == '1' ? '#fff' : '#f5f5f5',
}"
>
<router-link target="_blank" :to="`/detail?id=${item.id}&page=${formvalue.pageNum}&type=vocational`" rel="opener">
<div class="subsetleft" @click="totop">
<div class="imgbox">
<img v-if="item.logo.length !== 0" :src="item.logo" />
<div v-else class="default_avatar">{{ item.brandName || item.jobName }}</div>
<!-- <img v-else src="../../../static/img/nopicture.png" /> -->
</div>
<div class="jobinfobox" style="display: flex; flex-direction: column; justify-content: space-between">
<div>
<div class="jobname">{{ item.jobName }}</div>
<div class="jobinfo">
<span>{{ item.district }}</span>
<span>{{ item.gender }}</span>
<span v-if="item.distance != null && item.distance != '' && formvalue.sortTag == 2">{{ item.distanceKm }}</span>
<span v-else>{{ item.age }}</span>
</div>
<div class="jobpricemonth" v-if="item.minMonthlyPay">
<span style="color: #ff4d4f; background: rgba(255, 77, 79, 0.1); padding: 1px 6px">
工作薪资<template v-if="formvalue.signType != 1">
<span>{{ item.minMonthlyPay ? item.minMonthlyPay : "" }}</span
>-<span>{{ item.maxMonthlyPay ? item.maxMonthlyPay : "" }}</span
>
</template>
<template v-else>
<span>{{ item.minMonthlyPay ? item.minMonthlyPay / 100 : "" }}</span
>-<span>{{ item.maxMonthlyPay ? item.maxMonthlyPay / 100 : "" }}</span
>
</template>
</span>
</div>
</div>
<div class="jobpricehour" style="font-size: 18px">学费<span class="" style="font-size: 24px">10000</span></div>
</div>
</div>
</router-link>
<div class="subsetright">
<div class="topContainer">
<div class="updateTime" style="display: none">
<span>更新时间{{ item.updateTime || "--" }} ( {{ item.diffTime || "--" }} )</span>
</div>
<div class="topbox">
<div>服务费</div>
<div>{{ item.servetype }}</div>
</div>
</div>
<div class="bottombox1">
<!-- <a-popover title="" trigger="click" placement="bottomRight">
<template slot="content" class="jobDesp_content">
<div :class="'copy' + index" @click="copyText($event, index)">复制</div>
<span v-if="item.jobDesp" :class="'copyInfo' + index">{{ item.jobDesp }}</span
><span v-else></span>
</template>-->
<router-link target="_blank" :to="`/detail?id=${item.id}&page=${formvalue.pageNum}&type=vocational`" rel="opener">
<button
type="primary"
class="jobDesp br4"
:style="{
background: item.recruitment == '1' ? '#fff' : '#f5f5f5',
}"
>
更多
</button>
</router-link>
<!-- </a-popover> -->
<button class="apply br4" @click="showRecord(item)" v-if="item.recruitment == '1'"></button>
<button class="norecruitment" v-else></button>
<!-- <button @click="showmodal(item)" @click="">报名</button> -->
</div>
</div>
</div>
</div>
</div>
<div class="maincontentright">
<div class="dateinfo">
<h1 class="bottombox">
@ -645,12 +737,14 @@
<recommend />
</div>
</div>
<recordModal :show.sync="recordShow" :jobDetail="currentInfo"></recordModal>
</div>
</template>
<script>
import {
// JobListApi,
JobListApi,
JobListApiYicai,
getJobSpecialApi,
getProvinceApi,
getHotCityApi,
@ -662,21 +756,24 @@ import {
import { getUserManagerApi } from "../../api/userinfo";
import $ from "jquery";
import { moneyToFixed, getSalaryClassifyValue, isNotEmptyCheck } from "../../utils/commonUtil";
import { moneyToFixed, getSalaryClassifyValue, isNotEmptyCheck, disposeJobListData, setReturnFee } from "../../utils/commonUtil";
import recommend from "@/components/FirstJob/components/recommend.vue";
import { nationlist } from "../../utils/datalist";
import Clipboard from "clipboard";
//
import recordModal from "./components/vocationalRecord.vue";
// import PinYin from '../../utils/ChinesePY'
// import recordbill from "@/components/FirstJob/components/recordbill.vue";
export default {
//
inject: ["getJobList", "getJobListYicai", "reload"],
inject: ["reload"],
//
name: "",
//
components: {
recommend,
recordModal
// recordbill,
},
//
@ -688,17 +785,20 @@ export default {
// type: Object,
require: true,
},
jobMainList: {
require: true,
},
isspinning: {
require: true,
}, //
// isspinning: {
// require: true,
// }, //
},
//
data() {
return {
// jobMainList: [], //
jobMainList: [], //
recordShow: false,
currentInfo: {}, //
isVocational: false,
isLogin: false,
isspinning: false,
sortNum: 1, //
sortStr: "工价优先",
specialList: [], //
@ -903,12 +1003,19 @@ export default {
deep: true,
},
$route: {
handler() {
handler(e) {
console.log("$route", e);
if (e.query.type && e.query.type == "vocational") {
this.isVocational = true;
} else {
this.isVocational = false;
}
// console.log("ischange");
// console.log(to);
// console.log(from);
},
deep: true,
immediate: true,
},
filterObj: {
handler(newv) {
@ -931,9 +1038,12 @@ export default {
*/
created() {
// console.log(this.proxyinfo);
// console.log(this.$route);
console.log(this.$route);
this.currentPage = this.$route.params.pagenum;
this.signType = this.$route.params.signType ? this.$route.params.signType : "";
if (localStorage.getItem("LOGIN_DATA")) {
this.isLogin = true;
}
if (this.currentPage) {
// console.log(this.currentPage);
this.formvalue.pageNum = this.currentPage;
@ -943,6 +1053,7 @@ export default {
} else {
this.getJobListYicai();
}
this.getRecommendJob();
this.getJobSpecial();
this.getProvince();
@ -994,6 +1105,118 @@ export default {
console.log("+++++++++++++++++++++++++", this.$store);
});
},
async getRecommendJob() {
this.isspinning = true;
try {
if (this.isLogin) {
const { data } = await JobListApi({
pageNum: 1,
pageSize: 4,
jobCategory: 608,
});
// console.log(data);
this.fellowList = disposeJobListData(data.data.recordList);
// console.log(this.fellowList);
}
// this.$emit("update:relationList", this.relationList);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
//
async getJobList(newdata) {
this.isspinning = true;
console.log("this.formvalue", this.formvalue);
try {
newdata = {
district: "",
monthlyPayStr: "",
ageStr: "",
jobSpecialLabelIds: "",
aliasName: "",
pageNum: 1,
pageSize: 8,
total: null, //
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApi(newdata);
console.log("data", data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
//
async getJobListYicai(newdata) {
this.isspinning = true;
console.log(this.formvalue);
try {
newdata = {
agencyId: "3087",
recruitment: "1",
keys: "",
pageNum: 1,
pageSize: 8,
total: null, //
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApiYicai(newdata);
// console.log(data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.jobMainList.forEach((item, index) => {
item["servetype"] = setReturnFee(item.returnFee, item.returnFeeType);
});
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
//
onSearch() {
// console.log(e);
@ -1190,12 +1413,12 @@ export default {
changeTab(e) {
console.log(e.target.dataset.type);
if (e.target.dataset.type != undefined) {
this.formvalue.pageNum = 1;
if (e.target.dataset.type != 0) {
this.formvalue.signType = this.signType = e.target.dataset.type;
this.getJobListYicai();
} else {
this.formvalue.signType = this.signType = "";
this.formvalue.pageNum = 1;
this.getJobList();
}
}
@ -1254,7 +1477,7 @@ export default {
console.log(e);
this.formvalue.pageNum = e;
this.$refs.pageinput.value = "";
if (this.formvalue.signType == 1) {
if (this.signType == 1) {
this.getJobListYicai();
} else {
this.getJobList();
@ -1743,6 +1966,17 @@ export default {
}
this.getJobList();
},
/**
* 职教职培报名点击
*/
showRecord(info) {
console.log(info);
this.currentInfo = info;
this.recordShow = true;
console.log('this.recordShow',this.recordShow);
console.log('this.currentInfo',this.currentInfo);
},
},
};
</script>
@ -2875,7 +3109,7 @@ export default {
}
}
button {
width: 80px;
min-width: 80px;
height: 28px;
font-size: 16px;
// border: 1px solid rgba(77, 87, 94, 0.3);
@ -2899,6 +3133,7 @@ export default {
.apply {
margin-left: 16px;
border: 1px solid #ff4400;
padding: 0 16px;
background-color: #fff;
color: #ff4400;
cursor: pointer;

File diff suppressed because it is too large Load Diff

@ -0,0 +1,432 @@
<template>
<div class="mybill-container f40 w">
<div class="searchbox">
<div class="searchinput f40">
<a-input placeholder="搜索工单号/职位/姓名/电话/身份证号" allowClear @keyup.enter="onSearch" @input="resetsearch" v-model="pagination.keys">
<i slot="prefix" class="iconfont icon-sousuo"></i>
<button slot="suffix" @click="onSearch" style="border-radius: 0px 6px 6px 0">搜索</button>
</a-input>
<div>
<div>报名时间</div>
<a-range-picker style @change="dateChange" class dropdownClassName="f40" />
</div>
</div>
<div class="pagechange">
<a-button style="">导出线索</a-button>
</div>
</div>
<div>
<a-table :columns="columns" :data-source="billList" :pagination="false" :style="{ minWidth: 858 + 'px !important' }" :loading="{ spinning: isspinning, tip: '加载中', wrapperClassName: 'spinstyle' }" :rowKey="(record) => record.id"> </a-table>
<div class="pagecontainer">
<a-pagination :current="pagination.pageNum" class=" pagecontainer" :defaultPageSize="20" :show-total="(total) => `${total || '0'}`" :total="pagination.total" @change="onChange" @showSizeChange="onPageChange" show-size-changer show-quick-jumper />
</div>
</div>
</div>
</template>
<script>
import { userBillApi, userBillNumberApi, userBillDetailApi } from "../../../../api/userinfo";
import { getUserApplyOrderStatusByIdToBill, isEmptyCheck, formatDateYMDHM, formatDateYMD } from "../../../../utils/commonUtil";
export default {
//
name: "mybillcontainer",
//
components: {},
//
props: {},
//
data() {
return {
isspinning: false,
billList: [],
pagination: {
pageNum: 1,
pageSize: 10,
total: null, //
status: -1,
keys: "",
},
};
},
//
computed: {
columns() {
const columns = [
{
title: "序号",
dataIndex: "index",
key: "index",
customRender: (text, row, index) => {
return index + 1;
},
// ellipsis: true,
width: 60,
},
{
title: "姓名",
dataIndex: "userName",
key: "userName",
scopedSlots: { customRender: "userName" },
ellipsis: true,
width: 100,
},
{
title: "手机号",
dataIndex: "tel",
key: "tel",
ellipsis: true,
width: 140,
},
{
title: "报名职教",
dataIndex: "storeJobName",
key: "storeJobName",
scopedSlots: { customRender: "storeJobName" },
ellipsis: true,
width: 160,
},
{
title: "报名人",
dataIndex: "applyUserName",
key: "applyUserName",
scopedSlots: { customRender: "applyUserName" },
ellipsis: true,
width: 100,
},
{
title: "服务费",
dataIndex: "returnFee",
key: "returnFee",
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: "returnFee" },
ellipsis: true,
width: 100,
},
{
title: "备注",
dataIndex: "desp",
key: "desp",
scopedSlots: { customRender: "desp" },
ellipsis: true,
},
{
title: "报名时间",
dataIndex: "createTime",
key: "createTime",
scopedSlots: { customRender: "createTime" },
ellipsis: true,
width: 160,
},
];
return columns;
},
},
//
watch: {},
//
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created() {
this.getBill();
// this.userBillNumber()
},
/**
* el 被新创建的 vm.el 替换并挂载到实例上去之后调用该钩子
* 如果 root 实例挂载了一个文档内元素 mounted 被调用时 vm.el 也在文档内
*/
mounted() {},
//
methods: {
resetsearch(e) {
console.log(e);
if (e.target.value.length === 0) {
this.pagination.keys = "";
this.getBill();
// this.userBillNumber();
}
},
onSearch() {
this.pagination.pageNum = 1;
this.pagination.pageSize = 10;
this.pagination.status = -1;
// console.log();
this.getBill();
// this.userBillNumber();
},
dateChange(e) {
console.log("ischange");
console.log(e);
if (e.length != 0) {
let date1 = new Date(e[0]._d);
let date2 = new Date(e[1]._d);
this.pagination.startDate = formatDateYMD(date1);
this.pagination.endDate = formatDateYMD(date2);
} else {
this.pagination.startDate = "";
this.pagination.endDate = "";
}
this.getBill();
// this.userBillNumber();
},
onChange(e) {
this.pagination.pageNum = e;
console.log(e);
this.getBill();
},
onPageChange(current, size) {
console.log(current);
console.log(size);
this.pagination.pageSize = size;
this.getBill();
},
async getBill() {
console.log("click");
// let that = this;
console.log(this.pagination.status);
try {
this.isspinning = true;
const { data } = await userBillApi(this.pagination);
console.log(data);
if (data.status === 200) {
// console.log();
this.billList = data.data.recordList;
console.log(this.billList);
setTimeout(() => {
this.billList.forEach((item, index) => {
let differenceTime = new Date().getTime() - new Date(item.updateTime).getTime();
var D = Math.floor(differenceTime / (24 * 60 * 60 * 1000));
var level1 = differenceTime % (24 * 3600 * 1000);
var H = Math.floor(level1 / (3600 * 1000));
var level2 = level1 % (3600 * 1000);
var M = Math.floor(level2 / (60 * 1000));
var level3 = level2 % (60 * 1000);
var S = Math.floor(level3 / 1000);
item.diffTime = null;
if (D > 0) {
item.diffTime = D + "天前";
} else if (H > 0) {
item.diffTime = H + "小时前";
} else if (M > 0) {
item.diffTime = M + "分钟前";
} else {
item.diffTime = S + "秒前";
}
// console.log(new Date(differenceTime).getDate());
// console.log(item.userName, D, H, M);
// console.log(item);
if (item.sex === 1) {
item.sex = "男";
} else if (item.sex === 2) {
item.sex = "女";
} else {
item.sex = "未知";
}
// if (index % 2 === 0) {
// item.status = 60;
// }
if (!isEmptyCheck(item.tel)) {
let first = item.tel.slice(0, 3);
let second = item.tel.slice(3, 7);
let thirdly = item.tel.slice(7, 12);
// console.log(first);
// console.log(second);
// console.log(thirdly);
item.tel = first + " " + second + " " + thirdly;
}
if (item.status === 60 || item.status === 70) {
item.isDown = true;
} else {
item.isDown = false;
}
item.statusTag = getUserApplyOrderStatusByIdToBill(item.status);
item.interviewTime = formatDateYMDHM(item.interviewTime);
item.entryTime = formatDateYMDHM(item.entryTime);
item.leaveTime = formatDateYMDHM(item.leaveTime);
// item.updateTime = formatDateYMDHMS(item.updateTime);
// item.createTime = formatDateYMDHMS(item.createTime);
item.updateTime = isEmptyCheck(item.updateTime) ? "2022-03-16 14:19" : formatDateYMDHM(item.updateTime);
item.createTime = isEmptyCheck(item.createTime) ? "2022-03-16 14:19" : formatDateYMDHM(item.createTime);
item.index = index + 1;
// console.log(that.$refs["Control" + index][0]);
// setTimeout(() => {
if (item.status == 10 || item.status == 20 || item.status == 21 || item.status == 25 || item.status == 26 || item.status == 30 || item.status == 35 || item.status == 45) {
item.statusTimeInfo = "面试时间";
item.statusShowTime = item.interviewTime;
} else if (item.status == 40) {
item.statusTimeInfo = "入职时间";
item.statusShowTime = item.entryTime;
} else if (item.status == 50) {
item.statusTimeInfo = "离职时间";
item.statusShowTime = item.leaveTime;
}
// console.log(item.statusShowTime);
// console.log(item.statusTimeInfo);
// }, 100);
// console.log("controlUnfold", item.controlUnfold);
// console.log("isunfold", item.isunfold);
// console.log(item);
for (const k in item) {
item[k] = item[k] ? item[k] : "-";
}
});
// this.showFlod(this.billList);
this.saveBill = JSON.parse(JSON.stringify(this.billList));
}, 0);
this.pagination.total = data.data.recordCount;
this.$forceUpdate();
// this.totop();
}
} catch (error) {
console.log(error);
}
this.statusValue = "";
this.isspinning = false;
},
},
};
</script>
<style scoped lang="less">
.mybill-container {
/deep/.searchbox {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
margin-top: 32px;
.ant-input {
border-radius: 6px;
}
.searchinput {
display: flex;
position: relative;
> div {
display: flex;
// width: 375px;
justify-content: start;
align-items: center;
font-size: 14px;
> div {
margin-left: 50px;
width: 70px;
}
}
.ant-input {
width: 400px;
// width: 300px;
position: relative;
height: 32px;
text-indent: 10px;
background: #fff;
// border: 1px solid rgba(77, 87, 94, 0.3);
// border-radius: 136px;
box-shadow: 0px 2px 4px 0px transparent;
font-size: 14px !important;
padding-right: 0;
border-color: #e9e9e9;
// z-index: ;
&::placeholder {
text-indent: 10px;
font-size: 14px !important;
}
&:hover {
border-color: #ff4400;
box-shadow: none;
}
&:focus {
border-color: #ff4400;
}
}
.ant-input-affix-wrapper {
.ant-input-prefix {
position: absolute;
width: 20px;
right: 0;
top: 16px;
i {
color: #c9c9c9;
}
}
.ant-input-suffix {
// position: absolute;
right: 0px !important;
.ant-input-clear-icon {
padding-right: 12px;
}
}
}
button {
width: 70px;
height: 32px;
color: white;
background: #ff4400;
border-color: #ff4400;
border: none;
// border-radius: 16px;
font-size: 14px;
box-shadow: none;
cursor: pointer;
outline: none;
&:hover {
background-color: #ff4400d9;
}
// &:focus {
// border: none;
// }
}
.ant-calendar-picker-input {
display: flex;
padding-left: 0;
justify-content: center;
// margin-left: 20px;
width: 260px;
border-color: #ccc;
// border-radius: 4px;
// border: none;
&:hover {
border-color: #ff4400;
}
.ant-calendar-range-picker-input {
width: 95px;
font-size: 14px;
}
.ant-calendar-range-picker-separator {
margin-right: 10px;
}
.ant-calendar-picker-clear {
margin-right: 10px;
}
}
}
.pagechange {
display: flex;
align-items: center;
button {
font-size: 14px;
color: #ff4400;
border-color: #ff4400;
&:hover {
border-color: #ff4400ff;
color: #ff4400ff;
}
&:first-child {
// margin-right: 12px;
}
}
}
}
}
</style>

@ -12,6 +12,19 @@ import moment from "moment";
import "moment/locale/zh-cn";
import AMap from "vue-amap";
Vue.use(AMap);
router.onError((error) => {
console.log("路由报错")
const pattern = /net::ERR_ABORTED 404 (Not Found)/g;
const err = /Failed to fetch dynamically/g;
const isChunkLoadFailed = error.message.match(pattern);
const isChunkLoadFailedErr = error.message.match(err);
if (isChunkLoadFailed || isChunkLoadFailedErr) {
message.error('系统已升级,正在刷新本地存储,请稍候...');
setTimeout(() => {
location.reload();
}, 2000)
}
});
AMap.initAMapApiLoader({
// 高德key
key: "44f4591aabba558514366f6e55f8d20e", // 自己到官网申请,我随便写的

@ -24,6 +24,12 @@ const routes = [
component: () => import("../components/FirstJob/joblist.vue"),
// component: resolve => require(['../components/FirstJob/joblist.vue'],resolve)
},
{
path: "/list?type=vocational",
name: "JobList",
component: () =>
import("../components/FirstJob/joblist.vue"),
},
{
path: "/list1",
name: "JobList",
@ -122,6 +128,13 @@ const routes = [
import("../components/userinfo/usercenter/components/mybill.vue"),
// component: resolve => require(['../components/userinfo/usercenter/components/mybill.vue'],resolve)
},
{
path: "vocationalBill",
name: "vocationalBill",
component: () =>
import("../components/userinfo/usercenter/components/vocationalBill.vue"),
// component: resolve => require(['../components/userinfo/usercenter/components/mybill.vue'],resolve)
},
{
path: "merchantManagement",
name: "merchantManagement",

@ -665,6 +665,7 @@ i {
.ant-pagination-item {
border: none;
border-radius: 6px;
line-height: 32px;
a:hover {
color: #ff4400;
}

@ -22,8 +22,45 @@
<li>
<router-link to="/list" @click.native="toList" :class="routertitleindex == 1 ? 'titleactive' : ''" rel="opener">稻田职位</router-link>
</li>
<li>
<router-link to="/mybill" :class="routertitleindex == 5 ? 'titleactive' : ''" rel="opener">我的报名</router-link>
<li v-if="false">
<router-link to="/list?type=vocational" :class="routertitleindex == 8 ? 'titleactive' : ''" rel="opener">职教职培</router-link>
</li>
<li v-if="false">
<a-dropdown
overlayClassName="logindropdown"
placement="bottomRight"
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
>
<span class="" style="cursor: pointer">
<div :class="routertitleindex == 5 ? 'titleactive' : ''">我的报名</div>
</span>
<div class="loginbox" style="" slot="overlay">
<router-link to="/mybill">
<div>
<span>职位报名</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/vocationalBill">
<div>
<span>职教报名</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
</div>
</a-dropdown>
</li>
<li v-else>
<router-link to="/mybill" :class="routertitleindex == 5? 'titleactive' : ''">
<!-- <div> -->
<span>职位报名</span>
<!-- <i class="iconfont icon-youjiantou"></i> -->
<!-- </div> -->
</router-link>
</li>
<!--<li>
<router-link to="/mytownsman" :class="routertitleindex == 4 ? 'titleactive' : ''">我的老乡</router-link>
@ -154,7 +191,7 @@
</div>
</div>
<router-view :isspecialboxshow.sync="isspecialboxshow" :formvalue="formvalue" :jobMainList="jobMainList" :isspinning="isspinning"></router-view>
<router-view :isspecialboxshow.sync="isspecialboxshow" :formvalue="formvalue"></router-view>
<!-- 老乡广告 -->
<!-- <div class="fellowtownsman" v-if="laoxiangshow">
<div class="w">
@ -248,14 +285,13 @@ import {
} from "../api/job";
import { logoutApi } from "../api/login";
import { disposeJobListData, setReturnFee } from "../utils/commonUtil";
export default {
inject: ["reload"],
provide() {
return {
getJobList: this.getJobList,
getJobListYicai: this.getJobListYicai,
// getJobList: this.getJobList,
// getJobListYicai: this.getJobListYicai,
logout: this.logout,
};
},
@ -271,14 +307,13 @@ export default {
data() {
return {
fellowList: [],
isspinning: false,
// isspinning: false,
isspecialboxshow: false,
isfootershow: true,
laoxiangshow: false,
isbannershow: true,
isLogin: false,
loginValue: {},
jobMainList: [],
formvalue: {
//
district: [], //
@ -357,6 +392,10 @@ export default {
window.addEventListener("scroll", this.windowScroll); //
if (to.fullPath.indexOf("serviceoutlets") > -1) {
this.routertitleindex = 2;
} else if (to.fullPath.indexOf("mybill") > -1 || to.fullPath.indexOf("vocationalBill") > -1) {
this.routertitleindex = 5;
} else if (to.fullPath.indexOf("vocational") > -1) {
this.routertitleindex = 8;
} else if (to.fullPath.indexOf("list") > -1 || to.fullPath.indexOf("detail") > -1) {
this.routertitleindex = 1;
} else if (to.fullPath.indexOf("aboutus") > -1) {
@ -365,8 +404,6 @@ export default {
this.routertitleindex = 0;
} else if (to.fullPath.indexOf("mytownsman") > -1) {
this.routertitleindex = 4;
} else if (to.fullPath.indexOf("mybill") > -1) {
this.routertitleindex = 5;
} else if (to.fullPath.indexOf("dataStatistics") > -1) {
this.routertitleindex = 6;
} else {
@ -404,10 +441,9 @@ export default {
if (localStorage.getItem("LOGIN_DATA")) {
this.isLogin = true;
}
this.getJobList();
this.getJobListYicai();
// this.getJobList();
// this.getJobListYicai();
this.isLaoxiangshow();
this.getRecommendJob();
this.showfooter();
},
/**
@ -477,98 +513,6 @@ export default {
}
}
},
//
async getJobList(newdata) {
this.isspinning = true;
console.log(this.formvalue);
try {
newdata = {
district: "",
monthlyPayStr: "",
ageStr: "",
jobSpecialLabelIds: "",
aliasName: "",
pageNum: 1,
pageSize: 8,
total: null, //
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApi(newdata);
// console.log(data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
//
async getJobListYicai(newdata) {
this.isspinning = true;
console.log(this.formvalue);
try {
newdata = {
agencyId: "3087",
recruitment: "1",
keys: "",
pageNum: 1,
pageSize: 8,
total: null, //
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApiYicai(newdata);
// console.log(data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.jobMainList.forEach((item, index) => {
item["servetype"] = setReturnFee(item.returnFee, item.returnFeeType);
});
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
totop() {
// console.log(window);
@ -588,25 +532,7 @@ export default {
this.laoxiangshow = true;
}
},
async getRecommendJob() {
this.isspinning = true;
try {
if (this.isLogin) {
const { data } = await JobListApi({
pageNum: 1,
pageSize: 4,
jobCategory: 608,
});
// console.log(data);
this.fellowList = disposeJobListData(data.data.recordList);
// console.log(this.fellowList);
}
// this.$emit("update:relationList", this.relationList);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
async logout() {
// logoutApi().then((result) => {
// console.log(result);

Loading…
Cancel
Save