index.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div class="notice_detail_box">
  3. <h2 class="title">{{ detail['title'] }}</h2>
  4. <div class="info">
  5. <div>
  6. <span>发布时间:{{ detail['createTime'] }}</span>
  7. </div>
  8. <div>
  9. <span>阅读次数:{{ detail['readNum'] }}</span>
  10. </div>
  11. </div>
  12. <div class="file_box">
  13. <span>附件:</span>
  14. <ul>
  15. <li v-for="(file, index) in fileUrls" @click="downloadFile(file['url'])" :key="index">{{ file['name'] }}</li>
  16. </ul>
  17. </div>
  18. <div class="content" v-html="detail['content']"></div>
  19. </div>
  20. </template>
  21. <script setup lang="ts">
  22. import request from "@/utils/request";
  23. import { useFiles } from './mixins.ts'
  24. const { fileUrls, queryFiles, downloadFile } = useFiles(request)
  25. const detail = ref({
  26. title: '',
  27. createTime: '',
  28. readNum: 0,
  29. content: ''
  30. });
  31. /**
  32. * 获取详情
  33. * **/
  34. async function queryDetailById(idStr: any): Promise<void> {
  35. const urlApi = `/admin-api/adm/noticeAndLearn/query/detailById`
  36. const params = {
  37. id: idStr
  38. }
  39. const result = await request.get(urlApi, { params: params })
  40. const resultData = result.data;
  41. if (resultData) {
  42. detail.value = resultData
  43. queryFiles(resultData.files)
  44. }
  45. }
  46. function addReadNum(idStr: any) {
  47. const urlApi = `/admin-api/adm/noticeAndLearn/readNum/add`
  48. const params = {
  49. id: idStr
  50. }
  51. request.get(urlApi, { params: params })
  52. }
  53. function updateRead(idStr: any) {
  54. const urlApi = `/admin-api/adm/noticeAndLearn/read/update`
  55. const params = {
  56. id: idStr
  57. }
  58. request.get(urlApi, { params: params })
  59. }
  60. const route = useRoute()
  61. const query = route.query
  62. if (query.id) {
  63. queryDetailById(query.id)
  64. addReadNum(query.id)
  65. updateRead(query.id)
  66. }
  67. </script>
  68. <style lang="scss" scoped>
  69. .notice_detail_box {
  70. padding: 20px;
  71. >.info {
  72. display: flex;
  73. justify-content: space-between;
  74. }
  75. >.file_box {
  76. display: flex;
  77. margin-top: 15px;
  78. >span {
  79. color: #aaa;
  80. width: 80px;
  81. }
  82. >ul {
  83. >li {
  84. margin-bottom: 10px;
  85. color: #2e77e6;
  86. }
  87. }
  88. }
  89. }
  90. </style>