talents-list.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div>
  3. <el-row type="flex" class="row-bg" :gutter="10" style="margin: 10px;" v-for="(sitem, sindex) in flexRow"
  4. :key="sindex">
  5. <el-col :span="8" v-for="(item, index) in list.slice(sindex * 3, sindex * 3+3)" :key="index">
  6. <nuxt-link :to="`/talents_detail/${item.id}`">
  7. <el-card shadow="hover">
  8. <el-descriptions :colon="false" :column="1">
  9. <el-descriptions-item>
  10. <div class="flex row-between" style="width: 100%;">
  11. <div style="font-weight: bold;" class="flex flex-1">
  12. <div class="flex-none"
  13. style="width: 8px;height: 8px;background: #DD4250;border-radius: 50%; margin-right: 10px;">
  14. </div>
  15. <div class="flex-none">{{item.title}}</div>
  16. <div class="flex-none">
  17. <el-tag type="danger" size="small">{{item.module}}</el-tag>
  18. </div>
  19. <div class="primary flex-1 text-right" v-if="item.position">
  20. {{item.position}}
  21. </div>
  22. </div>
  23. </div>
  24. </el-descriptions-item>
  25. <el-descriptions-item content-style="overflow: hidden">
  26. <div class="flex row-between" style="width: 100%;">
  27. <div class="flex-1 line-1" v-if="item.chain">
  28. <span>产业链:{{item.chain}}</span>
  29. </div>
  30. <div class="flex-1" v-if="item.tel">
  31. <div class="primary pointer text-right"><i
  32. class="el-icon-phone"></i>{{item.tel}}
  33. </div>
  34. </div>
  35. </div>
  36. </el-descriptions-item>
  37. <el-descriptions-item content-style="overflow: hidden" v-if="item.company">
  38. <div class="flex line-1">
  39. <span class="line-1">单位:{{ item.company }}</span>
  40. </div>
  41. </el-descriptions-item>
  42. <el-descriptions-item
  43. v-if="item.module == 'base'">负责人:{{ item.principal }}</el-descriptions-item>
  44. <el-descriptions-item
  45. v-if="item.module == 'pedigreeCompany'">法人:{{ item.principal }}</el-descriptions-item>
  46. <el-descriptions-item
  47. v-if="item.module == 'firm'">秘书长:{{ item.principal }}</el-descriptions-item>
  48. <el-descriptions-item content-style="overflow: hidden">
  49. <div class="flex line-1">
  50. <span v-if="item.module == 'talent'">研究领域:</span>
  51. <span v-else-if="item.module == 'base'">基地特色:</span>
  52. <span
  53. v-else-if="item.module == 'university' || item.module == 'association'">研究方向:</span>
  54. <span v-else-if="item.module == 'fund'">投资产业领域:</span>
  55. <span v-else-if="item.module == 'pedigreeCompany'">主要产品:</span>
  56. <span v-else-if="item.module == 'pedigree'">个人简介:</span>
  57. <span v-else>简介:</span>
  58. <span class="line-1">{{ item.description }}</span>
  59. </div>
  60. </el-descriptions-item>
  61. <el-descriptions-item content-style="overflow: hidden">
  62. <div class="flex p-t-10 line-1" style="border-top: 1px solid #DEDEDE; width: 100%;">
  63. <i class="el-icon-location"></i>
  64. <div class="m-l-10 line-1">{{ item.city }}{{ item.address }}</div>
  65. </div>
  66. </el-descriptions-item>
  67. </el-descriptions>
  68. </el-card>
  69. </nuxt-link>
  70. </el-col>
  71. </el-row>
  72. </div>
  73. </template>
  74. <script>
  75. export default {
  76. props: {
  77. list: {
  78. type: Array,
  79. default: () => [],
  80. },
  81. },
  82. data() {
  83. return {
  84. flexRow: [0, 1, 2], //3行默认
  85. }
  86. },
  87. watch: {
  88. list: {
  89. immediate: true,
  90. handler: function(val) {
  91. this.flexRow = [...Array(Math.ceil(this.list.length / 3)).keys()]
  92. console.log('this.flexRow')
  93. console.log(this.flexRow)
  94. },
  95. },
  96. },
  97. methods: {
  98. },
  99. computed: {},
  100. };
  101. </script>
  102. <style lang="scss" scoped>
  103. :deep(.el-descriptions-item__label:not(.is-bordered-label)) {
  104. margin-right: 0;
  105. }
  106. </style>