announcement-detail.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div>
  3. <el-dialog
  4. title="查看"
  5. width="60%"
  6. :close-on-click-modal="false"
  7. @close="closeDialog"
  8. :visible.sync="visible">
  9. <div style="margin-left: 20px;margin-right: 20px">
  10. <e-desc title="基本信息" column="2">
  11. <e-desc-item label="公告主题名称">{{dataForm.title}}</e-desc-item>
  12. <e-desc-item label="级别">{{dataForm.levelName}}</e-desc-item>
  13. <e-desc-item span="2" style="min-height: 80px" label="公告内容">{{dataForm.content}}</e-desc-item>
  14. </e-desc>
  15. <e-desc title="详细信息" column="2">
  16. <e-desc-item span="2" label="附件">
  17. <div v-for="(item, index) in dataForm.attachList" style="display: inline">
  18. <span v-if="index > 0">,</span>
  19. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
  20. </div>
  21. </e-desc-item>
  22. <e-desc-item span="2" style="min-height: 80px" label="备注说明">{{dataForm.notes}}</e-desc-item>
  23. </e-desc>
  24. </div>
  25. <span slot="footer" class="dialog-footer">
  26. <el-button @click="closeDialog">返回</el-button>
  27. </span>
  28. </el-dialog>
  29. <!-- 文件预览 -->
  30. <preview-component v-if="previewVisible" ref="preview"/>
  31. </div>
  32. </template>
  33. <script>
  34. import EDesc from '../common/e-desc'
  35. import EDescItem from '../common/e-desc-item'
  36. import { getAnnouncementInfo } from '@/api/msg'
  37. import PreviewComponent from '../common/preview-component'
  38. export default {
  39. name: 'announcement-detail',
  40. components: {
  41. PreviewComponent,
  42. EDesc,
  43. EDescItem
  44. },
  45. data () {
  46. return {
  47. visible: false,
  48. previewVisible: false,
  49. fileList: [],
  50. id: 0,
  51. dataForm: {
  52. attachList: []
  53. }
  54. }
  55. },
  56. methods: {
  57. async init (id) {
  58. this.visible = true
  59. this.id = id || 0
  60. this.dataForm = {}
  61. this.getAnnouncementInfo()
  62. },
  63. getAnnouncementInfo () {
  64. getAnnouncementInfo(this.id).then(({data}) => {
  65. if (data && data.code === '200') {
  66. this.dataForm = data.data
  67. }
  68. })
  69. },
  70. // 关闭页面
  71. closeDialog () {
  72. this.visible = false
  73. this.$emit('refreshDataList')
  74. },
  75. // 预览
  76. previewFile (fileName, url) {
  77. this.previewVisible = true
  78. this.$nextTick(() => {
  79. this.$refs.preview.init(fileName, url)
  80. })
  81. }
  82. }
  83. }
  84. </script>
  85. <style scoped>
  86. .my-line{
  87. border-bottom: 1px solid #c0c4cc;
  88. margin-bottom: 10px;
  89. }
  90. .title{
  91. padding: 10px 0 ;
  92. }
  93. </style>