特易招,招聘小程序
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

10 months ago
10 months ago
10 months ago
8 months ago
10 months ago
10 months ago
10 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
8 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months ago
7 months ago
10 months ago
10 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
8 months ago
10 months ago
10 months ago
8 months ago
10 months ago
8 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
7 months ago
10 months 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>