enterpriseInfo.vue 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121
  1. <template>
  2. <view class="content" :style="{ paddingTop: (12 + statusBarHeight + 88 - 60) + 'px' }">
  3. <!-- 固定顶部导航 -->
  4. <view class="fixed-nav" :style="{ paddingTop: (12 + statusBarHeight) + 'px' }">
  5. <view class="nav-bar">
  6. <view class="nav-left" @click="goBack">
  7. <u-icon name="arrow-leftward" color="rgba(51, 51, 51, 1)" style="font-size: 38rpx;"></u-icon>
  8. </view>
  9. <view class="nav-title">公司介绍</view>
  10. <view class="nav-right">
  11. <view class="nav-icons">
  12. <view v-if="false" class="nav-icon" @click="setCollection">
  13. <image v-if="isCollection == 0" src="/static/images/index/guanzhu.svg" class="icon-img">
  14. </image>
  15. <image v-else src="/static/images/index/gzActive.svg" class="icon-img"></image>
  16. </view>
  17. <view class="nav-icon" @click="showShare">
  18. <image src="/static/images/index/fenxiang.svg" class="icon-img"></image>
  19. </view>
  20. </view>
  21. </view>
  22. </view>
  23. </view>
  24. <!-- 企业信息 -->
  25. <view class="info flex justify-center">
  26. <view class="info-box flex align-center justify-between">
  27. <view class="info-box-r">
  28. <view class="info-box-r-title" v-show="info.companyName">
  29. {{ info.companyName }}
  30. </view>
  31. <view class="info-box-r-label flex align-center flex-wrap">
  32. <view class="info-box-r-label-item" v-if="info.companyPeople">
  33. {{ info.companyPeople }}
  34. </view>
  35. <!-- <view class="info-box-r-label-item" v-show="info.companyScope">
  36. {{ info.companyScope }}
  37. </view> -->
  38. </view>
  39. <view class="info-box-r-label-item" v-show="info.companyAllName">
  40. {{ info.companyAllName ? info.companyAllName : '--' }}
  41. </view>
  42. </view>
  43. <image :src="info.companyLogo ? info.companyLogo : '../../static/logo.png'"
  44. style="width: 120rpx;height: 120rpx;border-radius: 50%;" mode="">
  45. </image>
  46. </view>
  47. </view>
  48. <!-- 急聘标签 -->
  49. <!-- 公司地址 -->
  50. <view class="address flex justify-center">
  51. <view class="address-box flex justify-center">
  52. <view class="address-box-c">
  53. <!-- 工作时间 -->
  54. <view class="working-hours flex align-center">
  55. <u-icon name="clock" color="rgba(51, 51, 51, 1)" size="38"
  56. style="margin-right: 12rpx;"></u-icon>
  57. <text>{{ info.workTime }}</text>
  58. </view>
  59. <!-- 福利标签 -->
  60. <view class="benefits-section">
  61. <view class="benefits-tags flex align-center flex-wrap">
  62. <view class="benefit-tag" v-for="item in info.welfareArr">
  63. <image src="/static/images/index/huizhang.svg" class="tag-icon"></image>
  64. <text>{{ item }}</text>
  65. </view>
  66. </view>
  67. </view>
  68. <!-- 地址信息 -->
  69. <view @click="openMap()" class="address-box-c-add flex justify-between align-center">
  70. <view class="address-box-c-add-l flex align-center">
  71. <u-icon name="map" style="margin-right: 12rpx;" color="rgba(51, 51, 51, 1)"
  72. size="24"></u-icon>
  73. <!-- <text v-if="info.companyAddress">{{ info.province ? info.province : '' }}{{ info.city ? info.city : ''
  74. }}{{
  75. info.district ? info.district : '' }}{{ info.companyAddress ? info.companyAddress : ''
  76. }}</text> -->
  77. <text v-if="info.companyAddress">{{ info.companyAddress }}</text>
  78. <text v-else>暂无地址信息</text>
  79. </view>
  80. <!--
  81. <view class="address-box-c-add-r">
  82. <u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="24"></u-icon>
  83. </view>
  84. -->
  85. </view>
  86. </view>
  87. </view>
  88. </view>
  89. <!-- 企业介绍 -->
  90. <view class="remarks flex justify-center">
  91. <view class="remarks-box">
  92. <view class="remarks-box-title">
  93. 公司介绍
  94. </view>
  95. <view class="remarks-box-con">
  96. <u-read-more show-height="100" :shadow-style="shadowStyle" color="#FD6416" text-indent="0"
  97. closeText="展开">
  98. <!-- <rich-text :nodes="info.companyDetails"
  99. style="color: #ffffff;font-size: 28rpx;font-weight: 500;">
  100. </rich-text> -->
  101. <view class="remarks-box-con-item">
  102. {{ info.companyContent }}
  103. </view>
  104. </u-read-more>
  105. </view>
  106. </view>
  107. </view>
  108. <!-- 主营业务 -->
  109. <view class="business-section flex justify-center">
  110. <view class="business-box">
  111. <view class="business-title">主营业务</view>
  112. <!-- <view class="business-tags flex flex-wrap" v-if="businessList&&businessList.length>0">
  113. <view class="business-tag" v-for="(business, index) in businessList" :key="index">
  114. {{ business }}
  115. </view>
  116. </view> -->
  117. <view class="remarks-box-con-item" v-if="info.companyScope">
  118. {{ info.companyScope }}
  119. </view>
  120. <view class="hr-desc" v-else>
  121. 暂无业务信息
  122. </view>
  123. </view>
  124. </view>
  125. <!-- hr介绍 -->
  126. <view class="hr-section flex justify-center">
  127. <view class="hr-box">
  128. <view class="hr-header flex justify-between align-center">
  129. <view class="hr-title">HR介绍</view>
  130. <view class="view-all-jobs" @click="goToMoreJobs">
  131. <text>查看所有职位</text>
  132. </view>
  133. </view>
  134. <view class="hr-list flex" v-if="info.hr && info.hr.length > 0">
  135. <view class="hr-item" v-for="(hr, index) in info.hr" :key="index">
  136. <view class="hr-content flex align-center">
  137. <view class="hr-avatar-container">
  138. <view class="hr-avatar">
  139. <image :src="hr.hrImg" mode="aspectFill" />
  140. </view>
  141. <view class="online-dot" :style="{'background':hr&&hr.onlineStatus=='ONLINE'?'#00D26A':'#999'}"></view>
  142. </view>
  143. <view class="hr-text">
  144. <view class="hr-name">{{ hr.name }}</view>
  145. <view class="hr-position">{{ hr.hrPosition }}</view>
  146. </view>
  147. </view>
  148. </view>
  149. </view>
  150. <view class="hr-desc" v-else>暂无HR信息</view>
  151. </view>
  152. </view>
  153. <!-- 人才发展 -->
  154. <view class="talent-section flex justify-center">
  155. <view class="talent-box">
  156. <view class="talent-title">人才发展</view>
  157. <view class="talent-tags flex flex-wrap">
  158. <view class="talent-tag" v-for="(talent, index) in talentList" :key="index">
  159. {{ talent }}
  160. </view>
  161. </view>
  162. </view>
  163. </view>
  164. <!-- 公司风采 -->
  165. <view class="talent-section flex justify-center">
  166. <view class="talent-box">
  167. <view class="talent-title">公司风采</view>
  168. <!-- 有图片时显示轮播 -->
  169. <swiper v-if="info.photos" class="talent-swiper" indicator-dots="true" autoplay="true" interval="3000" circular="true">
  170. <swiper-item v-for="(talent, index) in info.photos.split(',')" :key="index">
  171. <view class="photo-box">
  172. <image :src="talent" mode="aspectFill" class="photoImage"></image>
  173. </view>
  174. </swiper-item>
  175. </swiper>
  176. <!-- 没有图片时显示提示 -->
  177. <view class="hr-desc" v-else>该公司还未上传相关图片!</view>
  178. </view>
  179. </view>
  180. <!-- 工商信息 -->
  181. <view class="gsInfo flex justify-center">
  182. <view class="gsInfo-box flex justify-center">
  183. <view class="gsInfo-box-c">
  184. <view class="gsInfo-box-c-title">
  185. 工商信息
  186. </view>
  187. <view class="gsInfo-box-c-item">
  188. 公司全称:{{ info.companyAllName ? info.companyAllName : '' }}
  189. </view>
  190. <view class="gsInfo-box-c-item">
  191. 成立时间:{{ info.companyCreateTime ? info.companyCreateTime : '--' }}
  192. </view>
  193. <view class="gsInfo-box-c-item">
  194. 注册资本:{{ info.companyRegisteredFund ? info.companyRegisteredFund : '--' }}万人民币
  195. </view>
  196. <view class="gsInfo-box-c-item">
  197. 法人代表:{{ info.companyLegalPerson ? info.companyLegalPerson : '未知' }}
  198. </view>
  199. </view>
  200. </view>
  201. </view>
  202. <!-- 全部岗位弹窗 -->
  203. <btnPopous ref="jobPopup" v-if="showJobPopup && companyId && classify.length > 0" :companyId="companyId"
  204. :cittArr="cittArr" :classify="classify" :moneyArr="moneyArr" :jyArr="jyArr" @closePopup="closeJobPopup" />
  205. <u-popup v-model="shows" z-index="99999" mode="bottom" border-radius="14" height="300rpx">
  206. <view class="shar flex justify-center">
  207. <view class="shar-box flex justify-around">
  208. <view class="shar-box-item" @click="appShare('WXSceneSession')">
  209. <u-icon name="weixin-circle-fill" color="#45b630" style="margin-left: 10rpx;" size="70">
  210. </u-icon>
  211. <view class="">
  212. 微信好友
  213. </view>
  214. </view>
  215. <view class="shar-box-item" @click="appShare('WXSenceTimeline')">
  216. <u-icon name="moments-circel-fill" color="#6dbf30" size="70" style="margin-left: 20rpx;">
  217. </u-icon>
  218. <view class="">
  219. 微信朋友圈
  220. </view>
  221. </view>
  222. </view>
  223. </view>
  224. <view class="line"></view>
  225. <view class="sharNo" @click="shows = false">
  226. 取消
  227. </view>
  228. </u-popup>
  229. </view>
  230. </template>
  231. <script>
  232. import btnPopous from '../../components/btnPopous/btnPopous.vue'
  233. import config from '../../common/config.js'
  234. export default {
  235. components: {
  236. btnPopous
  237. },
  238. data() {
  239. return {
  240. statusBarHeight: 0, // 状态栏高度
  241. backStyle: {
  242. color: '#ffffff'
  243. },
  244. shadowStyle: {
  245. backgroundImage: 'none',
  246. },
  247. companyId: '',
  248. info: {},
  249. isCollection: 0, // 收藏状态
  250. showJobPopup: false, // 控制职位弹窗显示
  251. cittArr: [], //企业发布岗位的城市数组
  252. moneyArr: [], //薪资列表数组
  253. jyArr: [], //工作经验列表数组
  254. classify: [], //岗位名称数组
  255. hrList: [
  256. {
  257. name: '孙先生',
  258. position: '人事经理',
  259. color: '#4A90E2'
  260. },
  261. {
  262. name: '宋先生',
  263. position: 'HRBP',
  264. color: '#7ED321'
  265. },
  266. {
  267. name: '邹先生',
  268. position: 'HR助力',
  269. color: '#F5A623'
  270. }
  271. ],
  272. businessList: [],
  273. talentList: [],
  274. sharType: 0,
  275. sharMsg: '',
  276. shows: false
  277. };
  278. },
  279. //分享
  280. onShareAppMessage(res) {
  281. return {
  282. path: '/my/enterpriseInfo/enterpriseInfo?companyId=' + this.companyId + '&invitation=' + uni
  283. .getStorageSync(
  284. 'invitationCode'),
  285. title: this.info.companyName,
  286. }
  287. },
  288. /*
  289. * uniapp微信小程序分享页面到微信朋友圈
  290. */
  291. onShareTimeline(res) {
  292. return {
  293. path: '/my/enterpriseInfo/enterpriseInfo?companyId=' + this.companyId + '&invitation=' + uni
  294. .getStorageSync(
  295. 'invitationCode'),
  296. title: this.info.companyName,
  297. }
  298. },
  299. // onPageScroll(e) {
  300. // if (e.scrollTop > 100) {
  301. // uni.setNavigationBarTitle({
  302. // title: '西安省钱兄网络科技有限公司'
  303. // })
  304. // } else {
  305. // uni.setNavigationBarTitle({
  306. // title: '企业详情'
  307. // })
  308. // }
  309. // },
  310. onLoad(option) {
  311. // 获取状态栏高度
  312. let systemInfo = uni.getSystemInfoSync();
  313. this.statusBarHeight = systemInfo.statusBarHeight || 0;
  314. // 获取邀请码保存到本地
  315. if (option.invitation) {
  316. this.$queue.setData('inviterCode', option.invitation);
  317. }
  318. // #ifdef MP-WEIXIN
  319. if (option.scene) {
  320. const scene = decodeURIComponent(option.scene);
  321. this.$queue.setData('inviterCode', scene.split(',')[0]);
  322. }
  323. // #endif
  324. uni.showLoading({
  325. title: '加载中'
  326. })
  327. this.companyId = option.companyId
  328. this.getInfo();
  329. this.getCityCompanyId();
  330. this.getMoney();
  331. this.getJy();
  332. this.getClassify();
  333. },
  334. methods: {
  335. // 返回上一页
  336. goBack() {
  337. uni.navigateBack();
  338. },
  339. // 显示分享选项
  340. showShare() {
  341. // 可以添加分享逻辑
  342. this.shows = true
  343. },
  344. //app分享
  345. appShare(scene) {
  346. // #ifdef H5
  347. this.shar()
  348. this.shows = false;
  349. return
  350. //#endif
  351. return this.$queue.appShare(scene,this)
  352. let that = this
  353. let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  354. let curRoute = routes[routes.length - 1].$page.fullPath // 获取当前页面路由,也就是最后一个打开的页面路由
  355. uni.share({
  356. provider: "weixin", //分享服务提供商(即weixin|qq|sinaweibo)
  357. scene: scene, //场景,可取值参考下面说明。
  358. type: 5, //分享形式 0:图文 1:纯文字 2:纯图片 3:音乐 4:视频 5:小程序
  359. // href: curRoute, //跳转链接
  360. // imageUrl:'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/962fc340-4f2c-11eb-bdc1-8bd33eb6adaa.png',
  361. imageUrl: that.sharMsg,
  362. title: that.info.stationName, //分享内容的标题
  363. miniProgram: {
  364. id: 'gh_d531be6accdb', //分享的小程序原始id
  365. path: curRoute, //分享的小程序的页面路径
  366. webUrl: "https://ask.dcloud.net.cn/article/287", //地址
  367. type: that.sharType, //微信小程序的版本 0-正式版; 1-测试版; 2-体验版。 默认值为0。
  368. },
  369. success: function (res) {
  370. that.shows = false; //成功后关闭底部弹框
  371. },
  372. fail: function (err) {
  373. console.log(err, '分享失败回调')
  374. uni.showToast({
  375. title: '分享失败',
  376. icon: 'none',
  377. duration: 2000
  378. })
  379. that.shows = false;
  380. }
  381. });
  382. },
  383. getShowModal() {
  384. uni.showModal({
  385. title: '提示',
  386. content: '请登录后联系企业',
  387. showCancel: true,
  388. cancelText: '取消',
  389. confirmText: '去登录',
  390. complete: (res) => {
  391. if (res.confirm) {
  392. this.$queue.toLogin('navigateTo')
  393. }
  394. }
  395. });
  396. },
  397. shar() {
  398. if (uni.getStorageSync('token')) {
  399. let that = this
  400. // h5分享
  401. // #ifdef H5
  402. let url = config.WSHOST4 + '/my/enterpriseInfo/enterpriseInfo?companyId=' + this.companyId + '&invitation=' + uni
  403. .getStorageSync(
  404. 'invitationCode')
  405. // let url = 'http://192.168.0.109:8081/pages/index/game/order?postPushId=' + this.postPushId
  406. // alert(url)
  407. uni.setClipboardData({
  408. data: url,
  409. success() {
  410. uni.showToast({
  411. title: '分享链接已复制'
  412. })
  413. }
  414. })
  415. // #endif
  416. } else {
  417. this.getShowModal()
  418. }
  419. },
  420. // 收藏企业
  421. setCollection() {
  422. this.$Request.postT("/app/myCollection/saveCollection", {
  423. companyId: this.companyId,
  424. type: 3 // 2表示收藏企业
  425. }).then(res => {
  426. if (res.code == 0) {
  427. uni.showToast({
  428. title: res.msg
  429. })
  430. this.isCollection = this.isCollection == 0 ? 1 : 0;
  431. }
  432. })
  433. },
  434. // 显示所有职位弹窗
  435. goToMoreJobs() {
  436. if (this.classify && this.classify.length <= 0) {
  437. uni.showToast({
  438. title: '该公司还未发布岗位!',
  439. icon: 'none'
  440. })
  441. return;
  442. }
  443. this.showJobPopup = true;
  444. this.$nextTick(() => {
  445. if (this.$refs.jobPopup) {
  446. this.$refs.jobPopup.topY = true;
  447. }
  448. });
  449. },
  450. // 关闭职位弹窗
  451. closeJobPopup() {
  452. this.showJobPopup = false;
  453. },
  454. openMap() {
  455. let that = this
  456. if (that.info.companyLat && that.info.companyLng) {
  457. uni.openLocation({
  458. latitude: that.info.companyLat,
  459. longitude: that.info.companyLng,
  460. address: that.info.province + '' + that.info.city + '' + that.info.district + '' + that
  461. .info
  462. .companyAddress,
  463. name: that.info.companyAddress
  464. })
  465. } else {
  466. uni.showToast({
  467. title: '暂无位置信息',
  468. icon: 'none'
  469. })
  470. }
  471. },
  472. /**
  473. * 岗位分类数组
  474. */
  475. getClassify() {
  476. this.$Request.getT("/app/postPush/getCompanyClassifyByCompanyId", {
  477. companyId: this.companyId
  478. }).then(res => {
  479. if (res.code == 0) {
  480. this.classify = res.data //岗位分类列表数组
  481. }
  482. })
  483. },
  484. /**
  485. * 获取薪资 列表
  486. */
  487. getMoney() {
  488. this.$Request.get("/app/dict/list", {
  489. type: '薪资 '
  490. }).then(res => {
  491. if (res.code == 0) {
  492. this.moneyArr = res.data //薪资列表数组
  493. }
  494. })
  495. },
  496. /**
  497. * 获取工作经验列表
  498. */
  499. getJy() {
  500. this.$Request.get("/app/dict/list", {
  501. type: '工作经验 '
  502. }).then(res => {
  503. if (res.code == 0) {
  504. this.jyArr = res.data //工作经验列表数组
  505. }
  506. })
  507. },
  508. /**
  509. * 根据公司id查询已发布岗位的市
  510. */
  511. getCityCompanyId() {
  512. let data = {
  513. companyId: this.companyId
  514. }
  515. this.$Request.getT("/app/postPush/getCityCompanyId", data).then(res => {
  516. if (res.code == 0) {
  517. this.cittArr = res.data
  518. }
  519. })
  520. },
  521. //获取企业详情
  522. getInfo() {
  523. let that = this
  524. this.$Request.get("/app/company/selectCompanyByCompanyId", {
  525. companyId: this.companyId
  526. }).then(res => {
  527. if (res.code == 0) {
  528. let color = ['#4A90E2', '#7ED321', '#F5A623']
  529. res.data.welfareArr = res.data.welfare ? res.data.welfare.split(',') : []
  530. res.data.photosArr = res.data.photosArr ? res.data.photos.split(',') : []
  531. that.talentList = res.data.companyPeopleDevelop ? res.data.companyPeopleDevelop.split(',') : []
  532. that.businessList = res.data.workDescribe ? res.data.workDescribe.split(',') : []
  533. if (res.data.hr) {
  534. res.data.hr.forEach(function (item, index) {
  535. if (item) {
  536. item.name = '匿名'
  537. item.color = color[index % 3]
  538. for (const user of res.data.userEntities) {
  539. if (item.userId == user.userId) {
  540. item.name = user.userName;
  541. break; // 直接跳出循环
  542. }
  543. }
  544. }
  545. })
  546. }
  547. this.info = res.data
  548. if (this.info.companyName) {
  549. uni.setNavigationBarTitle({
  550. title: that.info.companyName
  551. })
  552. }
  553. that.isCollection = res.data.isCollect || 0
  554. // let reg = /.+?(省|市|自治区|自治州|县|区)/g
  555. // let cityarr = this.info.companyAddress.match(reg)
  556. // if (cityarr && cityarr != null) {
  557. // if (cityarr.length == 3) {
  558. // this.info.companyAddress = cityarr[0] + '' + cityarr[1] + '' + cityarr[2]
  559. // } else {
  560. // this.info.companyAddress = cityarr[0] + '' + cityarr[1]
  561. // }
  562. // }
  563. }
  564. uni.hideLoading()
  565. })
  566. },
  567. }
  568. }
  569. </script>
  570. <style lang="scss">
  571. page {
  572. // background-color: #4B4D5C;
  573. // overflow: hidden;
  574. }
  575. .hr-desc {
  576. color: rgba(102, 102, 102, 1);
  577. font-family: DM Sans;
  578. font-size: 20rpx;
  579. }
  580. .content {
  581. // padding-top 已改为动态计算,在模板中通过 :style 设置
  582. }
  583. .fixed-nav {
  584. position: fixed;
  585. top: 0;
  586. left: 0;
  587. right: 0;
  588. z-index: 9999;
  589. background-color: #ffffff;
  590. padding: 0 32rpx;
  591. // padding-top 已改为动态计算,在模板中通过 :style 设置
  592. }
  593. .nav-bar {
  594. display: flex;
  595. align-items: center;
  596. justify-content: space-between;
  597. height: 88rpx;
  598. padding: 0 8rpx;
  599. // margin-bottom: 30rpx; // 已移除,因为现在是固定导航栏
  600. // padding: 0 40rpx; // 已调整,因为外层 fixed-nav 已有 padding
  601. .nav-left {
  602. display: flex;
  603. align-items: center;
  604. justify-content: flex-start;
  605. width: 96rpx;
  606. }
  607. .nav-title {
  608. color: rgba(34, 37, 42, 1);
  609. font-family: DM Sans;
  610. font-size: 16px;
  611. font-weight: 400;
  612. line-height: 24px;
  613. letter-spacing: 0px;
  614. text-align: left;
  615. }
  616. .nav-right {
  617. display: flex;
  618. align-items: center;
  619. justify-content: flex-end;
  620. width: 96rpx;
  621. }
  622. .nav-icons {
  623. display: flex;
  624. align-items: center;
  625. gap: 24rpx;
  626. }
  627. .nav-icon {
  628. display: flex;
  629. align-items: center;
  630. justify-content: center;
  631. width: 36rpx;
  632. height: 36rpx;
  633. }
  634. .icon-img {
  635. width: 42rpx;
  636. height: 42rpx;
  637. }
  638. }
  639. .info {
  640. width: 100%;
  641. margin-top: 50rpx;
  642. .info-box {
  643. width: 686rpx;
  644. height: 100%;
  645. .info-box-r {
  646. width: calc(100% - 150rpx);
  647. }
  648. .info-box-r-title {
  649. color: rgba(58, 57, 67, 1);
  650. font-family: DM Sans;
  651. font-size: 42rpx;
  652. font-weight: 700;
  653. line-height: 30px;
  654. letter-spacing: 0px;
  655. text-align: left;
  656. }
  657. .info-box-r-label {
  658. color: #FFFFFF;
  659. font-size: 28rpx;
  660. font-weight: 500;
  661. margin-top: 20rpx;
  662. .info-box-r-label-item {
  663. color: rgba(153, 153, 153, 1);
  664. font-family: DM Sans;
  665. font-size: 24rpx;
  666. font-weight: 400;
  667. line-height: 16px;
  668. letter-spacing: 0%;
  669. text-align: left;
  670. margin-right: 10rpx
  671. }
  672. }
  673. }
  674. }
  675. .info-box-r-label-item {
  676. color: rgba(153, 153, 153, 1);
  677. font-family: DM Sans;
  678. font-size: 24rpx;
  679. font-weight: 400;
  680. line-height: 16px;
  681. letter-spacing: 0%;
  682. text-align: left;
  683. margin-right: 10rpx;
  684. margin-top: 20rpx;
  685. }
  686. .remarks {
  687. width: 100%;
  688. margin-top: 50rpx;
  689. .remarks-box {
  690. width: 686rpx;
  691. .remarks-box-title {
  692. color: rgba(34, 37, 42, 1);
  693. font-family: DM Sans;
  694. font-size: 16px;
  695. font-weight: 400;
  696. line-height: 24px;
  697. letter-spacing: 0px;
  698. text-align: left;
  699. }
  700. .remarks-box-con {
  701. margin-top: 30rpx;
  702. }
  703. }
  704. }
  705. .remarks-box-con-item {
  706. color: rgba(153, 153, 153, 1);
  707. font-family: DM Sans;
  708. font-size: 14px;
  709. font-weight: 400;
  710. line-height: 18px;
  711. letter-spacing: 0px;
  712. text-align: left;
  713. }
  714. .address {
  715. width: 100%;
  716. margin-top: 80rpx;
  717. .address-box {
  718. width: 686rpx;
  719. border-radius: 24rpx;
  720. .address-box-c {
  721. width: 100%;
  722. .working-hours {
  723. margin-bottom: 24rpx;
  724. text {
  725. color: rgba(51, 51, 51, 1);
  726. font-size: 28rpx;
  727. font-weight: 400;
  728. }
  729. }
  730. .benefits-section {
  731. margin-bottom: 24rpx;
  732. .benefits-tags {
  733. gap: 12rpx;
  734. .benefit-tag {
  735. background: rgba(40, 107, 229, 0.1);
  736. border-radius: 12rpx;
  737. padding: 12rpx;
  738. display: flex;
  739. align-items: center;
  740. gap: 8rpx;
  741. .tag-icon {
  742. width: 42rpx;
  743. height: 42rpx;
  744. }
  745. text {
  746. color: rgba(34, 37, 42, 0.5);
  747. font-family: DM Sans;
  748. font-size: 20rpx;
  749. font-weight: 400;
  750. line-height: 44rpx;
  751. letter-spacing: 0px;
  752. text-align: left;
  753. }
  754. }
  755. }
  756. }
  757. .address-box-c-add {
  758. padding: 0;
  759. .address-box-c-add-l {
  760. color: rgba(102, 102, 102, 1);
  761. font-family: DM Sans;
  762. font-size: 24rpx;
  763. font-weight: 400;
  764. line-height: 16px;
  765. letter-spacing: 0px;
  766. text-align: left;
  767. }
  768. .address-box-c-add-r {
  769. width: 48rpx;
  770. height: 48rpx;
  771. display: flex;
  772. align-items: center;
  773. justify-content: center;
  774. }
  775. }
  776. }
  777. }
  778. }
  779. .business-section {
  780. width: 100%;
  781. margin-top: 30rpx;
  782. .business-box {
  783. width: 686rpx;
  784. background: #ffffff;
  785. border-radius: 24rpx;
  786. .business-title {
  787. color: rgba(34, 37, 42, 1);
  788. font-family: DM Sans;
  789. font-size: 16px;
  790. font-weight: 400;
  791. line-height: 24px;
  792. letter-spacing: 0px;
  793. text-align: left;
  794. margin-bottom: 24rpx;
  795. }
  796. .business-tags {
  797. gap: 12rpx;
  798. .business-tag {
  799. background: transparent;
  800. border: 1px solid rgba(153, 196, 250, 1);
  801. border-radius: 12rpx;
  802. padding: 6rpx 12rpx;
  803. color: rgba(40, 107, 229, 1);
  804. font-family: DM Sans;
  805. font-size: 20rpx;
  806. font-weight: 400;
  807. line-height: 16px;
  808. letter-spacing: 0px;
  809. text-align: center;
  810. }
  811. }
  812. }
  813. }
  814. .talent-section {
  815. width: 100%;
  816. margin-top: 30rpx;
  817. .talent-box {
  818. width: 686rpx;
  819. background: #ffffff;
  820. border-radius: 24rpx;
  821. .talent-title {
  822. color: rgba(34, 37, 42, 1);
  823. font-family: DM Sans;
  824. font-size: 16px;
  825. font-weight: 400;
  826. line-height: 24px;
  827. letter-spacing: 0px;
  828. text-align: left;
  829. margin-bottom: 24rpx;
  830. }
  831. .talent-tags {
  832. gap: 12rpx;
  833. .talent-tag {
  834. background: rgba(153, 153, 153, 0.1);
  835. border-radius: 12rpx;
  836. padding: 6rpx 12rpx;
  837. color: rgba(102, 102, 102, 1);
  838. font-family: DM Sans;
  839. font-size: 20rpx;
  840. font-weight: 400;
  841. line-height: 16px;
  842. letter-spacing: 0px;
  843. text-align: center;
  844. }
  845. .photo {
  846. width: 100%;
  847. }
  848. }
  849. }
  850. }
  851. .photo-box {
  852. position: relative;
  853. width: 100%;
  854. padding-top: 75%;
  855. overflow: hidden;
  856. }
  857. .photoImage {
  858. position: absolute;
  859. top: 0;
  860. left: 0;
  861. width: 100%;
  862. height: 100%;
  863. }
  864. .hr-section {
  865. width: 100%;
  866. .hr-box {
  867. width: 686rpx;
  868. background: #ffffff;
  869. border-radius: 24rpx;
  870. .hr-header {
  871. padding: 50rpx 0 0 0;
  872. margin-bottom: 30rpx;
  873. .hr-title {
  874. color: rgba(34, 37, 42, 1);
  875. font-family: DM Sans;
  876. font-size: 16px;
  877. font-weight: 400;
  878. line-height: 24px;
  879. letter-spacing: 0px;
  880. text-align: left;
  881. }
  882. .view-all-jobs {
  883. text {
  884. color: rgba(255, 102, 0, 1);
  885. font-family: DM Sans;
  886. font-size: 12px;
  887. font-weight: 400;
  888. line-height: 16px;
  889. letter-spacing: 0px;
  890. text-align: right;
  891. }
  892. }
  893. }
  894. .hr-list {
  895. padding: 0 0 30rpx 0;
  896. flex-wrap: wrap;
  897. gap: 20rpx;
  898. .hr-item {
  899. // flex: 1;
  900. .hr-content {
  901. align-items: center;
  902. .hr-avatar-container {
  903. position: relative;
  904. margin-right: 16rpx;
  905. .hr-avatar {
  906. width: 80rpx;
  907. height: 80rpx;
  908. border-radius: 50%;
  909. display: flex;
  910. align-items: center;
  911. justify-content: center;
  912. position: relative;
  913. image {
  914. width: 80rpx;
  915. height: 80rpx;
  916. border-radius: 50%;
  917. }
  918. .avatar-text {
  919. color: #ffffff;
  920. font-size: 32rpx;
  921. font-weight: 600;
  922. }
  923. }
  924. .online-dot {
  925. position: absolute;
  926. bottom: 4rpx;
  927. right: 4rpx;
  928. width: 20rpx;
  929. height: 20rpx;
  930. background-color: #7ED321;
  931. border-radius: 50%;
  932. border: 3rpx solid #ffffff;
  933. }
  934. }
  935. .hr-text {
  936. .hr-name {
  937. color: rgba(34, 37, 42, 1);
  938. font-family: DM Sans;
  939. font-size: 28rpx;
  940. font-weight: 500;
  941. line-height: 20px;
  942. margin-bottom: 4rpx;
  943. text-align: left;
  944. }
  945. .hr-position {
  946. color: rgba(153, 153, 153, 1);
  947. font-family: DM Sans;
  948. font-size: 24rpx;
  949. font-weight: 400;
  950. line-height: 16px;
  951. text-align: left;
  952. }
  953. }
  954. }
  955. }
  956. }
  957. }
  958. }
  959. .gsInfo {
  960. width: 100%;
  961. margin-top: 20rpx;
  962. .gsInfo-box {
  963. width: 686rpx;
  964. height: 100%;
  965. border-radius: 24rpx;
  966. .gsInfo-box-c {
  967. width: 100%;
  968. height: 100%;
  969. padding-top: 30rpx;
  970. padding-bottom: 30rpx;
  971. }
  972. .gsInfo-box-c-title {
  973. color: rgba(34, 37, 42, 1);
  974. font-family: DM Sans;
  975. font-size: 16px;
  976. font-weight: 400;
  977. line-height: 24px;
  978. letter-spacing: 0px;
  979. text-align: left;
  980. margin-bottom: 10rpx;
  981. }
  982. .gsInfo-box-c-item {
  983. color: rgba(153, 153, 153, 1);
  984. font-family: DM Sans;
  985. font-size: 12px;
  986. font-weight: 400;
  987. line-height: 16px;
  988. letter-spacing: 0%;
  989. text-align: left;
  990. margin-bottom: 10rpx;
  991. }
  992. }
  993. }
  994. .shar {
  995. width: 100%;
  996. height: 100rpx;
  997. margin-top: 40rpx;
  998. .shar-box {
  999. width: 686rpx;
  1000. height: 100%;
  1001. .shar-box-item {
  1002. font-size: 24rpx;
  1003. }
  1004. }
  1005. }
  1006. .line {
  1007. width: 100%;
  1008. border: 1rpx solid #F2F2F7;
  1009. margin-top: 30rpx;
  1010. margin-bottom: 20rpx;
  1011. }
  1012. .sharNo {
  1013. width: 100%;
  1014. color: #cccccc;
  1015. font-size: 24rpx;
  1016. text-align: center;
  1017. }
  1018. </style>