4
0
mirror of https://github.com/iczer/vue-antd-admin.git synced 2025-04-06 03:57:44 +08:00
2020-07-20 18:11:13 +08:00

123 lines
4.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>