Files
intc-vue-h5/src/pages/statistic/index.vue

189 lines
8.7 KiB
Vue

<template>
<view class="work-container">
<!-- 账单统计分析 -->
<view class="section-header" v-show="auth.hasPermi('invest:creditAnalysis:list')">
<text class="section-title">账单统计分析</text>
</view>
<view class="grid-body" v-show="auth.hasPermi('invest:creditAnalysis:list')">
<view class="grid-wrapper">
<view
v-for="(item, index) in billGridList"
:key="index"
v-show="auth.hasPermi(item.permission)"
@click="navigateTo(item.path)"
class="grid-item">
<view class="item-icon" :style="{ background: item.color }">
<uni-icons :type="item.icon" size="22" color="#ffffff"></uni-icons>
</view>
<text class="item-text">{{ item.text }}</text>
</view>
</view>
</view>
<!-- 记账统计分析 -->
<view class="section-header" v-show="auth.hasPermi('invest:accountsBalance:list')">
<text class="section-title">记账统计分析</text>
</view>
<view class="grid-body" v-show="auth.hasPermi('invest:accountsBalance:list')">
<view class="grid-wrapper">
<view
v-for="(item, index) in accountGridList"
:key="index"
v-show="auth.hasPermi(item.permission)"
@click="navigateTo(item.path)"
class="grid-item">
<view class="item-icon" :style="{ background: item.color }">
<uni-icons :type="item.icon" size="22" color="#ffffff"></uni-icons>
</view>
<text class="item-text">{{ item.text }}</text>
</view>
</view>
</view>
<!-- 投资统计分析 -->
<view class="section-header" v-show="auth.hasPermi('invest:accountsBalance:list')">
<text class="section-title">投资统计分析</text>
</view>
<view class="grid-body" v-show="auth.hasPermi('invest:accountsBalance:list')">
<view class="grid-wrapper">
<view
v-for="(item, index) in investGridList"
:key="index"
v-show="auth.hasPermi(item.permission)"
@click="navigateTo(item.path)"
class="grid-item">
<view class="item-icon" :style="{ background: item.color }">
<uni-icons :type="item.icon" size="22" color="#ffffff"></uni-icons>
</view>
<text class="item-text">{{ item.text }}</text>
</view>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from "vue";
import auth from "@/plugins/auth"; // 建议使用auth进行鉴权操作
const billGridList=ref([
{ path: '/pages/statistic/bill/creditBillAnalysis/index', text: '信用卡账单统计', icon: 'wallet-filled', color: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', permission: 'invest:creditAnalysis:list' },
{ path: '/pages/statistic/bill/creditInstallmentAnalysis/index', text: '信用卡分期待还', icon: 'calendar-filled', color: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', permission: 'invest:creditInstallment:list' },
{ path: '/pages/statistic/bill/creditInstallmentSettledAnalysis/index', text: '信用卡分期已还', icon: 'checkmarkempty', color: 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)', permission: 'invest:creditInstallmentSettledAnalysis:list' },
{ path: '/pages/statistic/bill/onlineLendAnalysis/index', text: '贷款待还统计', icon: 'upload-filled', color: 'linear-gradient(135deg, #ff6b6b 0%, #ee5a6f 100%)', permission: 'invest:onlineLendAnalysis:list' },
{ path: '/pages/statistic/bill/onlineLendSettledAnalysis/index', text: '贷款已还统计', icon: 'download-filled', color: 'linear-gradient(135deg, #0be881 0%, #0fbcf9 100%)', permission: 'invest:onlineLendSettledAnalysis:list' },
{ path: '/pages/statistic/bill/creditRecordAnalysis/index', text: '征信查询统计', icon: 'search', color: 'linear-gradient(135deg, #5f72bd 0%, #9b23ea 100%)', permission: 'invest:creditRecordAnalysis:list' }
])
const accountGridList=ref([
{ path: '/pages/statistic/accounts/accountsBalance/index', text: '记账账户统计', icon: 'home-filled', color: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', permission: 'invest:accountsBalance:list' },
{ path: '/pages/statistic/accounts/accountDealAnalysis/index', text: '账户收支统计', icon: 'list', color: 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', permission: 'invest:accountDealAnalysis:list' },
{ path: '/pages/statistic/accounts/dailyExpensesAnalysis/index', text: '日常支出统计', icon: 'wallet', color: 'linear-gradient(135deg, #f6d365 0%, #fda085 100%)', permission: 'invest:dailyExpensesAnalysis:list' },
{ path: '/pages/statistic/accounts/creditCardDealAnalysis/index', text: '信用卡收支统计', icon: 'vip-filled', color: 'linear-gradient(135deg, #d38cff 0%, #9d50bb 100%)', permission: 'invest:creditCard' },
{ path: '/pages/statistic/accounts/debitDealAnalysis/index', text: '储蓄账户统计', icon: 'paperplane', color: 'linear-gradient(135deg, #00b4db 0%, #0083b0 100%)', permission: 'invest:debitCard' },
{ path: '/pages/statistic/accounts/debitCardAnalysis/index', text: '结算卡统计', icon: 'star', color: 'linear-gradient(135deg, #fa8231 0%, #f7971e 100%)', permission: 'invest:debitCardAnalysis:list' },
{ path: '/pages/statistic/accounts/posStatics/index', text: 'POS机统计', icon: 'navigate-filled', color: 'linear-gradient(135deg, #0be881 0%, #0fbcf9 100%)', permission: 'invest:posmachine:list' },
{ path: '/pages/statistic/accounts/posAnalysis/index', text: 'POS刷卡统计', icon: 'scan', color: 'linear-gradient(135deg, #a29bfe 0%, #6c5ce7 100%)', permission: 'invest:posStatics:list' },
{ path: '/pages/statistic/accounts/sleepAccounts/index', text: '睡眠账户统计', icon: 'eye-slash-filled', color: 'linear-gradient(135deg, #636e72 0%, #2d3436 100%)', permission: 'invest:debitCard' },
{ path: '/pages/statistic/accounts/openCardStatics/index', text: '储蓄卡开卡统计', icon: 'gift-filled', color: 'linear-gradient(135deg, #fd79a8 0%, #e84393 100%)', permission: 'invest:debitCard' },
{ path: '/pages/statistic/accounts/dailyLiabilities/index', text: '每日净资产统计', icon: 'bars', color: 'linear-gradient(135deg, #00d2ff 0%, #3a7bd5 100%)', permission: 'invest:dailyLiabilities:list' },
])
const investGridList=ref([
{ path: '/pages/statistic/accounts/investDealAnalysis/index', text: '投资收益统计', icon: 'arrow-up', color: 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)', permission: 'invest:investDealAnalysis:list' },
{ path: '/pages/statistic/bill/investAnalysis/index', text: '收益统计分析', icon: 'settings', color: 'linear-gradient(135deg, #a29bfe 0%, #6c5ce7 100%)', permission: 'invest:investAnalysis:list'},
{ path: '/pages/statistic/bill/futuresAnalysis/index', text: '期货统计分析', icon: 'fire', color: 'linear-gradient(135deg, #fc5c65 0%, #fd79a8 100%)', permission: 'invest:futuresAnalysis:list'},
{ path: '/pages/statistic/bill/stocksAnalysis/index', text: '股票统计分析', icon: 'flag-filled', color: 'linear-gradient(135deg, #5f72bd 0%, #9b23ea 100%)', permission: 'invest:stocksAnalysis:list' }
])
function navigateTo(path) {
uni.navigateTo({
url: path
});
}
</script>
<style lang="scss">
/* #ifndef APP-NVUE */
page {
display: flex;
flex-direction: column;
box-sizing: border-box;
background-color: #f5f7fa;
min-height: 100%;
height: auto;
}
/* #endif */
.work-container {
padding: 12rpx 0;
}
.section-header {
padding: 12rpx 24rpx 8rpx;
}
.section-title {
font-size: 28rpx;
font-weight: 700;
color: #333;
position: relative;
padding-left: 16rpx;
}
.section-title::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 6rpx;
height: 28rpx;
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 3rpx;
}
.grid-body {
padding: 0 16rpx;
}
.grid-wrapper {
display: flex;
flex-wrap: wrap;
}
.grid-item {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 16rpx 8rpx;
box-sizing: border-box;
}
.item-icon {
width: 80rpx;
height: 80rpx;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 12rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
transition: all 0.3s;
}
.grid-item:active .item-icon {
transform: scale(0.95);
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.15);
}
.item-text {
text-align: center;
font-size: 22rpx;
color: #333;
font-weight: 500;
line-height: 1.3;
}
</style>