mirror of
https://github.com/veops/cmdb.git
synced 2025-09-10 07:43:07 +08:00
110 lines
2.6 KiB
Python
110 lines
2.6 KiB
Python
<template>
|
|
<div class="ant-pro-pages-account-projects-cardList">
|
|
<a-list :loading="loading" :data-source="data" :grid="{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }">
|
|
<a-list-item slot="renderItem" slot-scope="item">
|
|
<a-card class="ant-pro-pages-account-projects-card" hoverable>
|
|
<img slot="cover" :src="item.cover" :alt="item.title" />
|
|
<a-card-meta :title="item.title">
|
|
<template slot="description">
|
|
<ellipsis :length="50">{{ item.description }}</ellipsis>
|
|
</template>
|
|
</a-card-meta>
|
|
<div class="cardItemContent">
|
|
<span>{{ item.updatedAt | fromNow }}</span>
|
|
<div class="avatarList">
|
|
<avatar-list size="mini">
|
|
<avatar-list-item
|
|
v-for="(member, i) in item.members"
|
|
:key="`${item.id}-avatar-${i}`"
|
|
:src="member.avatar"
|
|
:tips="member.name"
|
|
/>
|
|
</avatar-list>
|
|
</div>
|
|
</div>
|
|
</a-card>
|
|
</a-list-item>
|
|
</a-list>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import moment from 'moment'
|
|
import { TagSelect, StandardFormRow, Ellipsis, AvatarList } from '@/components'
|
|
const TagSelectOption = TagSelect.Option
|
|
const AvatarListItem = AvatarList.AvatarItem
|
|
|
|
export default {
|
|
name: 'Project',
|
|
components: {
|
|
AvatarList,
|
|
AvatarListItem,
|
|
Ellipsis,
|
|
TagSelect,
|
|
TagSelectOption,
|
|
StandardFormRow
|
|
},
|
|
data () {
|
|
return {
|
|
data: [],
|
|
form: this.$form.createForm(this),
|
|
loading: true
|
|
}
|
|
},
|
|
filters: {
|
|
fromNow (date) {
|
|
return moment(date).fromNow()
|
|
}
|
|
},
|
|
mounted () {
|
|
this.getList()
|
|
},
|
|
methods: {
|
|
handleChange (value) {
|
|
console.log(`selected ${value}`)
|
|
},
|
|
getList () {
|
|
this.$http.get('/list/article', { params: { count: 8 } }).then(res => {
|
|
console.log('res', res)
|
|
this.data = res.result
|
|
this.loading = false
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
|
.ant-pro-pages-account-projects-cardList {
|
|
margin-top: 24px;
|
|
|
|
/deep/ .ant-card-meta-title {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
/deep/ .ant-card-meta-description {
|
|
height: 44px;
|
|
overflow: hidden;
|
|
line-height: 22px;
|
|
}
|
|
|
|
.cardItemContent {
|
|
display: flex;
|
|
height: 20px;
|
|
margin-top: 16px;
|
|
margin-bottom: -4px;
|
|
line-height: 20px;
|
|
|
|
> span {
|
|
flex: 1 1;
|
|
color: rgba(0,0,0,.45);
|
|
font-size: 12px;
|
|
}
|
|
|
|
/deep/ .ant-pro-avatar-list {
|
|
flex: 0 1 auto;
|
|
}
|
|
}
|
|
}
|
|
</style>
|