特易招,招聘小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

383 lines
7.7 KiB

1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
8 months ago
1 year ago
8 months ago
1 year ago
1 year ago
8 months ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
10 months ago
10 months ago
10 months ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
8 months ago
1 year ago
  1. <template>
  2. <view class="page">
  3. <navbar leftClick @leftClick="$utils.navigateBack" />
  4. <view class="head">
  5. <view class="headImage">
  6. <image :src="hanHaiMember.headImage" mode=""></image>
  7. <view class="">
  8. {{ detail.title }}
  9. </view>
  10. </view>
  11. <view class="info">
  12. <view class="name">
  13. {{ authenticationPerson.name }}
  14. </view>
  15. <view class="tips">
  16. 性别{{ detail.sex }}
  17. </view>
  18. <view class="tips">
  19. 年龄{{ detail.age }}
  20. </view>
  21. <view class="tips">
  22. 学历{{ detail.qualification }}
  23. </view>
  24. </view>
  25. <view class="right">
  26. <view class="phone"
  27. @click.stop="callPhone">
  28. <image src="/static/image/home/phone.png" mode=""></image>
  29. 联系他
  30. </view>
  31. </view>
  32. </view>
  33. <view style="background-color: #f3f3f3;height: 30rpx;"></view>
  34. <view class="box">
  35. <view class="userinfo">
  36. <view class="line"
  37. style="justify-content: flex-end;">
  38. <view v-if="collectionFlag == false" @click="addResumeCollection"
  39. style="display: flex;align-items: center;">
  40. <uv-icon size="30rpx" color="666" name="star"></uv-icon>
  41. 收藏
  42. </view>
  43. <view v-else @click="addResumeCollection"
  44. style="display: flex;align-items: center;color: #f40;">
  45. <uv-icon size="30rpx" color="#f40" name="star-fill"></uv-icon>
  46. 已收藏
  47. </view>
  48. </view>
  49. <view class="line">
  50. <view class="left">
  51. 联系电话
  52. </view>
  53. <view class="right phone-container">
  54. <text>{{ displayPhone }}</text>
  55. <view v-if="!showPhone" class="view-phone-btn" @click="clickShowPhone">
  56. 查看
  57. </view>
  58. </view>
  59. </view>
  60. <view class="line">
  61. <view class="left">
  62. 期望工作地
  63. </view>
  64. <view class="right">
  65. {{ detail.expectAddressName || detail.expectAddress }}
  66. </view>
  67. </view>
  68. <view class="line">
  69. <view class="left">
  70. 民族
  71. </view>
  72. <view class="right">
  73. {{ detail.nation }}
  74. </view>
  75. </view>
  76. <view class="line">
  77. <view class="left">
  78. 工龄
  79. </view>
  80. <view class="right">
  81. {{ detail.workTime ? `${detail.workTime}` : '应届生' }}
  82. </view>
  83. </view>
  84. <view class="line">
  85. <view class="left">
  86. IP归属地
  87. </view>
  88. <view class="right">
  89. {{ detail.ipAddress || '' }}
  90. </view>
  91. </view>
  92. </view>
  93. <view class="info">
  94. <view class="title2">
  95. <text>个人介绍</text>
  96. </view>
  97. <!-- <view
  98. class="text"
  99. v-html="text">
  100. </view> -->
  101. <view class="text">
  102. <uv-parse :content="detail.brief"></uv-parse>
  103. </view>
  104. <view class="tag-list">
  105. <view :key="i" v-for="(t, i) in detail.tag && detail.tag.split('、')">
  106. {{ t }}
  107. </view>
  108. </view>
  109. </view>
  110. </view>
  111. <view class="uni-color-btn"
  112. @click="$refs.contractManagePopup.open(hanHaiMember.id)">
  113. 发送合同
  114. </view>
  115. <contractManagePopup ref="contractManagePopup"/>
  116. </view>
  117. </template>
  118. <script>
  119. import userHead from '../components/user/userHead.vue'
  120. import contractManagePopup from '@/components/list/contract/contractManagePopup.vue'
  121. export default {
  122. components: {
  123. userHead,
  124. contractManagePopup,
  125. },
  126. data() {
  127. return {
  128. text: '',
  129. id: 0,
  130. detail: {},
  131. hanHaiMember: {},
  132. authenticationPerson: {},
  133. collectionFlag: false,
  134. showPhone : false,
  135. }
  136. },
  137. computed : {
  138. phone(){
  139. return this.hanHaiMember && this.hanHaiMember.phone
  140. },
  141. // 显示的手机号,根据showPhone状态决定是否脱敏
  142. displayPhone(){
  143. const phone = this.phone
  144. if (!phone) return ''
  145. if (this.showPhone) {
  146. return phone
  147. } else {
  148. // 手机号脱敏处理,保留前3位和后4位,中间用****代替
  149. return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
  150. }
  151. },
  152. // 检查数据是否有效
  153. isDataValid(){
  154. return this.id
  155. }
  156. },
  157. onLoad({
  158. id
  159. }) {
  160. this.id = id
  161. },
  162. onShow() {
  163. this.getData()
  164. },
  165. methods: {
  166. getData() {
  167. let data = {
  168. jobId: this.id
  169. }
  170. if (uni.getStorageSync('token')) {
  171. data.token = uni.getStorageSync('token')
  172. }
  173. this.$api('bossQueryResumeById', data, res => {
  174. if (res.code == 200) {
  175. this.detail = res.result.resume
  176. this.collectionFlag = res.result.collectionFlag
  177. this.hanHaiMember = res.result.hanHaiMember
  178. this.authenticationPerson = res.result.authenticationPerson
  179. }
  180. })
  181. },
  182. addResumeCollection(){
  183. let data = {
  184. resumeId : this.id
  185. }
  186. if(uni.getStorageSync('token')){
  187. data.token = uni.getStorageSync('token')
  188. }
  189. this.$api('addResumeCollection', data, res => {
  190. this.getData();
  191. if(res.code == 200){
  192. uni.showToast({
  193. title: res.message,
  194. icon: 'none'
  195. })
  196. }
  197. })
  198. },
  199. clickShowPhone(){
  200. this.$store.commit('checkViewCount', {
  201. data : this.item,
  202. success : () => {
  203. this.showPhone = true
  204. }
  205. })
  206. },
  207. callPhone(){
  208. // 检查数据是否有效和电话号码是否存在
  209. if (!this.isDataValid || !this.phone) {
  210. uni.showToast({
  211. title: '联系方式不可用',
  212. icon: 'none'
  213. });
  214. return;
  215. }
  216. this.$store.commit('checkViewCount', {
  217. data : this.item,
  218. phone : this.phone,
  219. type : 'phone',
  220. })
  221. // uni.makePhoneCall({
  222. // phoneNumber: this.hanHaiMember && this.hanHaiMember.phone,
  223. // success() {
  224. // console.log('安卓拨打成功');
  225. // },
  226. // fail() {
  227. // console.log('安卓拨打失败');
  228. // }
  229. // })
  230. },
  231. }
  232. }
  233. </script>
  234. <style scoped lang="scss">
  235. .page {
  236. background-color: #fff;
  237. min-height: 100vh;
  238. .head {
  239. display: flex;
  240. align-items: center;
  241. position: relative;
  242. padding: 20rpx;
  243. image {
  244. width: 140rpx;
  245. height: 140rpx;
  246. border-radius: 50%;
  247. }
  248. .headImage {
  249. width: 160rpx;
  250. margin-right: 40rpx;
  251. display: flex;
  252. flex-direction: column;
  253. align-items: center;
  254. justify-content: center;
  255. view {
  256. display: flex;
  257. font-size: 24rpx;
  258. align-items: center;
  259. margin-left: 20rpx;
  260. background: rgba($uni-color, 0.2);
  261. color: $uni-color;
  262. padding: 10rpx;
  263. border-radius: 10rpx;
  264. margin-top: 10rpx;
  265. }
  266. }
  267. .info {
  268. font-size: 28rpx;
  269. .name {
  270. font-size: 32rpx;
  271. display: flex;
  272. padding-bottom: 10rpx;
  273. view {
  274. display: flex;
  275. font-size: 20rpx;
  276. align-items: center;
  277. padding-left: 20rpx;
  278. }
  279. }
  280. .tips {
  281. font-size: 26rpx;
  282. }
  283. }
  284. .right {
  285. margin-left: auto;
  286. .phone {
  287. background-color: rgba($uni-color, 0.2);
  288. color: $uni-color;
  289. padding: 8rpx 16rpx;
  290. border-radius: 10rpx;
  291. image {
  292. width: 24rpx;
  293. height: 24rpx;
  294. }
  295. }
  296. }
  297. }
  298. .box {
  299. padding: 30rpx;
  300. .userinfo {
  301. font-size: 28rpx;
  302. color: #666666;
  303. line-height: 44rpx;
  304. margin-bottom: 40rpx;
  305. .line {
  306. margin-bottom: 20rpx;
  307. display: flex;
  308. .left {
  309. width: 220rpx;
  310. flex-shrink: 0;
  311. }
  312. .phone-container {
  313. display: flex;
  314. align-items: center;
  315. gap: 20rpx;
  316. .view-phone-btn {
  317. background-color: rgba($uni-color, 0.1);
  318. color: $uni-color;
  319. padding: 8rpx 16rpx;
  320. border-radius: 8rpx;
  321. font-size: 24rpx;
  322. border: 1px solid rgba($uni-color, 0.3);
  323. }
  324. }
  325. }
  326. }
  327. .info {
  328. .text {
  329. font-size: 24rpx;
  330. color: #666666;
  331. line-height: 44rpx;
  332. }
  333. }
  334. }
  335. .uni-color-btn{
  336. // position: fixed;
  337. // right: 40rpx;
  338. // bottom: 30vh;
  339. }
  340. }
  341. </style>