代理增加接口
This commit is contained in:
@@ -117,17 +117,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-icon class="arrow"><ArrowRight /></el-icon>
|
<el-icon class="arrow"><ArrowRight /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="action-card" @click="activeTab = 'merchants'">
|
|
||||||
<div class="action-icon manage">
|
|
||||||
<el-icon><Management /></el-icon>
|
|
||||||
</div>
|
|
||||||
<div class="action-content">
|
|
||||||
<div class="action-title">商户管理</div>
|
|
||||||
<div class="action-desc">查看商户信息</div>
|
|
||||||
</div>
|
|
||||||
<el-icon class="arrow"><ArrowRight /></el-icon>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 标签页 -->
|
<!-- 标签页 -->
|
||||||
@@ -167,32 +156,36 @@
|
|||||||
stripe
|
stripe
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:row-class-name="({ row }) => row.is_early_merchant ? 'early-merchant' : ''"
|
:row-class-name="({ row }) => row.is_early_merchant ? 'early-merchant' : ''"
|
||||||
|
border
|
||||||
|
size="small"
|
||||||
|
class="responsive-table"
|
||||||
>
|
>
|
||||||
<el-table-column prop="username" label="用户名" width="120">
|
<el-table-column prop="username" label="用户名" min-width="80" :width="null">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ maskUsername(row.username) }}
|
{{ maskUsername(row.username) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="real_name" label="真实姓名" width="120" />
|
<el-table-column prop="real_name" label="真实姓名" min-width="80" :width="null" class-name="hide-on-mobile" />
|
||||||
<el-table-column prop="phone" label="手机号" width="130">
|
<el-table-column prop="phone" label="手机号" min-width="100" :width="null" class-name="hide-on-small-mobile">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ maskUsername(row.phone) }}
|
{{ maskUsername(row.phone) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="audit_status" label="审核状态" width="100">
|
<el-table-column prop="audit_status" label="审核状态" min-width="80" :width="null">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag :type="getAuditStatusType(row.audit_status)">
|
<el-tag size="small" :type="getAuditStatusType(row.audit_status)">
|
||||||
{{ getAuditStatusText(row.audit_status) }}
|
{{ getAuditStatusText(row.audit_status) }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="merchant_status" label="商户类型" width="150">
|
<el-table-column prop="merchant_status" label="商户类型" min-width="100" :width="null">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag
|
<el-tag
|
||||||
|
size="small"
|
||||||
:type="row.is_early_merchant ? 'warning' : 'success'"
|
:type="row.is_early_merchant ? 'warning' : 'success'"
|
||||||
:icon="row.is_early_merchant ? 'Warning' : 'Check'"
|
:icon="row.is_early_merchant ? 'Warning' : 'Check'"
|
||||||
>
|
>
|
||||||
{{ row.merchant_status || '正常商户' }}
|
{{ row.is_early_merchant ? '早期商户' : '正常商户' }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
v-if="row.is_early_merchant"
|
v-if="row.is_early_merchant"
|
||||||
@@ -203,19 +196,23 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="commission_count" label="佣金记录" width="100">
|
<el-table-column prop="completed_matches" label="完成匹配" min-width="80" :width="null" class-name="hide-on-mobile" />
|
||||||
<template #default="{ row }">
|
<el-table-column prop="joined_at" label="加入时间" min-width="100" :width="null" class-name="hide-on-small-mobile">
|
||||||
<span :class="{ 'text-muted': row.is_early_merchant }">
|
|
||||||
{{ row.commission_count || 0 }} 笔
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="completed_matches" label="完成匹配" width="100" />
|
|
||||||
<el-table-column prop="joined_at" label="加入时间" width="160">
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ formatDateTime(row.joined_at) }}
|
{{ formatDateTime(row.joined_at) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" min-width="100" :width="null">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
@click="viewMerchantTransfers(row)"
|
||||||
|
>
|
||||||
|
转账记录
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<div class="pagination-wrapper">
|
<div class="pagination-wrapper">
|
||||||
@@ -253,43 +250,48 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-table
|
<div class="responsive-table">
|
||||||
:data="commissions"
|
<el-table
|
||||||
v-loading="loadingCommissions"
|
:data="commissions"
|
||||||
stripe
|
v-loading="loadingCommissions"
|
||||||
style="width: 100%"
|
stripe
|
||||||
>
|
border
|
||||||
<el-table-column prop="username" label="商户" width="120">
|
size="small"
|
||||||
<template #default="{ row }">
|
class="responsive-table"
|
||||||
{{ maskUsername(row.username) }}
|
style="width: 100%"
|
||||||
</template>
|
>
|
||||||
</el-table-column>
|
<el-table-column prop="username" label="商户" :width="null" min-width="80">
|
||||||
<el-table-column prop="real_name" label="真实姓名" width="120" />
|
<template #default="{ row }">
|
||||||
<el-table-column prop="commission_amount" label="佣金金额" width="120">
|
{{ maskUsername(row.username) }}
|
||||||
<template #default="{ row }">
|
</template>
|
||||||
¥{{ (Number(row.commission_amount) || 0).toFixed(2) }}
|
</el-table-column>
|
||||||
</template>
|
<el-table-column prop="real_name" label="真实姓名" :width="null" min-width="80" class-name="hide-on-small-mobile" />
|
||||||
</el-table-column>
|
<el-table-column prop="commission_amount" label="佣金金额" :width="null" min-width="90">
|
||||||
<el-table-column prop="commission_type" label="佣金类型" width="120">
|
<template #default="{ row }">
|
||||||
<template #default="{ row }">
|
¥{{ (Number(row.commission_amount) || 0).toFixed(2) }}
|
||||||
<el-tag :type="getCommissionTypeTagType(row.commission_type)">
|
</template>
|
||||||
{{ getCommissionTypeText(row.commission_type) }}
|
</el-table-column>
|
||||||
</el-tag>
|
<el-table-column prop="commission_type" label="佣金类型" :width="null" min-width="90">
|
||||||
</template>
|
<template #default="{ row }">
|
||||||
</el-table-column>
|
<el-tag size="small" :type="getCommissionTypeTagType(row.commission_type)">
|
||||||
<el-table-column prop="status" label="状态" width="100">
|
{{ getCommissionTypeText(row.commission_type) }}
|
||||||
<template #default="{ row }">
|
</el-tag>
|
||||||
<el-tag :type="getCommissionStatusType(row.status)">
|
</template>
|
||||||
{{ getCommissionStatusText(row.status) }}
|
</el-table-column>
|
||||||
</el-tag>
|
<el-table-column prop="status" label="状态" :width="null" min-width="70">
|
||||||
</template>
|
<template #default="{ row }">
|
||||||
</el-table-column>
|
<el-tag size="small" :type="getCommissionStatusType(row.status)">
|
||||||
<el-table-column prop="created_at" label="生成时间" width="160">
|
{{ getCommissionStatusText(row.status) }}
|
||||||
<template #default="{ row }">
|
</el-tag>
|
||||||
{{ formatDateTime(row.created_at) }}
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
<el-table-column prop="created_at" label="生成时间" :width="null" min-width="120" class-name="hide-on-mobile">
|
||||||
</el-table>
|
<template #default="{ row }">
|
||||||
|
{{ formatDateTime(row.created_at) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="pagination-wrapper">
|
<div class="pagination-wrapper">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
@@ -316,6 +318,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 佣金提现 -->
|
<!-- 佣金提现 -->
|
||||||
<el-tab-pane label="佣金提现" name="withdrawals">
|
<el-tab-pane label="佣金提现" name="withdrawals">
|
||||||
<div class="withdrawals-section">
|
<div class="withdrawals-section">
|
||||||
@@ -350,6 +354,97 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<!-- 商户转账记录 -->
|
||||||
|
<el-tab-pane label="商户转账记录" name="transfers">
|
||||||
|
<div class="transfers-section">
|
||||||
|
<div class="section-header">
|
||||||
|
<h3>商户转账记录</h3>
|
||||||
|
<div class="header-actions">
|
||||||
|
<el-select
|
||||||
|
v-model="selectedMerchantId"
|
||||||
|
placeholder="选择商户"
|
||||||
|
size="small"
|
||||||
|
style="width: 200px; margin-right: 10px"
|
||||||
|
clearable
|
||||||
|
@change="loadTransfers"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="merchant in merchants"
|
||||||
|
:key="merchant.id"
|
||||||
|
:label="`${merchant.real_name} (${maskUsername(merchant.phone)})`"
|
||||||
|
:value="merchant.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<el-button @click="loadTransfers" :loading="loadingTransfers">
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
:data="transfers"
|
||||||
|
v-loading="loadingTransfers"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
size="small"
|
||||||
|
class="responsive-table"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-table-column prop="id" label="转账ID" min-width="80" :width="null" />
|
||||||
|
<el-table-column prop="from_real_name" label="发送方" min-width="100" :width="null" />
|
||||||
|
<el-table-column prop="to_real_name" label="接收方" min-width="100" :width="null" />
|
||||||
|
<el-table-column prop="amount" label="金额" min-width="100" :width="null">
|
||||||
|
<template #default="{ row }">
|
||||||
|
¥{{ row.amount }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="status" label="状态" min-width="80" :width="null">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag :type="getTransferStatusType(row.status)" size="small">
|
||||||
|
{{ getTransferStatusText(row.status) }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="transfer_type" label="类型" min-width="100" :width="null">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag :type="getTransferTypeType(row.transfer_type)" size="small">
|
||||||
|
{{ getTransferTypeText(row.transfer_type) }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="created_at" label="创建时间" min-width="160" :width="null" class-name="hide-on-small-mobile">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ formatDateTime(row.created_at) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="description" label="描述" min-width="150" :width="null" class-name="hide-on-mobile" />
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<div class="pagination-wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="transfersPage"
|
||||||
|
v-model:page-size="transfersPageSize"
|
||||||
|
:total="transfersTotal"
|
||||||
|
:page-sizes="[10, 20, 50]"
|
||||||
|
layout="total, sizes"
|
||||||
|
@current-change="loadTransfers"
|
||||||
|
@size-change="loadTransfers"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="pagination-wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="transfersPage"
|
||||||
|
v-model:page-size="transfersPageSize"
|
||||||
|
:total="transfersTotal"
|
||||||
|
:page-sizes="[10, 20, 50]"
|
||||||
|
layout="prev, pager, next, jumper"
|
||||||
|
@current-change="loadTransfers"
|
||||||
|
@size-change="loadTransfers"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -382,7 +477,7 @@ import {
|
|||||||
GridComponent
|
GridComponent
|
||||||
} from 'echarts/components'
|
} from 'echarts/components'
|
||||||
import VChart from 'vue-echarts'
|
import VChart from 'vue-echarts'
|
||||||
import api from '@/utils/api'
|
import api, { transferAPI } from '@/utils/api'
|
||||||
|
|
||||||
// 注册ECharts组件
|
// 注册ECharts组件
|
||||||
use([
|
use([
|
||||||
@@ -416,6 +511,14 @@ const commissionsPage = ref(1)
|
|||||||
const commissionsPageSize = ref(10)
|
const commissionsPageSize = ref(10)
|
||||||
const commissionsTotal = ref(0)
|
const commissionsTotal = ref(0)
|
||||||
|
|
||||||
|
// 转账记录数据
|
||||||
|
const transfers = ref([])
|
||||||
|
const loadingTransfers = ref(false)
|
||||||
|
const transfersPage = ref(1)
|
||||||
|
const transfersPageSize = ref(10)
|
||||||
|
const transfersTotal = ref(0)
|
||||||
|
const selectedMerchantId = ref(null)
|
||||||
|
|
||||||
// 图表相关数据
|
// 图表相关数据
|
||||||
const chartPeriod = ref('7d')
|
const chartPeriod = ref('7d')
|
||||||
const chartLoading = ref(false)
|
const chartLoading = ref(false)
|
||||||
@@ -513,6 +616,54 @@ const loadCommissions = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const loadTransfers = async () => {
|
||||||
|
if (!agentInfo.value) return
|
||||||
|
|
||||||
|
loadingTransfers.value = true
|
||||||
|
try {
|
||||||
|
// 构建请求参数
|
||||||
|
const params = {
|
||||||
|
page: transfersPage.value,
|
||||||
|
limit: transfersPageSize.value
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果选择了特定商户,则添加到请求参数中
|
||||||
|
let userId = selectedMerchantId.value
|
||||||
|
|
||||||
|
// 如果没有选择特定商户,则获取代理下所有商户的转账记录
|
||||||
|
if (!userId) {
|
||||||
|
// 使用代理ID获取所有相关商户的转账记录
|
||||||
|
const { data } = await api.get(`/agents/merchants/${agentInfo.value.id}/transfers`, {
|
||||||
|
params
|
||||||
|
})
|
||||||
|
console.log(data,'data1');
|
||||||
|
|
||||||
|
transfers.value = data.data.transfers
|
||||||
|
transfersTotal.value = data.data.pagination.total
|
||||||
|
} else {
|
||||||
|
// 获取特定商户的转账记录
|
||||||
|
const { data } = await transferAPI.getUserTransfersByUserId(userId, params)
|
||||||
|
|
||||||
|
transfers.value = data.data.transfers
|
||||||
|
transfersTotal.value = data.data.pagination.total
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('加载转账记录失败:', error)
|
||||||
|
ElMessage.error('加载转账记录失败')
|
||||||
|
} finally {
|
||||||
|
loadingTransfers.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const viewMerchantTransfers = (merchant) => {
|
||||||
|
// 设置选中的商户ID
|
||||||
|
selectedMerchantId.value = merchant.id
|
||||||
|
// 切换到转账记录标签页
|
||||||
|
activeTab.value = 'transfers'
|
||||||
|
// 加载该商户的转账记录
|
||||||
|
loadTransfers()
|
||||||
|
}
|
||||||
|
|
||||||
const handleLogout = async () => {
|
const handleLogout = async () => {
|
||||||
try {
|
try {
|
||||||
await ElMessageBox.confirm('确定要退出登录吗?', '确认退出', {
|
await ElMessageBox.confirm('确定要退出登录吗?', '确认退出', {
|
||||||
@@ -592,8 +743,101 @@ const getCommissionStatusText = (status) => {
|
|||||||
return '已生成'
|
return '已生成'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取转账状态标签类型
|
||||||
|
* @param {string} status - 转账状态
|
||||||
|
* @returns {string} 标签类型
|
||||||
|
*/
|
||||||
|
const getTransferStatusType = (status) => {
|
||||||
|
const types = {
|
||||||
|
pending: 'warning',
|
||||||
|
confirmed: 'success',
|
||||||
|
rejected: 'danger',
|
||||||
|
received: 'success',
|
||||||
|
cancelled: 'info'
|
||||||
|
}
|
||||||
|
return types[status] || 'info'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取转账状态文本
|
||||||
|
* @param {string} status - 转账状态
|
||||||
|
* @returns {string} 显示文本
|
||||||
|
*/
|
||||||
|
const getTransferStatusText = (status) => {
|
||||||
|
const texts = {
|
||||||
|
pending: '待确认',
|
||||||
|
confirmed: '已确认',
|
||||||
|
rejected: '已拒绝',
|
||||||
|
received: '已收到',
|
||||||
|
cancelled: '已取消'
|
||||||
|
}
|
||||||
|
return texts[status] || status
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取转账类型标签类型
|
||||||
|
* @param {string} type - 转账类型
|
||||||
|
* @returns {string} 标签类型
|
||||||
|
*/
|
||||||
|
const getTransferTypeType = (type) => {
|
||||||
|
const types = {
|
||||||
|
deposit: 'success',
|
||||||
|
withdraw: 'warning',
|
||||||
|
transfer: 'primary',
|
||||||
|
commission: 'success',
|
||||||
|
refund: 'info',
|
||||||
|
penalty: 'danger',
|
||||||
|
initial: 'primary',
|
||||||
|
return: 'info',
|
||||||
|
user_to_user: 'primary',
|
||||||
|
user_to_public: 'warning',
|
||||||
|
public_to_user: 'success'
|
||||||
|
}
|
||||||
|
return types[type] || 'info'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取转账类型文本
|
||||||
|
* @param {string} type - 转账类型
|
||||||
|
* @returns {string} 显示文本
|
||||||
|
*/
|
||||||
|
const getTransferTypeText = (type) => {
|
||||||
|
const texts = {
|
||||||
|
deposit: '充值',
|
||||||
|
withdraw: '提现',
|
||||||
|
transfer: '转账',
|
||||||
|
commission: '佣金',
|
||||||
|
refund: '退款',
|
||||||
|
penalty: '罚金',
|
||||||
|
initial: '初始转账',
|
||||||
|
return: '返还转账',
|
||||||
|
user_to_user: '用户转账',
|
||||||
|
user_to_public: '用户转公户',
|
||||||
|
public_to_user: '公户转用户'
|
||||||
|
}
|
||||||
|
return texts[type] || type
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化日期时间
|
||||||
|
* @param {string|Date} date - 需要格式化的日期
|
||||||
|
* @returns {string} - 格式化后的日期字符串或原文本
|
||||||
|
*/
|
||||||
const formatDateTime = (date) => {
|
const formatDateTime = (date) => {
|
||||||
return new Date(date).toLocaleString('zh-CN')
|
if (!date) return ''
|
||||||
|
|
||||||
|
// 尝试转换为日期对象
|
||||||
|
const dateObj = new Date(date)
|
||||||
|
|
||||||
|
// 检查是否为有效日期
|
||||||
|
if (isNaN(dateObj.getTime())) {
|
||||||
|
// 如果不是有效日期,返回原文本
|
||||||
|
return date
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是有效日期,进行格式化
|
||||||
|
return dateObj.toLocaleString('zh-CN')
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -839,7 +1083,8 @@ onMounted(async () => {
|
|||||||
await Promise.all([
|
await Promise.all([
|
||||||
loadChartData(),
|
loadChartData(),
|
||||||
loadMerchants(),
|
loadMerchants(),
|
||||||
loadCommissions()
|
loadCommissions(),
|
||||||
|
loadTransfers()
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -1427,7 +1672,37 @@ onMounted(async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 响应式表格样式 */
|
||||||
|
.responsive-table {
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hide-on-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table .cell) {
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tag) {
|
||||||
|
transform: scale(0.9);
|
||||||
|
transform-origin: left center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 480px) {
|
@media (max-width: 480px) {
|
||||||
|
.hide-on-small-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.stats-grid {
|
.stats-grid {
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
@@ -1471,5 +1746,11 @@ onMounted(async () => {
|
|||||||
.chart-card {
|
.chart-card {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-pagination) {
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
row-gap: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user