index.vue 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464
  1. <template>
  2. <div class="index" style="padding-bottom: 40px;">
  3. <!-- 搜索 -->
  4. <el-affix @change="change" :offset="60" style="width: 100%;">
  5. <div :style="isTop==true?'background:#ffffff;box-shadow: 0 10px 8px rgba(153, 153, 153, 0.1);':''"
  6. class="search flex align-center justify-center">
  7. <div class="search-box flex align-center justify-between">
  8. <div class="search-box-l flex align-center" @click="openCityDialog">
  9. <el-image style="width: 16px; height: 18px;margin-right: 5px;"
  10. src="/images/index/addressIcon.png" fit="cover" />
  11. <el-text style="color: #00DD9A;font-size: 16px;margin-right: 10px;">{{city}}</el-text>
  12. [切换城市]
  13. </div>
  14. <div class="search-box-c flex align-center justify-between">
  15. <div class="search-box-c-l flex align-center justify-center">
  16. <el-popover :show-arrow="false" :visible="visible" placement="bottom" title="热门搜索"
  17. width="calc(55vw - 100px)">
  18. <template #reference>
  19. <el-input @focus="Myfocus" @blur="visible = false" @keyup.enter="goSearch()"
  20. v-model="keyWord" placeholder="搜索职位、公司" />
  21. </template>
  22. <div class="searchLabel flex algin-center flex-wrap">
  23. <div class="searchLabel-item" @click="selectLabel(item.keyWord)"
  24. v-for="(item,index) in searchList" :key="index">
  25. {{item.keyWord}}
  26. </div>
  27. </div>
  28. </el-popover>
  29. </div>
  30. <div @click="goSearch()" class="search-box-c-r flex align-center justify-center">
  31. <el-image style="width: 20px; height: 20px;margin-right: 8px;"
  32. src="/images/index/search.png" fit="cover" />
  33. 搜索
  34. </div>
  35. </div>
  36. <div class="search-box-r flex align-center justify-center">
  37. <el-image style="width: 20px; height: 30px;margin-right: 10px;" src="/images/index/phone.png"
  38. fit="cover" />
  39. <div class="search-box-r-c">
  40. <div class="search-box-r-c-t">
  41. 扫描二维码
  42. </div>
  43. <div class="search-box-r-c-b">
  44. 不错过每条消息
  45. </div>
  46. </div>
  47. <div class="search-box-r-rq">
  48. <div class="search-box-r-rq-img">
  49. <img :src="options" style="width: 160px;height: auto;" />
  50. </div>
  51. <div class="search-box-r-rq-txt">
  52. 微信扫描二维码
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </el-affix>
  59. <!-- 切换类型 -->
  60. <div class="tabs flex align-center justify-center">
  61. <div class="tabs-box">
  62. <div @click="selectTabs(index)" :class="tabsCurr == index?'tabs-box-item-active':''"
  63. class="tabs-box-item" v-for="(item,index) in tabs" :key="index">
  64. {{item.name}}
  65. </div>
  66. </div>
  67. </div>
  68. <!-- banner/类型 -->
  69. <div v-if="bannerType.length>0" class="typeBanner flex align-center justify-center">
  70. <div @mouseleave="mouseLeave" class="typeBanner-box flex align-center justify-center">
  71. <div class="typeBanner-box-l ">
  72. <div :class="shotypeCurr == index && isShoType ?'typeBanner-box-l-item-active':''"
  73. @mouseenter="mouseEnter(index)" class="typeBanner-box-l-item flex align-center justify-between"
  74. v-for="(item,index) in bannerType" :key="index">
  75. <!-- <div class="typeBanner-box-l-item-l flex align-center">
  76. {{item?.ruleClassifyName}}
  77. <div v-if="item.childrens.length>0" v-for="(ite,ind) in item.childrens" :key="ind">
  78. <div class="typeBanner-box-l-item-l-i" v-if="ind<3">
  79. <div>
  80. {{ite.title}}
  81. </div>
  82. </div>
  83. </div>
  84. </div> -->
  85. <div>
  86. <!-- 一级分类 -->
  87. <div class="first-title">{{ item.ruleClassifyName }}</div>
  88. <!-- 二级分类 -->
  89. <div v-if="item.childrens && item.childrens.length" class="flex" style="flex-direction: column;gap: 20px;">
  90. <div v-for="(child, cIndex) in item.childrens.slice(0, 7)" :key="cIndex" class="second-block flex align-center">
  91. <div class="second-title" v-if="child.title">
  92. {{ child.title }}
  93. </div>
  94. <!-- 三级分类 -->
  95. <div class="third-list flex" v-if="child.childrens && child.childrens.length">
  96. <div v-for="(sub, sIndex) in child.childrens.slice(0, 3)"
  97. :key="sIndex"
  98. class="third-item"
  99. >
  100. {{ sub.ruleClassifyName }}
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="typeBanner-box-l-item-r">
  107. <el-icon :size="15" color="#333333">
  108. <CaretRight />
  109. </el-icon>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="typeBanner-box-r" v-if="isShoType == false">
  114. <el-carousel :interval="6000" trigger="click" style="height: 470px;" autoplay>
  115. <el-carousel-item v-for="item in bannerListuser" style="height: 470px;" :key="item">
  116. <el-image style="width: 100%; height: 470px;border-radius: 0 24px 24px 0;"
  117. :src="item.imageUrl" fit="fill" />
  118. </el-carousel-item>
  119. </el-carousel>
  120. </div>
  121. <div class="typeBanner-box-r typeBanner-box-c" v-else>
  122. <div class="typeBanner-box-c-title">
  123. {{bannerType[shotypeCurr]?.ruleClassifyName}}
  124. </div>
  125. <div class="typeBanner-box-c-item flex justify-between flex-wrap"
  126. v-for="(ite,ind) in bannerType[shotypeCurr].childrens" :key="ind">
  127. <div class="typeBanner-box-c-item-l">
  128. {{ite.title}}
  129. </div>
  130. <div v-if="ite.childrens.length>0" class="typeBanner-box-c-item-r flex align-center flex-wrap">
  131. <div @click="selectLabel(it?.ruleClassifyName)" class="typeBanner-box-c-item-r-i"
  132. v-for="(it,ins) in ite.childrens" :key="ins">
  133. {{it?.ruleClassifyName}}
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <!-- 推荐 -->
  141. <div class="tuijian flex align-center justify-center">
  142. <div class="tuijian-box flex align-center justify-between">
  143. <div>
  144. 为你推荐
  145. <div class="tuijian-box-line"></div>
  146. </div>
  147. <div v-if="jobTypeList.citys" class="tuijian-r flex align-center">
  148. <el-image style="width: 26px; height: 26px;border-radius: 50%;margin-right: 10px;" :src="avatar"
  149. fit="cover" />
  150. 根据求职期望匹配:{{jobTypeList.citys}}<el-divider
  151. direction="vertical" />{{jobTypeList?.ruleClassifyName}}<el-divider
  152. direction="vertical" />{{jobTypeList.salaryRange}}
  153. </div>
  154. </div>
  155. </div>
  156. <div class="list flex align-center justify-center">
  157. <div v-loading="loading" class="list-box flex justify-between flex-wrap">
  158. <div v-if="recommendList.length!=0" class="list-box-item" @click="goDetails(item)"
  159. v-for="(item,index) in recommendList" :key="index">
  160. <div class="list-box-item-title flex align-center justify-between">
  161. <div class="list-box-item-title-name">
  162. {{ item?.ruleClassifyName }}
  163. </div>
  164. <div class="list-box-item-title-price">
  165. {{ item.salaryRange }}
  166. </div>
  167. </div>
  168. <!-- 公司名称-公司人数 -->
  169. <div class="list-box-item-title flex align-center justify-between">
  170. <div style="margin: 10px 0;">
  171. <span class="company-name" style="margin-right: 8rpx;">{{ item.company?.companyName || item.company?.companyAllName }}</span>&nbsp;
  172. <span class="company-people" v-if="item.company">{{ item.company ?
  173. item.company.companyPeople : '0人' }}</span>
  174. </div>
  175. </div>
  176. <!-- 职位标签 -->
  177. <div class="gwList-box-item-box-label flex align-center flex-wrap">
  178. <span class="job-tag">{{ item.education }}</span>
  179. <span class="job-tag">{{ item.experience }}</span>
  180. <span class="job-tag" v-for="(ite, ind) in parseWelfareTag(item.welfareTag)" :key="ind">{{ ite
  181. }}</span>
  182. </div>
  183. <!-- 公司简介-位置 -->
  184. <div class="list-box-item-info flex align-center justify-between">
  185. <div class="gwList-box-item-box-info-l flex align-center">
  186. <img :src="item.hr && item.hr.hrImg ? item.hr.hrImg : '/default.jpg'"
  187. style="width: 40px;height: 40px;border-radius: 50%;" mode="">
  188. </img>
  189. <div class="company-info-text">
  190. {{ item.user && item.user.userName || '未知' }}·{{ item.hr && item.hr.hrPosition || '未知' }}
  191. </div>
  192. <div v-if="item.respondTime" class="reply-time">{{ item.respondTime }}
  193. </div>
  194. </div>
  195. <div class="location-text">
  196. {{ formatDistance(item.distance) }} {{ item.county }}
  197. </div>
  198. </div>
  199. </div>
  200. <div class="list-box-item" style="height: 0;padding: 0;"></div>
  201. </div>
  202. </div>
  203. <el-empty v-if="recommendList.length==0" description="暂无推荐" />
  204. <!-- 查看更多 -->
  205. <div v-if="recommendList.length!=0" class="moreData flex align-center justify-center">
  206. <div @click="selectLabel('')" class="moreData-box flex align-center justify-center">
  207. 查看更多
  208. </div>
  209. </div>
  210. <!-- 最新招聘 -->
  211. <div class="tuijian flex align-center justify-center">
  212. <div class="tuijian-box flex align-center justify-between">
  213. <div>
  214. 最新招聘
  215. <div class="tuijian-box-line"></div>
  216. </div>
  217. </div>
  218. </div>
  219. <div class="list flex align-center justify-center">
  220. <div v-loading="loadings" class="list-box flex justify-between flex-wrap">
  221. <div v-if="recommendLists.length!=0" @click="goDetails(item)" class="list-box-item"
  222. v-for="(item,index) in recommendLists" :key="index">
  223. <div class="list-box-item-title flex align-center justify-between">
  224. <div class="list-box-item-title-name">
  225. {{ item?.ruleClassifyName }}
  226. </div>
  227. <div class="list-box-item-title-price">
  228. {{ item.salaryRange }}
  229. </div>
  230. </div>
  231. <!-- 公司名称-公司人数 -->
  232. <div class="list-box-item-title flex align-center justify-between">
  233. <div style="margin: 10px 0;">
  234. <span class="company-name" style="margin-right: 8rpx;">{{ item.company?.companyName || item.company?.companyAllName }}</span>&nbsp;
  235. <span class="company-people" v-if="item.company">{{ item.company ?
  236. item.company.companyPeople : '0人' }}</span>
  237. </div>
  238. </div>
  239. <!-- 职位标签 -->
  240. <div class="gwList-box-item-box-label flex align-center flex-wrap">
  241. <span class="job-tag">{{ item.education }}</span>
  242. <span class="job-tag">{{ item.experience }}</span>
  243. <span class="job-tag" v-for="(ite, ind) in parseWelfareTag(item.welfareTag)" :key="ind">{{ ite
  244. }}</span>
  245. </div>
  246. <!-- 公司简介-位置 -->
  247. <div class="list-box-item-info flex align-center justify-between">
  248. <div class="gwList-box-item-box-info-l flex align-center">
  249. <img :src="item.hr && item.hr.hrImg ? item.hr.hrImg : '/default.jpg'"
  250. style="width: 40px;height: 40px;border-radius: 50%;" mode="">
  251. </img>
  252. <div class="company-info-text">
  253. {{ item.user && item.user.userName || '未知' }}·{{ item.hr &&
  254. item.hr.hrPosition || '未知' }}
  255. </div>
  256. <div v-if="item.respondTime" class="reply-time">{{ item.respondTime }}
  257. </div>
  258. </div>
  259. <div class="location-text">
  260. {{ formatDistance(item.distance) }} {{ item.county }}
  261. </div>
  262. </div>
  263. </div>
  264. <div class="list-box-item" style="height: 0;padding: 0;"></div>
  265. </div>
  266. </div>
  267. <el-empty v-if="recommendLists.length==0" description="暂无推荐" />
  268. <!-- 查看更多 -->
  269. <div v-if="recommendLists.length>0" class="moreData flex align-center justify-center">
  270. <div @click="selectLabel('')" class="moreData-box flex align-center justify-center">
  271. 查看更多
  272. </div>
  273. </div>
  274. <!-- 暂无简历提示框 -->
  275. <resumeTipsComp v-if="shoModal" :show="shoModal" @close="shoModal = false" @addResume="addResume" />
  276. <!-- 切换城市 -->
  277. <el-dialog v-model="allCitys" :draggable="true" destroy-on-close align-center center>
  278. <template #header>
  279. <div class="my-header flex align-center">
  280. <div class="my-header-title" style="font-weight: bold">
  281. 城市选择
  282. </div>
  283. <div class="my-header-title flex" style="margin-left: 40px; width: 300px">
  284. <el-input v-model="search" prefix-icon="Search" size="default" placeholder="请输入城市名称"
  285. @keyup.enter="handleSearch()" class="inputClass">
  286. </el-input>
  287. <el-button @click="handleSearch" style="margin-left: 10px" type="primary">搜索</el-button>
  288. </div>
  289. </div>
  290. </template>
  291. <div class="city flex align-center justify-center">
  292. <div class="city-box">
  293. <div class="city-box-city">
  294. <div class="city-box-cityt flex align-center justify-between">
  295. 定位城市
  296. <div @click="getLocation()" class="city-box-cityt-r flex align-center">
  297. <el-icon :size="14" name="RefreshRight" />
  298. 重新定位
  299. </div>
  300. </div>
  301. <div @click="selectCity(citys)" class="city-box-citys">{{ citys }}</div>
  302. </div>
  303. <div class="city-box-list">
  304. <ul class="city-box-lists" style="overflow: auto">
  305. <li class="city-box-lists-title">热门城市</li>
  306. <li class="city-box-lists-title-cs flex align-center flex-wrap">
  307. <div @click="selectCity(item)" class="city-box-lists-title-css"
  308. v-for="(item, index) in rmCity" :key="index">
  309. {{ item }}
  310. </div>
  311. </li>
  312. <li v-for="(item, index) in cityGroupList" :key="index" class="city-box-lists-item">
  313. <div v-if="item.city.length > 0">
  314. <div class="city-box-lists-item-title">
  315. {{ item.letter }}
  316. </div>
  317. <div class="flex align-center flex-wrap">
  318. <div class="city-box-lists-item-titles flex align-center"
  319. v-for="(ite, ind) in item.city" :key="ind">
  320. <div @click="selectCity(ite)">
  321. {{ ite }}
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. </li>
  327. <el-empty v-if="cityGroupList.length == 0" description="暂无城市" />
  328. </ul>
  329. </div>
  330. </div>
  331. </div>
  332. </el-dialog>
  333. </div>
  334. </template>
  335. <script>
  336. import cityJs from '../../publicJs/city.js'
  337. import citySelect from '../../publicJs/citySelect.js'
  338. import axios from 'axios';
  339. import jsonp from 'axios-jsonp'
  340. import VueQrcode from 'vue-qrcode'
  341. import resumeTipsComp from '../../components/resumeTipsComp/resumeTipsComp.vue'
  342. export default {
  343. components: {
  344. VueQrcode,
  345. resumeTipsComp
  346. },
  347. data() {
  348. return {
  349. visible: false, //是否显示热门搜索
  350. size: 160, //二维码大小
  351. qrColor: {
  352. 'background': '#ffffff'
  353. },
  354. options: '', //生成二维码的内容
  355. allCitys: false, //是否显示全部城市弹框
  356. keyWord: '', //搜索内容
  357. isTop: false,
  358. searchBg: 'background:#ffffff',
  359. tabsCurr: 0,
  360. tabs: [{ name: '全日制', id: 1 },{ name: '兼职', id: 0 },{ name: '校招', id: 2 }, { name: '社招', id: 3 }],
  361. bannerType: [], //岗位分类
  362. recommendList: [], //推荐岗位
  363. recommendLists: [], //最新岗位
  364. isShoType: false,
  365. shotypeCurr: 0,
  366. isResume: false, //是否有简历
  367. shoModal: false, //暂无简历提示弹窗
  368. city: '', //当前选择的城市
  369. citys: '', //定位的城市
  370. longitude: '',
  371. latitude: '',
  372. cityList: cityJs, //所有的城市
  373. //城市选择弹框相关
  374. search: '', //城市搜索关键字
  375. cityGroupList: [], //按字母分组的城市列表
  376. rmCity: [], //热门城市列表
  377. jobTypeList: {}, //求职意向第一个
  378. loading: false,
  379. loadings: false,
  380. bannerListuser: [], //用户端轮播图
  381. searchList: [], //热门搜索列表
  382. }
  383. },
  384. computed: {
  385. avatar() {
  386. return this.$store.state.avatar;
  387. },
  388. },
  389. mounted() {
  390. if (localStorage.getItem('city')) {
  391. this.city = localStorage.getItem('city')
  392. }
  393. let inviterCode = this.$route.query.inviterCode
  394. if (inviterCode) {
  395. localStorage.setItem('inviterCode', inviterCode)
  396. }
  397. //app下载地址
  398. this.getAppDown()
  399. //获取热门搜索
  400. this.getMyRecordList();
  401. //岗位分类
  402. this.getJobTypeList();
  403. //banner
  404. this.getBannerList();
  405. //所有城市的列表
  406. // this.getAllCityList();
  407. if (localStorage.getItem('token')) {
  408. //求职意向
  409. this.getJobYx();
  410. //简历详情
  411. this.getJlInfo();
  412. }
  413. },
  414. methods: {
  415. //获取app下载地址
  416. getAppDown() {
  417. this.$Request.get('/app/common/type/423').then(res => {
  418. if (res.code == 0) {
  419. this.options = res.data.value
  420. }
  421. })
  422. },
  423. //选择热门搜索并跳转
  424. selectLabel(item) {
  425. this.keyWord = item
  426. this.goSearch()
  427. },
  428. //显示热门搜索
  429. Myfocus() {
  430. if (this.searchList.length > 0) {
  431. //有热门搜索才显示
  432. this.visible = true
  433. } else {
  434. //没有热门搜索不显示
  435. this.visible = false
  436. }
  437. },
  438. //获取热门搜索
  439. getMyRecordList() {
  440. let data = {
  441. userId: localStorage.getItem('userId') ? localStorage.getItem('userId') : '1'
  442. }
  443. this.$Request.get('/app/record/getMyRecordList', {
  444. params: data
  445. }).then(res => {
  446. if (res.code == 0 && res.data) {
  447. this.searchList = res.data.records
  448. }
  449. })
  450. },
  451. //去搜索页面
  452. goSearch() {
  453. this.$router.push({
  454. name: 'search',
  455. query: {
  456. keyWord: this.keyWord
  457. }
  458. })
  459. },
  460. //获取banner
  461. getBannerList() {
  462. this.$Request.get('/app/banner/selectBannerList?classify=1').then(res => {
  463. if (res.code == 0) {
  464. this.bannerListuser = res.data
  465. } else {
  466. this.bannerListuser = [
  467. 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fphoto%2F2007-11-7%2F200711072147151187.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1674883340&t=4b9cbb7796600699ac28f75cd138ba04'
  468. ]
  469. }
  470. })
  471. },
  472. //获取岗位分类
  473. getJobTypeList() {
  474. this.$Request.get('/app/rule/getClassifyList').then(res => {
  475. if (res.code == 0) {
  476. if (res.data) {
  477. this.bannerType = res.data
  478. }
  479. }
  480. })
  481. },
  482. //获取简历
  483. getJlInfo() {
  484. this.$Request.get("/app/userFirst/getUserResumes").then(res => {
  485. if (res.code == 0) {
  486. if (res.data) {
  487. this.isResume = true
  488. //缓存简历id
  489. localStorage.setItem('resumeId', res.data.resumeList.resumesId)
  490. } else {
  491. this.isResume = false
  492. }
  493. } else {
  494. this.isResume = false
  495. }
  496. })
  497. },
  498. //获取职位 type: 1、推荐 2、最新
  499. getRecommendJob(type) {
  500. let data = {}
  501. if (Number(type) === 1) {
  502. this.loading = true
  503. data = {
  504. page: 1,
  505. limit: 9,
  506. type: this.tabs[this.tabsCurr].id, //工作性质
  507. ruleClassifyName: this.jobTypeList?.ruleClassifyName, //岗位名称
  508. screen: 1, //1推荐 2最新
  509. city: this.city || '', //城市
  510. salaryRange: this.formatSalaryRange(this.jobTypeList.salaryRange), //薪资范围
  511. education: '', //学历
  512. experience: '', //经验
  513. industry:'', //行业
  514. preference: '',//this.jobTypeList.industry || '',//偏好
  515. companyPeople: '', //公司规模
  516. lng: this.longitude,
  517. lat: this.latitude,
  518. // userId: localStorage.getItem('userId') ? localStorage.getItem('userId') : ''
  519. }
  520. } else {
  521. this.loadings = true
  522. data = {
  523. page: 1,
  524. limit: 9,
  525. type: this.tabs[this.tabsCurr].id, //工作性质
  526. ruleClassifyName: '', //岗位名称
  527. screen: 2, //1推荐 2最新
  528. city: this.city || '', //城市
  529. salaryRange: '', //薪资范围
  530. education: '', //学历
  531. experience: '', //经验
  532. industry: '', //行业
  533. preference: '',//偏好
  534. companyPeople: '', //公司规模
  535. lng: this.longitude,
  536. lat: this.latitude,
  537. // userId: localStorage.getItem('userId') ? localStorage.getItem('userId') : ''
  538. }
  539. }
  540. this.$Request.get('/app/postPush/userGetPostPushList', {
  541. params: data
  542. }).then(res => {
  543. if (res.code == 0) {
  544. // recommendList
  545. res.data.records.map(item => {
  546. if (item.positionWelfare) {
  547. item.positionWelfare = item.positionWelfare.split(',')
  548. } else {
  549. item.positionWelfare = []
  550. }
  551. })
  552. if (Number(type) == 1) {
  553. this.recommendList = res.data.records
  554. this.loading = false
  555. } else {
  556. this.recommendLists = res.data.records
  557. this.loadings = false
  558. }
  559. }
  560. })
  561. },
  562. //获取求职意向
  563. getJobYx() {
  564. this.$Request.get('/app/intention/getIntentionList').then(res => {
  565. if (res.code == 0 && res.data.length > 0) {
  566. res.data.map(item => {
  567. if (item.isDefault == 1) { //拿出第一意向
  568. this.jobTypeList = item
  569. }
  570. })
  571. this.getLocation();
  572. }
  573. })
  574. },
  575. //选择城市
  576. selectCity(city) {
  577. this.city = city
  578. this.allCitys = false
  579. localStorage.setItem('city', this.city)
  580. //重新获取岗位
  581. this.getRecommendJob(1)
  582. this.getRecommendJob(2)
  583. },
  584. //打开城市选择弹框
  585. openCityDialog() {
  586. this.allCitys = true;
  587. },
  588. //打开城市选择弹框
  589. openCityDialog() {
  590. this.allCitys = true;
  591. this.search = '';
  592. //获取热门城市列表
  593. this.getRmCityList();
  594. //获取按字母分组的城市列表
  595. this.getCityGroupList();
  596. },
  597. //获取热门城市列表
  598. getRmCityList() {
  599. let data = {
  600. limitCount: 10
  601. };
  602. this.$Request
  603. .get('/app/postPush/getHotCity', { params: data })
  604. .then(res => {
  605. if (res.code == 0) {
  606. this.rmCity = res.data;
  607. }
  608. });
  609. },
  610. //获取按字母分组的城市列表
  611. getCityGroupList(keyword = '') {
  612. const grouped = {};
  613. // 过滤:如果有关键字,就按城市名模糊匹配
  614. const filtered = keyword
  615. ? cityJs.filter(item => item.label.includes(keyword))
  616. : cityJs;
  617. // 遍历城市数据
  618. filtered.forEach(item => {
  619. // 按字母分组
  620. const letterObj = citySelect.getFirstLetter(item.label);
  621. const letter = letterObj.firstletter.toUpperCase();
  622. if (!grouped[letter]) grouped[letter] = [];
  623. grouped[letter].push(item.label);
  624. });
  625. // 生成按字母分组的城市列表
  626. const sortedLetters = Object.keys(grouped).sort();
  627. this.cityGroupList = sortedLetters.map(letter => ({
  628. letter,
  629. city: grouped[letter]
  630. }));
  631. },
  632. //搜索城市
  633. handleSearch() {
  634. this.getCityGroupList(this.search.trim());
  635. },
  636. //使用jsonp请求从腾讯地图获取经纬度
  637. getLocation() {
  638. let data = {
  639. key: "ZBABZ-ZWECU-UQTVV-4LYDR-COK3F-5SF75", //申请的密钥
  640. output: "jsonp",
  641. };
  642. let url = "https://apis.map.qq.com/ws/location/v1/ip"
  643. axios.get(url, {
  644. params: data,
  645. adapter: jsonp
  646. }).then(res => {
  647. this.longitude = res.data.result.location.lng
  648. this.latitude = res.data.result.location.lat
  649. this.citys = res.data.result.ad_info.city
  650. if (!this.city) {
  651. this.city = this.citys
  652. }
  653. this.getRecommendJob(1)
  654. this.getRecommendJob(2)
  655. localStorage.setItem('city', this.city)
  656. }).catch(err => {
  657. console.log(err)
  658. })
  659. },
  660. //去添加简历
  661. addResume() {
  662. this.shoModal = false
  663. this.$router.push({
  664. name: 'addResume'
  665. })
  666. },
  667. /**
  668. * @param {Object} item 详情参数
  669. * 去详情
  670. */
  671. goDetails(item) {
  672. if (localStorage.getItem('token')) {
  673. if (this.isResume) { //有简历
  674. this.$router.push({
  675. name: 'postInfo',
  676. query: {
  677. postPushId: item.postPushId
  678. }
  679. })
  680. } else { //无简历
  681. this.shoModal = true
  682. }
  683. } else {
  684. this.$router.push({
  685. name: 'login'
  686. })
  687. }
  688. },
  689. //鼠标移入事件
  690. mouseEnter(index) {
  691. this.shotypeCurr = index;
  692. this.isShoType = true
  693. },
  694. //鼠标移出事件
  695. mouseLeave() {
  696. this.shotypeCurr = 0;
  697. this.isShoType = false
  698. },
  699. /**
  700. * @param {Number} index 选择的索引
  701. * 切换类型
  702. */
  703. selectTabs(index) {
  704. this.tabsCurr = index
  705. //重新获取岗位
  706. this.getRecommendJob(1)
  707. this.getRecommendJob(2)
  708. },
  709. /**
  710. * @param {Boolean} e
  711. * 是否触顶
  712. */
  713. change(e) {
  714. this.isTop = e
  715. },
  716. formatSalaryRange(range) {
  717. if (!range || !range.includes('-')) return range
  718. const [min, max] = range.split('-').map(v => parseInt(v.trim()))
  719. if (isNaN(min) || isNaN(max)) return range
  720. // 除以1000并去掉小数点后多余的0
  721. const formatNum = num => {
  722. const val = num / 1000
  723. return val % 1 === 0 ? val.toFixed(0) + 'k' : val.toFixed(1) + 'k'
  724. }
  725. return `${formatNum(min)}-${formatNum(max)}`
  726. },
  727. parseWelfareTag(tagStr) {
  728. return tagStr ? tagStr.split(';').filter(Boolean) : []
  729. },
  730. formatDistance(distance) {
  731. if (distance == null || distance === '') return ''
  732. const num = parseFloat(distance)
  733. if (isNaN(num)) return ''
  734. // 小于1000显示米,否则显示千米
  735. if (num < 1000) {
  736. return `${num}m`
  737. } else {
  738. const km = num / 1000
  739. // 去掉多余的小数(保留一位小数)
  740. const formatted = km % 1 === 0 ? km.toFixed(0) : km.toFixed(1)
  741. return `${formatted}km`
  742. }
  743. },
  744. },
  745. }
  746. </script>
  747. <style lang="scss" scoped>
  748. $marginTop-60: 120px;
  749. :deep(.el-affix--fixed){
  750. width: 100% !important;
  751. right: 0;
  752. left: 0;
  753. }
  754. .searchLabel {
  755. width: 100%;
  756. .searchLabel-item {
  757. cursor: pointer;
  758. margin-right: 10px;
  759. margin-top: 10px;
  760. }
  761. .searchLabel-item:hover {
  762. color: #00DD9A;
  763. }
  764. }
  765. :deep(.el-input__wrapper) {
  766. box-shadow: none;
  767. border: none;
  768. }
  769. .my-header {
  770. padding: 10px 10px 0 10px;
  771. }
  772. :deep(.el-dialog) {
  773. border-radius: 14px !important;
  774. padding: 0;
  775. }
  776. :deep(.el-dialog__body) {
  777. padding-top: 10px !important;
  778. }
  779. :deep(.el-dialog__header) {
  780. background: linear-gradient(45deg, #f2fffa, #FFFFFF);
  781. border-radius: 14px 14px 0 0;
  782. }
  783. .citys {
  784. width: calc(100% - 20px);
  785. height: 300px;
  786. overflow: hidden;
  787. overflow-y: scroll;
  788. padding: 0 10px 10px 10px;
  789. }
  790. .citys-item {
  791. display: flex;
  792. flex-wrap: wrap;
  793. .citys-item-citys {
  794. background-color: #F2F2F7;
  795. width: fit-content;
  796. padding: 4px 10px;
  797. cursor: pointer;
  798. border-radius: 4px;
  799. margin-top: 20px;
  800. margin-right: 20px;
  801. }
  802. .citys-item-citys:hover {
  803. background-color: #00DD9A;
  804. color: #FFFFFF;
  805. }
  806. }
  807. .citys-top {
  808. width: 100%;
  809. .citys-top-cityt {
  810. font-weight: bold;
  811. color: #333333;
  812. }
  813. .citys-top-cityt-r {
  814. font-weight: 500;
  815. color: #999999;
  816. font-size: 12px;
  817. cursor: pointer;
  818. }
  819. .citys-top-citys {
  820. background-color: #F2F2F7;
  821. width: fit-content;
  822. padding: 4px 10px;
  823. margin-top: 10px;
  824. cursor: pointer;
  825. border-radius: 4px;
  826. margin-right: 20px;
  827. margin-bottom: 20px;
  828. }
  829. .citys-top-citys:hover {
  830. background-color: #00DD9A;
  831. color: #FFFFFF;
  832. }
  833. }
  834. .search {
  835. width: 100%;
  836. height: 110px;
  837. background-color: #F5F5F5;
  838. .search-box {
  839. width: calc(1600px - $marginTop-60 * 2);
  840. height: 50px;
  841. .search-box-l {
  842. font-size: 16px;
  843. color: #333333;
  844. cursor: pointer;
  845. flex-shrink: 0;
  846. }
  847. .search-box-c {
  848. margin:0 30px;
  849. flex: 1;
  850. // width: 70vw;
  851. height: 100%;
  852. background-color: #00DD9A;
  853. border-radius: 12px;
  854. }
  855. .search-box-c-l {
  856. width: calc(100% - 100px);
  857. height: calc(100% - 2px);
  858. background-color: #ffffff;
  859. border-radius: 12px;
  860. border: 1px solid #00DD9A;
  861. }
  862. .search-box-c-r {
  863. width: 100px;
  864. height: 100%;
  865. color: #ffffff;
  866. font-size: 16px;
  867. cursor: pointer;
  868. }
  869. .search-box-r {
  870. width: 200px;
  871. height: 100%;
  872. background-color: #ffffff;
  873. border-radius: 12px;
  874. cursor: pointer;
  875. position: relative;
  876. }
  877. .search-box-r:hover {
  878. .search-box-r-rq {
  879. display: inline-block;
  880. }
  881. }
  882. .search-box-r-rq {
  883. display: none;
  884. position: absolute;
  885. width: 200px;
  886. // height: 280px;
  887. background-color: #ffffff;
  888. border-radius: 8px;
  889. border: 1px solid #F0F0F0;
  890. top: 55px;
  891. right: 0px;
  892. z-index: 999;
  893. align-content: center;
  894. padding: 20px 0;
  895. .search-box-r-rq-img {
  896. width: 160px;
  897. height: 160px;
  898. margin-left: 20px;
  899. }
  900. img {
  901. width: 100%;
  902. height: 100%;
  903. }
  904. .search-box-r-rq-txt {
  905. width: 100%;
  906. text-align: center;
  907. color: #00DD9A;
  908. font-size: 16px;
  909. margin-top: 20px;
  910. }
  911. }
  912. .search-box-r-c-t {
  913. color: #333333;
  914. font-size: 16px;
  915. font-weight: 400;
  916. }
  917. .search-box-r-c-b {
  918. color: #999999;
  919. font-size: 14px;
  920. font-weight: 400;
  921. }
  922. }
  923. }
  924. .tabs {
  925. width: 100%;
  926. height: 40px;
  927. .tabs-box {
  928. width: calc(100% - $marginTop-60 * 2);
  929. height: 100%;
  930. overflow-x: auto;
  931. white-space: nowrap;
  932. position: relative;
  933. }
  934. .tabs-box::-webkit-scrollbar {
  935. /* Chrome, Safari, Opera */
  936. height: 0px !important;
  937. }
  938. .tabs-box::-webkit-scrollbar-thumb {
  939. background-color: #cccccc;
  940. /* 滚动条颜色 */
  941. }
  942. .tabs-box::-webkit-scrollbar-track {
  943. background-color: #ffffff;
  944. /* 轨道颜色 */
  945. }
  946. .tabs-box-item {
  947. display: inline-block;
  948. min-width: 80px;
  949. padding: 0 5px;
  950. height: 100%;
  951. text-align: center;
  952. line-height: 40px;
  953. font-size: 16px;
  954. color: #333333;
  955. font-weight: 400;
  956. margin-right: 10px;
  957. border-radius: 6px;
  958. cursor: pointer;
  959. position: relative;
  960. z-index: 1;
  961. }
  962. .tabs-box-item:hover {
  963. color: #06E1AB;
  964. }
  965. .tabs-box-item-active {
  966. color: #FFFFFF !important;
  967. background-color: #06E1AB !important;
  968. transition: background-color color 0.5s; // 添加过渡效果
  969. }
  970. }
  971. .typeBanner {
  972. width: 100%;
  973. height: auto;
  974. margin-top: 50px;
  975. .typeBanner-box {
  976. width: calc(100% - $marginTop-60 * 2);
  977. height: 450px;
  978. background-color: #ffffff;
  979. border-radius: 24px;
  980. }
  981. .typeBanner-box-l {
  982. padding:10px 0 10px 20px;
  983. width: 550px;
  984. height: 100%;
  985. background-color: #ffffff;
  986. border-radius: 24px 0 0 24px;
  987. overflow: hidden;
  988. overflow-y: scroll;
  989. }
  990. .typeBanner-box-r {
  991. width: calc(100% - 550px);
  992. height: calc(100% + 20px);
  993. background-color: #ffffff;
  994. border-radius: 0 24px 24px 0;
  995. }
  996. .typeBanner-box-c::-webkit-scrollbar {
  997. /* Chrome, Safari, Opera */
  998. width: 0px;
  999. }
  1000. .typeBanner-box-c::-webkit-scrollbar-thumb {
  1001. background-color: #cccccc;
  1002. /* 滚动条颜色 */
  1003. }
  1004. .typeBanner-box-c::-webkit-scrollbar-track {
  1005. background-color: #ffffff;
  1006. /* 轨道颜色 */
  1007. }
  1008. .typeBanner-box-c {
  1009. // padding: 20px;
  1010. overflow: hidden;
  1011. overflow-y: scroll;
  1012. .typeBanner-box-c-title {
  1013. font-size: 16px;
  1014. padding: 20px;
  1015. }
  1016. .typeBanner-box-c-item {
  1017. padding: 0 20px;
  1018. margin-bottom: 10px;
  1019. }
  1020. .typeBanner-box-c-item-l {
  1021. font-size: 14px;
  1022. color: #666666;
  1023. }
  1024. .typeBanner-box-c-item-r {
  1025. width: 80%;
  1026. border-bottom: 1px solid #F5F5F5;
  1027. }
  1028. .typeBanner-box-c-item-r-i:hover {
  1029. color: #00DD9A;
  1030. cursor: pointer;
  1031. }
  1032. .typeBanner-box-c-item-r-i {
  1033. margin-right: 20px;
  1034. margin-bottom: 20px;
  1035. }
  1036. }
  1037. .typeBanner-box-l-item-active {
  1038. // box-shadow: 0 0 10px 0 rgba(153, 153, 153, 0.3);
  1039. .typeBanner-box-l-item-r {
  1040. .el-icon {
  1041. color: #00DD9A;
  1042. }
  1043. }
  1044. }
  1045. .typeBanner-box-l-item-l-i:hover {
  1046. color: #00DD9A;
  1047. }
  1048. .typeBanner-box-l-item-l {
  1049. width: 100%;
  1050. padding-left: 20px;
  1051. font-size: 16px;
  1052. overflow: hidden;
  1053. white-space: nowrap;
  1054. text-overflow: ellipsis;
  1055. -o-text-overflow: ellipsis;
  1056. }
  1057. .typeBanner-box-l-item-l-i {
  1058. font-size: 14px;
  1059. margin-left: 20px;
  1060. color: #666666;
  1061. }
  1062. .typeBanner-box-l-item-r {
  1063. padding-right: 20px;
  1064. }
  1065. .typeBanner-box-l-item {
  1066. width: calc(100% - 10px);
  1067. // height: calc(100% / 7);
  1068. border-radius: 14px;
  1069. cursor: pointer;
  1070. }
  1071. .first-title{
  1072. font-size: 16px;
  1073. margin-bottom: 30px;
  1074. margin-top: 10px;
  1075. }
  1076. .second-block{
  1077. .second-title {
  1078. flex-shrink: 0;
  1079. font-size: 14px;
  1080. color: #666666;
  1081. margin-right: 40px;
  1082. }
  1083. .third-list{
  1084. overflow: hidden;
  1085. gap: 20px;
  1086. .third-item {
  1087. flex-shrink: 0;
  1088. }
  1089. }
  1090. }
  1091. }
  1092. .tuijian {
  1093. width: 100%;
  1094. margin-top: 65px;
  1095. .tuijian-box {
  1096. width: calc(100% - $marginTop-60 * 2);
  1097. color: #333333;
  1098. font-size: 18px;
  1099. }
  1100. .tuijian-box-line {
  1101. width: 24px;
  1102. height: 2px;
  1103. background-color: #00DD9A;
  1104. margin-top: 4px;
  1105. position: relative;
  1106. top: 50%;
  1107. left: 50%;
  1108. transform: translate(-50%, -50%);
  1109. }
  1110. .tuijian-r {
  1111. font-size: 14px;
  1112. color: #666666;
  1113. }
  1114. }
  1115. .list {
  1116. width: 100%;
  1117. min-height: 100px;
  1118. margin-top: 20px;
  1119. .list-box {
  1120. width: calc(100% - $marginTop-60 * 2);
  1121. // height: 100%;
  1122. min-height: 100px;
  1123. border-radius: 10px;
  1124. }
  1125. .list-box-item:hover {
  1126. box-shadow: 0 10px 10px 0 rgba(153, 153, 153, 0.3);
  1127. .list-box-item-title-name {
  1128. color: #00DD9A;
  1129. }
  1130. }
  1131. .list-box-item {
  1132. width: calc((100% - 40px) / 3);
  1133. height: 100%;
  1134. background-color: #ffffff;
  1135. border-radius: 10px;
  1136. padding: 20px 0;
  1137. cursor: pointer;
  1138. margin-bottom: 20px;
  1139. }
  1140. .list-box-item-title {
  1141. font-size: 16px;
  1142. padding: 0 20px;
  1143. .list-box-item-title-name {
  1144. color: #333333;
  1145. }
  1146. .list-box-item-title-price {
  1147. font-size: 18px;
  1148. color: #FF0000;
  1149. }
  1150. }
  1151. .list-box-item-label {
  1152. width: calc(100% - 40px);
  1153. height: 40px;
  1154. padding: 0 20px;
  1155. overflow: hidden;
  1156. .list-box-item-label-item {
  1157. padding: 4px 10px;
  1158. border-radius: 5px;
  1159. background-color: #F5F5F5;
  1160. color: #666666;
  1161. font-size: 14px;
  1162. margin-right: 10px;
  1163. margin-top: 10px;
  1164. }
  1165. }
  1166. .list-box-item-info {
  1167. margin-top: 20px;
  1168. border-top: 1px solid #F5F5F5;
  1169. padding: 0 20px;
  1170. padding-top: 20px;
  1171. .list-box-item-info-name:hover {
  1172. color: #00DD9A;
  1173. }
  1174. .list-box-item-info-name {
  1175. font-size: 16px;
  1176. color: #333333;
  1177. }
  1178. .list-box-item-info-price {
  1179. font-size: 16px;
  1180. color: #999999;
  1181. }
  1182. }
  1183. }
  1184. .moreData {
  1185. width: 100%;
  1186. height: auto;
  1187. margin-top: 10px;
  1188. .moreData-box:hover {
  1189. background-color: #00DD9A;
  1190. color: #ffffff;
  1191. }
  1192. .moreData-box {
  1193. width: 180px;
  1194. height: 40px;
  1195. border-radius: 35px;
  1196. background-color: rgba(0, 221, 154, 0.1);
  1197. color: #00DD9A;
  1198. font-size: 14px;
  1199. cursor: pointer;
  1200. transition: background-color 0.5s;
  1201. }
  1202. }
  1203. .showModal-img {
  1204. width: 100%;
  1205. height: 300px;
  1206. img {
  1207. width: 400px;
  1208. height: 300px;
  1209. }
  1210. }
  1211. .city {
  1212. width: 100%;
  1213. height: 500px;
  1214. .city-box {
  1215. width: 100%;
  1216. padding: 0 20px;
  1217. height: 100%;
  1218. }
  1219. .city-box-city {
  1220. .city-box-cityt {
  1221. width: 100%;
  1222. font-weight: bold;
  1223. .city-box-cityt-r {
  1224. font-weight: 500;
  1225. color: #999999;
  1226. font-size: 12px;
  1227. cursor: pointer;
  1228. }
  1229. }
  1230. .city-box-citys {
  1231. background-color: #F2F2F7;
  1232. width: fit-content;
  1233. padding: 4px 10px;
  1234. margin-top: 10px;
  1235. cursor: pointer;
  1236. border-radius: 4px;
  1237. }
  1238. .city-box-citys:hover {
  1239. background-color: #00DD9A;
  1240. color: #FFFFFF;
  1241. }
  1242. }
  1243. .city-box-list {
  1244. width: 100%;
  1245. height: 420px;
  1246. margin-top: 20px;
  1247. overflow-y: scroll;
  1248. }
  1249. .city-box-lists {
  1250. width: 100%;
  1251. height: 100%;
  1252. list-style: none;
  1253. padding: 0;
  1254. margin: 0;
  1255. }
  1256. .city-box-lists-title {
  1257. font-weight: bold;
  1258. }
  1259. .city-box-lists-title-css {
  1260. background-color: #F2F2F7;
  1261. width: fit-content;
  1262. padding: 4px 10px;
  1263. margin-top: 10px;
  1264. cursor: pointer;
  1265. border-radius: 4px;
  1266. margin-right: 20px;
  1267. margin-bottom: 20px;
  1268. }
  1269. .city-box-lists-title-css:hover {
  1270. background-color: #00DD9A;
  1271. color: #FFFFFF;
  1272. }
  1273. .city-box-lists-item-title {
  1274. font-weight: bold;
  1275. }
  1276. .city-box-lists-item-titles {
  1277. background-color: #F2F2F7;
  1278. width: fit-content;
  1279. padding: 4px 10px;
  1280. margin-top: 10px;
  1281. cursor: pointer;
  1282. border-radius: 4px;
  1283. margin-right: 20px;
  1284. margin-bottom: 20px;
  1285. }
  1286. .city-box-lists-item-titles:hover {
  1287. background-color: #00DD9A;
  1288. color: #FFFFFF;
  1289. }
  1290. }
  1291. .company-name,.company-people{
  1292. font-size: 14px;
  1293. font-weight: 400;
  1294. color: rgba(156, 164, 171, 1);
  1295. }
  1296. .gwList-box-item-box-label{
  1297. padding: 0 20px;
  1298. gap: 12px;
  1299. overflow: hidden;
  1300. height: 60px;
  1301. .job-tag{
  1302. padding: 4px;
  1303. background: rgba(198, 198, 198, 0.1);
  1304. border-radius: 4px;
  1305. font-size: 12px;
  1306. font-weight: 400;
  1307. color: rgba(153, 153, 153, 1);
  1308. }
  1309. }
  1310. .gwList-box-item-box-info-l{
  1311. .company-info-text{
  1312. margin: 0 10px;
  1313. color: rgba(156, 164, 171, 1);
  1314. font-size: 12px;
  1315. font-weight: 400;
  1316. }
  1317. .reply-time{
  1318. border-radius: 4px;
  1319. background: rgba(236, 225, 253, 1);
  1320. padding: 4px;
  1321. color: rgba(106.94, 84.63, 214.02, 0.96);
  1322. font-size: 12px;
  1323. font-weight: 400;
  1324. }
  1325. }
  1326. .location-text{
  1327. color: rgba(156, 164, 171, 1);
  1328. font-size: 12px;
  1329. font-weight: 400;
  1330. }
  1331. </style>