PhpInfo.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <script setup lang="ts">
  2. import { ref, onMounted } from 'vue'
  3. import axios from 'axios'
  4. import { ElMessage } from 'element-plus'
  5. import { phpInfoApi } from '../api/index.js'
  6. const htmlContent = ref('')
  7. const loading = ref(false)
  8. const fetchPhpinfo = async () => {
  9. loading.value = true
  10. try {
  11. // 直接用axios请求,避免全局拦截器对html格式的响应处理
  12. const res = await phpInfoApi.getPhpInfo()
  13. htmlContent.value = res.data
  14. } catch (error) {
  15. ElMessage.error('获取phpinfo失败')
  16. htmlContent.value = '<div style="color:red;">获取phpinfo失败</div>'
  17. } finally {
  18. loading.value = false
  19. }
  20. }
  21. onMounted(() => {
  22. fetchPhpinfo()
  23. })
  24. </script>
  25. <template>
  26. <div class="phpinfo-container">
  27. <el-card shadow="never">
  28. <template #header>
  29. <span>PHPInfo 信息</span>
  30. </template>
  31. <div v-loading="loading" style="min-height: 300px;">
  32. <div v-if="htmlContent" v-html="htmlContent"></div>
  33. </div>
  34. </el-card>
  35. </div>
  36. </template>
  37. <style scoped lang="scss">
  38. .phpinfo-container {
  39. padding: 20px;
  40. // 优化phpinfo表格样式
  41. :deep(table) {
  42. width: 100% !important;
  43. font-size: 14px;
  44. background: #fff;
  45. border-collapse: collapse;
  46. margin-bottom: 20px;
  47. color: #222;
  48. box-shadow: 0 1px 4px rgba(0,0,0,0.03);
  49. }
  50. :deep(th), :deep(td) {
  51. border: 1px solid #d3d4d6 !important;
  52. padding: 8px 12px !important;
  53. color: #222 !important;
  54. background: #fff !important;
  55. font-size: 14px !important;
  56. }
  57. :deep(th) {
  58. background: #409EFF !important;
  59. color: #fff !important;
  60. font-weight: 600 !important;
  61. letter-spacing: 0.5px;
  62. }
  63. // 斑马纹
  64. :deep(tr:nth-child(even) td) {
  65. background: #f6f8fa !important;
  66. }
  67. :deep(tr:hover td) {
  68. background: #e6f7ff !important;
  69. }
  70. // 标题
  71. :deep(h1), :deep(h2) {
  72. font-size: 18px;
  73. color: #409EFF;
  74. margin: 10px 0 5px 0;
  75. font-weight: 700;
  76. }
  77. // 兼容phpinfo部分特殊样式
  78. :deep(.e) {
  79. background: #f0f4fa !important;
  80. color: #222 !important;
  81. font-weight: 500 !important;
  82. }
  83. :deep(.v) {
  84. background: #fff !important;
  85. color: #409EFF !important;
  86. }
  87. :deep(pre) {
  88. background: #f8f8f8 !important;
  89. color: #222 !important;
  90. border-radius: 2px;
  91. padding: 8px 12px;
  92. font-size: 13px;
  93. }
  94. }
  95. </style>