@idooel/components 0.0.1 → 0.0.2

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/README.md +99 -0
  2. package/dist/@idooel/components.esm.js +13956 -1882
  3. package/dist/@idooel/components.umd.js +14000 -1891
  4. package/jsconfig.json +8 -0
  5. package/package.json +12 -6
  6. package/packages/alert/index.js +5 -0
  7. package/packages/alert/src/index.vue +46 -0
  8. package/packages/batch-export/index.js +5 -0
  9. package/packages/batch-export/src/index.vue +105 -0
  10. package/packages/business-components/modal-fsm/index.js +5 -0
  11. package/packages/business-components/modal-fsm/src/index.vue +164 -0
  12. package/packages/business-components/modal-import/index.js +5 -0
  13. package/packages/business-components/modal-import/src/index.vue +140 -0
  14. package/packages/business-components/modal-timeline/index.js +5 -0
  15. package/packages/business-components/modal-timeline/src/index.vue +78 -0
  16. package/packages/business-components/tabs-sub-center/index.js +5 -0
  17. package/packages/business-components/tabs-sub-center/src/index.vue +117 -0
  18. package/packages/button/index.js +4 -4
  19. package/packages/button/src/index.vue +65 -24
  20. package/packages/checkbox/index.js +5 -0
  21. package/packages/checkbox/src/index.vue +53 -0
  22. package/packages/composite-components/button-group/index.js +4 -4
  23. package/packages/composite-components/button-group/src/index.vue +151 -46
  24. package/packages/composite-components/form-attachment/src/index.vue +15 -0
  25. package/packages/composite-components/form-img-crop/index.js +5 -0
  26. package/packages/composite-components/form-img-crop/src/index.vue +121 -0
  27. package/packages/composite-components/modal-confirm/index.js +5 -0
  28. package/packages/composite-components/modal-confirm/src/index.vue +104 -0
  29. package/packages/composite-components/modal-form/index.js +5 -0
  30. package/packages/composite-components/modal-form/src/index.vue +231 -0
  31. package/packages/composite-components/modal-img-crop/index.js +5 -0
  32. package/packages/composite-components/modal-img-crop/src/index.vue +299 -0
  33. package/packages/composite-components/modal-table/index.js +5 -0
  34. package/packages/composite-components/modal-table/src/index.vue +156 -0
  35. package/packages/composite-components/modal-table-transfer/index.js +0 -0
  36. package/packages/composite-components/modal-tree/index.js +5 -0
  37. package/packages/composite-components/modal-tree/src/index.vue +76 -0
  38. package/packages/composite-components/search-area/index.js +4 -4
  39. package/packages/composite-components/search-area/src/index.vue +237 -128
  40. package/packages/composite-components/search-area/src/label.vue +35 -35
  41. package/packages/composite-components/select-entity-modal-table/index.js +5 -0
  42. package/packages/composite-components/select-entity-modal-table/src/index.vue +172 -0
  43. package/packages/composite-components/table-transfer/index.js +0 -0
  44. package/packages/date/index.js +4 -4
  45. package/packages/date/src/index.vue +113 -40
  46. package/packages/date-range/index.js +5 -0
  47. package/packages/date-range/src/index.vue +47 -0
  48. package/packages/form/index.js +5 -0
  49. package/packages/form/src/index.vue +319 -0
  50. package/packages/icon/index.js +5 -0
  51. package/packages/icon/src/index.vue +32 -0
  52. package/packages/index.js +153 -50
  53. package/packages/input/index.js +4 -4
  54. package/packages/input/src/index.vue +35 -23
  55. package/packages/input-number/index.js +5 -0
  56. package/packages/input-number/src/index.vue +24 -0
  57. package/packages/loading/index.js +5 -0
  58. package/packages/loading/src/index.vue +37 -0
  59. package/packages/modal/index.js +5 -0
  60. package/packages/modal/src/index.vue +185 -0
  61. package/packages/models/form-group-model/index.js +5 -0
  62. package/packages/models/form-group-model/src/index.vue +274 -0
  63. package/packages/models/form-model/index.js +5 -0
  64. package/packages/models/form-model/src/index.vue +233 -0
  65. package/packages/models/step-model/index.js +5 -0
  66. package/packages/models/step-model/src/index.vue +224 -0
  67. package/packages/{tree-table-model → models/tree-table-model}/index.js +4 -4
  68. package/packages/models/tree-table-model/src/index.vue +689 -0
  69. package/packages/radio/index.js +5 -0
  70. package/packages/radio/src/index.vue +57 -0
  71. package/packages/select/index.js +4 -4
  72. package/packages/select/src/index.vue +105 -34
  73. package/packages/select-entity/index.js +5 -0
  74. package/packages/select-entity/src/index.vue +120 -0
  75. package/packages/table/index.js +4 -4
  76. package/packages/table/src/action.vue +172 -103
  77. package/packages/table/src/index.vue +289 -88
  78. package/packages/tabs/index.js +5 -0
  79. package/packages/tabs/src/index.vue +56 -0
  80. package/packages/text/index.js +5 -0
  81. package/packages/text/src/index.vue +48 -0
  82. package/packages/text-editor/index.js +5 -0
  83. package/packages/text-editor/src/index.vue +73 -0
  84. package/packages/textarea/index.js +5 -0
  85. package/packages/textarea/src/index.vue +58 -0
  86. package/packages/theme/form.scss +22 -0
  87. package/packages/theme/index.scss +43 -0
  88. package/packages/theme/overrid.scss +8 -0
  89. package/packages/theme/styleClass.scss +3 -0
  90. package/packages/theme/variables.scss +56 -0
  91. package/packages/timeline/index.js +5 -0
  92. package/packages/timeline/src/index.vue +258 -0
  93. package/packages/tpl/index.js +4 -4
  94. package/packages/tpl/src/index.vue +56 -47
  95. package/packages/tree/index.js +4 -4
  96. package/packages/tree/src/TreeNode.vue +29 -29
  97. package/packages/tree/src/index.vue +101 -96
  98. package/packages/tree-select/index.js +5 -0
  99. package/packages/tree-select/src/index.vue +143 -0
  100. package/packages/upload/index.js +5 -0
  101. package/packages/upload/src/index.vue +445 -0
  102. package/packages/utils/index.js +63 -0
  103. package/scripts/rollup.config.js +42 -35
  104. package/scripts/rollup.esm.config.js +11 -11
  105. package/scripts/rollup.umd.config.js +14 -14
  106. package/packages/tree-table-model/src/index.vue +0 -290
  107. /package/packages/{tree-table-model/README.md → composite-components/form-attachment/index.js} +0 -0
