vue2-client 1.4.48 → 1.4.50

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 (107) hide show
  1. package/.env +15 -15
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +7 -1
  4. package/index.js +30 -30
  5. package/package.json +1 -1
  6. package/src/assets/img/querySlotDemo.svg +15 -15
  7. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  8. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +113 -113
  9. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -244
  10. package/src/base-client/components/common/CitySelect/index.js +3 -3
  11. package/src/base-client/components/common/CitySelect/index.md +109 -109
  12. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  13. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +310 -310
  14. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  15. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  16. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +210 -210
  17. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  18. package/src/base-client/components/common/Upload/index.js +3 -3
  19. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  20. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  21. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  22. package/src/base-client/components/common/XForm/XFormItem.vue +469 -469
  23. package/src/base-client/components/common/XFormTable/index.md +96 -96
  24. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  25. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  26. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  27. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  28. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  29. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  30. package/src/base-client/plugins/AppData.js +73 -73
  31. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  32. package/src/base-client/plugins/PagedList.js +177 -177
  33. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  34. package/src/base-client/plugins/i18n-extend.js +32 -32
  35. package/src/components/Ellipsis/index.md +38 -38
  36. package/src/components/NumberInfo/index.md +43 -43
  37. package/src/components/STable/README.md +341 -341
  38. package/src/components/STable/index.js +318 -318
  39. package/src/components/Trend/index.md +45 -45
  40. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  41. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  42. package/src/components/form/FormRow.vue +52 -52
  43. package/src/components/index.js +36 -36
  44. package/src/components/menu/SideMenu.vue +62 -62
  45. package/src/components/menu/menu.js +273 -273
  46. package/src/components/page/header/index.less +40 -40
  47. package/src/components/setting/Setting.vue +235 -235
  48. package/src/components/table/StandardTable.vue +141 -141
  49. package/src/components/table/advance/ActionColumns.vue +158 -158
  50. package/src/components/table/advance/SearchArea.vue +355 -355
  51. package/src/components/tool/AStepItem.vue +60 -60
  52. package/src/components/tool/AvatarList.vue +68 -68
  53. package/src/components/tool/Drawer.vue +142 -142
  54. package/src/components/tool/TagSelect.vue +83 -83
  55. package/src/components/transition/PageToggleTransition.vue +97 -97
  56. package/src/config/CreateQueryConfig.js +310 -310
  57. package/src/config/default/admin.config.js +18 -18
  58. package/src/config/default/setting.config.js +42 -41
  59. package/src/config/replacer/resolve.config.js +67 -67
  60. package/src/layouts/AdminLayout.vue +174 -174
  61. package/src/layouts/CommonLayout.vue +42 -42
  62. package/src/layouts/PageLayout.vue +151 -151
  63. package/src/layouts/SinglePageView.vue +105 -105
  64. package/src/layouts/footer/PageFooter.vue +49 -46
  65. package/src/layouts/header/AdminHeader.vue +104 -104
  66. package/src/layouts/header/HeaderNotice.vue +167 -167
  67. package/src/layouts/header/HeaderSearch.vue +67 -67
  68. package/src/layouts/header/InstitutionDetail.vue +181 -181
  69. package/src/layouts/header/index.less +92 -92
  70. package/src/layouts/tabs/TabsHead.vue +190 -190
  71. package/src/layouts/tabs/TabsView.vue +379 -379
  72. package/src/mock/goods/index.js +108 -108
  73. package/src/pages/CreateQueryPage.vue +65 -65
  74. package/src/pages/login/Login.vue +345 -345
  75. package/src/pages/report/ReportTable.js +124 -124
  76. package/src/pages/report/ReportTableHome.vue +28 -28
  77. package/src/pages/resourceManage/orgListManage.vue +98 -98
  78. package/src/pages/system/dictionary/index.vue +43 -43
  79. package/src/pages/system/file/index.vue +317 -317
  80. package/src/pages/system/monitor/loginInfor/index.vue +36 -36
  81. package/src/pages/system/monitor/operLog/index.vue +36 -36
  82. package/src/pages/system/queryParams/index.vue +43 -43
  83. package/src/router/async/config.async.js +27 -27
  84. package/src/router/async/router.map.js +65 -65
  85. package/src/router/index.js +27 -27
  86. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  87. package/src/services/api/LogDetailsViewApi.js +10 -10
  88. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  89. package/src/services/api/TicketDetailsViewApi.js +34 -34
  90. package/src/services/api/cas.js +79 -79
  91. package/src/services/api/commonTempTable.js +10 -10
  92. package/src/services/api/index.js +17 -17
  93. package/src/services/api/manage.js +8 -8
  94. package/src/services/api/restTools.js +24 -24
  95. package/src/services/apiService.js +13 -13
  96. package/src/services/user.js +53 -53
  97. package/src/store/modules/index.js +4 -4
  98. package/src/theme/default/nprogress.less +76 -76
  99. package/src/theme/default/style.less +47 -47
  100. package/src/utils/colors.js +107 -103
  101. package/src/utils/excel/Blob.js +180 -180
  102. package/src/utils/excel/Export2Excel.js +141 -141
  103. package/src/utils/formatter.js +68 -68
  104. package/src/utils/i18n.js +80 -80
  105. package/src/utils/theme-color-replacer-extend.js +91 -91
  106. package/src/utils/themeUtil.js +100 -100
  107. package/src/utils/util.js +230 -230
