index.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <div class="info-container">
  3. <el-container>
  4. <el-main>
  5. <div class="info-tabs">
  6. <el-radio-group v-model="type" @change="detailMode = false">
  7. <el-radio-button
  8. v-for="opt in typeOptions"
  9. :key="opt.value"
  10. :label="opt.label"
  11. >{{ opt.label }}
  12. </el-radio-button
  13. >
  14. </el-radio-group>
  15. </div>
  16. <info-list
  17. class="mt10"
  18. :type="type"
  19. v-show="!detailMode"
  20. @click="detailList"
  21. ></info-list>
  22. <info-detail
  23. class="mt10"
  24. v-if="detailMode"
  25. :type="type"
  26. :title="detailTitle"
  27. :id="detailId"
  28. @close="detailClose"
  29. />
  30. </el-main>
  31. <el-aside width="400px" style="background-color: #ffffff">
  32. <el-card class="mt20" v-for="opt in typeOptions" :key="opt.value">
  33. <info-sample
  34. :type="opt.label"
  35. :title="opt.label"
  36. @click="detailSample"
  37. />
  38. </el-card>
  39. </el-aside>
  40. </el-container>
  41. </div>
  42. </template>
  43. <script>
  44. import transferMixin from '@/components/mx-transfer-mixin'
  45. import InfoDetail from '../components/infoDetail.vue'
  46. import infoList from '../components/infoList.vue'
  47. import InfoSample from '../components/infoSample.vue'
  48. import * as career from '@/api/webApi/career-news'
  49. export default {
  50. mixins: [transferMixin],
  51. components: { infoList, InfoSample, InfoDetail },
  52. data() {
  53. return {
  54. detailMode: false,
  55. detailTitle: '',
  56. detailId: 0,
  57. type: '',
  58. typeOptions: []
  59. }
  60. },
  61. watch: {
  62. // $route: function() {
  63. // this.getTypes()
  64. // }
  65. },
  66. created() {
  67. this.getTypes()
  68. },
  69. methods: {
  70. detailList(item) {
  71. this.detailTitle = item.title
  72. this.detailId = item.id
  73. this.detailMode = true
  74. },
  75. detailSample(item) {
  76. this.detailTitle = item.title
  77. this.detailId = item.id
  78. this.detailMode = true
  79. },
  80. detailClose() {
  81. this.detailMode = false
  82. },
  83. getTypes() {
  84. career.types().then((res) => {
  85. console.log('career news res', res)
  86. if (res.code == 200 || res.code == 0) {
  87. this.typeOptions = res.rows
  88. let query = this.$route.query?.name || this.prevData.type
  89. let news = this.prevData?.news
  90. if(news){
  91. this.detailList(news)
  92. }
  93. this.type = query || this.typeOptions.first()?.label
  94. } else {
  95. this.msgError(res.msg || 'career news types 请求异常')
  96. }
  97. })
  98. }
  99. }
  100. }
  101. </script>
  102. <style lang="scss" scoped>
  103. </style>