PlatformDetail.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <script lang="ts" setup>
  2. /**
  3. * @Name: PlatformDetail.vue
  4. * @Description: 平台详情页
  5. * @Author: Cheney
  6. */
  7. import { useResponse } from '/@/utils/useResponse';
  8. import * as api from '../api';
  9. import { Picture as IconPicture } from '@element-plus/icons-vue';
  10. import { columns } from '../useColumns';
  11. // import img from '/src/assets/img/headerImage.png'
  12. const route = useRoute();
  13. const platform = route.query.platform;
  14. const platformTableData = ref([]);
  15. const gridOptions: any = reactive({
  16. border: false,
  17. round: true,
  18. height: 800,
  19. toolbarConfig: {
  20. custom: true
  21. },
  22. columnConfig: {
  23. resizable: true
  24. },
  25. pagerConfig: {
  26. total: 0,
  27. page: 1,
  28. limit: 10
  29. },
  30. loading: false,
  31. loadingConfig: {
  32. icon: 'vxe-icon-indicator roll',
  33. text: '正在拼命加载中...'
  34. },
  35. columns: columns,
  36. data: platformTableData
  37. });
  38. onBeforeMount(() => {
  39. fetchPlatformDetail();
  40. });
  41. async function fetchPlatformDetail() {
  42. const query = {
  43. platform,
  44. page: gridOptions.pagerConfig.page,
  45. limit: gridOptions.pagerConfig.limit
  46. }
  47. const res = await useResponse(query, api.getPlatformDetail, gridOptions);
  48. gridOptions.pagerConfig.total = res.total;
  49. gridOptions.pagerConfig.page = res.page;
  50. gridOptions.pagerConfig.limit = res.limit;
  51. platformTableData.value = res.data;
  52. }
  53. function pageChange({ pageSize, currentPage }: any) {
  54. gridOptions.pagerConfig.limit = pageSize;
  55. gridOptions.pagerConfig.page = currentPage;
  56. fetchPlatformDetail();
  57. }
  58. </script>
  59. <template>
  60. <div class="p-2.5">
  61. <!-- overview-card -->
  62. <el-card body-class="flex items-center" shadow="hover" style="border: none;">
  63. <el-image
  64. class="mr-5"
  65. src="/src/assets/img/headerImage.png"
  66. style="height: 100px; width: 100px; object-fit: cover;"
  67. >
  68. <template #error>
  69. <div class="mr-3.5 flex items-center justify-center text-5xl" style="height: 100px; width: 100px; background-color: #f5f5f5;">
  70. <el-icon>
  71. <icon-picture/>
  72. </el-icon>
  73. </div>
  74. </template>
  75. </el-image>
  76. <div>
  77. <div class="font-semibold">店铺编号/名称:
  78. <span class="font-medium italic" style="color: #64748b">
  79. 123456789
  80. </span>
  81. </div>
  82. <div class="font-semibold">所属公司:
  83. <span class="font-medium italic" style="color: #64748b">
  84. 123456789
  85. </span>
  86. </div>
  87. <div class="font-semibold">平台数:
  88. <span class="font-medium italic" style="color: #64748b">
  89. 123456789
  90. </span>
  91. </div>
  92. <div class="font-semibold">电脑数:
  93. <span class="font-medium italic" style="color: #64748b">
  94. 123456789
  95. </span>
  96. </div>
  97. </div>
  98. </el-card>
  99. <!-- table-card -->
  100. <el-card body-style="padding-top: 10px" class="mt-2.5" shadow="hover" style="border: none;">
  101. <vxe-grid v-bind="gridOptions">
  102. <template #pager>
  103. <vxe-pager
  104. v-model:currentPage="gridOptions.pagerConfig.page"
  105. v-model:pageSize="gridOptions.pagerConfig.limit"
  106. :total="gridOptions.pagerConfig.total"
  107. @page-change="pageChange">
  108. </vxe-pager>
  109. </template>
  110. </vxe-grid>
  111. </el-card>
  112. </div>
  113. </template>
  114. <style scoped>
  115. </style>