vue2-client 1.4.62 → 1.4.64

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 (100) hide show
  1. package/CHANGELOG.md +487 -483
  2. package/index.js +30 -30
  3. package/package.json +78 -78
  4. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  5. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +151 -151
  6. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  7. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  8. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  9. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  10. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  11. package/src/base-client/components/common/XForm/XFormItem.vue +1 -0
  12. package/src/base-client/components/common/XFormTable/XFormTable.vue +565 -570
  13. package/src/base-client/components/common/XFormTable/index.md +96 -96
  14. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +109 -109
  15. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  16. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  17. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  18. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  19. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  20. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  21. package/src/base-client/plugins/AppData.js +73 -73
  22. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  23. package/src/base-client/plugins/PagedList.js +177 -177
  24. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  25. package/src/base-client/plugins/i18n-extend.js +32 -32
  26. package/src/components/Ellipsis/index.md +38 -38
  27. package/src/components/NumberInfo/index.md +43 -43
  28. package/src/components/STable/README.md +341 -341
  29. package/src/components/STable/index.js +318 -318
  30. package/src/components/Trend/index.md +45 -45
  31. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  32. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  33. package/src/components/exception/ExceptionPage.vue +70 -70
  34. package/src/components/form/FormRow.vue +52 -52
  35. package/src/components/index.js +36 -36
  36. package/src/components/menu/SideMenu.vue +62 -62
  37. package/src/components/menu/menu.js +273 -273
  38. package/src/components/page/header/index.less +40 -40
  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/admin.config.js +18 -18
  49. package/src/config/default/setting.config.js +44 -44
  50. package/src/config/replacer/resolve.config.js +67 -67
  51. package/src/layouts/AdminLayout.vue +174 -174
  52. package/src/layouts/CommonLayout.vue +42 -42
  53. package/src/layouts/ComponentLayoutOne.vue +47 -47
  54. package/src/layouts/PageLayout.vue +151 -151
  55. package/src/layouts/SinglePageView.vue +111 -111
  56. package/src/layouts/footer/PageFooter.vue +49 -49
  57. package/src/layouts/header/AdminHeader.vue +104 -104
  58. package/src/layouts/header/HeaderNotice.vue +167 -167
  59. package/src/layouts/header/HeaderSearch.vue +67 -67
  60. package/src/layouts/header/InstitutionDetail.vue +181 -181
  61. package/src/layouts/header/index.less +92 -92
  62. package/src/layouts/tabs/TabsHead.vue +190 -190
  63. package/src/layouts/tabs/TabsView.vue +379 -379
  64. package/src/mock/goods/index.js +108 -108
  65. package/src/pages/exception/404.vue +25 -25
  66. package/src/pages/login/Login.vue +348 -348
  67. package/src/pages/report/ReportTable.js +124 -124
  68. package/src/pages/report/ReportTableHome.vue +28 -28
  69. package/src/pages/resourceManage/orgListManage.vue +98 -98
  70. package/src/pages/system/dictionary/index.vue +43 -43
  71. package/src/pages/system/file/index.vue +317 -317
  72. package/src/pages/system/monitor/loginInfor/index.vue +36 -36
  73. package/src/pages/system/monitor/operLog/index.vue +36 -36
  74. package/src/pages/system/queryParams/index.vue +43 -43
  75. package/src/router/async/config.async.js +27 -27
  76. package/src/router/async/router.map.js +68 -68
  77. package/src/router/guards.js +104 -104
  78. package/src/router/index.js +27 -27
  79. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  80. package/src/services/api/LogDetailsViewApi.js +10 -10
  81. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  82. package/src/services/api/TicketDetailsViewApi.js +34 -34
  83. package/src/services/api/cas.js +79 -79
  84. package/src/services/api/commonTempTable.js +10 -10
  85. package/src/services/api/index.js +17 -17
  86. package/src/services/api/logininfor/index.js +6 -6
  87. package/src/services/api/manage.js +8 -8
  88. package/src/services/apiService.js +13 -13
  89. package/src/services/user.js +53 -53
  90. package/src/store/modules/index.js +4 -4
  91. package/src/theme/default/nprogress.less +76 -76
  92. package/src/theme/default/style.less +47 -47
  93. package/src/utils/colors.js +107 -107
  94. package/src/utils/excel/Blob.js +180 -180
  95. package/src/utils/excel/Export2Excel.js +141 -141
  96. package/src/utils/formatter.js +68 -68
  97. package/src/utils/i18n.js +80 -80
  98. package/src/utils/theme-color-replacer-extend.js +91 -91
  99. package/src/utils/themeUtil.js +100 -100
  100. package/src/utils/util.js +230 -230
