recruitment.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953
  1. <template>
  2. <view id="recruitment">
  3. <view style="z-index: 999;">
  4. <u-navbar title="求职中心" :is-back="false">
  5. <view class="slot-wrap"><image src="/static/search.png" class="search" @click="jumpSearch"></image></view>
  6. </u-navbar>
  7. </view>
  8. <scroll-view
  9. scroll-y="true"
  10. @scroll="scroll"
  11. style="padding-top: 20rpx;"
  12. :style="'height: ' + windowHeight + 'px;'"
  13. @scrolltolower="scrollTolower"
  14. refresher-enabled
  15. @refresherpulling="pulling"
  16. @refresherrefresh="refresher"
  17. @refresherrestore="restore"
  18. :refresher-triggered="triggered"
  19. >
  20. <swiper class="swiper" :autoplay="true" previous-margin="15px" next-margin="15px" :circular="true">
  21. <swiper-item v-for="(item, index) in list" :key="index" style="padding: 0px 5px;box-sizing: border-box;">
  22. <view style="height: 100%;border-radius: 8px;overflow: hidden;">
  23. <image :src="$method.splitImgHost(item.adverUrl,true,500)" mode="" style="width: 100%;height: 100%;" @click="swiperClick(index)"></image>
  24. </view>
  25. </swiper-item>
  26. </swiper>
  27. <view style="margin: 31rpx 35rpx 24rpx;display: flex;align-items: center;">
  28. <view style="padding: 5rpx;margin-right: 16rpx;"><image src="/static/select.png" class="arr-icon" @click="showStatus"></image></view>
  29. <view class="dis_ssy">
  30. <view class="lszty" @click="sectionChange(0)" :class="current == 0 ?'acszty':''">找岗位</view>
  31. <view class="lszty" @click="sectionChange(1)" :class="current == 1 ?'acszty':''">找企业</view>
  32. <!-- <template>
  33. <u-subsection
  34. @change="sectionChange"
  35. height="54"
  36. button-color="rgba(47,67,121,0.6)"
  37. bg-color="#F8F9FF"
  38. active-color="#FFFFFF"
  39. inactive-color="#636A75"
  40. :bold="false"
  41. :list="tab_list"
  42. :current="current"
  43. ></u-subsection>
  44. </template> -->
  45. </view>
  46. <view style="width: 90px;" @click="showCityPicker = true">
  47. <view class="slh">{{ city === null ? '全国' : city }}</view>
  48. </view>
  49. </view>
  50. <view v-if="current === 0">
  51. <view v-if="posts.length === 0">
  52. <u-empty margin-top="150" text="暂无岗位" mode="data"></u-empty>
  53. </view>
  54. <view v-else class="boxsize lines" v-for="(item, index) in posts" :key="index" @click="jumpDetails(item)">
  55. <view class="top_sty">
  56. <view>
  57. <view class="heasd">
  58. {{ item.job }}
  59. <image v-if="item.isUrgent === 1" style="width:27rpx;height:27rpx;" src="../static/ji@3x.png" mode=""></image>
  60. </view>
  61. <view class="fotHs">{{ item.companyName }}</view>
  62. </view>
  63. <view class="priceSty">
  64. {{ item.incomeStart === item.incomeEnd ? item.incomeStart : item.incomeStart + '~' + item.incomeEnd }}/{{ item.incomeType === 1 ? '月' : '年' }}
  65. </view>
  66. </view>
  67. <view class="dis_foter">
  68. <view class="dis_f">
  69. <view class="fot_size">{{ item.workingYearsLabel }}</view>
  70. <view class="fot_size">{{ item.minimumEduLabel }}</view>
  71. <view class="yys" v-for="(items, indexs) in item.bonusCertificate" :key="indexs">{{ items }}</view>
  72. </view>
  73. <view class="right_address">{{ item.city }}•{{ item.district }}</view>
  74. </view>
  75. </view>
  76. <u-divider v-if="total == posts.length && posts.length !== 0">到底啦</u-divider>
  77. </view>
  78. <view v-if="current === 1">
  79. <view v-if="enterprise.length === 0">
  80. <u-empty margin-top="150" text="暂无岗位" mode="data"></u-empty>
  81. </view>
  82. <view v-else class="boxsize" v-for="(item, index) in enterprise" :key="index">
  83. <view class="dis_flexs" @click="jumpCompany(item)">
  84. <view class="imgboxs"><image style="width: 100%; height: 100%;" :src="$method.splitImgHost(item.logoUrl)" mode=""></image></view>
  85. <view style="flex: 1;">
  86. <view class="headTits">{{ item.companyName }}</view>
  87. <view class="lisz">
  88. <view class="bqB">{{ item.city }}</view>
  89. <view class="bqB">{{ item.companyType }}</view>
  90. <view class="bqB">{{ item.companySize }}</view>
  91. </view>
  92. </view>
  93. </view>
  94. <view class="tnsz">
  95. <view class="litns" v-for="(items, indexs) in item.newNumObj" :key="indexs" @click="jumpDetails(items)">{{ items.job }}</view>
  96. <view class="moreLs" v-if="item.recruitNeedsVoList.length > 3" @click="jumpDetails(item.recruitNeedsVoList[0])">•••</view>
  97. </view>
  98. </view>
  99. <u-divider v-if="total1 == enterprise.length && enterprise.length !== 0">到底啦</u-divider>
  100. </view>
  101. </scroll-view>
  102. <u-popup v-model="show" border-radius="14">
  103. <view class="flex-d" style="width: 600rpx">
  104. <view class="popup_t1">
  105. <view class="mors" :class="activePopBtn === 0 ? 'activesSty' : ''" @click="activePopBtn = 0">岗位筛选</view>
  106. <view class="mors" style="margin-left: 32rpx;" :class="activePopBtn === 1 ? 'activesSty' : ''" @click="activePopBtn = 1">企业筛选</view>
  107. </view>
  108. <view class="contentZ" v-if="activePopBtn === 0">
  109. <view class="heards">工作类型</view>
  110. <view class="boxPlus">
  111. <view
  112. class="liszing"
  113. v-for="(item, index) in workTypeList"
  114. :key="index"
  115. @click="activeWorkType(item)"
  116. :class="workActiveBoxs.indexOf(item) !== -1 ? 'activesLiszing' : ''"
  117. >
  118. {{ item }}
  119. </view>
  120. <view style="clear: both;"></view>
  121. </view>
  122. <view class="heards">薪资范围</view>
  123. <view class="priceType">
  124. <view class="lstq" :class="priceType === 1 ? 'activeLstq' : ''" @click="priceType = 1">月薪</view>
  125. <view class="lstq" :class="priceType === 2 ? 'activeLstq' : ''" @click="priceType = 2">年薪</view>
  126. </view>
  127. <view class="priceInput">
  128. <input class="inputSty" type="number" value="" placeholder="最低(元)" v-model="incomeStart" />
  129. <input class="inputSty" type="number" value="" placeholder="最高(元)" v-model="incomeEnd" />
  130. </view>
  131. <view class="heards">学历要求(可多选)</view>
  132. <view class="boxPlus">
  133. <view
  134. class="liszing"
  135. v-for="(item, index) in eduList"
  136. :key="index"
  137. @click="activeEduType(item)"
  138. :class="eduActiveBoxs.indexOf(item.value) !== -1 ? 'activesLiszing' : ''"
  139. >
  140. {{ item.label }}
  141. </view>
  142. <view style="clear: both;"></view>
  143. </view>
  144. <view class="heards">工作年限(可多选)</view>
  145. <view class="boxPlus">
  146. <view
  147. class="liszing"
  148. v-for="(item, index) in workYearsList"
  149. :key="index"
  150. @click="activeWorkYearsType(item)"
  151. :class="workYearsActiveBoxs.indexOf(item.value) !== -1 ? 'activesLiszing' : ''"
  152. >
  153. {{ item.label }}
  154. </view>
  155. <view style="clear: both;"></view>
  156. </view>
  157. </view>
  158. <view class="contentZ" v-if="activePopBtn === 1">
  159. <view class="heards">企业规模(可多选)</view>
  160. <view class="boxPlus">
  161. <view
  162. class="liszing"
  163. v-for="(item, index) in companySizeList"
  164. :key="index"
  165. @click="activeCompanySize(item)"
  166. :class="companySizeActiveBoxs.indexOf(item.value) !== -1 ? 'activesLiszing' : ''"
  167. >
  168. {{ item.label }}
  169. </view>
  170. <view style="clear: both;"></view>
  171. </view>
  172. <view class="heards">公司类型(可多选)</view>
  173. <view class="boxPlus">
  174. <view
  175. class="liszing"
  176. v-for="(item, index) in companyTypeList"
  177. :key="index"
  178. @click="activeCompanyType(item)"
  179. :class="companyTypeActiveBoxs.indexOf(item.value) !== -1 ? 'activesLiszing' : ''"
  180. >
  181. {{ item.label }}
  182. </view>
  183. <view style="clear: both;"></view>
  184. </view>
  185. </view>
  186. <view class="fots">
  187. <view class="leftBtns" @click="initLists">重置筛选</view>
  188. <view class="right_Btns" @click="searchPageInfos">确定筛选</view>
  189. </view>
  190. </view>
  191. </u-popup>
  192. <u-picker mode="region" v-model="showCityPicker" :params="{ province: true, city: true }" @confirm="activeCitys"></u-picker>
  193. </view>
  194. </template>
  195. <script>
  196. export default {
  197. name: 'recruitment',
  198. data() {
  199. return {
  200. list: [],
  201. showCityPicker: false,
  202. province: null,
  203. city: null,
  204. activePopBtn: 0,
  205. windowHeight: 0,
  206. show: false,
  207. tab_list: [
  208. {
  209. name: '找岗位'
  210. },
  211. {
  212. name: '找企业'
  213. }
  214. ],
  215. posts: [], //岗位列表
  216. enterprise: [], //企业列表
  217. current: 0,
  218. pageNum: 1,
  219. pageSize: 8,
  220. total: 0,
  221. pageNum1: 1,
  222. pageSize1: 8,
  223. total1: 0,
  224. workTypeList: ['全职', '兼职', '实习生'], //工作类型
  225. workActiveBoxs: [], //选中工作类型
  226. priceType: 1, //薪资类型 1月薪2年薪
  227. incomeStart: '', //薪资起点
  228. incomeEnd: '', //薪资结点
  229. eduList: [], //学历
  230. eduActiveBoxs: [], //选中学历
  231. workYearsList: [], //工作年限类型
  232. workYearsActiveBoxs: [], //选中工作年限类型
  233. companySizeList: [], //公司规模
  234. companySizeActiveBoxs: [], //选中公司规模
  235. companyTypeList: [], //公司类型
  236. companyTypeActiveBoxs: [], //选中公司类型
  237. sxGW: false,
  238. sxCM: false,
  239. triggered: false
  240. };
  241. },
  242. created() {
  243. this.windowHeight = uni.getSystemInfoSync().windowHeight - 120;
  244. },
  245. mounted() {
  246. this.inits();
  247. this.getDict();
  248. this.advertisingList();
  249. },
  250. methods: {
  251. pulling() {
  252. this.triggered = true;
  253. },
  254. refresher() {
  255. let that = this
  256. this.inits();
  257. this.getDict();
  258. this.advertisingList();
  259. setTimeout(function(){
  260. that.triggered = false
  261. },500)
  262. },
  263. restore() {
  264. this.triggered = false;
  265. },
  266. swiperClick(index) {
  267. let item = this.list[index];
  268. uni.navigateTo({
  269. url: item.jumpUrl
  270. });
  271. },
  272. advertisingList() {
  273. let self = this;
  274. this.$api.advertisingList().then(res => {
  275. self.list = res.data.rows.filter((item, index) => {
  276. return item.type === 2;
  277. });
  278. });
  279. },
  280. getDict() {
  281. var self = this;
  282. this.$api.dictList().then(res => {
  283. res.data.data.forEach((item, index) => {
  284. if (item.dictType == 'edu_level') {
  285. self.eduList.push({ label: item.dictLabel, value: item.dictCode });
  286. }
  287. if (item.dictType == 'working_years') {
  288. if (item.dictCode !== 109) {
  289. self.workYearsList.push({ label: item.dictLabel, value: item.dictCode });
  290. }
  291. }
  292. if (item.dictType == 'company_size') {
  293. self.companySizeList.push({ label: item.dictLabel, value: item.dictCode });
  294. }
  295. if (item.dictType == 'company_type') {
  296. self.companyTypeList.push({ label: item.dictLabel, value: item.dictCode });
  297. }
  298. });
  299. });
  300. },
  301. inits() {
  302. this.getCurrentGW();
  303. this.getCurrentCM();
  304. },
  305. jumpSearch() {
  306. this.$navTo.togo('/pages2/index/searchRecruit', {});
  307. },
  308. scroll(e) {},
  309. getCurrentGW(v) {
  310. var self = this;
  311. var data = {
  312. pageNum: this.pageNum,
  313. pageSize: this.pageSize
  314. };
  315. if (this.city !== null && this.province !== null) {
  316. data.province = this.province;
  317. data.city = this.city;
  318. }
  319. if (v) {
  320. if (this.workActiveBoxs.length) {
  321. data.jobNature = this.workActiveBoxs.toString();
  322. }
  323. if (this.incomeStart !== '' || this.incomeEnd !== '') {
  324. if (this.incomeStart !== '' && this.incomeEnd !== '') {
  325. var testPrice = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  326. if (!testPrice.test(Number(this.incomeStart))) {
  327. uni.showToast({
  328. title: '请规范填写最低薪资',
  329. icon: 'none'
  330. });
  331. return;
  332. }
  333. if (!testPrice.test(Number(this.incomeEnd))) {
  334. uni.showToast({
  335. title: '请规范填写最高薪资',
  336. icon: 'none'
  337. });
  338. return;
  339. }
  340. if (Number(this.incomeStart) > Number(this.incomeEnd)) {
  341. uni.showToast({
  342. title: '请规范填写薪资范围',
  343. icon: 'none'
  344. });
  345. return;
  346. }
  347. data.incomeType = this.priceType;
  348. data.incomeList = [{ incomeStart: Number(this.incomeStart), incomeEnd: Number(this.incomeEnd) }];
  349. } else {
  350. uni.showToast({
  351. title: '请填写薪资范围',
  352. icon: 'none'
  353. });
  354. return;
  355. }
  356. }
  357. if (this.eduActiveBoxs.length) {
  358. data.minimumEduDictList = this.eduActiveBoxs.toString();
  359. }
  360. if (this.workYearsActiveBoxs.length) {
  361. data.workingYearsDictList = this.workYearsActiveBoxs.toString();
  362. }
  363. }
  364. this.$api.recruitneedslist(data).then(res => {
  365. if (res.data.code === 200) {
  366. self.total = res.data.total;
  367. res.data.rows.forEach((item, index) => {
  368. if (item.jobNature) {
  369. item.jobNature = item.jobNature.split(',');
  370. }
  371. if (item.welfare) {
  372. item.welfare = item.welfare.split(',');
  373. }
  374. if (item.bonusCertificate) {
  375. item.bonusCertificate = item.bonusCertificate.split(',');
  376. }
  377. });
  378. self.posts = res.data.rows;
  379. self.show = false;
  380. }
  381. });
  382. },
  383. getCurrentCM(v) {
  384. var self = this;
  385. var data1 = {
  386. pageNum: this.pageNum1,
  387. pageSize: this.pageSize1
  388. };
  389. if (this.city !== null && this.province !== null) {
  390. data1.province = this.province;
  391. data1.city = this.city;
  392. }
  393. if (v) {
  394. if (this.companySizeActiveBoxs.length) {
  395. data1.sizeIds = this.companySizeActiveBoxs.toString();
  396. }
  397. if (this.companyTypeActiveBoxs.length) {
  398. data1.typeIds = this.companyTypeActiveBoxs.toString();
  399. }
  400. }
  401. this.$api.recruitcompanyConlist(data1).then(res => {
  402. if (res.data.code === 200) {
  403. self.total1 = res.data.total;
  404. for (let k = 0; k < res.data.rows.length; k++) {
  405. if (res.data.rows[k].recruitNeedsVoList) {
  406. var anum = [];
  407. for (let i = 0; i < res.data.rows[k].recruitNeedsVoList.length; i++) {
  408. if (i >= 3) {
  409. break;
  410. } else {
  411. anum.push(res.data.rows[k].recruitNeedsVoList[i]);
  412. }
  413. }
  414. res.data.rows[k].newNumObj = anum;
  415. }
  416. }
  417. self.enterprise = res.data.rows;
  418. self.show = false;
  419. }
  420. });
  421. },
  422. searchPageInfos() {
  423. var self = this;
  424. if (this.activePopBtn === 0) {
  425. this.current = 0;
  426. this.sxGW = true;
  427. this.getCurrentGW(true);
  428. }
  429. if (this.activePopBtn === 1) {
  430. this.current = 1;
  431. this.sxCM = true;
  432. this.getCurrentCM(true);
  433. }
  434. },
  435. jumpCompany(v) {
  436. var data = {
  437. companyId: v.companyId
  438. };
  439. if (v.recruitNeedsVoList.length > 0) {
  440. data.id = v.recruitNeedsVoList[0].id;
  441. }
  442. this.$navTo.togo('/pages2/recruitment/detailsInfo', data);
  443. },
  444. jumpDetails(v) {
  445. this.$navTo.togo('/pages2/recruitment/detailsInfo', {
  446. id: v.id,
  447. companyId: v.companyId
  448. });
  449. },
  450. scrollTolower() {
  451. var self = this;
  452. if (this.current === 0) {
  453. if (this.total > this.posts.length) {
  454. var data = {
  455. pageNum: this.pageNum + 1,
  456. pageSize: this.pageSize
  457. };
  458. if (this.sxGW) {
  459. if (this.workActiveBoxs.length) {
  460. data.jobNature = this.workActiveBoxs.toString();
  461. }
  462. if (this.incomeStart !== '' || this.incomeEnd !== '') {
  463. if (this.incomeStart !== '' && this.incomeEnd !== '') {
  464. var testPrice = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  465. if (!testPrice.test(Number(this.incomeStart))) {
  466. uni.showToast({
  467. title: '请规范填写最低薪资',
  468. icon: 'none'
  469. });
  470. return;
  471. }
  472. if (!testPrice.test(Number(this.incomeEnd))) {
  473. uni.showToast({
  474. title: '请规范填写最高薪资',
  475. icon: 'none'
  476. });
  477. return;
  478. }
  479. if (Number(this.incomeStart) > Number(this.incomeEnd)) {
  480. uni.showToast({
  481. title: '请规范填写薪资范围',
  482. icon: 'none'
  483. });
  484. return;
  485. }
  486. data.incomeType = this.priceType;
  487. data.incomeList = [{ incomeStart: Number(this.incomeStart), incomeEnd: Number(this.incomeEnd) }];
  488. } else {
  489. uni.showToast({
  490. title: '请填写薪资范围',
  491. icon: 'none'
  492. });
  493. return;
  494. }
  495. }
  496. if (this.eduActiveBoxs.length) {
  497. data.minimumEduDictList = this.eduActiveBoxs.toString();
  498. }
  499. if (this.workYearsActiveBoxs.length) {
  500. data.workingYearsDictList = this.workYearsActiveBoxs.toString();
  501. }
  502. }
  503. this.$api.recruitneedslist(data).then(res => {
  504. if (res.data.code === 200) {
  505. self.pageNum++;
  506. res.data.rows.forEach((item, index) => {
  507. if (item.jobNature) {
  508. item.jobNature = item.jobNature.split(',');
  509. }
  510. if (item.welfare) {
  511. item.welfare = item.welfare.split(',');
  512. }
  513. if (item.bonusCertificate) {
  514. item.bonusCertificate = item.bonusCertificate.split(',');
  515. }
  516. self.posts.push(item);
  517. });
  518. }
  519. });
  520. }
  521. }
  522. if (this.current === 1) {
  523. if (this.total1 > this.enterprise.length) {
  524. var data1 = {
  525. pageNum: this.pageNum1 + 1,
  526. pageSize: this.pageSize1
  527. };
  528. if (this.sxCM) {
  529. if (this.companySizeActiveBoxs.length) {
  530. data1.sizeIds = this.companySizeActiveBoxs.toString();
  531. }
  532. if (this.companyTypeActiveBoxs.length) {
  533. data1.typeIds = this.companyTypeActiveBoxs.toString();
  534. }
  535. }
  536. this.$api.recruitcompanyConlist(data1).then(res => {
  537. if (res.data.code === 200) {
  538. self.pageNum1++;
  539. for (let k = 0; k < res.data.rows.length; k++) {
  540. if (res.data.rows[k].recruitNeedsVoList) {
  541. var anum = [];
  542. for (let i = 0; i < res.data.rows[k].recruitNeedsVoList.length; i++) {
  543. if (i >= 3) {
  544. break;
  545. } else {
  546. anum.push(res.data.rows[k].recruitNeedsVoList[i]);
  547. }
  548. }
  549. res.data.rows[k].newNumObj = anum;
  550. }
  551. self.enterprise.push(res.data.rows[k]);
  552. }
  553. }
  554. });
  555. }
  556. }
  557. },
  558. sectionChange(index) {
  559. this.current = index;
  560. },
  561. initLists() {
  562. if (this.activePopBtn === 0) {
  563. this.priceType = 1; //薪资类型 1月薪2年薪
  564. this.incomeStart = ''; //薪资起点
  565. this.incomeEnd = ''; //薪资结点
  566. this.workActiveBoxs = [];
  567. this.eduActiveBoxs = [];
  568. this.workYearsActiveBoxs = [];
  569. this.province = null;
  570. this.city = null;
  571. this.sxGW = false;
  572. this.getCurrentGW();
  573. }
  574. if (this.activePopBtn === 1) {
  575. this.companySizeActiveBoxs = [];
  576. this.companyTypeActiveBoxs = [];
  577. this.province = null;
  578. this.city = null;
  579. this.sxCM = false;
  580. this.getCurrentCM();
  581. }
  582. },
  583. initAll() {
  584. if (this.current === 0) {
  585. this.priceType = 1; //薪资类型 1月薪2年薪
  586. this.incomeStart = ''; //薪资起点
  587. this.incomeEnd = ''; //薪资结点
  588. this.workActiveBoxs = [];
  589. this.eduActiveBoxs = [];
  590. this.workYearsActiveBoxs = [];
  591. this.sxGW = false;
  592. this.getCurrentGW();
  593. }
  594. if (this.current === 1) {
  595. this.companySizeActiveBoxs = [];
  596. this.companyTypeActiveBoxs = [];
  597. this.sxCM = false;
  598. this.getCurrentCM();
  599. }
  600. },
  601. showStatus() {
  602. if(this.current === 0){
  603. this.activePopBtn = 0
  604. }
  605. if(this.current === 1){
  606. this.activePopBtn = 1
  607. }
  608. this.show = true;
  609. },
  610. activeWorkType(item) {
  611. if (this.workActiveBoxs.indexOf(item) !== -1) {
  612. this.workActiveBoxs.splice(this.workActiveBoxs.indexOf(item), 1);
  613. } else {
  614. this.workActiveBoxs.push(item);
  615. }
  616. },
  617. activeEduType(item) {
  618. if (this.eduActiveBoxs.indexOf(item.value) !== -1) {
  619. this.eduActiveBoxs.splice(this.eduActiveBoxs.indexOf(item.value), 1);
  620. } else {
  621. this.eduActiveBoxs.push(item.value);
  622. }
  623. },
  624. activeWorkYearsType(item) {
  625. if (this.workYearsActiveBoxs.indexOf(item.value) !== -1) {
  626. this.workYearsActiveBoxs.splice(this.workYearsActiveBoxs.indexOf(item.value), 1);
  627. } else {
  628. this.workYearsActiveBoxs.push(item.value);
  629. }
  630. },
  631. activeCompanySize(item) {
  632. if (this.companySizeActiveBoxs.indexOf(item.value) !== -1) {
  633. this.companySizeActiveBoxs.splice(this.companySizeActiveBoxs.indexOf(item.value), 1);
  634. } else {
  635. this.companySizeActiveBoxs.push(item.value);
  636. }
  637. },
  638. activeCompanyType(item) {
  639. if (this.companyTypeActiveBoxs.indexOf(item.value) !== -1) {
  640. this.companyTypeActiveBoxs.splice(this.companyTypeActiveBoxs.indexOf(item.value), 1);
  641. } else {
  642. this.companyTypeActiveBoxs.push(item.value);
  643. }
  644. },
  645. activeCitys(options) {
  646. this.province = options.province.label;
  647. this.city = options.city.label;
  648. if (this.current === 0) {
  649. this.getCurrentGW();
  650. }
  651. if (this.current === 1) {
  652. this.getCurrentCM();
  653. }
  654. }
  655. }
  656. };
  657. </script>
  658. <style scoped>
  659. .slh {
  660. line-height: 54rpx;
  661. height: 54rpx;
  662. text-align: center;
  663. display: -webkit-box;
  664. overflow: hidden;
  665. text-overflow: ellipsis;
  666. word-wrap: break-word;
  667. white-space: normal !important;
  668. -webkit-line-clamp: 1;
  669. -webkit-box-orient: vertical;
  670. }
  671. .search {
  672. width: 40rpx;
  673. height: 40rpx;
  674. margin-left: 30rpx;
  675. }
  676. .slot-wrap {
  677. display: flex;
  678. align-items: center;
  679. }
  680. .tests {
  681. background-color: #00ffff;
  682. margin-bottom: 20rpx;
  683. }
  684. .swiper {
  685. height: 329rpx;
  686. }
  687. .arr-icon {
  688. width: 40rpx;
  689. height: 40rpx;
  690. }
  691. .popup_t1 {
  692. display: flex;
  693. align-items: center;
  694. padding-left: 35rpx;
  695. border-bottom: 1rpx solid #eee;
  696. height: 57rpx;
  697. margin-top: 86rpx;
  698. }
  699. .mors {
  700. font-size: 30rpx;
  701. font-weight: bold;
  702. color: #999;
  703. }
  704. .activesSty {
  705. font-size: 30rpx;
  706. font-weight: bold;
  707. color: #2a4174;
  708. }
  709. .boxsize {
  710. border-radius: 32rpx;
  711. background: #ffffff;
  712. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(47, 67, 121, 0.05);
  713. margin: 0rpx 35rpx 24rpx;
  714. padding: 22rpx 20rpx;
  715. }
  716. .lines {
  717. height: 196rpx;
  718. display: flex;
  719. flex-direction: column;
  720. justify-content: space-between;
  721. }
  722. .dis_flexs {
  723. display: flex;
  724. margin-bottom: 24rpx;
  725. }
  726. .dis_flexs > .imgboxs {
  727. width: 100rpx;
  728. height: 100rpx;
  729. border-radius: 24rpx;
  730. overflow: hidden;
  731. margin-right: 24rpx;
  732. }
  733. .top_sty {
  734. display: flex;
  735. justify-content: space-between;
  736. }
  737. .dis_foter {
  738. display: flex;
  739. align-items: center;
  740. justify-content: space-between;
  741. }
  742. .dis_f {
  743. display: flex;
  744. align-items: center;
  745. overflow-x: auto;
  746. flex: 1;
  747. margin-right: 20rpx;
  748. }
  749. .right_address {
  750. font-weight: 500;
  751. font-size: 24rpx;
  752. color: #636a75;
  753. }
  754. .fot_size {
  755. height: 32rpx;
  756. line-height: 32rpx;
  757. padding: 0rpx 12rpx;
  758. margin-right: 8rpx;
  759. border-radius: 16rpx;
  760. font-size: 20rpx;
  761. background: #f2f6ff;
  762. flex-shrink: 0;
  763. color: #636a75;
  764. }
  765. .yys {
  766. height: 32rpx;
  767. font-size: 20rpx;
  768. line-height: 32rpx;
  769. padding: 0rpx 12rpx;
  770. margin-right: 8rpx;
  771. border-radius: 16rpx;
  772. color: #fff;
  773. background: #3fefb7;
  774. flex-shrink: 0;
  775. }
  776. .heasd {
  777. font-size: 30rpx;
  778. font-weight: bold;
  779. color: #2a4174;
  780. margin-bottom: 14rpx;
  781. }
  782. .fotHs {
  783. font-size: 20rpx;
  784. font-weight: 500;
  785. color: #636a75;
  786. }
  787. .priceSty {
  788. font-weight: bold;
  789. font-size: 28rpx;
  790. color: #32467b;
  791. }
  792. .headTits {
  793. font-size: 30rpx;
  794. font-weight: bold;
  795. color: #2a4174;
  796. margin-bottom: 26rpx;
  797. }
  798. .lisz {
  799. display: flex;
  800. align-items: center;
  801. }
  802. .lisz > .bqB {
  803. border-radius: 16rpx;
  804. background-color: #f2f6ff;
  805. padding: 0rpx 22rpx;
  806. text-align: center;
  807. height: 32rpx;
  808. line-height: 32rpx;
  809. margin-right: 8rpx;
  810. font-size: 20rpx;
  811. color: #636a75;
  812. }
  813. .tnsz {
  814. display: flex;
  815. align-items: center;
  816. }
  817. .litns {
  818. padding: 0rpx 15rpx;
  819. margin-right: 24rpx;
  820. border-radius: 16rpx;
  821. height: 48rpx;
  822. line-height: 48rpx;
  823. background-color: #32467b;
  824. color: #fff;
  825. box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(47, 67, 121, 0.05);
  826. font-size: 26rpx;
  827. font-weight: bold;
  828. }
  829. .moreLs {
  830. border-radius: 16rpx;
  831. font-size: 26rpx;
  832. font-weight: bold;
  833. color: #32467b;
  834. border: 1rpx solid #32467b;
  835. padding: 0rpx 11rpx;
  836. height: 48rpx;
  837. letter-spacing: 1rpx;
  838. line-height: 40rpx;
  839. }
  840. .flex-d {
  841. display: flex;
  842. flex-direction: column;
  843. justify-content: space-between;
  844. height: 100%;
  845. }
  846. .contentZ {
  847. flex: 1;
  848. overflow-y: auto;
  849. padding-left: 35rpx;
  850. }
  851. .contentZ::-webkit-scrollbar {
  852. display: none;
  853. }
  854. .fots {
  855. height: 100rpx;
  856. display: flex;
  857. align-items: center;
  858. justify-content: space-around;
  859. border-top: 1rpx solid #eee;
  860. }
  861. .leftBtns {
  862. font-size: 30rpx;
  863. color: #32467b;
  864. font-weight: 500;
  865. }
  866. .right_Btns {
  867. font-size: 30rpx;
  868. color: #fff;
  869. background-color: #32467b;
  870. border-radius: 24rpx;
  871. height: 60rpx;
  872. line-height: 60rpx;
  873. text-align: center;
  874. padding: 0rpx 23rpx;
  875. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
  876. }
  877. .heards {
  878. margin: 25rpx 0rpx;
  879. font-size: 24rpx;
  880. color: #32467b;
  881. font-weight: bold;
  882. }
  883. .liszing {
  884. float: left;
  885. width: 161rpx;
  886. height: 57rpx;
  887. text-align: center;
  888. line-height: 57rpx;
  889. border: 1rpx solid transparent;
  890. border-radius: 16rpx;
  891. color: #999;
  892. background-color: #f5f7f9;
  893. margin-right: 13rpx;
  894. margin-bottom: 13rpx;
  895. }
  896. .activesLiszing {
  897. color: #2a4174;
  898. border-color: #2a4174;
  899. }
  900. .priceType {
  901. display: flex;
  902. align-items: center;
  903. margin-bottom: 22rpx;
  904. }
  905. .lstq {
  906. font-size: 30rpx;
  907. color: #999;
  908. font-weight: 400;
  909. margin-right: 27rpx;
  910. }
  911. .activeLstq {
  912. color: #2a4174;
  913. font-weight: 500;
  914. }
  915. .priceInput {
  916. display: flex;
  917. align-items: center;
  918. justify-content: space-between;
  919. padding-right: 56rpx;
  920. }
  921. .inputSty {
  922. border: none;
  923. border-bottom: 1rpx solid #eee;
  924. /* width: 220rpx; */
  925. text-align: center;
  926. }
  927. .dis_ssy {
  928. flex: 1;
  929. display: flex;
  930. align-items: center;
  931. height: 56rpx;
  932. border-radius: 20rpx;
  933. background-color: #f8f9ff;
  934. }
  935. .lszty {
  936. height: 44rpx;
  937. line-height: 44rpx;
  938. width: 50%;
  939. text-align: center;
  940. border-radius: 16rpx;
  941. color: #636a75;
  942. font-size: 24rpx;
  943. transition: all 0.3s;
  944. }
  945. .acszty {
  946. color: #fff;
  947. background: rgba(47, 67, 121, 0.6);
  948. }
  949. </style>