jobSearchDetails.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. <template>
  2. <view>
  3. <u-navbar :back-text="showTitle" back-icon-size="28" back-icon-color="#ffffff"
  4. :background="{backgroundColor: '#2795FD',}" :back-text-style="{color: '#ffffff'}"></u-navbar>
  5. <view class="content">
  6. <!-- 职位 -->
  7. <view class="position">
  8. {{info.intendedIndustriesN}}
  9. </view>
  10. <!-- 薪水 -->
  11. <view class="saraly">
  12. {{info.hopeSalary}}<text>{{getUnit(info)}}</text>
  13. </view>
  14. <!-- 发布日期和浏览量 -->
  15. <view class="date-views">
  16. <view class="date">
  17. 更新时间:{{getTime(info)}}
  18. </view>
  19. <view class="views">
  20. 浏览量:{{info.browseNumber}}
  21. </view>
  22. </view>
  23. </view>
  24. <view class="content">
  25. <view class="job-information">
  26. 求职信息
  27. </view>
  28. <!-- 意向岗位 -->
  29. <view class="intention">
  30. <view class="title">
  31. 意向岗位:
  32. </view>
  33. <view class="details">
  34. {{info.intendedPosition}}
  35. </view>
  36. </view>
  37. <!-- 服务描述 -->
  38. <view class="describe">
  39. 服务描述
  40. </view>
  41. <view class="describe-details">
  42. {{info.serviceDesc}}
  43. </view>
  44. </view>
  45. <view class="content">
  46. <!-- 联系方式 -->
  47. <view class="contact-information">
  48. <view class="title">
  49. 联系方式
  50. </view>
  51. <view class="details">
  52. <!-- 照片 -->
  53. <view class="photo">
  54. <u-avatar :src="personInfo.photo"></u-avatar>
  55. </view>
  56. <view class="linkman-infos">
  57. <!-- 姓名电话 -->
  58. <view class="name-tel">
  59. <view class="name">
  60. {{personInfo.realName}}
  61. </view>
  62. <view class="tel" v-if="ck()">
  63. {{personInfo.phone}}
  64. </view>
  65. <view class="tel" style="font-size: 24rpx;" v-else >
  66. **** 企业认证后查看电话
  67. </view>
  68. </view>
  69. <!-- 标签 -->
  70. <view class="tags">
  71. <view class="tag-item">
  72. {{personInfo.gender==1?'男':'女'}}
  73. </view>
  74. <view class="tag-item">
  75. {{personInfo.age}}岁
  76. </view>
  77. <view class="tag-item" v-if="info.educationN">
  78. {{info.educationN}}
  79. </view>
  80. </view>
  81. <view style="margin-top: 18rpx; color: #777777;">
  82. 现居住地:
  83. <span class="tel" v-if="ck()">
  84. {{info.address}}
  85. </span>
  86. <span class="tel" style="font-size: 24rpx;" v-else >
  87. **** 企业认证后查看
  88. </span>
  89. </view>
  90. </view>
  91. </view>
  92. </view>
  93. </view>
  94. <!-- 底部按钮 -->
  95. <view class="bottom">
  96. <!-- 分享 -->
  97. <view >
  98. <button class="share" open-type="share">
  99. <view class="icon">
  100. <img src="@/assets/img/riFill-share-circle-fill@1x.png" alt="">
  101. </view>
  102. <view class="text">
  103. 分享
  104. </view>
  105. </button>
  106. </view>
  107. <view class="btn">
  108. <button class="dialing" @click="dialingBtn" >一键拨号</button>
  109. <button class="invite" :class="{
  110. isJoin:isJoin
  111. }" @click="isJoinBtn"
  112. >{{isJoin?'已邀请':'立即邀请'}}</button>
  113. </view>
  114. <u-modal v-model="showPhone" @confirm="confirmPhone" :confirm-text="confirmText" confirm-color="#606266"
  115. :show-cancel-button="true" ref="uModal" :asyncClose="true" title="联系电话" :content="personInfo.phone"
  116. :content-style="{fontSize: '24px',color: '#101010'}"></u-modal>
  117. <!-- 筛选框 -->
  118. <u-popup v-model="popupShow" mode="bottom" border-radius="20" :closeable="true">
  119. <view class="popup-content">
  120. <view class="headline">
  121. 选择岗位
  122. </view>
  123. <!-- 工作经验 -->
  124. <view class="work-experience">
  125. <!-- 选项 -->
  126. <view class="options">
  127. <view :class="{item,checked:workChecked==index}" v-for="(item,index) in workList" :key="index"
  128. @click="workChecked=index">
  129. {{item.positionName}}-{{item.salary}}{{getUnit(item)}}
  130. </view>
  131. </view>
  132. </view>
  133. <view class="button">
  134. <button class="reset" @click="popupShow=false">关闭</button>
  135. <button class="confirm" @click="isJoinMethodBtn()" >发出邀请</button>
  136. </view>
  137. </view>
  138. </u-popup>
  139. </view>
  140. </view>
  141. </template>
  142. <script>
  143. import * as API from '@/apis/pagejs/packages.js'
  144. export default {
  145. data() {
  146. return {
  147. id: "",
  148. workList:[],
  149. popupShow:false,
  150. showPhone: false,
  151. confirmText: '拨打电话',
  152. content: "",
  153. isJoin: false,
  154. share: 0,
  155. personInfo:{},
  156. readId:"",
  157. isRead:0,
  158. workChecked:-1,
  159. info: {
  160. "id": "",
  161. "personId": "",
  162. "photo": "",
  163. "serviceDesc": "",
  164. "intendedIndustries": "",
  165. "intendedPosition": "",
  166. "hopeSalary": '',
  167. "method": "",
  168. "workExperience": "",
  169. "education": "",
  170. "status": "",
  171. "createBy": "",
  172. "createTime": "",
  173. "updateBy": "",
  174. "updateTime": "",
  175. "delFlag": false,
  176. "personName": null,
  177. "intendedIndustriesN": null,
  178. "methodN": null,
  179. "workExperienceN": null,
  180. "educationN": null
  181. }
  182. }
  183. },
  184. onShareTimeline(){
  185. return {
  186. title: "荆州经开区共享用工平台",
  187. }
  188. },
  189. onShareAppMessage(res) {
  190. if (res.from === 'button') { // 来自页面内分享按钮
  191. //.log(res.target)
  192. }
  193. return {
  194. title: this.showTitle,
  195. path: '/pages/main/index/index?shareMP=1&t=jobSearchDetails&id=' + this.id
  196. }
  197. },
  198. computed: {
  199. showTitle() {
  200. if (this.info.id) {
  201. return this.personInfo.realName+"-"+this.info.hopeSalary+this.getUnit(this.info)
  202. }
  203. return ''
  204. }
  205. },
  206. onLoad(op) {
  207. //uni.showShareMenu()
  208. this.id = op.id
  209. if (op.shareMP) {
  210. this.share = op.shareMP
  211. }
  212. if(op.isread){
  213. this.isRead=op.isread
  214. this.readId=op.readid
  215. }
  216. this.getInfo()
  217. },
  218. methods: {
  219. ck(){
  220. var user=this.carhelp.getPersonInfo();
  221. var enterpriseInfo=this.carhelp.getPersonInfoPlus().enterpriseInfo;
  222. if(user&&enterpriseInfo&&enterpriseInfo.status==1){
  223. return true
  224. }else{
  225. return false
  226. }
  227. },
  228. dialingBtn(){
  229. if(this.ck()){
  230. if(this.personInfo.phone){
  231. this.showPhone=true
  232. }else{
  233. uni.showToast({
  234. icon: 'none',
  235. title:"该用户未预留手机号"
  236. })
  237. }
  238. }else{
  239. uni.showToast({
  240. title:"企业认证后可以拨打电话",
  241. icon:"none"
  242. })
  243. }
  244. },
  245. confirmPhone() {
  246. this.showPhone = false;
  247. uni.makePhoneCall({
  248. phoneNumber: this.personInfo.phone
  249. });
  250. },
  251. isJoinMethodBtn() {
  252. if(this.workChecked==-1){
  253. uni.showToast({icon: 'none',
  254. title:"请选择邀请岗位"
  255. })
  256. return
  257. }
  258. var jobId =this.workList[this.workChecked].id
  259. uni.showLoading({
  260. title: "加载中",
  261. mask: true,
  262. })
  263. API.inviteJob({
  264. recruitId:jobId,
  265. jobId: this.id,
  266. }).then((res) => {
  267. this.isJoin = true;
  268. this.popupShow=false
  269. //this.info=res.data.recruitInformationInfo;
  270. uni.showModal({
  271. title: '提示',
  272. content: '邀请成功',
  273. showCancel: false,
  274. success: function(res) {
  275. if (res.confirm) {
  276. //uni.navigateBack()
  277. } else if (res.cancel) {
  278. //.log('用户点击取消');
  279. }
  280. }
  281. });
  282. uni.hideLoading();
  283. }).catch(error => {
  284. uni.showToast({icon: 'none',
  285. title: error,
  286. icon: "none"
  287. })
  288. })
  289. },
  290. popupShowOpen(){
  291. if(this.workList.length==0){
  292. uni.showLoading({
  293. title: "加载中",
  294. mask: true,
  295. })
  296. API.myEmployment({
  297. pageIndex: 1,
  298. pageSize: 200,
  299. status: 1
  300. }).then((res) => {
  301. uni.hideLoading();
  302. if(res.data.data.length){
  303. this.workList=res.data.data
  304. this.popupShow=true
  305. }else{
  306. uni.showModal({
  307. title: '提示',
  308. content: '发布招工信息后可以邀请人员',
  309. confirmText:"前往发布",
  310. showCancel: true,
  311. success: function(res) {
  312. if (res.confirm) {
  313. uni.navigateTo({
  314. url:'/pages/tab/issue/issue'
  315. })
  316. } else if (res.cancel) {
  317. //.log('用户点击取消');
  318. }
  319. }
  320. });
  321. }
  322. }).catch(error => {
  323. uni.showToast({icon: 'none',
  324. title: error
  325. })
  326. //this.getPhone()
  327. })
  328. }else{
  329. this.popupShow=true
  330. }
  331. },
  332. isJoinBtn() {
  333. if (this.isJoin) {
  334. return
  335. }
  336. var user=this.carhelp.getPersonInfo();
  337. var enterpriseInfo=this.carhelp.getPersonInfoPlus().enterpriseInfo;
  338. if (!user) {
  339. uni.showModal({
  340. title: '提示',
  341. content: '登录并企业认证后可以邀请',
  342. confirmText:"前往登录",
  343. showCancel: true,
  344. success: function(res) {
  345. if (res.confirm) {
  346. uni.navigateTo({
  347. url:'/pages/tab/mine/mine'
  348. })
  349. } else if (res.cancel) {
  350. //.log('用户点击取消');
  351. }
  352. }
  353. });
  354. return
  355. }
  356. if (!enterpriseInfo||enterpriseInfo.status!=1) {
  357. uni.showModal({
  358. title: '提示',
  359. content: '企业认证后可以邀请',
  360. confirmText:"企业认证",
  361. showCancel: true,
  362. success: function(res) {
  363. if (res.confirm) {
  364. uni.navigateTo({
  365. url:'/pages/packages/mine/otherServices/authentication'
  366. })
  367. } else if (res.cancel) {
  368. //.log('用户点击取消');
  369. }
  370. }
  371. });
  372. return
  373. }
  374. this.popupShowOpen()
  375. },
  376. getInfo() {
  377. uni.showLoading({
  378. title: "加载中",
  379. mask: true,
  380. })
  381. var obj={
  382. id: this.id,
  383. }
  384. if(this.isRead==1){
  385. obj.isRead=1
  386. obj.rprId=this.readId
  387. }
  388. API.jobHuntDetail(obj).then((res) => {
  389. this.isJoin = res.data.isInvite;
  390. this.info = res.data.jobInformationInfo;
  391. this.personInfo = res.data.personInfo;
  392. uni.hideLoading();
  393. }).catch(error => {
  394. uni.showToast({icon: 'none',
  395. title: error,
  396. icon: "none"
  397. })
  398. })
  399. }
  400. }
  401. }
  402. </script>
  403. <style>
  404. page {
  405. background: #F0F0F2;
  406. padding-bottom: 50px;
  407. }
  408. </style>
  409. <style lang="scss" scoped>
  410. .content{
  411. padding: 32rpx;
  412. background-color: #fff;
  413. margin-bottom: 24rpx;
  414. // 职位
  415. .position{
  416. color: rgba(16, 16, 16, 1);
  417. font-size: 24px;
  418. font-family: 'PingFangSC-medium';
  419. }
  420. // 薪水
  421. .saraly{
  422. margin-top: 16rpx;
  423. color: rgba(255, 61, 0, 1);
  424. font-size: 48rpx;
  425. text{
  426. font-size: 14px;
  427. margin-left: 4rpx;
  428. }
  429. }
  430. // 发布日期和浏览量
  431. .date-views{
  432. display: flex;
  433. justify-content: space-between;
  434. align-items: center;
  435. margin-top: 40rpx;
  436. .date{
  437. color: rgba(119, 119, 119, 1);
  438. font-size: 24rpx;
  439. }
  440. .views{
  441. color: rgba(119, 119, 119, 1);
  442. font-size: 24rpx;
  443. }
  444. }
  445. // 求职信息
  446. .job-information{
  447. color: rgba(16, 16, 16, 1);
  448. font-size: 18px;
  449. font-family: 'PingFangSC-medium';
  450. }
  451. // 意向岗位
  452. .intention{
  453. display: flex;
  454. align-items: center;
  455. margin-top: 24rpx;
  456. .title{
  457. color: rgba(119, 119, 119, 1);
  458. }
  459. .datails{
  460. color: rgba(16, 16, 16, 1);
  461. }
  462. }
  463. // 服务描述
  464. .describe{
  465. font-size: 36rpx;
  466. text-align: left;
  467. font-family: 'PingFangSC-medium';
  468. margin-top: 64rpx;
  469. color: rgba(16, 16, 16, 1);
  470. }
  471. .describe-details{
  472. color: rgba(51, 51, 51, 1);
  473. font-size: 32rpx;
  474. margin-top: 24rpx;
  475. }
  476. // 联系方式
  477. .contact-information{
  478. .title{
  479. color: rgba(16, 16, 16, 1);
  480. font-size: 36rpx;
  481. }
  482. .details{
  483. display: flex;
  484. margin-top: 24rpx;
  485. .photo{
  486. width: 112rpx;
  487. height: 112rpx;
  488. border-radius: 50rpx;
  489. border: 1px solid rgba(255, 255, 255, 1);
  490. overflow: hidden;
  491. img{
  492. width: 100%;
  493. height: 100%;
  494. }
  495. }
  496. .linkman-infos{
  497. margin-left: 24rpx;
  498. // 姓名电话
  499. .name-tel{
  500. display: flex;
  501. align-items: center;
  502. .name{
  503. color: rgba(16, 16, 16, 1);
  504. font-size: 36rpx;
  505. font-family: 'PingFangSC-medium';
  506. }
  507. .tel{
  508. color: rgba(119, 119, 119, 1);
  509. font-size: 36rpx;
  510. margin-left: 16rpx;
  511. }
  512. }
  513. // 标签
  514. .tags{
  515. display: flex;
  516. margin-top: 16rpx;
  517. .tag-item{
  518. line-height: 40rpx;
  519. padding: 0 8rpx;
  520. border-radius: 4px;
  521. background-color: rgba(241, 241, 247, 1);
  522. color: rgba(129, 127, 153, 1);
  523. font-size: 24rpx;
  524. text-align: center;
  525. margin-right: 16rpx;
  526. }
  527. }
  528. }
  529. }
  530. }
  531. }
  532. // 底部按钮
  533. .bottom{
  534. background-color: #fff;
  535. padding: 24rpx 44rpx;
  536. display: flex;
  537. align-items: center;
  538. position: fixed;
  539. bottom: 0;
  540. left: 0;
  541. right: 0;
  542. .share {
  543. background-color: #fff;
  544. }
  545. // 分享
  546. .icon{
  547. width: 48rpx;
  548. height: 48rpx;
  549. img{
  550. width: 100%;
  551. height: 100%;
  552. }
  553. }
  554. .text{
  555. color: rgba(39, 149, 253, 1);
  556. font-size:24rpx;
  557. }
  558. .btn{
  559. display: flex;
  560. margin-left: auto;
  561. .dialing{
  562. width: 240rpx;
  563. height: 88rpx;
  564. line-height: 88rpx;
  565. border-radius: 50px;
  566. background-color: #fff;
  567. color: rgba(39, 149, 253, 1);
  568. font-size: 36rpx;
  569. text-align: center;
  570. border: 1px solid rgba(39, 149, 253, 1);
  571. margin-right: 24rpx;
  572. }
  573. .invite{
  574. width: 280rpx;
  575. height: 88rpx;
  576. line-height: 88rpx;
  577. border-radius: 50px;
  578. background-color: rgba(34, 149, 255, 1);
  579. color: rgba(255, 255, 255, 1);
  580. font-size: 36rpx;
  581. text-align: center;
  582. }
  583. .isJoin{
  584. background-color: #19be6d;
  585. }
  586. }
  587. }
  588. // 筛选框
  589. .popup-content {
  590. padding: 32rpx;
  591. .headline {
  592. color: #101010;
  593. font-size: 40rpx;
  594. text-align: center;
  595. }
  596. // 薪资待遇
  597. .salary-package,
  598. .work-experience {
  599. margin-top: 16rpx;
  600. .title {
  601. font-size: 32rpx;
  602. color: #111111;
  603. }
  604. // 选项
  605. .options {
  606. display: flex;
  607. flex-wrap: wrap;
  608. justify-content: flex-start;
  609. margin-top: 24rpx;
  610. margin-bottom: 94rpx;
  611. .item {
  612. height: 56rpx;
  613. line-height: 56rpx;
  614. min-width: 210rpx;
  615. text-align: center;
  616. margin-bottom: 16rpx;
  617. margin-right: 16rpx;
  618. color: #999999;
  619. background-color: #F3F3F4;
  620. border-radius: 4px;
  621. padding: 0 6rpx;
  622. }
  623. .checked {
  624. background-color: #2795FD;
  625. color: #fff;
  626. }
  627. }
  628. }
  629. .button {
  630. display: flex;
  631. margin-top: 8rpx;
  632. .reset {
  633. color: #999999;
  634. background-color: #F3F3F4;
  635. width: 200rpx;
  636. height: 72rpx;
  637. line-height: 72rpx;
  638. border-radius: 8px;
  639. }
  640. .confirm {
  641. width: 440rpx;
  642. background-color: #2795FD;
  643. color: #fff;
  644. height: 72rpx;
  645. line-height: 72rpx;
  646. border-radius: 8px;
  647. }
  648. }
  649. }
  650. </style>