@@ -1,163 +1,163 @@
1
- <template>
2
- <a-tooltip :title="title" :overlayStyle="{zIndex: 2001}">
3
- <div class="img-check-box" @click="toggle">
4
- <img :src="img" alt=""/>
5
- <div v-if="sChecked" class="check-item">
6
- <a-icon type="check" />
7
- </div>
8
- </div>
9
- </a-tooltip>
10
- </template>
11
-
12
- <script>
13
- const Group = {
14
- name: 'ImgCheckboxGroup',
15
- props: {
16
- multiple: {
17
- type: Boolean,
18
- required: false,
19
- default: false
20
- },
21
- defaultValues: {
22
- type: Array,
23
- required: false,
24
- default: () => []
25
- }
26
- },
27
- data () {
28
- return {
29
- values: [],
30
- options: []
31
- }
32
- },
33
- provide () {
34
- return {
35
- groupContext: this
36
- }
37
- },
38
- watch: {
39
- 'values': function (value) {
40
- this.$emit('change', value)
41
- // // 此条件是为解决单选时,触发两次chang事件问题
42
- // if (!(newVal.length === 1 && oldVal.length === 1 && newVal[0] === oldVal[0])) {
43
- // this.$emit('change', this.values)
44
- // }
45
- }
46
- },
47
- methods: {
48
- handleChange (option) {
49
- if (!option.checked) {
50
- if (this.values.indexOf(option.value) > -1) {
51
- this.values = this.values.filter(item => item !== option.value)
52
- }
53
- } else {
54
- if (!this.multiple) {
55
- this.values = [option.value]
56
- this.options.forEach(item => {
57
- if (item.value !== option.value) {
58
- item.sChecked = false
59
- }
60
- })
61
- } else {
62
- this.values.push(option.value)
63
- }
64
- }
65
- }
66
- },
67
- render (h) {
68
- return h(
69
- 'div',
70
- {
71
- attrs: { style: 'display: flex' }
72
- },
73
- [this.$slots.default]
74
- )
75
- }
76
- }
77
-
78
- export default {
79
- name: 'ImgCheckbox',
80
- Group,
81
- props: {
82
- checked: {
83
- type: Boolean,
84
- required: false,
85
- default: false
86
- },
87
- img: {
88
- type: String,
89
- required: true
90
- },
91
- // eslint-disable-next-line vue/require-prop-types
92
- value: {
93
- required: true
94
- },
95
- // eslint-disable-next-line vue/require-default-prop
96
- title: String
97
- },
98
- data () {
99
- return {
100
- sChecked: this.initChecked()
101
- }
102
- },
103
- inject: ['groupContext'],
104
- watch: {
105
- 'sChecked': function () {
106
- const option = {
107
- value: this.value,
108
- checked: this.sChecked
109
- }
110
- this.$emit('change', option)
111
- const groupContext = this.groupContext
112
- if (groupContext) {
113
- groupContext.handleChange(option)
114
- }
115
- }
116
- },
117
- created () {
118
- const groupContext = this.groupContext
119
- if (groupContext) {
120
- this.sChecked = groupContext.defaultValues.length > 0 ? groupContext.defaultValues.indexOf(this.value) >= 0 : this.sChecked
121
- groupContext.options.push(this)
122
- }
123
- },
124
- methods: {
125
- toggle () {
126
- if (this.groupContext.multiple || !this.sChecked) {
127
- this.sChecked = !this.sChecked
128
- }
129
- },
130
- initChecked () {
131
- const groupContext = this.groupContext
132
- if (!groupContext) {
133
- return this.checked
134
- } else if (groupContext.multiple) {
135
- return groupContext.defaultValues.indexOf(this.value) > -1
136
- } else {
137
- return groupContext.defaultValues[0] === this.value
138
- }
139
- }
140
- }
141
- }
142
- </script>
143
-
144
- <style lang="less" scoped>
145
- .img-check-box{
146
- margin-right: 16px;
147
- position: relative;
148
- border-radius: 4px;
149
- cursor: pointer;
150
- .check-item{
151
- position: absolute;
152
- top: 0;
153
- right: 0;
154
- width: 100%;
155
- padding-top: 15px;
156
- padding-left: 24px;
157
- height: 100%;
158
- color: @primary-color;
159
- font-size: 14px;
160
- font-weight: bold;
161
- }
162
- }
163
- </style>
1
+ <template>
2
+ <a-tooltip :title="title" :overlayStyle="{zIndex: 2001}">
3
+ <div class="img-check-box" @click="toggle">
4
+ <img :src="img" alt=""/>
5
+ <div v-if="sChecked" class="check-item">
6
+ <a-icon type="check" />
7
+ </div>
8
+ </div>
9
+ </a-tooltip>
10
+ </template>
11
+
12
+ <script>
13
+ const Group = {
14
+ name: 'ImgCheckboxGroup',
15
+ props: {
16
+ multiple: {
17
+ type: Boolean,
18
+ required: false,
19
+ default: false
20
+ },
21
+ defaultValues: {
22
+ type: Array,
23
+ required: false,
24
+ default: () => []
25
+ }
26
+ },
27
+ data () {
28
+ return {
29
+ values: [],
30
+ options: []
31
+ }
32
+ },
33
+ provide () {
34
+ return {
35
+ groupContext: this
36
+ }
37
+ },
38
+ watch: {
39
+ 'values': function (value) {
40
+ this.$emit('change', value)
41
+ // // 此条件是为解决单选时,触发两次chang事件问题
42
+ // if (!(newVal.length === 1 && oldVal.length === 1 && newVal[0] === oldVal[0])) {
43
+ // this.$emit('change', this.values)
44
+ // }
45
+ }
46
+ },
47
+ methods: {
48
+ handleChange (option) {
49
+ if (!option.checked) {
50
+ if (this.values.indexOf(option.value) > -1) {
51
+ this.values = this.values.filter(item => item !== option.value)
52
+ }
53
+ } else {
54
+ if (!this.multiple) {
55
+ this.values = [option.value]
56
+ this.options.forEach(item => {
57
+ if (item.value !== option.value) {
58
+ item.sChecked = false
59
+ }
60
+ })
61
+ } else {
62
+ this.values.push(option.value)
63
+ }
64
+ }
65
+ }
66
+ },
67
+ render (h) {
68
+ return h(
69
+ 'div',
70
+ {
71
+ attrs: { style: 'display: flex' }
72
+ },
73
+ [this.$slots.default]
74
+ )
75
+ }
76
+ }
77
+
78
+ export default {
79
+ name: 'ImgCheckbox',
80
+ Group,
81
+ props: {
82
+ checked: {
83
+ type: Boolean,
84
+ required: false,
85
+ default: false
86
+ },
87
+ img: {
88
+ type: String,
89
+ required: true
90
+ },
91
+ // eslint-disable-next-line vue/require-prop-types
92
+ value: {
93
+ required: true
94
+ },
95
+ // eslint-disable-next-line vue/require-default-prop
96
+ title: String
97
+ },
98
+ data () {
99
+ return {
100
+ sChecked: this.initChecked()
101
+ }
102
+ },
103
+ inject: ['groupContext'],
104
+ watch: {
105
+ 'sChecked': function () {
106
+ const option = {
107
+ value: this.value,
108
+ checked: this.sChecked
109
+ }
110
+ this.$emit('change', option)
111
+ const groupContext = this.groupContext
112
+ if (groupContext) {
113
+ groupContext.handleChange(option)
114
+ }
115
+ }
116
+ },
117
+ created () {
118
+ const groupContext = this.groupContext
119
+ if (groupContext) {
120
+ this.sChecked = groupContext.defaultValues.length > 0 ? groupContext.defaultValues.indexOf(this.value) >= 0 : this.sChecked
121
+ groupContext.options.push(this)
122
+ }
123
+ },
124
+ methods: {
125
+ toggle () {
126
+ if (this.groupContext.multiple || !this.sChecked) {
127
+ this.sChecked = !this.sChecked
128
+ }
129
+ },
130
+ initChecked () {
131
+ const groupContext = this.groupContext
132
+ if (!groupContext) {
133
+ return this.checked
134
+ } else if (groupContext.multiple) {
135
+ return groupContext.defaultValues.indexOf(this.value) > -1
136
+ } else {
137
+ return groupContext.defaultValues[0] === this.value
138
+ }
139
+ }
140
+ }
141
+ }
142
+ </script>
143
+
144
+ <style lang="less" scoped>
145
+ .img-check-box{
146
+ margin-right: 16px;
147
+ position: relative;
148
+ border-radius: 4px;
149
+ cursor: pointer;
150
+ .check-item{
151
+ position: absolute;
152
+ top: 0;
153
+ right: 0;
154
+ width: 100%;
155
+ padding-top: 15px;
156
+ padding-left: 24px;
157
+ height: 100%;
158
+ color: @primary-color;
159
+ font-size: 14px;
160
+ font-weight: bold;
161
+ }
162
+ }
163
+ </style>
@@ -1,70 +1,70 @@
1
- <template>
2
- <div class="exception-page">
3
- <div class="img">
4
- <img :src="config[type].img" alt=""/>
5
- </div>
6
- <div class="content">
7
- <h1>{{ config[type].title }}</h1>
8
- <div class="desc">{{ config[type].desc }}</div>
9
- <div class="action">
10
- <a-button type="primary" @click="backHome">返回首页</a-button>
11
- </div>
12
- </div>
13
- </div>
14
- </template>
15
-
16
- <script>
17
- import Config from './typeConfig'
18
-
19
- export default {
20
- name: 'ExceptionPage',
21
- // eslint-disable-next-line vue/require-prop-types
22
- props: ['type', 'homeRoute'],
23
- data () {
24
- return {
25
- config: Config
26
- }
27
- },
28
- methods: {
29
- backHome () {
30
- if (this.homeRoute) {
31
- this.$router.push(this.homeRoute)
32
- }
33
- this.$emit('backHome', this.type)
34
- }
35
- }
36
- }
37
- </script>
38
-
39
- <style lang="less" scoped>
40
- .exception-page{
41
- border-radius: 4px;
42
- display: flex;
43
- justify-content: center;
44
- align-items: center;
45
- background-color: @base-bg-color;
46
- .img{
47
- padding-right: 52px;
48
- zoom: 1;
49
- img{
50
- max-width: 430px;
51
- }
52
- }
53
- .content{
54
- h1{
55
- color: #434e59;
56
- font-size: 72px;
57
- font-weight: 600;
58
- line-height: 72px;
59
- margin-bottom: 24px;
60
- }
61
- .desc{
62
- color: @text-color-second;
63
- font-size: 20px;
64
- line-height: 28px;
65
- margin-bottom: 16px;
66
- }
67
- }
68
- }
69
-
70
- </style>
1
+ <template>
2
+ <div class="exception-page">
3
+ <div class="img">
4
+ <img :src="config[type].img" alt=""/>
5
+ </div>
6
+ <div class="content">
7
+ <h1>{{ config[type].title }}</h1>
8
+ <div class="desc">{{ config[type].desc }}</div>
9
+ <div class="action">
10
+ <a-button type="primary" @click="backHome">返回首页</a-button>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ import Config from './typeConfig'
18
+
19
+ export default {
20
+ name: 'ExceptionPage',
21
+ // eslint-disable-next-line vue/require-prop-types
22
+ props: ['type', 'homeRoute'],
23
+ data () {
24
+ return {
25
+ config: Config
26
+ }
27
+ },
28
+ methods: {
29
+ backHome () {
30
+ if (this.homeRoute) {
31
+ this.$router.push(this.homeRoute)
32
+ }
33
+ this.$emit('backHome', this.type)
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+
39
+ <style lang="less" scoped>
40
+ .exception-page{
41
+ border-radius: 4px;
42
+ display: flex;
43
+ justify-content: center;
44
+ align-items: center;
45
+ background-color: @base-bg-color;
46
+ .img{
47
+ padding-right: 52px;
48
+ zoom: 1;
49
+ img{
50
+ max-width: 430px;
51
+ }
52
+ }
53
+ .content{
54
+ h1{
55
+ color: #434e59;
56
+ font-size: 72px;
57
+ font-weight: 600;
58
+ line-height: 72px;
59
+ margin-bottom: 24px;
60
+ }
61
+ .desc{
62
+ color: @text-color-second;
63
+ font-size: 20px;
64
+ line-height: 28px;
65
+ margin-bottom: 16px;
66
+ }
67
+ }
68
+ }
69
+
70
+ </style>
@@ -1,52 +1,52 @@
1
- <template>
2
- <div class="form-row">
3
- <div class="label">
4
- <span>{{ label }}</span>
5
- </div>
6
- <div class="content">
7
- <slot></slot>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- export default {
14
- name: 'FormRow',
15
- // eslint-disable-next-line vue/require-prop-types
16
- props: ['label']
17
- }
18
- </script>
19
-
20
- <style lang="less" scoped>
21
- .form-row{
22
- display: flex;
23
- border-bottom: 1px dashed @border-color-base;
24
- margin-bottom: 16px;
25
- .label {
26
- color: @title-color;
27
- font-size: 14px;
28
- margin-right: 24px;
29
- flex: 0 0 auto;
30
- text-align: right;
31
- & > span {
32
- display: inline-block;
33
- height: 39px;
34
- line-height: 39px;
35
- &:after {
36
- content: ':';
37
- }
38
- }
39
- }
40
- .content {
41
- flex: 1 1 0;
42
- :global {
43
- .ant-form-item:last-child {
44
- margin-right: 0;
45
- }
46
- .ant-form-item {
47
- margin-bottom: 0;
48
- }
49
- }
50
- }
51
- }
52
- </style>
1
+ <template>
2
+ <div class="form-row">
3
+ <div class="label">
4
+ <span>{{ label }}</span>
5
+ </div>
6
+ <div class="content">
7
+ <slot></slot>
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ export default {
14
+ name: 'FormRow',
15
+ // eslint-disable-next-line vue/require-prop-types
16
+ props: ['label']
17
+ }
18
+ </script>
19
+
20
+ <style lang="less" scoped>
21
+ .form-row{
22
+ display: flex;
23
+ border-bottom: 1px dashed @border-color-base;
24
+ margin-bottom: 16px;
25
+ .label {
26
+ color: @title-color;
27
+ font-size: 14px;
28
+ margin-right: 24px;
29
+ flex: 0 0 auto;
30
+ text-align: right;
31
+ & > span {
32
+ display: inline-block;
33
+ height: 39px;
34
+ line-height: 39px;
35
+ &:after {
36
+ content: ':';
37
+ }
38
+ }
39
+ }
40
+ .content {
41
+ flex: 1 1 0;
42
+ :global {
43
+ .ant-form-item:last-child {
44
+ margin-right: 0;
45
+ }
46
+ .ant-form-item {
47
+ margin-bottom: 0;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ </style>
@@ -1,36 +1,36 @@
1
- // chart
2
- import Bar from '@vue2-client/components/Charts/Bar'
3
- import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
- import Liquid from '@vue2-client/components/Charts/Liquid'
5
- import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
- import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
- import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
- import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
- import Radar from '@vue2-client/components/Charts/Radar'
10
- import RankList from '@vue2-client/components/Charts/RankList'
11
- import TagCloud from '@vue2-client/components/Charts/TagCloud'
12
- import TransferBar from '@vue2-client/components/Charts/TransferBar'
13
- import Trend from '@vue2-client/components/Trend'
14
-
15
- // pro components
16
- import Ellipsis from '@vue2-client/components/Ellipsis'
17
- import NumberInfo from '@vue2-client/components/NumberInfo'
18
- import STable from '@vue2-client/components/STable'
19
-
20
- export {
21
- Bar,
22
- ChartCard,
23
- Liquid,
24
- MiniArea,
25
- MiniSmoothArea,
26
- MiniBar,
27
- MiniProgress,
28
- Radar,
29
- TagCloud,
30
- RankList,
31
- TransferBar,
32
- Ellipsis,
33
- NumberInfo,
34
- STable,
35
- Trend
36
- }
1
+ // chart
2
+ import Bar from '@vue2-client/components/Charts/Bar'
3
+ import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
+ import Liquid from '@vue2-client/components/Charts/Liquid'
5
+ import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
+ import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
+ import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
+ import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
+ import Radar from '@vue2-client/components/Charts/Radar'
10
+ import RankList from '@vue2-client/components/Charts/RankList'
11
+ import TagCloud from '@vue2-client/components/Charts/TagCloud'
12
+ import TransferBar from '@vue2-client/components/Charts/TransferBar'
13
+ import Trend from '@vue2-client/components/Trend'
14
+
15
+ // pro components
16
+ import Ellipsis from '@vue2-client/components/Ellipsis'
17
+ import NumberInfo from '@vue2-client/components/NumberInfo'
18
+ import STable from '@vue2-client/components/STable'
19
+
20
+ export {
21
+ Bar,
22
+ ChartCard,
23
+ Liquid,
24
+ MiniArea,
25
+ MiniSmoothArea,
26
+ MiniBar,
27
+ MiniProgress,
28
+ Radar,
29
+ TagCloud,
30
+ RankList,
31
+ TransferBar,
32
+ Ellipsis,
33
+ NumberInfo,
34
+ STable,
35
+ Trend
36
+ }