liveList.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div id="liveList">
  3. <el-row>
  4. <el-col :span="24" class="info">
  5. <el-col class="list" v-for="(item, index) in list" :key="index">
  6. <el-col :span="18" class="left">
  7. <p class="textOver">{{ item.title }}</p>
  8. <p>
  9. 举办城市:<span>{{ item.province }}{{ item.places }}</span>
  10. </p>
  11. <p>
  12. 直播时间:<span>{{ item.start_time }}</span>
  13. </p>
  14. </el-col>
  15. <el-col :span="6" class="right">
  16. <p @click="$router.push({ path: '/live/roomDetail', query: { id: item.id, roomname: item.roomname } })" v-if="item.roomname && item.status != '2'">
  17. 进入房间
  18. </p>
  19. <p @click="$router.push({ path: '/live/detail', query: { id: item.id } })" v-else-if="item.roomname == undefined && item.status != '2'">进入房间</p>
  20. <p @click="$router.push({ path: '/onlive/roomInfo', query: { roomname: item.roomname } })" v-if="item.roomname">房间详情</p>
  21. </el-col>
  22. </el-col>
  23. </el-col>
  24. </el-row>
  25. </div>
  26. </template>
  27. <script>
  28. import { mapState, createNamespacedHelpers } from 'vuex';
  29. const { mapActions: dock } = createNamespacedHelpers('dock');
  30. const { mapActions: place } = createNamespacedHelpers('place');
  31. export default {
  32. name: 'liveList',
  33. props: {},
  34. components: {},
  35. data: function() {
  36. return {
  37. list: [],
  38. };
  39. },
  40. created() {
  41. this.searchInfo();
  42. },
  43. methods: {
  44. ...dock({ dockQuery: 'query', palcefetch: 'fetch' }),
  45. ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
  46. async searchInfo() {
  47. let res = await this.dockQuery();
  48. if (this.$checkRes(res)) {
  49. for (const val of res.data) {
  50. val.province = await this.provinceSearch(val.province);
  51. val.places = await this.placeSearch(val.place);
  52. }
  53. this.$set(this, `list`, res.data);
  54. }
  55. },
  56. // 省份
  57. async provinceSearch(parent) {
  58. let provinceInfo = await this.palcequery({ level: 1, parent });
  59. var arr = provinceInfo.data.filter(item => item.code === parent);
  60. for (const province of arr) {
  61. return province.name;
  62. }
  63. },
  64. // 市区
  65. async placeSearch(places) {
  66. let placesInfo = await this.palcequery({ level: 2, places });
  67. var arr = placesInfo.data.filter(item => item.code === places);
  68. for (const places of arr) {
  69. return places.name;
  70. }
  71. },
  72. },
  73. computed: {
  74. ...mapState(['user']),
  75. pageTitle() {
  76. return `${this.$route.meta.title}`;
  77. },
  78. },
  79. metaInfo() {
  80. return { title: this.$route.meta.title };
  81. },
  82. };
  83. </script>
  84. <style lang="less" scoped>
  85. .info {
  86. padding: 10px;
  87. }
  88. .list {
  89. background: #fff;
  90. padding: 10px;
  91. border-radius: 5px;
  92. margin: 0 0 10px 0;
  93. .left {
  94. font-size: 16px;
  95. color: #ccc;
  96. p {
  97. padding: 0 0 10px 0;
  98. span {
  99. color: #000;
  100. }
  101. }
  102. p:first-child {
  103. color: #000;
  104. }
  105. }
  106. .right {
  107. text-align: center;
  108. p {
  109. background: #409eff;
  110. color: #fff;
  111. padding: 5px 8px;
  112. border-radius: 5px;
  113. margin: 0 0 10px 0;
  114. }
  115. }
  116. }
  117. </style>