detail.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <template>
  2. <view>
  3. <!-- 头部 -->
  4. <view class="bg-white header flex row-center">
  5. <u-icon name="file-text-fill" color="#DD4250" size="32"></u-icon>
  6. <view class="cate-title m-l-10">{{ item.title }}<u-tag :text="item.module" type="error" size="mini"
  7. shape="circleRight" /></view>
  8. </view>
  9. <!-- 基本信息 -->
  10. <view class="talents-item m-t-16">
  11. <view class="flex">
  12. <u-icon name="info-circle-fill" color="#DD4250" size="28"></u-icon>
  13. <view class="m-l-20">基本信息</view>
  14. </view>
  15. <view class="m-t-16 item-info">
  16. <!-- 人才 -->
  17. <block v-if="item.module == 'talent' || item.module == 'pedigree'">
  18. <view class="m-t-16">姓名:{{ item.title }}</view>
  19. </block>
  20. <block v-else>
  21. <view class="m-t-16">名称:{{ item.title }}</view>
  22. </block>
  23. <view class="m-t-16" v-if="item.company">单位:{{ item.company }}</view>
  24. <view class="m-t-16" v-if="item.position">职位:{{ item.position }}</view>
  25. <view class="m-t-16" v-if="item.module == 'base'">负责人:{{ item.principal }}</view>
  26. <view class="m-t-16" v-if="item.module == 'pedigreeCompany'">法人:{{ item.principal }}</view>
  27. <view class="m-t-16" v-if="item.module == 'firm'">秘书长:{{ item.principal }}</view>
  28. <view class="flex m-t-16">
  29. <u-icon name="phone-fill" color="#DD4250" size="28"></u-icon>
  30. <view class="m-l-20 m-r-20" @tap.stop="makePhoneCall(item.tel)">{{ item.newTel }}</view>
  31. <view @click="phoneNumSwitch">
  32. <u-icon name="eye-fill" color="#DD4250" size="32" v-if="item.tel != item.newTel"></u-icon>
  33. <u-icon name="eye-off" color="#DD4250" size="32" v-else></u-icon>
  34. </view>
  35. </view>
  36. <view class="flex m-t-16">
  37. <u-icon name="map-fill" color="#DD4250" size="28"></u-icon>
  38. <view class="m-l-20">{{ item.city }}{{ item.address }}</view>
  39. </view>
  40. </view>
  41. </view>
  42. <!-- 简介信息 -->
  43. <view class="talents-item m-t-16">
  44. <view class="flex">
  45. <u-icon name="file-text-fill" color="#DD4250" size="28"></u-icon>
  46. <text class="m-l-20"></text>
  47. <text v-if="item.module == 'talent'">研究领域:</text>
  48. <text v-else-if="item.module == 'base'">基地特色:</text>
  49. <text v-else-if="item.module == 'university' || item.module == 'association'">研究方向:</text>
  50. <text v-else-if="item.module == 'fund'">投资产业领域:</text>
  51. <text v-else-if="item.module == 'pedigreeCompany'">主要产品:</text>
  52. <text v-else-if="item.module == 'pedigree'">个人简介:</text>
  53. <text v-else>简介:</text>
  54. </view>
  55. <view class="m-t-16 item-info">
  56. <rich-text :nodes="item.intro"></rich-text>
  57. </view>
  58. </view>
  59. </view>
  60. </template>
  61. <script>
  62. import {
  63. mapActions,
  64. mapGetters
  65. } from 'vuex'
  66. import {
  67. getTalentsDetail
  68. } from '@/api/app';
  69. export default {
  70. data() {
  71. return {
  72. statusBarHeight: 0,
  73. id: 0, //分类id
  74. item: {
  75. title: ''
  76. }
  77. };
  78. },
  79. created() {
  80. uni.getSystemInfo({
  81. success: (res) => {
  82. this.statusBarHeight = res.statusBarHeight;
  83. }
  84. });
  85. },
  86. onLoad() {
  87. this.id = this.$Route.query.id;
  88. this.getCategoryFun()
  89. },
  90. onShow() {
  91. this.getUser();
  92. },
  93. methods: {
  94. ...mapActions(['getUser']),
  95. makePhoneCall(tel) {
  96. if (tel) {
  97. uni.makePhoneCall({
  98. phoneNumber: tel
  99. });
  100. }
  101. },
  102. //隐藏手机号
  103. phoneNumHide() {
  104. let number = this.item.tel; //获取到手机号码字段
  105. let mphone = number.substring(0, 3) + '****' + number.substring(7);
  106. this.item.newTel = mphone
  107. },
  108. phoneNumSwitch() {
  109. let number = this.item.tel
  110. if (this.item.newTel == number) {
  111. this.phoneNumHide()
  112. } else {
  113. this.item.newTel = number
  114. }
  115. this.$forceUpdate();
  116. },
  117. async getCategoryFun() {
  118. const {
  119. status,
  120. data
  121. } = await getTalentsDetail({
  122. id: this.id
  123. });
  124. if (status == 1) {
  125. this.item = data
  126. this.phoneNumHide()
  127. }
  128. },
  129. },
  130. computed: {
  131. ...mapGetters(['appConfig']),
  132. }
  133. };
  134. </script>
  135. <style lang="scss">
  136. .header {
  137. padding: 30rpx;
  138. .cate-title {
  139. font-size: 32rpx;
  140. font-weight: 400;
  141. }
  142. }
  143. .talents-item {
  144. background: #FFFFFF;
  145. box-shadow: 0rpx 8rpx 16rpx 2rpx rgba(0, 0, 0, 0.03);
  146. border-radius: 12rpx 12rpx 12rpx 12rpx;
  147. padding: 30rpx;
  148. font-size: 28rpx;
  149. .item-info {
  150. padding: 20rpx;
  151. background: #F7F8FA;
  152. border-radius: 8rpx 8rpx 8rpx 8rpx;
  153. }
  154. }
  155. </style>