vue2-client 1.4.11 → 1.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +366 -362
  2. package/index.js +30 -30
  3. package/package.json +78 -78
  4. package/src/App.vue +4 -2
  5. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  6. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  7. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  8. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  9. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  10. package/src/base-client/components/common/XAddForm/XAddForm.vue +354 -354
  11. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  12. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  13. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  14. package/src/base-client/components/common/XForm/XFormItem.vue +389 -389
  15. package/src/base-client/components/common/XFormTable/index.md +96 -96
  16. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  17. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  18. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  19. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  20. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  21. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  22. package/src/base-client/plugins/AppData.js +69 -69
  23. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  24. package/src/base-client/plugins/PagedList.js +177 -177
  25. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  26. package/src/base-client/plugins/i18n-extend.js +32 -32
  27. package/src/components/Ellipsis/index.md +38 -38
  28. package/src/components/NumberInfo/index.md +43 -43
  29. package/src/components/STable/README.md +341 -341
  30. package/src/components/STable/index.js +318 -318
  31. package/src/components/Trend/index.md +45 -45
  32. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  33. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  34. package/src/components/exception/ExceptionPage.vue +2 -2
  35. package/src/components/form/FormRow.vue +52 -52
  36. package/src/components/index.js +36 -36
  37. package/src/components/menu/SideMenu.vue +62 -62
  38. package/src/components/menu/menu.js +273 -273
  39. package/src/components/setting/Setting.vue +235 -235
  40. package/src/components/table/StandardTable.vue +141 -141
  41. package/src/components/table/advance/ActionColumns.vue +158 -158
  42. package/src/components/table/advance/SearchArea.vue +355 -355
  43. package/src/components/tool/AStepItem.vue +60 -60
  44. package/src/components/tool/AvatarList.vue +68 -68
  45. package/src/components/tool/Drawer.vue +142 -142
  46. package/src/components/tool/TagSelect.vue +83 -83
  47. package/src/components/transition/PageToggleTransition.vue +97 -97
  48. package/src/config/default/setting.config.js +1 -1
  49. package/src/config/replacer/resolve.config.js +67 -67
  50. package/src/layouts/AdminLayout.vue +174 -174
  51. package/src/layouts/header/AdminHeader.vue +104 -104
  52. package/src/layouts/header/HeaderNotice.vue +167 -167
  53. package/src/layouts/header/HeaderSearch.vue +67 -67
  54. package/src/layouts/header/InstitutionDetail.vue +181 -181
  55. package/src/layouts/tabs/TabsHead.vue +190 -190
  56. package/src/layouts/tabs/TabsView.vue +379 -379
  57. package/src/mock/goods/index.js +108 -108
  58. package/src/pages/CreateQueryPage.vue +65 -65
  59. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -0
  60. package/src/pages/dashboard/workplace/i18n.js +40 -0
  61. package/src/pages/dashboard/workplace/index.js +2 -0
  62. package/src/pages/dashboard/workplace/index.less +59 -0
  63. package/src/pages/login/Login.vue +27 -41
  64. package/src/pages/report/ReportTable.js +124 -124
  65. package/src/pages/report/ReportTableHome.vue +28 -28
  66. package/src/pages/resourceManage/orgListManage.vue +98 -98
  67. package/src/pages/system/dictionary/index.vue +43 -43
  68. package/src/pages/system/file/index.vue +317 -317
  69. package/src/pages/system/queryParams/index.vue +43 -43
  70. package/src/router/async/config.async.js +27 -27
  71. package/src/router/async/router.map.js +5 -0
  72. package/src/router/index.js +27 -27
  73. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  74. package/src/services/api/LogDetailsViewApi.js +10 -10
  75. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  76. package/src/services/api/TicketDetailsViewApi.js +34 -34
  77. package/src/services/api/commonTempTable.js +10 -10
  78. package/src/services/api/index.js +17 -17
  79. package/src/services/api/manage.js +8 -8
  80. package/src/services/apiService.js +1 -0
  81. package/src/services/user.js +13 -5
  82. package/src/store/modules/index.js +4 -4
  83. package/src/store/mutation-types.js +1 -0
  84. package/src/theme/default/nprogress.less +76 -76
  85. package/src/theme/default/style.less +47 -47
  86. package/src/utils/colors.js +103 -103
  87. package/src/utils/excel/Blob.js +180 -180
  88. package/src/utils/excel/Export2Excel.js +141 -141
  89. package/src/utils/formatter.js +68 -68
  90. package/src/utils/i18n.js +80 -80
  91. package/src/utils/request.js +109 -33
  92. package/src/utils/routerUtil.js +364 -364
  93. package/src/utils/theme-color-replacer-extend.js +91 -91
  94. package/src/utils/themeUtil.js +100 -100
  95. package/src/utils/util.js +230 -230
  96. package/vue.config.js +7 -0