@@ -1,151 +1,151 @@
1
- <template>
2
- <div class="page-layout">
3
- <page-header
4
- ref="pageHeader"
5
- :style="`margin-top: ${multiPage ? 0 : -24}px`"
6
- :breadcrumb="breadcrumb"
7
- :title="pageTitle"
8
- :logo="logo"
9
- :avatar="avatar">
10
- <slot name="action" slot="action"></slot>
11
- <slot slot="content" name="headerContent"></slot>
12
- <div slot="content" v-if="!this.$slots.headerContent && desc">
13
- <p>{{ desc }}</p>
14
- <div v-if="this.linkList" class="link">
15
- <template v-for="(link, index) in linkList">
16
- <a :key="index" :href="link.href"><a-icon :type="link.icon" />{{ link.title }}</a>
17
- </template>
18
- </div>
19
- </div>
20
- <slot v-if="this.$slots.extra" slot="extra" name="extra"></slot>
21
- </page-header>
22
- <div ref="page" :class="['page-content', layout, pageWidth]" >
23
- <slot></slot>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- import PageHeader from '@vue2-client/components/page/header/PageHeader'
30
- import { mapState, mapMutations } from 'vuex'
31
- import { getI18nKey } from '@vue2-client/utils/routerUtil'
32
-
33
- export default {
34
- name: 'PageLayout',
35
- components: { PageHeader },
36
- // eslint-disable-next-line vue/require-prop-types
37
- props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
38
- data () {
39
- return {
40
- page: {},
41
- pageHeaderHeight: 0
42
- }
43
- },
44
- watch: {
45
- $route () {
46
- this.page = this.$route.meta.page
47
- }
48
- },
49
- updated () {
50
- if (!this._inactive) {
51
- this.updatePageHeight()
52
- }
53
- },
54
- activated () {
55
- this.updatePageHeight()
56
- },
57
- deactivated () {
58
- this.updatePageHeight(0)
59
- },
60
- mounted () {
61
- this.updatePageHeight()
62
- },
63
- created () {
64
- this.page = this.$route.meta.page
65
- },
66
- beforeDestroy () {
67
- this.updatePageHeight(0)
68
- },
69
- computed: {
70
- ...mapState('setting', ['layout', 'multiPage', 'pageMinHeight', 'pageWidth', 'customTitles']),
71
- pageTitle () {
72
- const pageTitle = this.page && this.page.title
73
- return this.customTitle || (pageTitle && this.$t(pageTitle)) || this.title || this.routeName
74
- },
75
- routeName () {
76
- const route = this.$route
77
- return this.$t(getI18nKey(route.matched[route.matched.length - 1].path))
78
- },
79
- breadcrumb () {
80
- const page = this.page
81
- const breadcrumb = page && page.breadcrumb
82
- if (breadcrumb) {
83
- const i18nBreadcrumb = []
84
- breadcrumb.forEach(item => {
85
- i18nBreadcrumb.push(this.$t(item))
86
- })
87
- return i18nBreadcrumb
88
- } else {
89
- return this.getRouteBreadcrumb()
90
- }
91
- },
92
- marginCorrect () {
93
- return this.multiPage ? 24 : 0
94
- }
95
- },
96
- methods: {
97
- ...mapMutations('setting', ['correctPageMinHeight']),
98
- getRouteBreadcrumb () {
99
- const routes = this.$route.matched
100
- const path = this.$route.path
101
- const breadcrumb = []
102
- routes.filter(item => path.includes(item.path))
103
- .forEach(route => {
104
- const path = route.path.length === 0 ? '/home' : route.path
105
- breadcrumb.push(this.$t(getI18nKey(path)))
106
- })
107
- const pageTitle = this.page && this.page.title
108
- if (this.customTitle || pageTitle) {
109
- breadcrumb[breadcrumb.length - 1] = this.customTitle || pageTitle
110
- }
111
- return breadcrumb
112
- },
113
- /**
114
- * 用于计算页面内容最小高度
115
- * @param newHeight
116
- */
117
- updatePageHeight (newHeight = this.$refs.pageHeader.$el.offsetHeight + this.marginCorrect) {
118
- this.correctPageMinHeight(this.pageHeaderHeight - newHeight)
119
- this.pageHeaderHeight = newHeight
120
- }
121
- }
122
- }
123
- </script>
124
-
125
- <style lang="less">
126
- .page-header{
127
- margin: 0 -24px 0;
128
- }
129
- .link{
130
- /*margin-top: 16px;*/
131
- line-height: 24px;
132
- a{
133
- font-size: 14px;
134
- margin-right: 32px;
135
- i{
136
- font-size: 22px;
137
- margin-right: 8px;
138
- }
139
- }
140
- }
141
- .page-content{
142
- position: relative;
143
- padding: 24px 0 0;
144
- &.side{
145
- }
146
- &.head.fixed{
147
- margin: 0 auto;
148
- max-width: 100%;
149
- }
150
- }
151
- </style>
1
+ <template>
2
+ <div class="page-layout">
3
+ <page-header
4
+ ref="pageHeader"
5
+ :style="`margin-top: ${multiPage ? 0 : -24}px`"
6
+ :breadcrumb="breadcrumb"
7
+ :title="pageTitle"
8
+ :logo="logo"
9
+ :avatar="avatar">
10
+ <slot name="action" slot="action"></slot>
11
+ <slot slot="content" name="headerContent"></slot>
12
+ <div slot="content" v-if="!this.$slots.headerContent && desc">
13
+ <p>{{ desc }}</p>
14
+ <div v-if="this.linkList" class="link">
15
+ <template v-for="(link, index) in linkList">
16
+ <a :key="index" :href="link.href"><a-icon :type="link.icon" />{{ link.title }}</a>
17
+ </template>
18
+ </div>
19
+ </div>
20
+ <slot v-if="this.$slots.extra" slot="extra" name="extra"></slot>
21
+ </page-header>
22
+ <div ref="page" :class="['page-content', layout, pageWidth]" >
23
+ <slot></slot>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import PageHeader from '@vue2-client/components/page/header/PageHeader'
30
+ import { mapState, mapMutations } from 'vuex'
31
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
32
+
33
+ export default {
34
+ name: 'PageLayout',
35
+ components: { PageHeader },
36
+ // eslint-disable-next-line vue/require-prop-types
37
+ props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
38
+ data () {
39
+ return {
40
+ page: {},
41
+ pageHeaderHeight: 0
42
+ }
43
+ },
44
+ watch: {
45
+ $route () {
46
+ this.page = this.$route.meta.page
47
+ }
48
+ },
49
+ updated () {
50
+ if (!this._inactive) {
51
+ this.updatePageHeight()
52
+ }
53
+ },
54
+ activated () {
55
+ this.updatePageHeight()
56
+ },
57
+ deactivated () {
58
+ this.updatePageHeight(0)
59
+ },
60
+ mounted () {
61
+ this.updatePageHeight()
62
+ },
63
+ created () {
64
+ this.page = this.$route.meta.page
65
+ },
66
+ beforeDestroy () {
67
+ this.updatePageHeight(0)
68
+ },
69
+ computed: {
70
+ ...mapState('setting', ['layout', 'multiPage', 'pageMinHeight', 'pageWidth', 'customTitles']),
71
+ pageTitle () {
72
+ const pageTitle = this.page && this.page.title
73
+ return this.customTitle || (pageTitle && this.$t(pageTitle)) || this.title || this.routeName
74
+ },
75
+ routeName () {
76
+ const route = this.$route
77
+ return this.$t(getI18nKey(route.matched[route.matched.length - 1].path))
78
+ },
79
+ breadcrumb () {
80
+ const page = this.page
81
+ const breadcrumb = page && page.breadcrumb
82
+ if (breadcrumb) {
83
+ const i18nBreadcrumb = []
84
+ breadcrumb.forEach(item => {
85
+ i18nBreadcrumb.push(this.$t(item))
86
+ })
87
+ return i18nBreadcrumb
88
+ } else {
89
+ return this.getRouteBreadcrumb()
90
+ }
91
+ },
92
+ marginCorrect () {
93
+ return this.multiPage ? 24 : 0
94
+ }
95
+ },
96
+ methods: {
97
+ ...mapMutations('setting', ['correctPageMinHeight']),
98
+ getRouteBreadcrumb () {
99
+ const routes = this.$route.matched
100
+ const path = this.$route.path
101
+ const breadcrumb = []
102
+ routes.filter(item => path.includes(item.path))
103
+ .forEach(route => {
104
+ const path = route.path.length === 0 ? '/home' : route.path
105
+ breadcrumb.push(this.$t(getI18nKey(path)))
106
+ })
107
+ const pageTitle = this.page && this.page.title
108
+ if (this.customTitle || pageTitle) {
109
+ breadcrumb[breadcrumb.length - 1] = this.customTitle || pageTitle
110
+ }
111
+ return breadcrumb
112
+ },
113
+ /**
114
+ * 用于计算页面内容最小高度
115
+ * @param newHeight
116
+ */
117
+ updatePageHeight (newHeight = this.$refs.pageHeader.$el.offsetHeight + this.marginCorrect) {
118
+ this.correctPageMinHeight(this.pageHeaderHeight - newHeight)
119
+ this.pageHeaderHeight = newHeight
120
+ }
121
+ }
122
+ }
123
+ </script>
124
+
125
+ <style lang="less">
126
+ .page-header{
127
+ margin: 0 -24px 0;
128
+ }
129
+ .link{
130
+ /*margin-top: 16px;*/
131
+ line-height: 24px;
132
+ a{
133
+ font-size: 14px;
134
+ margin-right: 32px;
135
+ i{
136
+ font-size: 22px;
137
+ margin-right: 8px;
138
+ }
139
+ }
140
+ }
141
+ .page-content{
142
+ position: relative;
143
+ padding: 24px 0 0;
144
+ &.side{
145
+ }
146
+ &.head.fixed{
147
+ margin: 0 auto;
148
+ max-width: 100%;
149
+ }
150
+ }
151
+ </style>
@@ -1,105 +1,105 @@
1
- <template>
2
- <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
- <template v-if="login">
4
- <div style="padding-top: 1px; background-color: #fff;">
5
- <iframe
6
- ref="singlepage"
7
- :src="url"
8
- :name="this.fullPath"
9
- class="single-page-iframe"
10
- @load="load">
11
- </iframe>
12
- </div>
13
- </template>
14
- </page-toggle-transition>
15
- </template>
16
-
17
- <script>
18
- import PageToggleTransition from '@vue2-client/components/transition/PageToggleTransition'
19
- import { ACCESS_TOKEN } from '@vue2-client/store/mutation-types'
20
- import { mapState, mapMutations } from 'vuex'
21
- import { CASLogin, doOtherValidate } from '@vue2-client/services/api/cas'
22
-
23
- export default {
24
- name: 'SinglePageView',
25
- components: { PageToggleTransition },
26
- props: {
27
- singlePageUrl: {
28
- type: String,
29
- default: ''
30
- },
31
- fullPath: {
32
- type: String,
33
- default: ''
34
- }
35
- },
36
- data () {
37
- return {
38
- iframe: null,
39
- url: ''
40
- }
41
- },
42
- computed: {
43
- ...mapState('setting', ['animate', 'iframeSrc']),
44
- ...mapState('account', ['login'])
45
- },
46
- created () {
47
- if (this.singlePageUrl.indexOf('sso:') !== -1) {
48
- const serviceKey = this.singlePageUrl.substring(4)
49
- CASLogin(serviceKey, true).then(res => {
50
- const redirectUrl = res.redirectUrl
51
- if (redirectUrl.indexOf('logic@') !== -1) {
52
- const logicName = redirectUrl.substring(6)
53
- doOtherValidate(logicName, res.st, serviceKey).then(validateRes => {
54
- this.url = validateRes.redirectUrl
55
- })
56
- } else {
57
- this.url = redirectUrl + '?ticket=' + res.st
58
- }
59
- }).catch(msg => {
60
- console.warn(msg)
61
- this.$message.error(msg)
62
- })
63
- } else {
64
- this.url = this.iframeSrc
65
- }
66
- },
67
- mounted () {
68
- if (!this.login) {
69
- this.setLogin(JSON.parse(sessionStorage.getItem(process.env.VUE_APP_LOGIN_KEY)))
70
- }
71
- this.iframe = this.$refs.singlepage.contentWindow
72
- this.path = this.$route.path
73
- },
74
- methods: {
75
- ...mapMutations('account', ['setLogin']),
76
- load () {
77
- if (this.singlePageUrl.indexOf('sso:') === -1) {
78
- const appdata = {
79
- singleValues: this.$appdata.getSingleValues(),
80
- params: this.$appdata.getParams()
81
- }
82
- const data = {
83
- token: localStorage.getItem(ACCESS_TOKEN),
84
- login: this.login,
85
- appdata: appdata,
86
- page: this.singlePageUrl
87
- }
88
- console.log('发送参数', data)
89
- if (this.iframe) {
90
- this.iframe.postMessage(data, '*')
91
- }
92
- }
93
- this.$emit('load', this.fullPath)
94
- }
95
- }
96
- }
97
- </script>
98
-
99
- <style lang="less">
100
- .single-page-iframe {
101
- width: 100%;
102
- height: calc(100vh - 117px);
103
- border: none;
104
- }
105
- </style>
1
+ <template>
2
+ <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
+ <template v-if="login">
4
+ <div style="padding-top: 1px; background-color: #fff;">
5
+ <iframe
6
+ ref="singlepage"
7
+ :src="url"
8
+ :name="this.fullPath"
9
+ class="single-page-iframe"
10
+ @load="load">
11
+ </iframe>
12
+ </div>
13
+ </template>
14
+ </page-toggle-transition>
15
+ </template>
16
+
17
+ <script>
18
+ import PageToggleTransition from '@vue2-client/components/transition/PageToggleTransition'
19
+ import { ACCESS_TOKEN } from '@vue2-client/store/mutation-types'
20
+ import { mapState, mapMutations } from 'vuex'
21
+ import { CASLogin, doOtherValidate } from '@vue2-client/services/api/cas'
22
+
23
+ export default {
24
+ name: 'SinglePageView',
25
+ components: { PageToggleTransition },
26
+ props: {
27
+ singlePageUrl: {
28
+ type: String,
29
+ default: ''
30
+ },
31
+ fullPath: {
32
+ type: String,
33
+ default: ''
34
+ }
35
+ },
36
+ data () {
37
+ return {
38
+ iframe: null,
39
+ url: ''
40
+ }
41
+ },
42
+ computed: {
43
+ ...mapState('setting', ['animate', 'iframeSrc']),
44
+ ...mapState('account', ['login'])
45
+ },
46
+ created () {
47
+ if (this.singlePageUrl.indexOf('sso:') !== -1) {
48
+ const serviceKey = this.singlePageUrl.substring(4)
49
+ CASLogin(serviceKey, true).then(res => {
50
+ const redirectUrl = res.redirectUrl
51
+ if (redirectUrl.indexOf('logic@') !== -1) {
52
+ const logicName = redirectUrl.substring(6)
53
+ doOtherValidate(logicName, res.st, serviceKey).then(validateRes => {
54
+ this.url = validateRes.redirectUrl
55
+ })
56
+ } else {
57
+ this.url = redirectUrl + '?ticket=' + res.st
58
+ }
59
+ }).catch(msg => {
60
+ console.warn(msg)
61
+ this.$message.error(msg)
62
+ })
63
+ } else {
64
+ this.url = this.iframeSrc
65
+ }
66
+ },
67
+ mounted () {
68
+ if (!this.login) {
69
+ this.setLogin(JSON.parse(sessionStorage.getItem(process.env.VUE_APP_LOGIN_KEY)))
70
+ }
71
+ this.iframe = this.$refs.singlepage.contentWindow
72
+ this.path = this.$route.path
73
+ },
74
+ methods: {
75
+ ...mapMutations('account', ['setLogin']),
76
+ load () {
77
+ if (this.singlePageUrl.indexOf('sso:') === -1) {
78
+ const appdata = {
79
+ singleValues: this.$appdata.getSingleValues(),
80
+ params: this.$appdata.getParams()
81
+ }
82
+ const data = {
83
+ token: localStorage.getItem(ACCESS_TOKEN),
84
+ login: this.login,
85
+ appdata: appdata,
86
+ page: this.singlePageUrl
87
+ }
88
+ console.log('发送参数', data)
89
+ if (this.iframe) {
90
+ this.iframe.postMessage(data, '*')
91
+ }
92
+ }
93
+ this.$emit('load', this.fullPath)
94
+ }
95
+ }
96
+ }
97
+ </script>
98
+
99
+ <style lang="less">
100
+ .single-page-iframe {
101
+ width: 100%;
102
+ height: calc(100vh - 117px);
103
+ border: none;
104
+ }
105
+ </style>
@@ -1,46 +1,49 @@
1
- <template>
2
- <div class="footer">
3
- <div class="links">
4
- <a target="_blank" :key="index" :href="item.link ? item.link : 'javascript: void(0)'" v-for="(item, index) in linkList">
5
- <a-icon v-if="item.icon" :type="item.icon"/>{{ item.name }}
6
- </a>
7
- </div>
8
- <div class="copyright">
9
- Copyright<a-icon type="copyright" />{{ copyright }}
10
- </div>
11
- </div>
12
- </template>
13
-
14
- <script>
15
- export default {
16
- name: 'PageFooter',
17
- // eslint-disable-next-line vue/require-prop-types
18
- props: ['copyright', 'linkList']
19
- }
20
- </script>
21
-
22
- <style lang="less" scoped>
23
- .footer{
24
- padding: 48px 16px 24px;
25
- /*margin: 48px 0 24px;*/
26
- text-align: center;
27
- .copyright{
28
- color: @text-color-second;
29
- font-size: 14px;
30
- i {
31
- margin: 0 4px;
32
- }
33
- }
34
- .links{
35
- margin-bottom: 8px;
36
- a:not(:last-child) {
37
- margin-right: 40px;
38
- }
39
- a{
40
- color: @text-color-second;
41
- -webkit-transition: all .3s;
42
- transition: all .3s;
43
- }
44
- }
45
- }
46
- </style>
1
+ <template>
2
+ <div class="footer">
3
+ <div class="links">
4
+ <a target="_blank" :key="index" :href="item.link ? item.link : 'javascript: void(0)'" v-for="(item, index) in linkList">
5
+ <a-icon v-if="item.icon" :type="item.icon"/>{{ item.name }}
6
+ </a>
7
+ </div>
8
+ <div class="copyright" v-if="!copyrightStyle">
9
+ Copyright<a-icon type="copyright" />{{ copyright }}
10
+ </div>
11
+ <div class="copyright2" :style="copyrightStyle" v-else>
12
+ {{ copyright }}
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ name: 'PageFooter',
20
+ // eslint-disable-next-line vue/require-prop-types
21
+ props: ['copyright', 'linkList', 'copyrightStyle']
22
+ }
23
+ </script>
24
+
25
+ <style lang="less" scoped>
26
+ .footer{
27
+ padding: 48px 16px 24px;
28
+ /*margin: 48px 0 24px;*/
29
+ text-align: center;
30
+ .copyright{
31
+ color: @text-color-second;
32
+ font-size: 14px;
33
+ i {
34
+ margin: 0 4px;
35
+ }
36
+ }
37
+ .links{
38
+ margin-bottom: 8px;
39
+ a:not(:last-child) {
40
+ margin-right: 40px;
41
+ }
42
+ a{
43
+ color: @text-color-second;
44
+ -webkit-transition: all .3s;
45
+ transition: all .3s;
46
+ }
47
+ }
48
+ }
49
+ </style>