list.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <div id="list">
  3. <el-row>
  4. <el-col :span="24" class="main">
  5. <data-table :data="messageList" :fields="fields" :opera="opera" :usePage="false" @views="toView">
  6. <template #custom="{item,row}">
  7. <template v-if="item.prop == 'name'">
  8. {{ toFormat(row) }}
  9. </template>
  10. </template>
  11. </data-table>
  12. </el-col>
  13. </el-row>
  14. </div>
  15. </template>
  16. <script>
  17. import dataTable from '@common/src/components/frame/filter-page-table.vue';
  18. import { mapState, createNamespacedHelpers } from 'vuex';
  19. export default {
  20. name: 'list',
  21. props: {
  22. messageList: { type: Array },
  23. },
  24. components: {
  25. dataTable,
  26. },
  27. data: function() {
  28. return {
  29. opera: [
  30. {
  31. label: '查看',
  32. method: 'views',
  33. },
  34. ],
  35. fields: [
  36. {
  37. label: '发言人',
  38. prop: 'name',
  39. custom: true,
  40. },
  41. {
  42. label: '产品/专家',
  43. prop: 'product.name',
  44. },
  45. {
  46. label: '是否有未读消息',
  47. prop: 'is_read',
  48. format: item => {
  49. return item === false ? '有' : '未有';
  50. },
  51. },
  52. ],
  53. };
  54. },
  55. created() {},
  56. methods: {
  57. // 查看消息
  58. toView({ data }) {
  59. this.$emit('toView', data);
  60. },
  61. toFormat(data) {
  62. if (this.user.id) {
  63. if (data.p1_id == this.user.id) {
  64. return data.p2;
  65. } else {
  66. return data.p1;
  67. }
  68. }
  69. },
  70. },
  71. computed: {
  72. ...mapState(['user']),
  73. },
  74. watch: {},
  75. };
  76. </script>
  77. <style lang="less" scoped>
  78. .main {
  79. height: 465px;
  80. overflow-y: auto;
  81. }
  82. </style>