mirror of
https://github.com/iczer/vue-antd-admin.git
synced 2025-04-06 03:57:44 +08:00
123 lines
4.4 KiB
Vue
123 lines
4.4 KiB
Vue
<template>
|
||
<page-layout :avatar="currUser.avatar">
|
||
<div slot="headerContent">
|
||
<div class="title">{{welcome.timeFix[lang]}},{{currUser.name}},{{welcome.message[lang]}}</div>
|
||
<div>{{currUser.position[lang]}}</div>
|
||
</div>
|
||
<template slot="extra">
|
||
<head-info class="split-right" :title="$t('project')" content="56"/>
|
||
<head-info class="split-right" :title="$t('ranking')" content="8/24"/>
|
||
<head-info class="split-right" :title="$t('visit')" content="2,223"/>
|
||
</template>
|
||
<template>
|
||
<a-row style="margin: 0 -12px">
|
||
<a-col style="padding: 0 12px" :xl="16" :lg="24" :md="24" :sm="24" :xs="24">
|
||
<a-card class="project-list" :loading="loading" style="margin-bottom: 24px;" :bordered="false" :title="$t('progress')" :body-style="{padding: 0}">
|
||
<a slot="extra">{{$t('all')}}</a>
|
||
<div>
|
||
<a-card-grid :key="i" v-for="(item, i) in projects">
|
||
<a-card :bordered="false" :body-style="{padding: 0}">
|
||
<a-card-meta :description="item.desc">
|
||
<div slot="title" class="card-title">
|
||
<a-avatar size="small" :src="item.logo" />
|
||
<span>Alipay</span>
|
||
</div>
|
||
</a-card-meta>
|
||
<div class="project-item">
|
||
<a class="group" href="/#/">科学搬砖组</a>
|
||
<span class="datetime">9小时前</span>
|
||
</div>
|
||
</a-card>
|
||
</a-card-grid>
|
||
</div>
|
||
</a-card>
|
||
<a-card :loading="loading" :title="$t('dynamic')" :bordered="false">
|
||
<a-list>
|
||
<a-list-item :key="index" v-for="(item, index) in activities">
|
||
<a-list-item-meta>
|
||
<a-avatar slot="avatar" :src="item.user.avatar" />
|
||
<div slot="title" v-html="item.template" />
|
||
<div slot="description">9小时前</div>
|
||
</a-list-item-meta>
|
||
</a-list-item>
|
||
</a-list>
|
||
</a-card>
|
||
</a-col>
|
||
<a-col style="padding: 0 12px" :xl="8" :lg="24" :md="24" :sm="24" :xs="24">
|
||
<a-card :title="$t('access')" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
|
||
<div class="item-group">
|
||
<a>操作一</a>
|
||
<a>操作二</a>
|
||
<a>操作三</a>
|
||
<a>操作四</a>
|
||
<a>操作五</a>
|
||
<a>操作六</a>
|
||
<a-button size="small" type="primary" ghost icon="plus">{{$t('add')}}</a-button>
|
||
</div>
|
||
</a-card>
|
||
<a-card :loading="loading" :title="`XX ${$t('degree')}`" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
|
||
<div style="min-height: 400px;">
|
||
<radar />
|
||
</div>
|
||
</a-card>
|
||
<a-card :loading="loading" :title="$t('team')" :bordered="false">
|
||
<div class="members">
|
||
<a-row>
|
||
<a-col :span="12" v-for="(item, index) in teams" :key="index">
|
||
<a>
|
||
<a-avatar size="small" :src="item.avatar" />
|
||
<span class="member">{{item.name}}</span>
|
||
</a>
|
||
</a-col>
|
||
</a-row>
|
||
</div>
|
||
</a-card>
|
||
</a-col>
|
||
</a-row>
|
||
</template>
|
||
</page-layout>
|
||
</template>
|
||
|
||
<script>
|
||
import PageLayout from '@/layouts/PageLayout'
|
||
import HeadInfo from '@/components/tool/HeadInfo'
|
||
import Radar from '@/components/chart/Radar'
|
||
import {mapState} from 'vuex'
|
||
import {request, METHOD} from '@/utils/request'
|
||
|
||
export default {
|
||
name: 'WorkPlace',
|
||
components: {Radar, HeadInfo, PageLayout},
|
||
i18n: require('./i18n'),
|
||
data () {
|
||
return {
|
||
projects: [],
|
||
loading: true,
|
||
activities: [],
|
||
teams: [],
|
||
welcome: {
|
||
timeFix: '',
|
||
message: ''
|
||
}
|
||
}
|
||
},
|
||
computed: {
|
||
...mapState('account', {currUser: 'user'}),
|
||
...mapState('setting', ['lang'])
|
||
},
|
||
beforeCreate() {
|
||
request('/user/welcome', METHOD.GET).then(res => this.welcome = res.data)
|
||
request('/work/activity', METHOD.GET).then(res => this.activities = res.data)
|
||
request('/work/team', METHOD.GET).then(res => this.teams = res.data)
|
||
request('/project', METHOD.GET).then(res => {
|
||
this.projects = res.data
|
||
this.loading = false
|
||
})
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="less">
|
||
@import "index";
|
||
</style>
|