123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <script lang="ts" setup>
- /**
- * @Name: PlatformDetail.vue
- * @Description: 平台详情页
- * @Author: Cheney
- */
- import { useResponse } from '/@/utils/useResponse';
- import * as api from '../api';
- import { Picture as IconPicture } from '@element-plus/icons-vue';
- import { columns } from '../useColumns';
- import router from '/@/router';
- const route = useRoute();
- const platform = route.query.platform;
- const platformOverview: any = ref([]);
- // const selectedTab = ref('1');
- const platformTableData = ref([]);
- const gridOptions: any = reactive({
- border: false,
- round: true,
- stripe: true,
- currentRowHighLight: true,
- height: 870,
- toolbarConfig: {
- custom: true,
- slots: {
- buttons: 'toolbar_buttons'
- // tools: 'toolbar_tools'
- }
- },
- rowConfig: {
- isHover: true
- },
- columnConfig: {
- resizable: true
- },
- pagerConfig: {
- total: 0,
- page: 1,
- limit: 10
- },
- loading: false,
- loadingConfig: {
- icon: 'vxe-icon-indicator roll',
- text: '正在拼命加载中...'
- },
- columns: columns,
- data: platformTableData
- });
- onBeforeMount(() => {
- fetchPlatformDetailOverview();
- fetchPlatformDetail();
- });
- async function fetchPlatformDetail() {
- const query = {
- platform,
- page: gridOptions.pagerConfig.page,
- limit: gridOptions.pagerConfig.limit
- };
- const res = await useResponse(query, api.getPlatformDetailTableData, gridOptions);
- gridOptions.pagerConfig.total = res.total;
- gridOptions.pagerConfig.page = res.page;
- gridOptions.pagerConfig.limit = res.limit;
- platformTableData.value = res.data;
- }
- function pageChange({ pageSize, currentPage }: any) {
- gridOptions.pagerConfig.limit = pageSize;
- gridOptions.pagerConfig.page = currentPage;
- fetchPlatformDetail();
- }
- async function fetchPlatformDetailOverview() {
- const res = await useResponse({ platform }, api.getPlatformDetailOverview);
- platformOverview.value = res.data;
- }
- // function handleTabChange(tabValue: any) {
- // console.log("(PlatformDetail.vue: 82)=> tabValue", tabValue);
- // if (tabValue === '2') {
- // const query = {};
- // }
- // }
- function handleNavigate(item: any) {
- router.push({
- path: '/shop/detail',
- query: { platform: item.platform }
- });
- }
- </script>
- <template>
- <div class="p-2.5">
- <!-- overview-card -->
- <el-card body-class="flex items-center" shadow="hover" style="border: none">
- <el-image :src="`/src/assets/platformImg/${ platform }.png`" class="mr-7 rounded-2xl" style="height: 100px; width: 100px; object-fit: contain">
- <template #error>
- <div class="mr-3.5 flex items-center justify-center text-5xl" style="height: 100px; width: 100px; background-color: #f5f5f5">
- <el-icon>
- <icon-picture/>
- </el-icon>
- </div>
- </template>
- </el-image>
- <div class="text-lg">
- <div class="font-semibold">
- 平台名称:
- <span class="font-medium italic ml-1.5" style="color: #64748b">
- {{ platformOverview[0]?.platform ? platformOverview[0]?.platform : '--' }}
- </span>
- </div>
- <div class="font-semibold">
- 公司:
- <span class="font-medium italic ml-1.5" style="color: #64748b">
- {{ platformOverview[0]?.countCompany ? platformOverview[0]?.countCompany : '--' }}
- </span>
- </div>
- <div class="font-semibold">
- 店铺:
- <span class="font-medium italic ml-1.5" style="color: #64748b">
- {{ platformOverview[0]?.countShop ? platformOverview[0]?.countShop : '--' }}
- </span>
- </div>
- <div class="font-semibold">
- 电脑:
- <span class="font-medium italic ml-1.5" style="color: #64748b">
- {{ platformOverview[0]?.countComputer ? platformOverview[0]?.countComputer : '--' }}
- </span>
- </div>
- </div>
- </el-card>
- <!-- table-card -->
- <el-card body-style="padding-top: 10px" class="mt-2.5" shadow="hover" style="border: none">
- <vxe-grid v-bind="gridOptions">
- <!--<template #toolbar_buttons>
- <el-radio-group v-model="selectedTab" @change="handleTabChange">
- <el-radio-button label="当前信息" value="1" :icon="Timer">
- <template #default>
- <el-icon style="top: 2px;"><Timer /></el-icon>
- 当前信息
- </template>
- </el-radio-button>
- <el-radio-button label="历史记录" value="2" :icon="RefreshLeft">
- <template #default>
- <el-icon style="top: 2px;"><RefreshLeft /></el-icon>
- 历史记录
- </template>
- </el-radio-button>
- </el-radio-group>
- </template>-->
- <template #platformNumber="{ row }">
- <el-button link style="font-weight: 700" type="primary" @click="handleNavigate(row)">
- <el-icon>
- <Link/>
- </el-icon>
- {{ row.platformNumber ? row.platformNumber : '--' }}
- </el-button>
- </template>
- <template #pager>
- <vxe-pager
- v-model:currentPage="gridOptions.pagerConfig.page"
- v-model:pageSize="gridOptions.pagerConfig.limit"
- :total="gridOptions.pagerConfig.total"
- @page-change="pageChange"
- >
- </vxe-pager>
- </template>
- </vxe-grid>
- </el-card>
- </div>
- </template>
- <style scoped></style>
|