job.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div v-if="recruitData">
  3. <div class="header">
  4. <div class="header-left">
  5. <div class="title-wrapper">
  6. <div class="title">{{recruitData.title}}</div>
  7. <div class="status" :style="{color: recruitData.statusColor}">{{recruitData.statusName}}</div>
  8. </div>
  9. <div class="salary">薪酬范围:{{recruitData.salaryName}}</div>
  10. <div class="skill">技能:
  11. <span v-for="(item,index) in recruitData.skills" :key="index">
  12. <span v-if="index>0">,</span><span>{{item.name}}</span>
  13. </span>
  14. </div>
  15. <div class="experience">经验:{{recruitData.experienceName}}</div>
  16. </div>
  17. <div class="owner-wrapper" @click="handleOwnerClick()">
  18. <img class="owner-img" :src="recruitData.ownerInfo && recruitData.ownerInfo.iconUrl || ''" alt="">
  19. <div class="owner-name">{{recruitData.ownerInfo && recruitData.ownerInfo.nickname || ''}}</div>
  20. </div>
  21. </div>
  22. <div class="description-wrapper">
  23. <div class="description-title">工作描述</div>
  24. <div class="description-content">{{recruitData.description}}</div>
  25. </div>
  26. <div class="description-wrapper">
  27. <div class="description-title">招聘数据(已投递<span>{{recruitData.countTalk || 0}}</span>人,沟通中
  28. <span>{{recruitData.countApplied || 0}}
  29. </span>人)</div>
  30. <div class="description-content">
  31. <el-table
  32. :data="recruitData.developers"
  33. style="width: 540px">
  34. <el-table-column
  35. label="UID"
  36. width="180">
  37. <template slot-scope="scope">
  38. <el-link type="primary" target="_blank" @click="openUser(scope.row.uid)">{{scope.row
  39. .uid}}</el-link>
  40. </template>
  41. </el-table-column>
  42. <el-table-column
  43. label="已投递"
  44. width="180">
  45. <template slot-scope="scope">
  46. {{Number(scope.row.application_state) === 0 ? '否' : '是'}}
  47. </template>
  48. </el-table-column>
  49. <el-table-column
  50. label="沟通中"
  51. width="180">
  52. <template slot-scope="scope">
  53. {{Number(scope.row.talk_state) === 0 ? '否' : '是'}}
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. </div>
  58. </div>
  59. </div>
  60. </template>
  61. <script>
  62. export default {
  63. data() {
  64. return {
  65. recruitId: '',
  66. recruitData: {
  67. developers: []
  68. }
  69. }
  70. },
  71. mounted() {
  72. this.recruitId = this.$route.query.id
  73. this.getRecruit()
  74. },
  75. methods: {
  76. async getRecruit() {
  77. const recruitId = this.recruitId
  78. const data = {
  79. recruitId
  80. }
  81. let res = await this.$post("/api/admin/recruit/getRecruit", data);
  82. if (res && res.status === 1) {
  83. this.recruitData = res.data
  84. console.log(this.recruitData)
  85. }
  86. },
  87. handleOwnerClick() {
  88. const recruitData = this.recruitData
  89. // 前往老的后台
  90. if (location.hostname === 'rooter.proginn.com') {
  91. window.open(`https://www.proginn.com/rooter/user/${recruitData.uid}`)
  92. }
  93. else {
  94. window.open(`https://dev.test.proginn.com/rooter/user/${recruitData.uid}`)
  95. }
  96. },
  97. openUser(uid) {
  98. let url = window.location.href;
  99. let jumpUrl = ''
  100. if(url.indexOf('dev.')!=-1 || url.indexOf('local') !==-1 || url.indexOf('192.168.') !==-1 ){
  101. jumpUrl = `https://dev.test.proginn.com/wo/${uid}`;
  102. } else {
  103. jumpUrl = `https://www.proginn.com/wo/${uid}`;
  104. }
  105. window.open(jumpUrl, '_black')
  106. }
  107. }
  108. }
  109. </script>
  110. <style lang="scss" scoped>
  111. .header {
  112. display: flex;
  113. }
  114. .title-wrapper {
  115. display: flex;
  116. align-items: center;
  117. }
  118. .title {
  119. line-height: 27px;
  120. font-weight: bold;
  121. font-size: 18px;
  122. color: #101010;
  123. }
  124. .status {
  125. margin-left: 6px;
  126. line-height: 20px;
  127. font-size: 14px;
  128. }
  129. .salary {
  130. margin-top: 13px;
  131. line-height: 24px;
  132. font-size: 16px;
  133. color: #101010;
  134. }
  135. .skill {
  136. margin-top: 8px;
  137. line-height: 24px;
  138. font-size: 16px;
  139. color: #101010;
  140. }
  141. .experience {
  142. margin-top: 8px;
  143. line-height: 24px;
  144. font-size: 16px;
  145. color: #101010;
  146. }
  147. .owner-wrapper {
  148. margin-left: 100px;
  149. text-align: center;
  150. }
  151. .owner-img {
  152. width: 53px;
  153. height: 53px;
  154. border-radius: 50%;
  155. }
  156. .owner-name {
  157. margin-top: 8px;
  158. line-height: 20px;
  159. font-size: 14px;
  160. color: #3F51B5;
  161. }
  162. .description-wrapper {
  163. margin-top: 50px;
  164. }
  165. .description-title {
  166. line-height: 27px;
  167. font-weight: bold;
  168. font-size: 18px;
  169. color: #101010;
  170. }
  171. .description-content {
  172. margin-top: 16px;
  173. line-height: 24px;
  174. font-size: 16px;
  175. color: #101010;
  176. }
  177. </style>