recruitment.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950
  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. this.inits();
  256. this.getDict();
  257. this.advertisingList();
  258. this.triggered = false;
  259. },
  260. restore() {
  261. this.triggered = false;
  262. },
  263. swiperClick(index) {
  264. let item = this.list[index];
  265. uni.navigateTo({
  266. url: item.jumpUrl
  267. });
  268. },
  269. advertisingList() {
  270. let self = this;
  271. this.$api.advertisingList().then(res => {
  272. self.list = res.data.rows.filter((item, index) => {
  273. return item.type === 2;
  274. });
  275. });
  276. },
  277. getDict() {
  278. var self = this;
  279. this.$api.dictList().then(res => {
  280. res.data.data.forEach((item, index) => {
  281. if (item.dictType == 'edu_level') {
  282. self.eduList.push({ label: item.dictLabel, value: item.dictCode });
  283. }
  284. if (item.dictType == 'working_years') {
  285. if (item.dictCode !== 109) {
  286. self.workYearsList.push({ label: item.dictLabel, value: item.dictCode });
  287. }
  288. }
  289. if (item.dictType == 'company_size') {
  290. self.companySizeList.push({ label: item.dictLabel, value: item.dictCode });
  291. }
  292. if (item.dictType == 'company_type') {
  293. self.companyTypeList.push({ label: item.dictLabel, value: item.dictCode });
  294. }
  295. });
  296. });
  297. },
  298. inits() {
  299. this.getCurrentGW();
  300. this.getCurrentCM();
  301. },
  302. jumpSearch() {
  303. this.$navTo.togo('/pages2/index/searchRecruit', {});
  304. },
  305. scroll(e) {},
  306. getCurrentGW(v) {
  307. var self = this;
  308. var data = {
  309. pageNum: this.pageNum,
  310. pageSize: this.pageSize
  311. };
  312. if (this.city !== null && this.province !== null) {
  313. data.province = this.province;
  314. data.city = this.city;
  315. }
  316. if (v) {
  317. if (this.workActiveBoxs.length) {
  318. data.jobNature = this.workActiveBoxs.toString();
  319. }
  320. if (this.incomeStart !== '' || this.incomeEnd !== '') {
  321. if (this.incomeStart !== '' && this.incomeEnd !== '') {
  322. var testPrice = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  323. if (!testPrice.test(Number(this.incomeStart))) {
  324. uni.showToast({
  325. title: '请规范填写最低薪资',
  326. icon: 'none'
  327. });
  328. return;
  329. }
  330. if (!testPrice.test(Number(this.incomeEnd))) {
  331. uni.showToast({
  332. title: '请规范填写最高薪资',
  333. icon: 'none'
  334. });
  335. return;
  336. }
  337. if (Number(this.incomeStart) > Number(this.incomeEnd)) {
  338. uni.showToast({
  339. title: '请规范填写薪资范围',
  340. icon: 'none'
  341. });
  342. return;
  343. }
  344. data.incomeType = this.priceType;
  345. data.incomeList = [{ incomeStart: Number(this.incomeStart), incomeEnd: Number(this.incomeEnd) }];
  346. } else {
  347. uni.showToast({
  348. title: '请填写薪资范围',
  349. icon: 'none'
  350. });
  351. return;
  352. }
  353. }
  354. if (this.eduActiveBoxs.length) {
  355. data.minimumEduDictList = this.eduActiveBoxs.toString();
  356. }
  357. if (this.workYearsActiveBoxs.length) {
  358. data.workingYearsDictList = this.workYearsActiveBoxs.toString();
  359. }
  360. }
  361. this.$api.recruitneedslist(data).then(res => {
  362. if (res.data.code === 200) {
  363. self.total = res.data.total;
  364. res.data.rows.forEach((item, index) => {
  365. if (item.jobNature) {
  366. item.jobNature = item.jobNature.split(',');
  367. }
  368. if (item.welfare) {
  369. item.welfare = item.welfare.split(',');
  370. }
  371. if (item.bonusCertificate) {
  372. item.bonusCertificate = item.bonusCertificate.split(',');
  373. }
  374. });
  375. self.posts = res.data.rows;
  376. self.show = false;
  377. }
  378. });
  379. },
  380. getCurrentCM(v) {
  381. var self = this;
  382. var data1 = {
  383. pageNum: this.pageNum1,
  384. pageSize: this.pageSize1
  385. };
  386. if (this.city !== null && this.province !== null) {
  387. data1.province = this.province;
  388. data1.city = this.city;
  389. }
  390. if (v) {
  391. if (this.companySizeActiveBoxs.length) {
  392. data1.sizeIds = this.companySizeActiveBoxs.toString();
  393. }
  394. if (this.companyTypeActiveBoxs.length) {
  395. data1.typeIds = this.companyTypeActiveBoxs.toString();
  396. }
  397. }
  398. this.$api.recruitcompanyConlist(data1).then(res => {
  399. if (res.data.code === 200) {
  400. self.total1 = res.data.total;
  401. for (let k = 0; k < res.data.rows.length; k++) {
  402. if (res.data.rows[k].recruitNeedsVoList) {
  403. var anum = [];
  404. for (let i = 0; i < res.data.rows[k].recruitNeedsVoList.length; i++) {
  405. if (i >= 3) {
  406. break;
  407. } else {
  408. anum.push(res.data.rows[k].recruitNeedsVoList[i]);
  409. }
  410. }
  411. res.data.rows[k].newNumObj = anum;
  412. }
  413. }
  414. self.enterprise = res.data.rows;
  415. self.show = false;
  416. }
  417. });
  418. },
  419. searchPageInfos() {
  420. var self = this;
  421. if (this.activePopBtn === 0) {
  422. this.current = 0;
  423. this.sxGW = true;
  424. this.getCurrentGW(true);
  425. }
  426. if (this.activePopBtn === 1) {
  427. this.current = 1;
  428. this.sxCM = true;
  429. this.getCurrentCM(true);
  430. }
  431. },
  432. jumpCompany(v) {
  433. var data = {
  434. companyId: v.companyId
  435. };
  436. if (v.recruitNeedsVoList.length > 0) {
  437. data.id = v.recruitNeedsVoList[0].id;
  438. }
  439. this.$navTo.togo('/pages2/recruitment/detailsInfo', data);
  440. },
  441. jumpDetails(v) {
  442. this.$navTo.togo('/pages2/recruitment/detailsInfo', {
  443. id: v.id,
  444. companyId: v.companyId
  445. });
  446. },
  447. scrollTolower() {
  448. var self = this;
  449. if (this.current === 0) {
  450. if (this.total > this.posts.length) {
  451. var data = {
  452. pageNum: this.pageNum + 1,
  453. pageSize: this.pageSize
  454. };
  455. if (this.sxGW) {
  456. if (this.workActiveBoxs.length) {
  457. data.jobNature = this.workActiveBoxs.toString();
  458. }
  459. if (this.incomeStart !== '' || this.incomeEnd !== '') {
  460. if (this.incomeStart !== '' && this.incomeEnd !== '') {
  461. var testPrice = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  462. if (!testPrice.test(Number(this.incomeStart))) {
  463. uni.showToast({
  464. title: '请规范填写最低薪资',
  465. icon: 'none'
  466. });
  467. return;
  468. }
  469. if (!testPrice.test(Number(this.incomeEnd))) {
  470. uni.showToast({
  471. title: '请规范填写最高薪资',
  472. icon: 'none'
  473. });
  474. return;
  475. }
  476. if (Number(this.incomeStart) > Number(this.incomeEnd)) {
  477. uni.showToast({
  478. title: '请规范填写薪资范围',
  479. icon: 'none'
  480. });
  481. return;
  482. }
  483. data.incomeType = this.priceType;
  484. data.incomeList = [{ incomeStart: Number(this.incomeStart), incomeEnd: Number(this.incomeEnd) }];
  485. } else {
  486. uni.showToast({
  487. title: '请填写薪资范围',
  488. icon: 'none'
  489. });
  490. return;
  491. }
  492. }
  493. if (this.eduActiveBoxs.length) {
  494. data.minimumEduDictList = this.eduActiveBoxs.toString();
  495. }
  496. if (this.workYearsActiveBoxs.length) {
  497. data.workingYearsDictList = this.workYearsActiveBoxs.toString();
  498. }
  499. }
  500. this.$api.recruitneedslist(data).then(res => {
  501. if (res.data.code === 200) {
  502. self.pageNum++;
  503. res.data.rows.forEach((item, index) => {
  504. if (item.jobNature) {
  505. item.jobNature = item.jobNature.split(',');
  506. }
  507. if (item.welfare) {
  508. item.welfare = item.welfare.split(',');
  509. }
  510. if (item.bonusCertificate) {
  511. item.bonusCertificate = item.bonusCertificate.split(',');
  512. }
  513. self.posts.push(item);
  514. });
  515. }
  516. });
  517. }
  518. }
  519. if (this.current === 1) {
  520. if (this.total1 > this.enterprise.length) {
  521. var data1 = {
  522. pageNum: this.pageNum1 + 1,
  523. pageSize: this.pageSize1
  524. };
  525. if (this.sxCM) {
  526. if (this.companySizeActiveBoxs.length) {
  527. data1.sizeIds = this.companySizeActiveBoxs.toString();
  528. }
  529. if (this.companyTypeActiveBoxs.length) {
  530. data1.typeIds = this.companyTypeActiveBoxs.toString();
  531. }
  532. }
  533. this.$api.recruitcompanyConlist(data1).then(res => {
  534. if (res.data.code === 200) {
  535. self.pageNum1++;
  536. for (let k = 0; k < res.data.rows.length; k++) {
  537. if (res.data.rows[k].recruitNeedsVoList) {
  538. var anum = [];
  539. for (let i = 0; i < res.data.rows[k].recruitNeedsVoList.length; i++) {
  540. if (i >= 3) {
  541. break;
  542. } else {
  543. anum.push(res.data.rows[k].recruitNeedsVoList[i]);
  544. }
  545. }
  546. res.data.rows[k].newNumObj = anum;
  547. }
  548. self.enterprise.push(res.data.rows[k]);
  549. }
  550. }
  551. });
  552. }
  553. }
  554. },
  555. sectionChange(index) {
  556. this.current = index;
  557. },
  558. initLists() {
  559. if (this.activePopBtn === 0) {
  560. this.priceType = 1; //薪资类型 1月薪2年薪
  561. this.incomeStart = ''; //薪资起点
  562. this.incomeEnd = ''; //薪资结点
  563. this.workActiveBoxs = [];
  564. this.eduActiveBoxs = [];
  565. this.workYearsActiveBoxs = [];
  566. this.province = null;
  567. this.city = null;
  568. this.sxGW = false;
  569. this.getCurrentGW();
  570. }
  571. if (this.activePopBtn === 1) {
  572. this.companySizeActiveBoxs = [];
  573. this.companyTypeActiveBoxs = [];
  574. this.province = null;
  575. this.city = null;
  576. this.sxCM = false;
  577. this.getCurrentCM();
  578. }
  579. },
  580. initAll() {
  581. if (this.current === 0) {
  582. this.priceType = 1; //薪资类型 1月薪2年薪
  583. this.incomeStart = ''; //薪资起点
  584. this.incomeEnd = ''; //薪资结点
  585. this.workActiveBoxs = [];
  586. this.eduActiveBoxs = [];
  587. this.workYearsActiveBoxs = [];
  588. this.sxGW = false;
  589. this.getCurrentGW();
  590. }
  591. if (this.current === 1) {
  592. this.companySizeActiveBoxs = [];
  593. this.companyTypeActiveBoxs = [];
  594. this.sxCM = false;
  595. this.getCurrentCM();
  596. }
  597. },
  598. showStatus() {
  599. if(this.current === 0){
  600. this.activePopBtn = 0
  601. }
  602. if(this.current === 1){
  603. this.activePopBtn = 1
  604. }
  605. this.show = true;
  606. },
  607. activeWorkType(item) {
  608. if (this.workActiveBoxs.indexOf(item) !== -1) {
  609. this.workActiveBoxs.splice(this.workActiveBoxs.indexOf(item), 1);
  610. } else {
  611. this.workActiveBoxs.push(item);
  612. }
  613. },
  614. activeEduType(item) {
  615. if (this.eduActiveBoxs.indexOf(item.value) !== -1) {
  616. this.eduActiveBoxs.splice(this.eduActiveBoxs.indexOf(item.value), 1);
  617. } else {
  618. this.eduActiveBoxs.push(item.value);
  619. }
  620. },
  621. activeWorkYearsType(item) {
  622. if (this.workYearsActiveBoxs.indexOf(item.value) !== -1) {
  623. this.workYearsActiveBoxs.splice(this.workYearsActiveBoxs.indexOf(item.value), 1);
  624. } else {
  625. this.workYearsActiveBoxs.push(item.value);
  626. }
  627. },
  628. activeCompanySize(item) {
  629. if (this.companySizeActiveBoxs.indexOf(item.value) !== -1) {
  630. this.companySizeActiveBoxs.splice(this.companySizeActiveBoxs.indexOf(item.value), 1);
  631. } else {
  632. this.companySizeActiveBoxs.push(item.value);
  633. }
  634. },
  635. activeCompanyType(item) {
  636. if (this.companyTypeActiveBoxs.indexOf(item.value) !== -1) {
  637. this.companyTypeActiveBoxs.splice(this.companyTypeActiveBoxs.indexOf(item.value), 1);
  638. } else {
  639. this.companyTypeActiveBoxs.push(item.value);
  640. }
  641. },
  642. activeCitys(options) {
  643. this.province = options.province.label;
  644. this.city = options.city.label;
  645. if (this.current === 0) {
  646. this.getCurrentGW();
  647. }
  648. if (this.current === 1) {
  649. this.getCurrentCM();
  650. }
  651. }
  652. }
  653. };
  654. </script>
  655. <style scoped>
  656. .slh {
  657. line-height: 54rpx;
  658. height: 54rpx;
  659. text-align: center;
  660. display: -webkit-box;
  661. overflow: hidden;
  662. text-overflow: ellipsis;
  663. word-wrap: break-word;
  664. white-space: normal !important;
  665. -webkit-line-clamp: 1;
  666. -webkit-box-orient: vertical;
  667. }
  668. .search {
  669. width: 40rpx;
  670. height: 40rpx;
  671. margin-left: 30rpx;
  672. }
  673. .slot-wrap {
  674. display: flex;
  675. align-items: center;
  676. }
  677. .tests {
  678. background-color: #00ffff;
  679. margin-bottom: 20rpx;
  680. }
  681. .swiper {
  682. height: 329rpx;
  683. }
  684. .arr-icon {
  685. width: 40rpx;
  686. height: 40rpx;
  687. }
  688. .popup_t1 {
  689. display: flex;
  690. align-items: center;
  691. padding-left: 35rpx;
  692. border-bottom: 1rpx solid #eee;
  693. height: 57rpx;
  694. margin-top: 86rpx;
  695. }
  696. .mors {
  697. font-size: 30rpx;
  698. font-weight: bold;
  699. color: #999;
  700. }
  701. .activesSty {
  702. font-size: 30rpx;
  703. font-weight: bold;
  704. color: #2a4174;
  705. }
  706. .boxsize {
  707. border-radius: 32rpx;
  708. background: #ffffff;
  709. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(47, 67, 121, 0.05);
  710. margin: 0rpx 35rpx 24rpx;
  711. padding: 22rpx 20rpx;
  712. }
  713. .lines {
  714. height: 196rpx;
  715. display: flex;
  716. flex-direction: column;
  717. justify-content: space-between;
  718. }
  719. .dis_flexs {
  720. display: flex;
  721. margin-bottom: 24rpx;
  722. }
  723. .dis_flexs > .imgboxs {
  724. width: 100rpx;
  725. height: 100rpx;
  726. border-radius: 24rpx;
  727. overflow: hidden;
  728. margin-right: 24rpx;
  729. }
  730. .top_sty {
  731. display: flex;
  732. justify-content: space-between;
  733. }
  734. .dis_foter {
  735. display: flex;
  736. align-items: center;
  737. justify-content: space-between;
  738. }
  739. .dis_f {
  740. display: flex;
  741. align-items: center;
  742. overflow-x: auto;
  743. flex: 1;
  744. margin-right: 20rpx;
  745. }
  746. .right_address {
  747. font-weight: 500;
  748. font-size: 24rpx;
  749. color: #636a75;
  750. }
  751. .fot_size {
  752. height: 32rpx;
  753. line-height: 32rpx;
  754. padding: 0rpx 12rpx;
  755. margin-right: 8rpx;
  756. border-radius: 16rpx;
  757. font-size: 20rpx;
  758. background: #f2f6ff;
  759. flex-shrink: 0;
  760. color: #636a75;
  761. }
  762. .yys {
  763. height: 32rpx;
  764. font-size: 20rpx;
  765. line-height: 32rpx;
  766. padding: 0rpx 12rpx;
  767. margin-right: 8rpx;
  768. border-radius: 16rpx;
  769. color: #fff;
  770. background: #3fefb7;
  771. flex-shrink: 0;
  772. }
  773. .heasd {
  774. font-size: 30rpx;
  775. font-weight: bold;
  776. color: #2a4174;
  777. margin-bottom: 14rpx;
  778. }
  779. .fotHs {
  780. font-size: 20rpx;
  781. font-weight: 500;
  782. color: #636a75;
  783. }
  784. .priceSty {
  785. font-weight: bold;
  786. font-size: 28rpx;
  787. color: #32467b;
  788. }
  789. .headTits {
  790. font-size: 30rpx;
  791. font-weight: bold;
  792. color: #2a4174;
  793. margin-bottom: 26rpx;
  794. }
  795. .lisz {
  796. display: flex;
  797. align-items: center;
  798. }
  799. .lisz > .bqB {
  800. border-radius: 16rpx;
  801. background-color: #f2f6ff;
  802. padding: 0rpx 22rpx;
  803. text-align: center;
  804. height: 32rpx;
  805. line-height: 32rpx;
  806. margin-right: 8rpx;
  807. font-size: 20rpx;
  808. color: #636a75;
  809. }
  810. .tnsz {
  811. display: flex;
  812. align-items: center;
  813. }
  814. .litns {
  815. padding: 0rpx 15rpx;
  816. margin-right: 24rpx;
  817. border-radius: 16rpx;
  818. height: 48rpx;
  819. line-height: 48rpx;
  820. background-color: #32467b;
  821. color: #fff;
  822. box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(47, 67, 121, 0.05);
  823. font-size: 26rpx;
  824. font-weight: bold;
  825. }
  826. .moreLs {
  827. border-radius: 16rpx;
  828. font-size: 26rpx;
  829. font-weight: bold;
  830. color: #32467b;
  831. border: 1rpx solid #32467b;
  832. padding: 0rpx 11rpx;
  833. height: 48rpx;
  834. letter-spacing: 1rpx;
  835. line-height: 40rpx;
  836. }
  837. .flex-d {
  838. display: flex;
  839. flex-direction: column;
  840. justify-content: space-between;
  841. height: 100%;
  842. }
  843. .contentZ {
  844. flex: 1;
  845. overflow-y: auto;
  846. padding-left: 35rpx;
  847. }
  848. .contentZ::-webkit-scrollbar {
  849. display: none;
  850. }
  851. .fots {
  852. height: 100rpx;
  853. display: flex;
  854. align-items: center;
  855. justify-content: space-around;
  856. border-top: 1rpx solid #eee;
  857. }
  858. .leftBtns {
  859. font-size: 30rpx;
  860. color: #32467b;
  861. font-weight: 500;
  862. }
  863. .right_Btns {
  864. font-size: 30rpx;
  865. color: #fff;
  866. background-color: #32467b;
  867. border-radius: 24rpx;
  868. height: 60rpx;
  869. line-height: 60rpx;
  870. text-align: center;
  871. padding: 0rpx 23rpx;
  872. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
  873. }
  874. .heards {
  875. margin: 25rpx 0rpx;
  876. font-size: 24rpx;
  877. color: #32467b;
  878. font-weight: bold;
  879. }
  880. .liszing {
  881. float: left;
  882. width: 161rpx;
  883. height: 57rpx;
  884. text-align: center;
  885. line-height: 57rpx;
  886. border: 1rpx solid transparent;
  887. border-radius: 16rpx;
  888. color: #999;
  889. background-color: #f5f7f9;
  890. margin-right: 13rpx;
  891. margin-bottom: 13rpx;
  892. }
  893. .activesLiszing {
  894. color: #2a4174;
  895. border-color: #2a4174;
  896. }
  897. .priceType {
  898. display: flex;
  899. align-items: center;
  900. margin-bottom: 22rpx;
  901. }
  902. .lstq {
  903. font-size: 30rpx;
  904. color: #999;
  905. font-weight: 400;
  906. margin-right: 27rpx;
  907. }
  908. .activeLstq {
  909. color: #2a4174;
  910. font-weight: 500;
  911. }
  912. .priceInput {
  913. display: flex;
  914. align-items: center;
  915. justify-content: space-between;
  916. padding-right: 56rpx;
  917. }
  918. .inputSty {
  919. border: none;
  920. border-bottom: 1rpx solid #eee;
  921. /* width: 220rpx; */
  922. text-align: center;
  923. }
  924. .dis_ssy {
  925. flex: 1;
  926. display: flex;
  927. align-items: center;
  928. height: 56rpx;
  929. border-radius: 20rpx;
  930. background-color: #f8f9ff;
  931. }
  932. .lszty {
  933. height: 44rpx;
  934. line-height: 44rpx;
  935. width: 50%;
  936. text-align: center;
  937. border-radius: 16rpx;
  938. color: #636a75;
  939. font-size: 24rpx;
  940. transition: all 0.3s;
  941. }
  942. .acszty {
  943. color: #fff;
  944. background: rgba(47, 67, 121, 0.6);
  945. }
  946. </style>