@@ -1,108 +1,108 @@
1
- import Mock from 'mockjs'
2
- import '@vue2-client/mock/extend'
3
- import { parseUrlParams } from '@vue2-client/utils/request'
4
-
5
- const current = new Date().getTime()
6
-
7
- const goodsList = Mock.mock({
8
- 'list|100': [{
9
- 'id|+1': 0,
10
- 'name': '@GOODS',
11
- 'orderId': `${current}-@integer(1,100)`,
12
- 'status|1-4': 1,
13
- 'send': '@BOOLEAN',
14
- 'sendTime': '@DATETIME',
15
- 'orderDate': '@DATE',
16
- 'auditTime': '@TIME'
17
- }]
18
- })
19
-
20
- Mock.mock(RegExp(`${process.env.VUE_APP_API_BASE_URL}/goods` + '.*'), 'get', ({ url }) => {
21
- const params = parseUrlParams(decodeURI(url))
22
- let { page, pageSize } = params
23
- // eslint-disable-next-line no-eval
24
- page = eval(page) - 1 || 0
25
- // eslint-disable-next-line no-eval
26
- pageSize = eval(pageSize) || 10
27
- delete params.page
28
- delete params.pageSize
29
- let result = goodsList.list.filter(item => {
30
- for (const [key, value] of Object.entries(params)) {
31
- if (item[key] !== value) {
32
- return false
33
- }
34
- }
35
- return true
36
- })
37
- const total = result.length
38
- if ((page) * pageSize > total) {
39
- result = []
40
- } else {
41
- result = result.slice(page * pageSize, (page + 1) * pageSize)
42
- }
43
- return {
44
- code: 0,
45
- message: 'success',
46
- data: {
47
- page: page + 1,
48
- pageSize,
49
- total,
50
- list: result
51
- }
52
- }
53
- })
54
-
55
- const columnsConfig = [
56
- {
57
- title: '商品名称',
58
- dataIndex: 'name',
59
- searchAble: true
60
- },
61
- {
62
- title: '订单号',
63
- dataIndex: 'orderId'
64
- },
65
- {
66
- searchAble: true,
67
- dataIndex: 'status',
68
- dataType: 'select',
69
- slots: { title: 'statusTitle' },
70
- scopedSlots: { customRender: 'status' },
71
- search: {
72
- selectOptions: [
73
- { title: '已下单', value: 1 },
74
- { title: '已付款', value: 2 },
75
- { title: '已审核', value: 3 }
76
- // {title: '已发货', value: 4}
77
- ]
78
- }
79
- },
80
- {
81
- title: '发货',
82
- searchAble: true,
83
- dataIndex: 'send',
84
- dataType: 'boolean',
85
- scopedSlots: { customRender: 'send' }
86
- },
87
- {
88
- title: '发货时间',
89
- dataIndex: 'sendTime',
90
- dataType: 'datetime'
91
- },
92
- {
93
- title: '下单日期',
94
- searchAble: true,
95
- dataIndex: 'orderDate',
96
- dataType: 'date',
97
- visible: false
98
- },
99
- {
100
- title: '审核时间',
101
- dataIndex: 'auditTime',
102
- dataType: 'time'
103
- }
104
- ]
105
-
106
- Mock.mock(`${process.env.VUE_APP_API_BASE_URL}/columns`, 'get', () => {
107
- return columnsConfig
108
- })
1
+ import Mock from 'mockjs'
2
+ import '@vue2-client/mock/extend'
3
+ import { parseUrlParams } from '@vue2-client/utils/request'
4
+
5
+ const current = new Date().getTime()
6
+
7
+ const goodsList = Mock.mock({
8
+ 'list|100': [{
9
+ 'id|+1': 0,
10
+ 'name': '@GOODS',
11
+ 'orderId': `${current}-@integer(1,100)`,
12
+ 'status|1-4': 1,
13
+ 'send': '@BOOLEAN',
14
+ 'sendTime': '@DATETIME',
15
+ 'orderDate': '@DATE',
16
+ 'auditTime': '@TIME'
17
+ }]
18
+ })
19
+
20
+ Mock.mock(RegExp(`${process.env.VUE_APP_API_BASE_URL}/goods` + '.*'), 'get', ({ url }) => {
21
+ const params = parseUrlParams(decodeURI(url))
22
+ let { page, pageSize } = params
23
+ // eslint-disable-next-line no-eval
24
+ page = eval(page) - 1 || 0
25
+ // eslint-disable-next-line no-eval
26
+ pageSize = eval(pageSize) || 10
27
+ delete params.page
28
+ delete params.pageSize
29
+ let result = goodsList.list.filter(item => {
30
+ for (const [key, value] of Object.entries(params)) {
31
+ if (item[key] !== value) {
32
+ return false
33
+ }
34
+ }
35
+ return true
36
+ })
37
+ const total = result.length
38
+ if ((page) * pageSize > total) {
39
+ result = []
40
+ } else {
41
+ result = result.slice(page * pageSize, (page + 1) * pageSize)
42
+ }
43
+ return {
44
+ code: 0,
45
+ message: 'success',
46
+ data: {
47
+ page: page + 1,
48
+ pageSize,
49
+ total,
50
+ list: result
51
+ }
52
+ }
53
+ })
54
+
55
+ const columnsConfig = [
56
+ {
57
+ title: '商品名称',
58
+ dataIndex: 'name',
59
+ searchAble: true
60
+ },
61
+ {
62
+ title: '订单号',
63
+ dataIndex: 'orderId'
64
+ },
65
+ {
66
+ searchAble: true,
67
+ dataIndex: 'status',
68
+ dataType: 'select',
69
+ slots: { title: 'statusTitle' },
70
+ scopedSlots: { customRender: 'status' },
71
+ search: {
72
+ selectOptions: [
73
+ { title: '已下单', value: 1 },
74
+ { title: '已付款', value: 2 },
75
+ { title: '已审核', value: 3 }
76
+ // {title: '已发货', value: 4}
77
+ ]
78
+ }
79
+ },
80
+ {
81
+ title: '发货',
82
+ searchAble: true,
83
+ dataIndex: 'send',
84
+ dataType: 'boolean',
85
+ scopedSlots: { customRender: 'send' }
86
+ },
87
+ {
88
+ title: '发货时间',
89
+ dataIndex: 'sendTime',
90
+ dataType: 'datetime'
91
+ },
92
+ {
93
+ title: '下单日期',
94
+ searchAble: true,
95
+ dataIndex: 'orderDate',
96
+ dataType: 'date',
97
+ visible: false
98
+ },
99
+ {
100
+ title: '审核时间',
101
+ dataIndex: 'auditTime',
102
+ dataType: 'time'
103
+ }
104
+ ]
105
+
106
+ Mock.mock(`${process.env.VUE_APP_API_BASE_URL}/columns`, 'get', () => {
107
+ return columnsConfig
108
+ })
@@ -1,65 +1,65 @@
1
- <template>
2
- <div>
3
- <create-query
4
- :visible.sync="visible"
5
- @saveQueryParams="saveQueryParams"
6
- />
7
- <create-simple-form-query
8
- :visible.sync="createSimpleFormVisible"
9
- @saveSimpleFormQueryParams="saveSimpleFormQueryParams"
10
- />
11
- <a-button style="margin-top: 10px;margin-left: 10px;" type="primary" @click="showDrawer">打开完整查询配置生成工具</a-button>
12
- <a-button style="margin-top: 10px;margin-left: 10px;" type="primary" @click="showSimpleFormQueryParamsDrawer">打开基础表单配置生成工具</a-button>
13
- <!-- <webmeter-analysis-view/>-->
14
- </div>
15
- </template>
16
-
17
- <script>
18
- import { post } from '@vue2-client/services/api/restTools'
19
- import CreateQuery from '@vue2-client/base-client/components/common/CreateQuery'
20
- import CreateSimpleFormQuery from '@vue2-client/base-client/components/common/CreateSimpleFormQuery'
21
-
22
- export default {
23
- name: 'CreateQueryPage',
24
- components: {
25
- CreateQuery,
26
- CreateSimpleFormQuery
27
- },
28
- data () {
29
- return {
30
- visible: false,
31
- createSimpleFormVisible: false
32
- }
33
- },
34
- methods: {
35
- showDrawer () {
36
- this.visible = true
37
- },
38
- showSimpleFormQueryParamsDrawer () {
39
- this.createSimpleFormVisible = true
40
- },
41
- // 存储查询配置信息
42
- saveQueryParams (source) {
43
- return post('/api/af-system/logic/addOrEditQueryParams', {
44
- source: source
45
- }).then(res => {
46
- this.$message.success('保存查询配置成功')
47
- }, err => {
48
- console.error(err)
49
- })
50
- },
51
- // 存储基础表单配置信息
52
- saveSimpleFormQueryParams (source) {
53
- return post('/api/af-system/logic/addOrEditSimpleFormQueryParams', {
54
- source: source
55
- }).then(res => {
56
- this.$message.success('保存基础表单配置成功')
57
- }, err => {
58
- console.error(err)
59
- })
60
- }
61
- }
62
- }
63
- </script>
64
- <style lang="less" scoped>
65
- </style>
1
+ <template>
2
+ <div>
3
+ <create-query
4
+ :visible.sync="visible"
5
+ @saveQueryParams="saveQueryParams"
6
+ />
7
+ <create-simple-form-query
8
+ :visible.sync="createSimpleFormVisible"
9
+ @saveSimpleFormQueryParams="saveSimpleFormQueryParams"
10
+ />
11
+ <a-button style="margin-top: 10px;margin-left: 10px;" type="primary" @click="showDrawer">打开完整查询配置生成工具</a-button>
12
+ <a-button style="margin-top: 10px;margin-left: 10px;" type="primary" @click="showSimpleFormQueryParamsDrawer">打开基础表单配置生成工具</a-button>
13
+ <!-- <webmeter-analysis-view/>-->
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import { post } from '@vue2-client/services/api/restTools'
19
+ import CreateQuery from '@vue2-client/base-client/components/common/CreateQuery'
20
+ import CreateSimpleFormQuery from '@vue2-client/base-client/components/common/CreateSimpleFormQuery'
21
+
22
+ export default {
23
+ name: 'CreateQueryPage',
24
+ components: {
25
+ CreateQuery,
26
+ CreateSimpleFormQuery
27
+ },
28
+ data () {
29
+ return {
30
+ visible: false,
31
+ createSimpleFormVisible: false
32
+ }
33
+ },
34
+ methods: {
35
+ showDrawer () {
36
+ this.visible = true
37
+ },
38
+ showSimpleFormQueryParamsDrawer () {
39
+ this.createSimpleFormVisible = true
40
+ },
41
+ // 存储查询配置信息
42
+ saveQueryParams (source) {
43
+ return post('/api/af-system/logic/addOrEditQueryParams', {
44
+ source: source
45
+ }).then(res => {
46
+ this.$message.success('保存查询配置成功')
47
+ }, err => {
48
+ console.error(err)
49
+ })
50
+ },
51
+ // 存储基础表单配置信息
52
+ saveSimpleFormQueryParams (source) {
53
+ return post('/api/af-system/logic/addOrEditSimpleFormQueryParams', {
54
+ source: source
55
+ }).then(res => {
56
+ this.$message.success('保存基础表单配置成功')
57
+ }, err => {
58
+ console.error(err)
59
+ })
60
+ }
61
+ }
62
+ }
63
+ </script>
64
+ <style lang="less" scoped>
65
+ </style>
@@ -0,0 +1,141 @@
1
+ <template>
2
+ <page-layout :avatar="currUser.avatar">
3
+ <div slot="headerContent">
4
+ <div class="title">{{ welcome.timeFix[lang] }},{{ currUser.name }},{{ welcome.message[lang] }}</div>
5
+ <div>{{ currUser.position[lang] }}</div>
6
+ </div>
7
+ <template slot="extra">
8
+ <head-info class="split-right" :title="$t('project')" content="56"/>
9
+ <head-info class="split-right" :title="$t('ranking')" content="8/24"/>
10
+ <head-info class="split-right" :title="$t('visit')" content="2,223"/>
11
+ </template>
12
+ <template>
13
+ <a-row style="margin: 0 -12px">
14
+ <a-col
15
+ style="padding: 0 12px"
16
+ :xl="16"
17
+ :lg="24"
18
+ :md="24"
19
+ :sm="24"
20
+ :xs="24">
21
+ <a-card
22
+ class="project-list"
23
+ :loading="loading"
24
+ style="margin-bottom: 24px;"
25
+ :bordered="false"
26
+ :title="$t('progress')"
27
+ :body-style="{padding: 0}">
28
+ <a slot="extra">{{ $t('all') }}</a>
29
+ <div>
30
+ <a-card-grid :key="i" v-for="(item, i) in projects">
31
+ <a-card :bordered="false" :body-style="{padding: 0}">
32
+ <a-card-meta :description="item.desc">
33
+ <div slot="title" class="card-title">
34
+ <a-avatar size="small" :src="item.logo" />
35
+ <span>Alipay</span>
36
+ </div>
37
+ </a-card-meta>
38
+ <div class="project-item">
39
+ <a class="group" href="/#/">科学搬砖组</a>
40
+ <span class="datetime">9小时前</span>
41
+ </div>
42
+ </a-card>
43
+ </a-card-grid>
44
+ </div>
45
+ </a-card>
46
+ <a-card :loading="loading" :title="$t('dynamic')" :bordered="false">
47
+ <a-list>
48
+ <a-list-item :key="index" v-for="(item, index) in activities">
49
+ <a-list-item-meta>
50
+ <a-avatar slot="avatar" :src="item.user.avatar" />
51
+ <div slot="title" v-html="item.template" />
52
+ <div slot="description">9小时前</div>
53
+ </a-list-item-meta>
54
+ </a-list-item>
55
+ </a-list>
56
+ </a-card>
57
+ </a-col>
58
+ <a-col
59
+ style="padding: 0 12px"
60
+ :xl="8"
61
+ :lg="24"
62
+ :md="24"
63
+ :sm="24"
64
+ :xs="24">
65
+ <a-card :title="$t('access')" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
66
+ <div class="item-group">
67
+ <a>操作一</a>
68
+ <a>操作二</a>
69
+ <a>操作三</a>
70
+ <a>操作四</a>
71
+ <a>操作五</a>
72
+ <a>操作六</a>
73
+ <a-button size="small" type="primary" ghost icon="plus">{{ $t('add') }}</a-button>
74
+ </div>
75
+ </a-card>
76
+ <a-card :loading="loading" :title="`XX ${$t('degree')}`" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
77
+ <div style="min-height: 400px;">
78
+ <radar />
79
+ </div>
80
+ </a-card>
81
+ <a-card :loading="loading" :title="$t('team')" :bordered="false">
82
+ <div class="members">
83
+ <a-row>
84
+ <a-col :span="12" v-for="(item, index) in teams" :key="index">
85
+ <a>
86
+ <a-avatar size="small" :src="item.avatar" />
87
+ <span class="member">{{ item.name }}</span>
88
+ </a>
89
+ </a-col>
90
+ </a-row>
91
+ </div>
92
+ </a-card>
93
+ </a-col>
94
+ </a-row>
95
+ </template>
96
+ </page-layout>
97
+ </template>
98
+
99
+ <script>
100
+ import PageLayout from '@vue2-client/layouts/PageLayout'
101
+ import HeadInfo from '@vue2-client/components/tool/HeadInfo'
102
+ import Radar from '@vue2-client/components/chart/Radar'
103
+ import { mapState } from 'vuex'
104
+ import { teams } from '@vue2-client/mock/common'
105
+ import { projectArr } from '@vue2-client/mock/project'
106
+ import { welcome } from '@vue2-client/mock/user/current'
107
+ import { activities } from '@vue2-client/mock/common/activityData'
108
+
109
+ export default {
110
+ name: 'WorkPlace',
111
+ components: { Radar, HeadInfo, PageLayout },
112
+ i18n: require('./i18n'),
113
+ data () {
114
+ return {
115
+ projects: [],
116
+ loading: true,
117
+ activities: [],
118
+ teams: [],
119
+ welcome: {
120
+ timeFix: '',
121
+ message: ''
122
+ }
123
+ }
124
+ },
125
+ computed: {
126
+ ...mapState('account', { currUser: 'user' }),
127
+ ...mapState('setting', ['lang'])
128
+ },
129
+ created () {
130
+ this.activities = activities
131
+ this.welcome = welcome
132
+ this.teams = teams
133
+ this.projects = projectArr
134
+ this.loading = false
135
+ }
136
+ }
137
+ </script>
138
+
139
+ <style lang="less">
140
+ @import "index";
141
+ </style>
@@ -0,0 +1,40 @@
1
+ module.exports = {
2
+ messages: {
3
+ CN: {
4
+ project: '项目数',
5
+ ranking: '团队排名',
6
+ visit: '项目访问',
7
+ progress: '进行中的项目',
8
+ all: '全部项目',
9
+ access: '快速开始/便捷导航',
10
+ dynamic: '动态',
11
+ degree: '指数',
12
+ team: '团队',
13
+ add: '添加'
14
+ },
15
+ HK: {
16
+ project: '項目數',
17
+ ranking: '團隊排名',
18
+ visit: '項目訪問',
19
+ progress: '進行中的項目',
20
+ all: '全部項目',
21
+ access: '快速開始/便捷導航',
22
+ dynamic: '動態',
23
+ degree: '指數',
24
+ team: '團隊',
25
+ add: '添加'
26
+ },
27
+ US: {
28
+ project: 'Project',
29
+ ranking: 'Ranking',
30
+ visit: 'Visit',
31
+ progress: 'Projects in progress',
32
+ all: 'All projects',
33
+ access: 'Quick start / Easy navigation',
34
+ dynamic: 'Dynamic',
35
+ degree: 'degree',
36
+ team: 'Team',
37
+ add: 'Add'
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,2 @@
1
+ import WorkPlace from './WorkPlace'
2
+ export default WorkPlace
@@ -0,0 +1,59 @@
1
+ .project-list {
2
+ .card-title {
3
+ span{
4
+ vertical-align: middle;
5
+ &:last-child{
6
+ margin-left: 12px;
7
+ }
8
+ }
9
+ }
10
+ .project-item {
11
+ display: flex;
12
+ justify-content: space-between;
13
+ margin-top: 8px;
14
+ overflow: hidden;
15
+ font-size: 12px;
16
+ color: inherit;
17
+ .group{
18
+ color: @text-color;
19
+ flex: 1 1 0;
20
+ &:hover {
21
+ color: @primary-color;
22
+ }
23
+ }
24
+ .datetime {
25
+ color: @text-color-second;
26
+ flex: 0 0 auto;
27
+ }
28
+ }
29
+ .ant-card-meta-description {
30
+ height: 44px;
31
+ line-height: 22px;
32
+ overflow: hidden;
33
+ }
34
+ }
35
+ .item-group{
36
+ padding: 20px 0 8px 24px;
37
+ font-size: 0;
38
+ a{
39
+ color: inherit;
40
+ display: inline-block;
41
+ font-size: 14px;
42
+ margin-bottom: 13px;
43
+ width: 25%;
44
+ }
45
+ }
46
+ .members {
47
+ a {
48
+ display: block;
49
+ margin: 12px 0;
50
+ color: @text-color;
51
+ &:hover {
52
+ color: @primary-color;
53
+ }
54
+ .member {
55
+ vertical-align: middle;
56
+ margin-left: 12px;
57
+ }
58
+ }
59
+ }