order.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197
  1. <template>
  2. <view style="padding: 148rpx 40rpx 40rpx 40rpx;">
  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 class="nav-icon" @click="setCollection">
  13. <image v-if="info.isCollection==0" src="/static/images/index/guanzhu.svg" class="icon-img"></image>
  14. <image v-else src="/static/images/index/gzActive.svg" style="width: 52rpx;height: 52rpx;"></image>
  15. </view>
  16. <view class="nav-icon" @click="showShare">
  17. <image src="/static/images/index/fenxiang.svg" style="width: 60rpx;height: 60rpx;"></image>
  18. </view>
  19. </view>
  20. </view>
  21. </view>
  22. </view>
  23. <!-- 岗位要求 -->
  24. <view class="job flex justify-center">
  25. <view class="job-info flex justify-center">
  26. <view class="job-info-c">
  27. <view class="job-info-c-top flex align-center justify-between">
  28. <view class="job-info-c-title" v-if="info.stationName">
  29. <block v-if="isSameName(info.ruleClassifyName,info.stationName)">
  30. {{info.ruleClassifyName}}-
  31. </block>
  32. <block>
  33. {{info.stationName}}
  34. </block>
  35. </view>
  36. <view class="job-info-c-price" v-if="info.salaryRange">
  37. {{info.salaryRange}}
  38. </view>
  39. </view>
  40. <view class="enterprise-box-c-bto flex align-center justify-between" @click.stop="gotoMap()">
  41. <view class="enterprise-box-c-bto-l flex align-center gap-10rpx">
  42. <u-icon name="map" color="rgba(58, 57, 67, 1)" style="margin-right: 10rpx;"
  43. size="24"></u-icon>
  44. {{info.province?info.province:''}}{{info.city?info.city:''}}{{info.county?info.county:''}}{{info.address?info.address:''}}
  45. </view>
  46. <!-- <view class="enterprise-box-c-bto-r">
  47. <u-icon name="arrow-right" color="#016BF6" style="margin-right: 20rpx;" size="28"></u-icon>
  48. </view> -->
  49. </view>
  50. <view class="job-info-c-label flex align-center flex-wrap">
  51. <view class="job-info-c-label-item" v-if="info.county">
  52. {{info.county}}
  53. </view>
  54. <view class="job-info-c-label-item" v-if="info.experience">
  55. {{info.experience}}
  56. </view>
  57. <view class="job-info-c-label-item" v-if="info.education">
  58. {{info.education}}
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. <!-- 急聘 -->
  65. <view class="urgent-banner">
  66. <view class="urgent-icon">
  67. <image src="/static/images/index/jipin2.svg" class="icon-img"></image>
  68. </view>
  69. <view class="urgent-text">
  70. <view class="urgent-title">该招聘为急聘职位</view>
  71. <view class="urgent-subtitle">急清职位可在下方点击一键投递简历</view>
  72. </view>
  73. </view>
  74. <!-- 企业信息 -->
  75. <view class="enterprise-box-c-info flex align-start justify-between">
  76. <view class="enterprise-left flex align-center">
  77. <view class="avatar-container">
  78. <image :src="info.company?info.company.companyLogo:'../../../static/logo.png'"
  79. style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode=""></image>
  80. <view class="online-dot"></view>
  81. </view>
  82. <view class="enterprise-box-c-info-n">
  83. <view class="">
  84. {{info.company?info.company.companyName:''}}
  85. </view>
  86. <view class="">
  87. {{info.company?info.company.companyScope:''}}
  88. </view>
  89. <view>
  90. 3分钟前回复
  91. </view>
  92. </view>
  93. </view>
  94. <view class="more-jobs flex align-center" @click="goToMoreJobs">
  95. <text>更多职位</text>
  96. <u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="28"></u-icon>
  97. </view>
  98. </view>
  99. <!-- 岗位介绍 -->
  100. <view class="jobRemarks flex justify-center">
  101. <!-- <skeleton type="round" bgColor="#ffffff"> -->
  102. <view class="jobRemarks-box flex justify-center">
  103. <view class="jobRemarks-box-c">
  104. <view class="jobRemarks-box-c-title flex align-center">
  105. <image src="/static/images/index/ins.png" class="title-icon"></image>
  106. <text>职位说明</text>
  107. </view>
  108. <view class="jobRemarks-box-c-label flex align-center flex-wrap" v-if="info.tag">
  109. <view class="jobRemarks-box-c-label-item" v-for="(item,index) in info.tag.split(',')"
  110. :key="index">
  111. {{item}}
  112. </view>
  113. </view>
  114. <view class="job-description">
  115. <view class="description-item">1.负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;</view>
  116. <view class="description-item">2.做好数据的统计分析工作,收集、分析市场信息,竞争对手状况,并根据产品销售与排名变化,及时制定和调整产品的销售策略;</view>
  117. <view class="description-item">3.熟悉Amazon店铺操作,负责店铺产品编辑上传,精准把握关键词选择,负责标题,详情页面的优化;</view>
  118. <view class="description-item">4.熟悉Amazon平台规则,熟悉Amazon站内广告投放和促销式,站外促销,找红人营销等提高曝光率和转化率的引流方;</view>
  119. <view class="description-item">5.控制产品风险,合理规划FBA库存,及时合理处理滞销FBA库存;</view>
  120. <view class="description-item">6.对产品销售进行跟踪,分析,及时汇报销售中存在的问题,并给出可行性意见;</view>
  121. <view class="description-item">7.及时处理客户留言及回评,解答客户相关咨询与投诉,并进行问题整理统计分析,提高店铺的好评率,确保账号安全;</view>
  122. <view class="description-item">8.每月定期整理分析运营各项数据,并提出相应的合理化建议。</view>
  123. <view class="description-item">工作经验要求:</view>
  124. <view class="description-item">1.Amazon平台欧美站点1年以上独立运营经验,英语能力良好</view>
  125. <view class="description-item">2.了解亚马逊平台算法逻辑和排名规则,有清晰的运营思路,掌握亚马逊平台推广技巧</view>
  126. <view class="description-item">3.能接受小精品/精铺模式,品类不限,发展空间更大</view>
  127. <view class="description-item">4.熟练掌握办公软件,擅长Excel表格的数据汇总和整理</view>
  128. <view class="description-item">5.有团队合作精神,良好的沟通和人际交往能力,有较好的主动性及挑战自我的信心</view>
  129. <view class="description-item">6.会使用各种AI来辅助运营工作,做过英国,欧洲本土号的优先录用</view>
  130. </view>
  131. <view class="jobRemarks-box-c-con" v-if="info.positionDetails">
  132. <view class="jobRemarks-box-c-con-item" v-html="info.positionDetails">
  133. </view>
  134. </view>
  135. <view class="jobRemarks-box-c-line"></view>
  136. <view class="jobRemarks-box-c-title flex align-center" style="margin-top: 25rpx;">
  137. <image src="/static/images/index/welfare.png" class="title-icon"></image>
  138. <text>岗位福利</text>
  139. </view>
  140. <view class="jobRemarks-box-c-label flex align-center flex-wrap" v-if="info.positionWelfare">
  141. <view class="jobRemarks-box-c-label-item"
  142. v-for="(item,index) in info.positionWelfare?info.positionWelfare.split(','):[]"
  143. :key="index">
  144. {{item}}
  145. </view>
  146. </view>
  147. <view class="jobRemarks-box-c-label flex align-center flex-wrap" v-else>
  148. <view class="jobRemarks-box-c-label-item">
  149. 暂无
  150. </view>
  151. </view>
  152. <view class="job-description">
  153. <view class="description-item">1.完整的晋升机制,每年2次调薪机会;</view>
  154. <view class="description-item">2.满一年五天带薪年假;</view>
  155. <view class="description-item">3.每月员工下午茶;</view>
  156. <view class="description-item">4.各类大促活动有对应的激励方案;</view>
  157. <view class="description-item">5.丰厚的提成和年终奖励;</view>
  158. <view class="description-item">6.开设员工俱乐部:羽毛球、篮球、舞蹈、瑜伽等等。</view>
  159. </view>
  160. </view>
  161. </view>
  162. <!-- </skeleton> -->
  163. </view>
  164. <!-- 企业简介 -->
  165. <view class="enterprise" v-if="info.lng">
  166. <!-- 公司介绍卡片 -->
  167. <view class="company-intro-card" @click="goInfo(info.company.companyId)">
  168. <view class="company-avatar">
  169. <image :src="info.company?info.company.companyLogo:'../../../static/logo.png'"
  170. style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode="aspectFill"></image>
  171. </view>
  172. <view class="company-info">
  173. <view class="company-name">{{info.company?info.company.companyName:''}}</view>
  174. <view class="company-details">{{info.company?info.company.companyPeople:''}} · {{info.company?info.company.companyScope:''}}</view>
  175. </view>
  176. <view class="company-arrow">
  177. <u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="32"></u-icon>
  178. </view>
  179. </view>
  180. <!-- 地图区域 -->
  181. <view class="enterprise-box flex justify-center">
  182. <view class="enterprise-box-c">
  183. <!-- #ifndef APP -->
  184. <view class="enterprise-box-c-map">
  185. <map style="width: 100%; height: 100%;" scale="14" @tap.stop="gotoMap()" :latitude="info.lat"
  186. :longitude="info.lng" :markers="covers">
  187. </map>
  188. </view>
  189. <!-- #endif -->
  190. </view>
  191. </view>
  192. </view>
  193. <!-- 底部操作 -->
  194. <view class="caozuo flex justify-center align-center">
  195. <view class="caozuo-box-l flex justify-center align-center" @click="oneClickApply">
  196. 一键投递
  197. </view>
  198. <view class="caozuo-box-r flex justify-center align-center" @click="bindphone(2)">
  199. 立即沟通
  200. </view>
  201. <!-- <view class="caozuo-box flex align-center justify-between">
  202. <view class="caozuo-box-l flex align-center">
  203. <!-- #ifdef MP-WEIXIN -->
  204. <view class="caozuo-box-l-item flex align-center flex-wrap">
  205. <button open-type="share">
  206. <u-icon name="share" color="#333333" size="50"></u-icon>
  207. <text style="margin-top: 16rpx;">分享</text>
  208. </button>
  209. </view>
  210. <!-- #endif -->
  211. <!-- #ifdef H5 -->
  212. <view class="caozuo-box-l-item flex align-center flex-wrap" @click="shar()">
  213. <u-icon name="share" color="#333333" size="50"></u-icon>
  214. <view class="">
  215. 分享
  216. </view>
  217. </view>
  218. #endif
  219. #ifdef APP-PLUS
  220. <view class="caozuo-box-l-item flex align-center flex-wrap" @click="shows = true">
  221. <u-icon name="share" color="#333333" size="50"></u-icon>
  222. <view class="">
  223. 分享
  224. </view>
  225. </view>
  226. <!-- #endif -->
  227. <view class="caozuo-box-l-item flex align-center flex-wrap" @click="goJuBao()">
  228. <u-icon name="warning" color="#333333" size="50"></u-icon>
  229. <view class="">
  230. 举报
  231. </view>
  232. </view>
  233. <view @click="setCollection()" class="caozuo-box-l-item flex align-center flex-wrap">
  234. <u-icon name="star" v-if="info.isCollection==0" color="#333333" size="50"></u-icon>
  235. <u-icon name="star-fill" v-else color="#016BF6" size="50"></u-icon>
  236. <view class="">
  237. {{info.isCollection==0?'收藏':'取消'}}
  238. </view>
  239. </view>
  240. </view>
  241. </view> -->
  242. </view>
  243. <u-popup v-model="shows" z-index="99999" mode="bottom" border-radius="14" height="300rpx">
  244. <view class="shar flex justify-center">
  245. <view class="shar-box flex justify-around">
  246. <view class="shar-box-item" @click="appShare('WXSceneSession')">
  247. <u-icon name="weixin-circle-fill" color="#45b630" style="margin-left: 10rpx;" size="70">
  248. </u-icon>
  249. <view class="">
  250. 微信好友
  251. </view>
  252. </view>
  253. <view class="shar-box-item" @click="appShare('WXSenceTimeline')">
  254. <u-icon name="moments-circel-fill" color="#6dbf30" size="70" style="margin-left: 20rpx;">
  255. </u-icon>
  256. <view class="">
  257. 微信朋友圈
  258. </view>
  259. </view>
  260. </view>
  261. </view>
  262. <view class="line"></view>
  263. <view class="sharNo" @click="shows = false">
  264. 取消
  265. </view>
  266. </u-popup>
  267. <!-- 返回首页按钮 -->
  268. <!-- #ifdef H5 -->
  269. <!--
  270. <view class="backHome" @click="goHome()">
  271. <image src="../../../static/images/index/backHome.png" mode=""></image>
  272. </view>
  273. -->
  274. <!-- #endif -->
  275. </view>
  276. </template>
  277. <script>
  278. import config from '../../../common/config.js'
  279. export default {
  280. //分享
  281. onShareAppMessage(res) {
  282. return {
  283. path: '/pages/index/game/order?postPushId=' + this.postPushId + '&invitation=' + uni.getStorageSync(
  284. 'invitationCode'),
  285. title: this.info.stationName,
  286. }
  287. },
  288. /*
  289. * uniapp微信小程序分享页面到微信朋友圈
  290. */
  291. onShareTimeline(res) {
  292. return {
  293. path: '/pages/index/game/order?postPushId=' + this.postPushId + '&invitation=' + uni.getStorageSync(
  294. 'invitationCode'),
  295. title: this.info.stationName,
  296. }
  297. },
  298. data() {
  299. return {
  300. statusBarHeight: 0, // 状态栏高度
  301. loading: true,
  302. shows: false,
  303. postPushId: '',
  304. info: {}, //岗位详情
  305. token: uni.getStorageSync('token'),
  306. covers: [{
  307. id: 1,
  308. latitude: '',
  309. longitude: '',
  310. width: 20,
  311. height: 20,
  312. iconPath: '../../../static/images/mapMarker.png',
  313. callout: {
  314. content: '',
  315. color: '#000', //文字颜色
  316. fontSize: 10, //文本大小
  317. padding: 10, //附近留白
  318. borderRadius: 24, //边框圆角
  319. bgColor: '#FFFFFF', //背景颜色
  320. display: 'ALWAYS', //常显
  321. }
  322. }],
  323. sharType: 0,
  324. sharMsg: '',
  325. };
  326. },
  327. onLoad(option) {
  328. // 获取状态栏高度
  329. let systemInfo = uni.getSystemInfoSync();
  330. this.statusBarHeight = systemInfo.statusBarHeight || 0;
  331. // 获取邀请码保存到本地
  332. if (option.invitation) {
  333. this.$queue.setData('inviterCode', option.invitation);
  334. }
  335. // #ifdef MP-WEIXIN
  336. if (option.scene) {
  337. const scene = decodeURIComponent(option.scene);
  338. this.$queue.setData('inviterCode', scene.split(',')[0]);
  339. }
  340. // #endif
  341. //小程序分享版本
  342. this.$Request.getT('/app/common/type/340').then(res => {
  343. if (res.code == 0) {
  344. if (res.data && res.data.value) {
  345. this.sharType = res.data.value
  346. }
  347. }
  348. });
  349. //小程序分享图片
  350. this.$Request.getT('/app/common/type/341').then(res => {
  351. if (res.code == 0) {
  352. if (res.data && res.data.value) {
  353. this.sharMsg = res.data.value
  354. }
  355. }
  356. });
  357. uni.showLoading({
  358. title: '加载中'
  359. })
  360. this.postPushId = option.postPushId
  361. this.getInfo()
  362. },
  363. methods: {
  364. // 返回上一页
  365. goBack() {
  366. uni.navigateBack();
  367. },
  368. // 显示分享选项
  369. showShare() {
  370. this.shows = true;
  371. },
  372. //判断岗位名称与职位名称是否相同(不区分大小写)
  373. isSameName(className, name) {
  374. let str1 = className.trim();
  375. let str2 = name.trim();
  376. if (str1.length !== str2.length) {
  377. return true;
  378. }
  379. return str1.toLowerCase() !== str2.toLowerCase();
  380. },
  381. goHome() {
  382. let pages = getCurrentPages(); // 获取页面栈
  383. console.log(pages)
  384. if (pages.length > 1) { //有上一页
  385. uni.navigateBack()
  386. } else {
  387. uni.switchTab({
  388. url: '/pages/index/index'
  389. })
  390. }
  391. },
  392. //app分享
  393. appShare(scene) {
  394. let that = this
  395. let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  396. let curRoute = routes[routes.length - 1].$page.fullPath // 获取当前页面路由,也就是最后一个打开的页面路由
  397. uni.share({
  398. provider: "weixin", //分享服务提供商(即weixin|qq|sinaweibo)
  399. scene: scene, //场景,可取值参考下面说明。
  400. type: 5, //分享形式 0:图文 1:纯文字 2:纯图片 3:音乐 4:视频 5:小程序
  401. // href: curRoute, //跳转链接
  402. // imageUrl:'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/962fc340-4f2c-11eb-bdc1-8bd33eb6adaa.png',
  403. imageUrl: that.sharMsg,
  404. title: that.info.stationName, //分享内容的标题
  405. miniProgram: {
  406. id: 'gh_d531be6accdb', //分享的小程序原始id
  407. path: curRoute, //分享的小程序的页面路径
  408. webUrl: "https://ask.dcloud.net.cn/article/287", //地址
  409. type: that.sharType, //微信小程序的版本 0-正式版; 1-测试版; 2-体验版。 默认值为0。
  410. },
  411. success: function(res) {
  412. that.shows = false; //成功后关闭底部弹框
  413. },
  414. fail: function(err) {
  415. console.log(err, '分享失败回调')
  416. uni.showToast({
  417. title: '分享失败',
  418. icon: 'none',
  419. duration: 2000
  420. })
  421. that.shows = false;
  422. }
  423. });
  424. },
  425. getShowModal() {
  426. uni.showModal({
  427. title: '提示',
  428. content: '请登录后联系企业',
  429. showCancel: true,
  430. cancelText: '取消',
  431. confirmText: '去登录',
  432. complete: (res) => {
  433. if (res.confirm) {
  434. uni.navigateTo({
  435. url: '/pages/public/login'
  436. })
  437. }
  438. }
  439. });
  440. },
  441. shar() {
  442. if (this.token) {
  443. let that = this
  444. // h5分享
  445. // #ifdef H5
  446. let url = config.WSHOST4 + '/pages/index/game/order?postPushId=' + this.postPushId
  447. // let url = 'http://192.168.0.109:8081/pages/index/game/order?postPushId=' + this.postPushId
  448. // alert(url)
  449. uni.setClipboardData({
  450. data: url,
  451. success() {
  452. uni.showToast({
  453. title: '分享链接已复制'
  454. })
  455. }
  456. })
  457. // #endif
  458. } else {
  459. this.getShowModal()
  460. }
  461. },
  462. goJuBao() {
  463. if (this.token) {
  464. uni.navigateTo({
  465. url: '/my/feedback/jubao?postPushId=' + this.postPushId
  466. })
  467. } else {
  468. this.getShowModal()
  469. }
  470. },
  471. //在线联系
  472. bindphone(phone, index) {
  473. if (uni.getStorageSync('token')) {
  474. this.$Request.get('/app/resumes/selectResumesByUserId').then(res => {
  475. if (res.code == 0) {
  476. let obj = res.data
  477. if (JSON.stringify(obj) == '{}' || obj == null) {
  478. uni.showModal({
  479. title: '提示',
  480. content: '暂无简历,请完善简历!',
  481. confirmText: '去完善',
  482. confirmColor: '#016BF6',
  483. complete(ret) {
  484. if (ret.confirm) {
  485. uni.navigateTo({
  486. url: '/package/my/resume'
  487. })
  488. }
  489. }
  490. })
  491. } else {
  492. this.$Request.postJson('/app/chat/insertChatConversation', {
  493. userId: uni.getStorageSync('userId'), //用户userid
  494. focusedUserId: this.info.user.userId, //企业userid
  495. type: 1,
  496. postPushId: this.info.postPushId,
  497. resumesId: res.data.resumesId
  498. }).then(res => {
  499. if (res.code == 0) {
  500. uni.navigateTo({
  501. url: '/pages/msg/im?byUserId=' + this.info.user
  502. .userId + '&chatConversationId=' + res.data
  503. .chatConversationId + '&postPushId=' + res.data
  504. .postPushId
  505. })
  506. }
  507. })
  508. }
  509. }
  510. })
  511. } else {
  512. uni.showModal({
  513. title: '提示',
  514. content: '请登录后联系企业',
  515. showCancel: true,
  516. cancelText: '取消',
  517. confirmText: '去登录',
  518. complete: (res) => {
  519. if (res.confirm) {
  520. uni.navigateTo({
  521. url: '/pages/public/login'
  522. })
  523. }
  524. }
  525. });
  526. }
  527. },
  528. //拉起地图导航
  529. gotoMap() {
  530. let that = this
  531. uni.openLocation({
  532. latitude: that.info.lat,
  533. longitude: that.info.lng,
  534. address: that.info.province + '' + that.info.city + '' + that.info.county + '' + that.info
  535. .address,
  536. name: that.info.address,
  537. complete(ret) {
  538. }
  539. })
  540. },
  541. /**
  542. * 收藏岗位
  543. */
  544. setCollection() {
  545. this.$Request.postT("/app/myCollection/saveCollection", {
  546. postPushId: this.postPushId,
  547. type: 1
  548. }).then(res => {
  549. if (res.code == 0) {
  550. uni.showToast({
  551. title: res.msg
  552. })
  553. this.getInfo()
  554. }
  555. })
  556. },
  557. /**
  558. * 获取岗位详情
  559. */
  560. getInfo() {
  561. this.$Request.getT("/app/postPush/selectPostPushDetails", {
  562. userId: uni.getStorageSync('userId'),
  563. postPushId: this.postPushId
  564. }).then(res => {
  565. if (res.code == 0) {
  566. this.info = res.data
  567. this.covers = [{
  568. id: 1,
  569. latitude: this.info.lat,
  570. longitude: this.info.lng,
  571. width: 20,
  572. height: 20,
  573. iconPath: '../../../static/images/mapMarker.png',
  574. callout: {
  575. content: this.info.city + '' + this.info.county + '' + this.info.address,
  576. color: '#000', //文字颜色
  577. fontSize: 10, //文本大小
  578. padding: 10, //附近留白
  579. borderRadius: 24, //边框圆角
  580. bgColor: '#FFFFFF', //背景颜色
  581. display: 'ALWAYS', //常显
  582. }
  583. }]
  584. }
  585. uni.hideLoading()
  586. })
  587. },
  588. //跳转企业详情
  589. goInfo(companyId) {
  590. uni.navigateTo({
  591. url: '/my/enterpriseInfo/enterpriseInfo?companyId=' + companyId
  592. })
  593. },
  594. //跳转更多职位
  595. goToMoreJobs() {
  596. uni.navigateTo({
  597. url: '/package/list/companyList?companyId=' + this.info.company.companyId
  598. })
  599. },
  600. //一键投递
  601. oneClickApply() {
  602. if (uni.getStorageSync('token')) {
  603. this.$Request.get('/app/resumes/selectResumesByUserId').then(res => {
  604. if (res.code == 0) {
  605. let obj = res.data
  606. if (JSON.stringify(obj) == '{}' || obj == null) {
  607. uni.showModal({
  608. title: '提示',
  609. content: '暂无简历,请完善简历!',
  610. confirmText: '去完善',
  611. confirmColor: '#016BF6',
  612. complete(ret) {
  613. if (ret.confirm) {
  614. uni.navigateTo({
  615. url: '/package/my/resume'
  616. })
  617. }
  618. }
  619. })
  620. } else {
  621. // 执行一键投递逻辑
  622. this.$Request.postT("/app/postPush/oneClickApply", {
  623. postPushId: this.postPushId,
  624. resumesId: res.data.resumesId
  625. }).then(res => {
  626. if (res.code == 0) {
  627. uni.showToast({
  628. title: '投递成功',
  629. icon: 'success'
  630. })
  631. } else {
  632. uni.showToast({
  633. title: res.msg || '投递失败',
  634. icon: 'none'
  635. })
  636. }
  637. })
  638. }
  639. }
  640. })
  641. } else {
  642. uni.showModal({
  643. title: '提示',
  644. content: '请登录后投递简历',
  645. showCancel: true,
  646. cancelText: '取消',
  647. confirmText: '去登录',
  648. complete: (res) => {
  649. if (res.confirm) {
  650. uni.navigateTo({
  651. url: '/pages/public/login'
  652. })
  653. }
  654. }
  655. });
  656. }
  657. },
  658. }
  659. }
  660. </script>
  661. <style lang="scss">
  662. page {
  663. // background-color: #F2F2F7;
  664. padding-bottom: 200rpx;
  665. }
  666. .fixed-nav {
  667. position: fixed;
  668. top: 0;
  669. left: 0;
  670. right: 0;
  671. z-index: 9999;
  672. background-color: #ffffff;
  673. padding: 0 32rpx;
  674. // padding-top 已改为动态计算,在模板中通过 :style 设置
  675. }
  676. .urgent-banner {
  677. width: 100%;
  678. height: 120rpx;
  679. background: linear-gradient(90deg, rgba(255, 65, 86, 1) 0%, rgba(255, 102, 0, 0.35) 100%);
  680. border-radius: 16rpx;
  681. display: flex;
  682. align-items: center;
  683. padding: 0 30rpx;
  684. margin: 0 auto 20rpx auto;
  685. .urgent-icon {
  686. width: 64rpx;
  687. height: 64rpx;
  688. border-radius: 50%;
  689. display: flex;
  690. align-items: center;
  691. justify-content: center;
  692. margin-right: 24rpx;
  693. flex-shrink: 0;
  694. }
  695. .urgent-text {
  696. flex: 1;
  697. text-align: left;
  698. .urgent-title {
  699. color: #ffffff;
  700. font-family: DM Sans;
  701. font-size: 26rpx;
  702. font-weight: 400;
  703. letter-spacing: 0px;
  704. }
  705. .urgent-subtitle {
  706. color: rgba(255, 255, 255, 1);
  707. font-family: DM Sans;
  708. font-size: 18rpx;
  709. font-weight: 400;
  710. text-align: left;
  711. }
  712. }
  713. }
  714. .nav-bar {
  715. display: flex;
  716. align-items: center;
  717. justify-content: space-between;
  718. margin-bottom: 30rpx;
  719. .nav-left {
  720. display: flex;
  721. align-items: center;
  722. justify-content: flex-start;
  723. width: 96rpx;
  724. }
  725. .nav-title {
  726. flex: 1;
  727. color: rgba(51, 51, 51, 1);
  728. font-family: DM Sans;
  729. font-size: 32rpx;
  730. font-weight: 700;
  731. line-height: 26px;
  732. text-align: center;
  733. }
  734. .nav-right {
  735. display: flex;
  736. align-items: center;
  737. justify-content: flex-end;
  738. width: 96rpx;
  739. }
  740. .nav-icons {
  741. display: flex;
  742. align-items: center;
  743. gap: 24rpx;
  744. }
  745. .nav-icon {
  746. display: flex;
  747. align-items: center;
  748. justify-content: center;
  749. width: 36rpx;
  750. height: 36rpx;
  751. }
  752. .icon-img {
  753. width: 42rpx;
  754. height: 42rpx;
  755. }
  756. .icon-img.active {
  757. filter: hue-rotate(120deg) saturate(1.5);
  758. }
  759. }
  760. button {
  761. background: #ffffff;
  762. border: none !important;
  763. width: 120rpx;
  764. font-size: 24rpx;
  765. height: 80rpx;
  766. display: flex;
  767. justify-content: center;
  768. align-content: flex-start;
  769. flex-wrap: wrap;
  770. margin: 0;
  771. padding: 0 !important;
  772. line-height: 0 !important;
  773. }
  774. button:after {
  775. border: none !important;
  776. }
  777. .backHome {
  778. position: fixed;
  779. right: 30rpx;
  780. bottom: 160rpx;
  781. image {
  782. width: 80rpx;
  783. height: 80rpx;
  784. border-radius: 50%;
  785. }
  786. }
  787. .shar {
  788. width: 100%;
  789. height: 100rpx;
  790. margin-top: 40rpx;
  791. .shar-box {
  792. width: 686rpx;
  793. height: 100%;
  794. .shar-box-item {
  795. font-size: 24rpx;
  796. }
  797. }
  798. }
  799. .line {
  800. width: 100%;
  801. border: 1rpx solid #F2F2F7;
  802. margin-top: 30rpx;
  803. margin-bottom: 20rpx;
  804. }
  805. .sharNo {
  806. width: 100%;
  807. color: #cccccc;
  808. font-size: 24rpx;
  809. text-align: center;
  810. }
  811. .job {
  812. width: 100%;
  813. margin-top: 30rpx;
  814. .job-info {
  815. // width: 686rpx;
  816. width: 100%;
  817. height: 100%;
  818. border-radius: 24rpx;
  819. background-color: #ffffff;
  820. .job-info-c {
  821. // width: 626rpx;
  822. width: 100%;
  823. height: 100%;
  824. padding-top: 30rpx;
  825. padding-bottom: 30rpx;
  826. }
  827. .enterprise-box-c-bto {
  828. width: 100%;
  829. border-radius: 30rpx;
  830. margin-top: 34rpx;
  831. color: rgba(156, 164, 171, 1);
  832. font-family: DM Sans;
  833. font-size: 12px;
  834. font-weight: 400;
  835. line-height: 12px;
  836. letter-spacing: 0.5%;
  837. }
  838. .job-info-c-title {
  839. color: rgba(58, 57, 67, 1);
  840. font-family: DM Sans;
  841. font-size: 26px;
  842. font-weight: 700;
  843. line-height: 30px;
  844. letter-spacing: 0px;
  845. text-align: left;
  846. }
  847. .job-info-c-label {
  848. margin-top: 30rpx;
  849. .job-info-c-label-item {
  850. margin-right: 30rpx;
  851. color: rgba(153, 153, 153, 1);
  852. font-size: 24rpx;
  853. padding: 4px;
  854. border-radius: 6px;
  855. background: rgba(198, 198, 198, 0.1);
  856. }
  857. }
  858. .job-info-c-price {
  859. color: rgba(1, 107, 246, 1);
  860. font-family: DM Sans;
  861. font-size: 18px;
  862. font-weight: 700;
  863. line-height: 20px;
  864. letter-spacing: 0.5%;
  865. text-align: right;
  866. }
  867. }
  868. }
  869. .enterprise-box-c-info {
  870. width: 100%;
  871. height: auto;
  872. padding: 16px;
  873. border: 0.5px solid rgba(227, 231, 236, 1);
  874. border-radius: 6px;
  875. background: rgba(253, 253, 253, 1);
  876. // margin-top: 40rpx;
  877. .enterprise-left {
  878. flex: 1;
  879. }
  880. .avatar-container {
  881. position: relative;
  882. display: inline-block;
  883. }
  884. .online-dot {
  885. position: absolute;
  886. bottom: 4rpx;
  887. right: 4rpx;
  888. width: 20rpx;
  889. height: 20rpx;
  890. background: #00D26A;
  891. border: 2rpx solid #ffffff;
  892. border-radius: 50%;
  893. }
  894. .more-jobs {
  895. color: rgba(153, 153, 153, 1);
  896. font-size: 22rpx;
  897. font-weight: 400;
  898. gap: 8rpx;
  899. }
  900. .enterprise-box-c-info-n {
  901. margin-left: 18rpx;
  902. view:nth-of-type(1) {
  903. color: #333333;
  904. font-size: 24rpx;
  905. font-weight: 600;
  906. }
  907. view:nth-of-type(2) {
  908. color: #999999;
  909. font-size: 24rpx;
  910. font-weight: 500;
  911. margin-top: 8rpx;
  912. }
  913. view:nth-of-type(3) {
  914. display: inline-block;
  915. width: auto;
  916. border-radius: 6px;
  917. padding: 4rpx 12rpx;
  918. background: rgba(236, 225, 253, 1);
  919. color: rgba(107, 85, 214, 0.96);
  920. font-size: 20rpx;
  921. font-weight: 500;
  922. margin-top: 8rpx;
  923. white-space: nowrap;
  924. }
  925. }
  926. }
  927. .jobRemarks {
  928. width: 100%;
  929. .jobRemarks-box {
  930. width: 100%;
  931. height: 100%;
  932. background-color: #ffffff;
  933. border-radius: 24rpx;
  934. .jobRemarks-box-c {
  935. width: 100%;
  936. height: 100%;
  937. padding-top: 30rpx;
  938. padding-bottom: 30rpx;
  939. }
  940. .jobRemarks-box-c-title {
  941. color: rgba(1, 107, 246, 1);
  942. font-size: 32rpx;
  943. padding: 8px 12px;
  944. border-radius: 36px;
  945. font-weight: 500;
  946. background: rgba(246, 246, 246, 1);
  947. .title-icon {
  948. width: 32rpx;
  949. height: 32rpx;
  950. }
  951. }
  952. .job-description {
  953. margin-top: 20rpx;
  954. margin-bottom: 20rpx;
  955. .description-item {
  956. color: rgba(97, 110, 124, 1);
  957. font-family: DM Sans;
  958. font-size: 26rpx;
  959. font-weight: 400;
  960. line-height: 16px;
  961. letter-spacing: 0px;
  962. text-align: left;
  963. margin-bottom: 8rpx;
  964. }
  965. }
  966. .jobRemarks-box-c-label {
  967. width: 100%;
  968. margin-top: 25rpx;
  969. .jobRemarks-box-c-label-item {
  970. color: rgba(1, 107, 246, 1);
  971. font-size: 20rpx;
  972. padding: 10rpx 15rpx;
  973. background-color: #F6F6F6;
  974. border-radius: 10rpx;
  975. margin-right: 20rpx;
  976. margin-bottom: 10rpx;
  977. background: rgba(252, 233, 220, 1);
  978. }
  979. }
  980. .jobRemarks-box-c-con {
  981. width: 100%;
  982. margin-top: 25rpx;
  983. .jobRemarks-box-c-con-item {
  984. margin-bottom: 10rpx;
  985. color: #141414;
  986. font-size: 28rpx;
  987. font-weight: 500;
  988. }
  989. }
  990. .jobRemarks-box-c-line {
  991. width: 100%;
  992. border: 1rpx solid #E6E6E6;
  993. margin-top: 25rpx;
  994. }
  995. }
  996. }
  997. .enterprise {
  998. width: 100%;
  999. margin-top: 25rpx;
  1000. .company-intro-card {
  1001. width: 100%;
  1002. background-color: #ffffff;
  1003. border-radius: 24rpx;
  1004. padding: 12rpx 24rpx;
  1005. margin-bottom: 20rpx;
  1006. display: flex;
  1007. align-items: center;
  1008. border: 0.5px solid rgba(227, 231, 236, 1);
  1009. .company-avatar {
  1010. flex-shrink: 0;
  1011. margin-right: 24rpx;
  1012. }
  1013. .company-info {
  1014. flex: 1;
  1015. .company-name {
  1016. color: rgba(51, 51, 51, 1);
  1017. font-size: 26rpx;
  1018. font-weight: 600;
  1019. line-height: 1.4;
  1020. margin-bottom: 8rpx;
  1021. }
  1022. .company-details {
  1023. color: rgba(153, 153, 153, 1);
  1024. font-size: 24rpx;
  1025. font-weight: 400;
  1026. line-height: 1.4;
  1027. }
  1028. }
  1029. .company-arrow {
  1030. flex-shrink: 0;
  1031. margin-left: 48rpx;
  1032. }
  1033. }
  1034. .enterprise-box {
  1035. width: 100%;
  1036. background-color: #ffffff;
  1037. height: 100%;
  1038. padding-bottom: 25rpx;
  1039. border-radius: 24rpx;
  1040. .enterprise-box-c {
  1041. width: 100%;
  1042. height: 100%;
  1043. }
  1044. .enterprise-box-c-map {
  1045. width: 100%;
  1046. margin-top: 20rpx;
  1047. height: 400rpx;
  1048. }
  1049. }
  1050. }
  1051. .caozuo {
  1052. width: 100%;
  1053. height: 120rpx;
  1054. position: fixed;
  1055. bottom: 0;
  1056. left: 0;
  1057. background-color: #ffffff;
  1058. padding: 0 40rpx;
  1059. gap: 20rpx;
  1060. .caozuo-box-l {
  1061. flex: 0.8;
  1062. height: 80rpx;
  1063. color: #ffffff;
  1064. border-radius: 45rpx;
  1065. background: linear-gradient(90deg, rgba(255, 65, 86, 1) 0%, rgba(255, 102, 0, 0.35) 100%);
  1066. font-size: 32rpx;
  1067. font-weight: 400;
  1068. }
  1069. .caozuo-box-r {
  1070. flex: 1.2;
  1071. height: 80rpx;
  1072. color: #ffffff;
  1073. border-radius: 45rpx;
  1074. /* #ifndef APP-PLUS */
  1075. background: var(--线性渐变, linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%));
  1076. /* #endif */
  1077. /* #ifdef APP-PLUS */
  1078. background: var(--线性渐变, linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%));
  1079. line-height: 80rpx;
  1080. text-align: center;
  1081. /* #endif */
  1082. font-size: 32rpx;
  1083. font-weight: 400;
  1084. }
  1085. // .caozuo-box {
  1086. // width: 686rpx;
  1087. // height: 80rpx;
  1088. // .caozuo-box-l {
  1089. // .caozuo-box-l-item {
  1090. // width: 60rpx;
  1091. // font-size: 24rpx;
  1092. // color: #242424;
  1093. // font-weight: 500;
  1094. // margin-right: 50rpx;
  1095. // }
  1096. // }
  1097. // }
  1098. }
  1099. </style>