detail.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <xn-form-container title="详情" :width="700" :visible="visible" :destroy-on-close="true" @close="onClose">
  3. <a-descriptions :column="1" size="middle" bordered class="mb-2">
  4. <a-descriptions-item label="标题">{{ formData.title }}</a-descriptions-item>
  5. <a-descriptions-item label="发送时间">{{ formData.createTime }}</a-descriptions-item>
  6. <a-descriptions-item label="是否已读">
  7. <span v-if="formData.read" style="color: #d9d9d9">已读</span>
  8. <span v-else style="color: #ff4d4f">未读</span>
  9. </a-descriptions-item>
  10. <a-descriptions-item label="内容">
  11. <div style="width: 450px;">{{ formData.content }}</div>
  12. </a-descriptions-item>
  13. </a-descriptions>
  14. </xn-form-container>
  15. </template>
  16. <script setup name="inSiteMessageDetail">
  17. import classCentre from '@/api/student/classCentre'
  18. import EventBus from '@/utils/EventBus'
  19. const emits = defineEmits(['refresh'])
  20. const detailObj = ref()
  21. // 默认是关闭状态
  22. let visible = $ref(false)
  23. const formData = ref({})
  24. // 打开抽屉
  25. const onOpen = (record) => {
  26. visible = true
  27. detailObj.value = record
  28. getMessageList(record)
  29. }
  30. // 获取站内信列表
  31. const getMessageList = (record) => {
  32. const param = {
  33. noticeId: record.noticeId
  34. }
  35. classCentre.classNoticeDetail(param).then((data) => {
  36. Object.assign(record, data)
  37. formData.value = record
  38. })
  39. if(!formData.value.read){
  40. addRead()
  41. }
  42. }
  43. const addRead =()=>{
  44. classCentre.readAdd({funcType:2,mainId:detailObj.value.noticeId})
  45. }
  46. // 关闭抽屉
  47. const onClose = () => {
  48. visible = false
  49. emits('refresh')
  50. EventBus.emit('getReadList')
  51. }
  52. // 调用这个函数将子组件的一些数据和方法暴露出去
  53. defineExpose({
  54. onOpen
  55. })
  56. </script>