list.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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: 'is_read',
  44. format: item => {
  45. return item === false ? '有' : '未有';
  46. },
  47. },
  48. ],
  49. };
  50. },
  51. created() {},
  52. methods: {
  53. // 查看消息
  54. toView({ data }) {
  55. this.$emit('toView', data);
  56. },
  57. toFormat(data) {
  58. if (this.user.id) {
  59. if (data.p1_id == this.user.id) {
  60. return data.p2;
  61. } else {
  62. return data.p1;
  63. }
  64. }
  65. },
  66. },
  67. computed: {
  68. ...mapState(['user']),
  69. },
  70. watch: {},
  71. };
  72. </script>
  73. <style lang="less" scoped>
  74. .main {
  75. height: 465px;
  76. overflow-y: auto;
  77. }
  78. </style>