package/jsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": "./",
4
+ "paths": {
5
+ "@/*": ["packages/*"]
6
+ }
7
+ }
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idooel/components",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "",
5
5
  "private": false,
6
6
  "main": "dist/@idooel/components.umd.js",
@@ -16,23 +16,29 @@
16
16
  "keywords": [],
17
17
  "license": "ISC",
18
18
  "peerDependencies": {
19
- "@idooel/shared": "workspace:^0.0.0",
19
+ "@idooel/expression": "0.0.1-beta.1",
20
+ "@idooel/shared": "0.0.1-beta.7",
20
21
  "ant-design-vue": "1.7.8",
21
- "moment": "^2.30.1"
22
+ "cropperjs": "1.4.1",
23
+ "moment": "^2.30.1",
24
+ "vue-upload-component": "<=2.8.11",
25
+ "vueditor": "^0.3.1"
22
26
  },
23
27
  "devDependencies": {
24
28
  "@babel/core": "7.17.9",
25
- "@idooel/expression": "workspace:^0.0.0",
26
- "@idooel/shared": "workspace:^0.0.0",
29
+ "@idooel/expression": "workspace:*",
30
+ "@idooel/shared": "workspace:*",
31
+ "@rollup/plugin-alias": "^5.1.0",
32
+ "@rollup/plugin-babel": "^6.0.4",
27
33
  "@rollup/plugin-node-resolve": "13.2.0",
28
34
  "@rollup/plugin-strip": "2.1.0",
35
+ "@vue/babel-preset-jsx": "^1.4.0",
29
36
  "@vue/compiler-sfc": "3.2.33",
30
37
  "babel-plugin-component": "1.1.1",
31
38
  "babel-plugin-external-helpers": "6.22.0",
32
39
  "postcss": "8.4.12",
33
40
  "postcss-import": "14.1.0",
34
41
  "rollup": "2.70.1",
35
- "rollup-plugin-babel": "4.4.0",
36
42
  "rollup-plugin-postcss": "4.0.2",
37
43
  "rollup-plugin-terser": "^7.0.2",
38
44
  "rollup-plugin-vue": "5.1.9",
@@ -0,0 +1,5 @@
1
+ import EleAlert from './src/index.vue'
2
+
3
+ EleAlert.install = Vue => Vue.component(EleAlert.name, EleAlert)
4
+
5
+ export default EleAlert
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <a-alert
3
+ class="ele-alert"
4
+ :message="message"
5
+ :description="description"
6
+ :type="type"
7
+ :closable="closable"
8
+ :closeText="closeText"
9
+ :show-icon="showIcon" />
10
+ </template>
11
+
12
+ <script>
13
+ export default {
14
+ name: 'ele-alert',
15
+ props: {
16
+ type: {
17
+ type: String,
18
+ default: 'success'
19
+ },
20
+ showIcon: {
21
+ type: Boolean,
22
+ default: true
23
+ },
24
+ message: {
25
+ type: String,
26
+ default: 'Success Tips'
27
+ },
28
+ description: {
29
+ type: String
30
+ },
31
+ closable: {
32
+ type: Boolean,
33
+ default: true
34
+ },
35
+ closeText: {
36
+ type: String
37
+ }
38
+ }
39
+ }
40
+ </script>
41
+
42
+ <style lang="scss" scoped>
43
+ .ele-alert {
44
+ text-align: left !important;
45
+ }
46
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleBatchExport from './src/index.vue'
2
+
3
+ EleBatchExport.install = Vue => Vue.component(EleBatchExport.name, EleBatchExport)
4
+
5
+ export default EleBatchExport
@@ -0,0 +1,105 @@
1
+ <template>
2
+ <ele-modal
3
+ v-model="innerValue"
4
+ v-on="$listeners"
5
+ :buttonGroupMeta="buttonGroupMeta"
6
+ title="批量导出">
7
+ <div class="ele-batch-export__content">
8
+ <div class="ele-batch-export__container">
9
+ <ele-icon class="ele-batch-export__icon" type="download"></ele-icon>
10
+ <div class="ele-batch-export__handle">
11
+ <div class="ele-batch-export__btn" @click="handleClick">导出任务处理中..... 请点击此按钮跳转到“批处理管理”菜单查看任务进度</div>
12
+ <div class="ele-batch-export__btn--hint">批处理任务的准备工作会在后台运行</div>
13
+ </div>
14
+ </div>
15
+ <div class="ele-batch-export__message">
16
+ 您可以请点击上方按钮查看任务进度或关闭弹框
17
+ </div>
18
+ </div>
19
+ </ele-modal>
20
+ </template>
21
+
22
+ <script>
23
+ export default {
24
+ name: 'ele-batch-export',
25
+ props: {
26
+ value: {
27
+ type: Boolean,
28
+ default: false
29
+ },
30
+ buttonGroupMeta: {
31
+ type: Object,
32
+ default: () => {
33
+ return {
34
+ elements: [
35
+ {
36
+ label: '关闭',
37
+ key: 'close',
38
+ type: 'primary',
39
+ eventName: 'handleClose'
40
+ }
41
+ ]
42
+ }
43
+ }
44
+ }
45
+ },
46
+ data() {
47
+ return {
48
+ innerValue: false
49
+ }
50
+ },
51
+ watch: {
52
+ value: {
53
+ handler (value) {
54
+ this.$nextTick(() => {
55
+ this.innerValue = value
56
+ })
57
+ },
58
+ immediate: true
59
+ }
60
+ },
61
+ methods: {
62
+ handleClick () {
63
+ this.$emit('on-batch-export')
64
+ }
65
+ }
66
+ }
67
+ </script>
68
+ <style lang="scss">
69
+ @import '../../theme/index';
70
+ </style>
71
+ <style lang="scss" scoped>
72
+ .ele-batch-export__content {
73
+ height: 106px;
74
+ .ele-batch-export__container {
75
+ border-width: 1px;
76
+ border-style: dashed;
77
+ height: 80px;
78
+ border-color: var(--idooel-link-06);
79
+ display: flex;
80
+ flex-direction: row;
81
+ align-items: center;
82
+ padding: 0 16px;
83
+ .ele-batch-export__icon {
84
+ font-size: 48px;
85
+ color: var(--idooel-link-06);
86
+ }
87
+ .ele-batch-export__handle {
88
+ margin-left: 16px;
89
+ .ele-batch-export__btn {
90
+ color: var(--idooel-link-06);
91
+ font-size: 16px;
92
+ cursor: pointer;
93
+ }
94
+ .ele-batch-export__btn--hint {
95
+ color: var(--idooel-link-03);
96
+ font-size: 14px;
97
+ }
98
+ }
99
+ }
100
+ .ele-batch-export__message {
101
+ color: var(--idooel-link-06);
102
+ font-size: 14px;
103
+ }
104
+ }
105
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleModalFsm from './src/index.vue'
2
+
3
+ EleModalFsm.install = Vue => Vue.component(EleModalFsm.name, EleModalFsm)
4
+
5
+ export default EleModalFsm
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <ele-modal v-on="$listeners" :value="value" :title="meta.title || title" @cancel="handleCancel" :buttonGroupMeta="buttonGroupMeta">
3
+ <slot name="alert"></slot>
4
+ <ele-timeline v-bind="meta">
5
+ <template #right="{ data: item }">
6
+ <div class="ele-modal-fsm__display">
7
+ <span>由</span>
8
+ <span class="fms-display__name">{{ item.userName || '管理员' }}</span>
9
+ <span>执行了</span>
10
+ <span class="fms-display__action">{{ item.action || '结班' }}</span>
11
+ <span>操作</span>
12
+ <span :class="['title-info', item.state == 1 && 'success', item.state == 2 && 'warning', item.state == 3 && 'error']">{{ item.stateName }}</span>
13
+ </div>
14
+ <div class="ele-modal-fsm__opinion-wrapper">
15
+ <div class="fsm-opinion__label">意见:</div>
16
+ <div class="fsm-opinion__value">{{ item.opinion }}</div>
17
+ </div>
18
+ </template>
19
+ </ele-timeline>
20
+ <template v-if="showTextSlot" #footer-text>
21
+ <ele-text v-bind="textAttrs"></ele-text>
22
+ </template>
23
+ </ele-modal>
24
+ </template>
25
+
26
+ <script>
27
+ import { CONTEXT } from '../../../utils'
28
+ import { type } from '@idooel/shared'
29
+ export default {
30
+ name: 'ele-modal-fsm',
31
+ model: {
32
+ prop: 'value',
33
+ event: 'change'
34
+ },
35
+ props: {
36
+ value: {
37
+ type: Boolean,
38
+ default: false
39
+ },
40
+ title: {
41
+ type: String,
42
+ default: '状态变更记录'
43
+ },
44
+ meta: {
45
+ type: Object,
46
+ default: () => ({})
47
+ },
48
+ buttonGroupMeta: {
49
+ type: Object,
50
+ default: () => {
51
+ return {
52
+ elements: [
53
+ {
54
+ label: '关闭',
55
+ key: 'cancel',
56
+ type: 'default',
57
+ eventName: 'cancel'
58
+ }
59
+ ]
60
+ }
61
+ }
62
+ },
63
+ contextProp: {
64
+ type: Object,
65
+ default: () => ({})
66
+ }
67
+ },
68
+ provide() {
69
+ return {
70
+ [CONTEXT]: () => {
71
+ return {
72
+ _route: this.$route.query,
73
+ _routeMeta: this.$route.meta,
74
+ ...this.contextProp
75
+ }
76
+ }
77
+ }
78
+ },
79
+ computed: {
80
+ showTextSlot () {
81
+ return !type.isEmpty(this.textAttrs)
82
+ },
83
+ textAttrs() {
84
+ const { text = {} } = this.buttonGroupMeta
85
+ return text
86
+ }
87
+ },
88
+ methods: {
89
+ handleCancel () {
90
+ this.$emit('change', false)
91
+ }
92
+ }
93
+ }
94
+ </script>
95
+ <style lang="scss">
96
+ @import '../../../theme/index';
97
+ </style>
98
+ <style lang="scss" scoped>
99
+ .ele-modal-fsm__display {
100
+ display: flex;
101
+ flex-direction: row;
102
+ font-size: 14px;
103
+ line-height: 22px;
104
+ .fms-display__name, .fms-display__action {
105
+ font-weight: bold;
106
+ color: var(--idoole-black-088);
107
+ &::before {
108
+ content: '';
109
+ margin-left: 4px;
110
+ }
111
+ &::after {
112
+ content: '';
113
+ margin-right: 4px;
114
+ }
115
+ }
116
+ .title-info {
117
+ font-size: 14px;
118
+ color: var(--idoole-black-064);
119
+ margin-left: 16px;
120
+ display: flex;
121
+ flex-direction: row;
122
+ align-items: center;
123
+ &::before {
124
+ content: '';
125
+ display: inline-block;
126
+ width: 6px;
127
+ height: 6px;
128
+ border-radius: 50%;
129
+ margin-right: 8px;
130
+ }
131
+ &.success {
132
+ &::before {
133
+ background: var(--idoole-success-06);
134
+ }
135
+ }
136
+ &.warning {
137
+ &::before {
138
+ background: var(--idoole-warning-06);
139
+ }
140
+ }
141
+ &.error {
142
+ &::before {
143
+ background: var(--idoole-error-06);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ .ele-modal-fsm__opinion-wrapper {
149
+ margin-top: 4px;
150
+ line-height: 22px;
151
+ font-size: 14px;
152
+ display: flex;
153
+ flex-direction: row;
154
+ .fsm-opinion__label {
155
+ width: 42px;
156
+ flex-shrink: 0;
157
+ color: var(--idoole-black-064);
158
+ }
159
+ .fsm-opinion__value {
160
+ color: var(--idoole-black-088);
161
+ font-weight: bold;
162
+ }
163
+ }
164
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleModalImport from './src/index.vue'
2
+
3
+ EleModalImport.install = Vue => Vue.component(EleModalImport.name, EleModalImport)
4
+
5
+ export default EleModalImport
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <ele-modal :value="innerValue" :buttonGroupMeta="buttonGroupMeta" @cancel="onCancel" @handleClose="handleClose" title="导入">
3
+ <div class="ele-modal-import__upload" v-if="isFileEmpty">
4
+ <div class="import-download__link" @click="handleClickDownloadTpl">点击此链接下载导入模板</div>
5
+ <ele-upload v-model="file" @on-success="uploadFileSuccess"></ele-upload>
6
+ </div>
7
+ <div v-else class="ele-modal-import__hint">
8
+ <div class="import-hint__content">
9
+ <div class="import-hint__left">
10
+ <ele-icon></ele-icon>
11
+ </div>
12
+ <div class="import-hint__right">
13
+ <div class="hint-right__title" @click="handleClickJump">文件上传成功,任务处理中..... 请点击此按钮跳转到“批处理管理”菜单查看任务进度</div>
14
+ <div class="hint-right__sub-title">批处理任务的准备工作会在后台运行</div>
15
+ </div>
16
+ </div>
17
+ <div class="import-footer__hint--text">
18
+ 您可以请点击上方按钮查看任务进度或关闭弹框
19
+ </div>
20
+ </div>
21
+ </ele-modal>
22
+ </template>
23
+
24
+ <script>
25
+ import { type } from '@idooel/shared'
26
+ export default {
27
+ name: 'ele-modal-import',
28
+ model: {
29
+ prop: 'value',
30
+ event: 'change'
31
+ },
32
+ props: {
33
+ value: {
34
+ type: Boolean,
35
+ default: false
36
+ }
37
+ },
38
+ data() {
39
+ return {
40
+ innerValue: false,
41
+ file: [],
42
+ buttonGroupMeta: {
43
+ elements: [
44
+ {
45
+ label: '关闭',
46
+ key: 'close',
47
+ type: 'default',
48
+ eventName: 'handleClose'
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ },
54
+ computed: {
55
+ isFileEmpty () {
56
+ return type.isEmpty(this.file)
57
+ }
58
+ },
59
+ watch: {
60
+ value: {
61
+ handler (value) {
62
+ this.innerValue = value
63
+ },
64
+ immediate: true
65
+ }
66
+ },
67
+ methods: {
68
+ emitEvent (props = {}) {
69
+ this.$emit('on-actions', { ...props })
70
+ },
71
+ onCancel () {
72
+ this.innerValue = false
73
+ this.$emit('change', false)
74
+ },
75
+ handleClickJump () {
76
+ this.emitEvent({ action: 'jump' })
77
+ },
78
+ uploadFileSuccess (props) {
79
+ this.emitEvent({ action: 'uploaded', file: props })
80
+ },
81
+ handleClickDownloadTpl () {
82
+ this.emitEvent({ action: 'download' })
83
+ },
84
+ cleanFile () {
85
+ this.file = []
86
+ },
87
+ handleClose () {
88
+ this.cleanFile()
89
+ this.innerValue = false
90
+ this.$emit('change', false)
91
+ }
92
+ }
93
+ }
94
+ </script>
95
+ <style lang="scss">
96
+ @import '../../../theme/index';
97
+ </style>
98
+ <style lang="scss" scoped>
99
+ .import-download__link {
100
+ color: var(--idooel-link-06);
101
+ font-size: 14px;
102
+ cursor: pointer;
103
+ line-height: 22px;
104
+ }
105
+ .ele-modal-import__hint {
106
+ .import-hint__content {
107
+ padding: 16px;
108
+ border-radius: 2px;
109
+ height: 82px;
110
+ border: 1px dashed var(--idooel-link-06);
111
+ background: var(--idoole-black-02);
112
+ display: flex;
113
+ flex-direction: row;
114
+ align-items: center;
115
+ .import-hint__left {
116
+ .anticon-upload {
117
+ font-size: 48px;
118
+ color: var(--idooel-link-06);
119
+ }
120
+ }
121
+ .import-hint__right {
122
+ margin-left: 16px;
123
+ .hint-right__title {
124
+ font-size: 16px;
125
+ color: var(--idooel-link-06);
126
+ cursor: pointer;
127
+ }
128
+ .hint-right__sub-title {
129
+ font-size: 14px;
130
+ color: var(--idooel-link-03);
131
+ }
132
+ }
133
+ }
134
+ .import-footer__hint--text {
135
+ font-size: 14px;
136
+ color: var(--idooel-link-06);
137
+ line-height: 22px;
138
+ }
139
+ }
140
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleModalTimeline from './src/index.vue'
2
+
3
+ EleModalTimeline.install = Vue => Vue.component(EleModalTimeline.name, EleModalTimeline)
4
+
5
+ export default EleModalTimeline
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <ele-modal v-on="$listeners" :value="value" :title="title" :buttonGroupMeta="buttonGroupMeta">
3
+ <slot name="alert"></slot>
4
+ <ele-timeline v-bind="meta"></ele-timeline>
5
+ <template v-if="showTextSlot" #footer-text>
6
+ <ele-text v-bind="textAttrs"></ele-text>
7
+ </template>
8
+ </ele-modal>
9
+ </template>
10
+
11
+ <script>
12
+ // import { CONTEXT } from '@/utils'
13
+ import { CONTEXT } from '../../../utils'
14
+ import { type } from '@idooel/shared'
15
+ export default {
16
+ name: 'ele-modal-timeline',
17
+ model: {
18
+ prop: 'value',
19
+ event: 'change'
20
+ },
21
+ props: {
22
+ value: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ title: {
27
+ type: String
28
+ },
29
+ meta: {
30
+ type: Object,
31
+ default: () => ({})
32
+ },
33
+ buttonGroupMeta: {
34
+ type: Object,
35
+ default: () => {
36
+ return {
37
+ elements: [
38
+ {
39
+ label: '关闭',
40
+ key: 'cancel',
41
+ type: 'default',
42
+ eventName: 'cancel'
43
+ }
44
+ ]
45
+ }
46
+ }
47
+ },
48
+ contextProp: {
49
+ type: Object,
50
+ default: () => ({})
51
+ }
52
+ },
53
+ provide() {
54
+ return {
55
+ [CONTEXT]: () => {
56
+ return {
57
+ _route: this.$route.query,
58
+ _routeMeta: this.$route.meta,
59
+ ...this.contextProp
60
+ }
61
+ }
62
+ }
63
+ },
64
+ computed: {
65
+ showTextSlot () {
66
+ return !type.isEmpty(this.textAttrs)
67
+ },
68
+ textAttrs() {
69
+ const { text = {} } = this.buttonGroupMeta
70
+ return text
71
+ }
72
+ }
73
+ }
74
+ </script>
75
+
76
+ <style lang="scss" scoped>
77
+
78
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleTabsSubCenter from './src/index.vue'
2
+
3
+ EleTabsSubCenter.install = Vue => Vue.component(EleTabsSubCenter.name, EleTabsSubCenter)
4
+
5
+ export default EleTabsSubCenter