You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hippo4j/hippo4j-ui/src/views/dashboard/admin/index.vue

203 lines
5.4 KiB

<template>
<div v-if="show" class="dashboard-editor-container">
<github-corner class="github-corner" />
<panel-group
:count-suc-total="countSucTotal"
:count-fail-total="countFailTotal"
:count-running-total="countRunningTotal"
:count-running-instance-total="countRunningInstanceTotal"
@handleSetLineChartData="handleSetLineChartData"
/>
<el-row style="background: #fff; padding: 16px 16px 0; margin-bottom: 32px">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<el-form label-position="left">
<el-form-item :label="$t('report.user')" label-width="120px">
<span>{{ temp.userName }}</span>
</el-form-item>
<el-form-item :label="$t('report.role')" label-width="120px">
<span>{{ temp.role }}</span>
</el-form-item>
<el-form-item :label="$t('report.tenants')" label-width="120px">
<span></span>
</el-form-item>
<el-form-item :label="$t('report.createTime')" label-width="120px">
<span> {{ temp.gmtCreate }}</span>
</el-form-item>
<el-form-item :label="$t('report.updateTime')" label-width="120px">
<span>{{ temp.gmtModified }}</span>
</el-form-item>
</el-form>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
</div>
</el-col>
<!-- <el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<bar-chart />
</div>
</el-col> -->
</el-row>
<el-row :gutter="8">
<el-col
:xs="{ span: 24 }"
:sm="{ span: 24 }"
:md="{ span: 24 }"
:lg="{ span: 12 }"
:xl="{ span: 12 }"
style="padding-right: 8px; margin-bottom: 30px"
>
<transaction-table />
</el-col>
<!--<el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
<todo-list />
</el-col>
<el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
<box-card />
</el-col>-->
</el-row>
</div>
</template>
<script>
import GithubCorner from '@/components/GithubCorner';
import PanelGroup from './components/PanelGroup';
import LineChart from './components/LineChart';
import RaddarChart from './components/RaddarChart';
import PieChart from './components/PieChart';
import TransactionTable from './components/TransactionTable';
/*import TodoList from './components/TodoList'
import BoxCard from './components/BoxCard'*/
import * as dashborad from '@/api/dashborad';
import * as user from '@/api/hippo4j-user';
const lineChartData = {
chartInfo: {
oneList: [1, 3, 4, 5, 3, 2],
twoList: [1, 2, 3, 4, 1, 3],
threeList: [1, 2, 3, 4, 1, 3],
fourList: [1, 2, 3, 4, 1, 3],
dayList: ['ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty'],
},
};
export default {
name: 'DashboardAdmin',
components: {
GithubCorner,
PanelGroup,
LineChart,
RaddarChart,
PieChart,
TransactionTable,
/*TodoList,
BoxCard*/
},
data() {
return {
lineChartData: lineChartData.chartInfo,
countSucTotal: 0,
countRunningTotal: 0,
countFailTotal: 0,
countRunningInstanceTotal: 0,
show: false,
temp: {},
};
},
async created() {
this.chartInfo();
this.lintChart();
this.userInfo();
},
methods: {
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type];
},
chartInfo() {
dashborad
.chartInfo()
.then((res) => {
const { tenantCount, threadPoolCount, threadPoolInstanceCount, itemCount } = res || {};
this.show = true;
this.countSucTotal = tenantCount;
this.countRunningTotal = threadPoolCount;
this.countFailTotal = itemCount;
this.countRunningInstanceTotal = threadPoolInstanceCount;
})
.catch(() => {});
},
lintChart() {
dashborad
.lineChart({})
.then((res) => {
const { oneList, twoList, threeList, fourList } = res || {};
this.lineChartData.oneList = oneList;
this.lineChartData.twoList = twoList;
this.lineChartData.threeList = threeList;
this.lineChartData.fourList = fourList;
})
.catch(() => {});
},
userInfo() {
const userName = this.$cookie.get('userName');
user
.getCurrentUser(userName)
.then((response) => {
this.temp = response;
})
.catch(() => {});
},
},
};
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.github-corner {
position: absolute;
top: 0px;
border: 0;
right: 0;
}
.el-form-item {
margin-bottom: 5px !important;
padding-bottom: 20px;
}
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
@media (max-width: 1024px) {
.chart-wrapper {
padding: 8px;
}
}
</style>