@idooel/components 0.0.1 → 0.0.2-beta.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 +14006 -1874
  3. package/dist/@idooel/components.umd.js +14050 -1883
  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 +132 -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 +320 -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 +309 -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 +44 -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 +495 -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
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <div class="g-form__tabs">
3
+ <div :class="['g-form__wrapper', disabled && 'disabled']">
4
+ <div :class="['g-form__item', !disabled && (innerActiveKey == props.key) && 'actived']" @click="handleTabClick(props)" v-for="props in dataSource" :key="props.key">
5
+ <div>{{ props.title }}</div>
6
+ <div v-if="isSuffix" class="suffix">
7
+ <template v-if="props.loading">
8
+ <ele-loading style="margin-left:4px;" :loading="props.loading"></ele-loading>
9
+ </template>
10
+ <div v-else>({{ props.suffix }}人)</div>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ name: 'ele-tabs-sub-center',
20
+ props: {
21
+ activeKey: {
22
+ type: [String, Number]
23
+ },
24
+ isSuffix: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ disabled: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ dataSource: {
33
+ type: Array
34
+ }
35
+ },
36
+ data () {
37
+ return {
38
+ innerActiveKey: 1
39
+ }
40
+ },
41
+ watch: {
42
+ activeKey: {
43
+ handler (key) {
44
+ this.innerActiveKey = key
45
+ },
46
+ immediate: true
47
+ }
48
+ },
49
+ methods: {
50
+ setLoadingByKey (key, status = true) {
51
+ const target = this.dataSource.find(item => item.key == key)
52
+ this.$set(target, 'loading', status)
53
+ },
54
+ setTitleByKey (key, title) {
55
+ const target = this.dataSource.find(item => item.key == key)
56
+ this.$set(target, 'title', title)
57
+ },
58
+ setSuffixByKey (key, suffix) {
59
+ const target = this.dataSource.find(item => item.key == key)
60
+ this.$set(target, 'suffix', suffix)
61
+ },
62
+ handleTabClick (props) {
63
+ if (this.disabled) return
64
+ const { key } = props
65
+ this.innerActiveKey = key
66
+ this.$emit('on-click', props)
67
+ }
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <style lang="scss" scoped>
73
+ .g-form__tabs {
74
+ width: 100%;
75
+ background: #fff;
76
+ display: flex;
77
+ flex-direction: row;
78
+ height: 32px;
79
+ .g-form__wrapper {
80
+ display: flex;
81
+ flex-direction: row;
82
+ &.disabled {
83
+ .g-form__item {
84
+ cursor: not-allowed;
85
+ border-color: rgba(0, 0, 0, 0.16);
86
+ background: rgba(0, 0, 0, 0.04);
87
+ color: rgba(0, 0, 0, 0.24);
88
+ }
89
+ }
90
+ .g-form__item {
91
+ padding: 0px 16px;
92
+ cursor: pointer;
93
+ font-size: 14px;
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: center;
97
+ border: 1px solid rgba(0, 0, 0, 0.16);
98
+ color: rgba(0, 0, 0, 0.64);
99
+ border-right: unset;
100
+ & .suffix {
101
+ display: flex;
102
+ }
103
+ &:last-child {
104
+ border-right: 1px solid rgba(0, 0, 0, 0.16);
105
+ }
106
+ &.actived {
107
+ border-color:#409eff;
108
+ color: #409eff;
109
+ font-size: 14px;
110
+ &+.g-form__item {
111
+ border-left: 1px solid #409eff;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ </style>
@@ -1,5 +1,5 @@
1
- import EleButton from './src/index.vue'
2
-
3
- EleButton.install = Vue => Vue.component(EleButton.name, EleButton)
4
-
1
+ import EleButton from './src/index.vue'
2
+
3
+ EleButton.install = Vue => Vue.component(EleButton.name, EleButton)
4
+
5
5
  export default EleButton
@@ -1,25 +1,66 @@
1
- <template>
2
- <a-button :type="type" :icon="icon" @click="handleClick">
3
- <slot></slot>
4
- </a-button>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- name: 'ele-button',
10
- props: {
11
- type: {
12
- type: String,
13
- default: 'default'
14
- },
15
- icon: {
16
- type: String
17
- }
18
- },
19
- methods: {
20
- handleClick () {
21
- this.$emit('click')
22
- }
23
- }
24
- }
1
+ <template>
2
+ <a-dropdown v-if="mode == 'dropdown'">
3
+ <a-menu slot="overlay" @click="handleMenuClick">
4
+ <a-menu-item :key="opt.value" v-for="opt in dataSource">
5
+ {{ opt.label }}
6
+ </a-menu-item>
7
+ </a-menu>
8
+ <a-button :type="type">
9
+ <slot></slot>
10
+ <a-icon :type="icon" />
11
+ </a-button>
12
+ </a-dropdown>
13
+ <a-button :type="type" :icon="icon" @click="handleClick" v-else>
14
+ <slot></slot>
15
+ </a-button>
16
+ </template>
17
+
18
+ <script>
19
+ import { CONTEXT } from '../../utils'
20
+ export default {
21
+ name: 'ele-button',
22
+ props: {
23
+ record: {
24
+ type: Object
25
+ },
26
+ eventName: {
27
+ type: String
28
+ },
29
+ mode: {
30
+ type: String
31
+ },
32
+ dataSource: {
33
+ type: Array,
34
+ default: () => []
35
+ },
36
+ type: {
37
+ type: String,
38
+ default: 'default'
39
+ },
40
+ icon: {
41
+ type: String
42
+ }
43
+ },
44
+ inject: {
45
+ [CONTEXT]: {
46
+ default: () => (() => ({}))
47
+ }
48
+ },
49
+ computed: {
50
+ callContext () {
51
+ return this[CONTEXT].call(this)
52
+ }
53
+ },
54
+ methods: {
55
+ handleMenuClick (props) {
56
+ const { key } = props
57
+ const currentClickTarget = this.dataSource.find(item => item.value === key)
58
+ const { eventName } = currentClickTarget
59
+ eventName && this.$emit(eventName, { ...currentClickTarget })
60
+ },
61
+ handleClick () {
62
+ this.$emit(this.eventName || 'click', { ...this.record, ...this.callContext })
63
+ }
64
+ }
65
+ }
25
66
  </script>
@@ -0,0 +1,5 @@
1
+ import EleCheckbox from './src/index.vue'
2
+
3
+ EleCheckbox.install = Vue => Vue.component(EleCheckbox.name, EleCheckbox)
4
+
5
+ export default EleCheckbox
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <a-checkbox-group
3
+ :value="value"
4
+ :options="dataSource"
5
+ :disabled="disabled"
6
+ @change="onChange">
7
+ </a-checkbox-group>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: 'ele-checkbox',
13
+ model: {
14
+ prop: 'value',
15
+ event: 'change'
16
+ },
17
+ props: {
18
+ value: {
19
+ type: Array
20
+ },
21
+ dataSource: {
22
+ type: Array,
23
+ default: () => []
24
+ },
25
+ disabled: {
26
+ type: Boolean,
27
+ default: false
28
+ }
29
+ },
30
+ methods: {
31
+ onChange (value) {
32
+ this.$emit('change', value)
33
+ this.$emit('input', value)
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+ <style lang="scss" scoped>
39
+ .ant-checkbox-group {
40
+ text-align: left;
41
+ line-height: 32px;
42
+ }
43
+ .has-error {
44
+ .ant-checkbox-group {
45
+ ::v-deep .ant-checkbox-wrapper {
46
+ color: var(--idooel-form-border-err-color);
47
+ }
48
+ ::v-deep .ant-checkbox-inner {
49
+ border-color: var(--idooel-form-border-err-color);
50
+ }
51
+ }
52
+ }
53
+ </style>
@@ -1,5 +1,5 @@
1
- import EleButtonGroup from './src/index.vue'
2
-
3
- EleButtonGroup.install = Vue => Vue.component(EleButtonGroup.name, EleButtonGroup)
4
-
1
+ import EleButtonGroup from './src/index.vue'
2
+
3
+ EleButtonGroup.install = Vue => Vue.component(EleButtonGroup.name, EleButtonGroup)
4
+
5
5
  export default EleButtonGroup
@@ -1,47 +1,152 @@
1
- <template>
2
- <div class="button-group__wrapper">
3
- <ele-button
4
- v-for="(item, idx) in dataSource"
5
- :type="item.type"
6
- :icon="item.icon"
7
- @click="handleClick(item)"
8
- :key="idx">
9
- {{ item.label }}
10
- </ele-button>
11
- </div>
12
- </template>
13
-
14
- <script>
15
- import EleButton from '../../../button/src/index.vue'
16
- export default {
17
- name: 'ele-button-group',
18
- components: {
19
- EleButton
20
- },
21
- props: {
22
- dataSource: {
23
- type: Array,
24
- default: () => []
25
- }
26
- },
27
- methods: {
28
- handleClick (props) {
29
- this.$emit('click', props)
30
- }
31
- }
32
- }
33
- </script>
34
-
35
- <style lang="scss" scoped>
36
- .button-group__wrapper {
37
- display: flex;
38
- padding-left: 16px;
39
- padding-right: 16px;
40
- .ant-btn {
41
- margin-left: 8px;
42
- &:first-child {
43
- margin-left: 0;
44
- }
45
- }
46
- }
1
+ <template>
2
+ <div class="button-group__wrapper">
3
+ <template v-for="(item, idx) in innerDatasource" >
4
+ <ele-button
5
+ v-if="isBool(item._show) ? item._show : true"
6
+ :type="item.type"
7
+ :icon="item.icon"
8
+ :mode="item.mode"
9
+ :data-source="item.optionList"
10
+ :event-name="item.eventName"
11
+ :record="item"
12
+ v-on="overrideButtonEvent"
13
+ :key="idx">
14
+ {{ item.label }}
15
+ </ele-button>
16
+ </template>
17
+ <ele-modal-confirm v-model="modalConfirmValue" :contextProp="currentContext" v-on="overrideModalConfirmEvent" v-bind="modalConfirmMeta"></ele-modal-confirm>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { type, util } from '@idooel/shared'
23
+ import { parse } from '@idooel/expression'
24
+ import { CONTEXT, AREA_NAMES } from '../../../utils'
25
+ export default {
26
+ name: 'ele-button-group',
27
+ props: {
28
+ dataSource: {
29
+ type: Array,
30
+ default: () => []
31
+ }
32
+ },
33
+ data() {
34
+ return {
35
+ innerDatasource: [],
36
+ modalConfirmValue: false,
37
+ modalConfirmMeta: {}
38
+ }
39
+ },
40
+ inject: {
41
+ [CONTEXT]: {
42
+ default: () => (() => ({}))
43
+ }
44
+ },
45
+ computed: {
46
+ callContext () {
47
+ return this[CONTEXT].call(this)
48
+ },
49
+ currentExposed () {
50
+ const exposed = Object.assign({}, this.callContext.exposed || {}, { [AREA_NAMES.BUTTON_GROUP]: { setModalConfirm: this.setModalConfirm } })
51
+ return exposed
52
+ },
53
+ contextData () {
54
+ return {
55
+ ...this.currentContext,
56
+ exposed: this.currentExposed
57
+ }
58
+ },
59
+ overrideButtonEvent () {
60
+ const events = this.dataSource.reduce((ret, item) => {
61
+ const { mode, optionList = [] } = item
62
+ if (mode == 'dropdown') {
63
+ optionList.forEach(props => {
64
+ ret[props.eventName || 'click'] = (e) => {
65
+ const { modalConfirm } = props
66
+ modalConfirm && (this.modalConfirmMeta = modalConfirm)
67
+ if (this.preventModalConfirm(modalConfirm)) {
68
+ this.$emit(props.eventName || 'click', { ...e, ...props, record: props, ...this.contextData })
69
+ return
70
+ }
71
+ modalConfirm && (this.modalConfirmValue = true)
72
+ this.$emit(props.eventName || 'click', { ...e, ...props, record: props, ...this.contextData })
73
+ }
74
+ })
75
+ }
76
+ ret[item.eventName || 'click'] = (e) => {
77
+ const { modalConfirm } = item
78
+ modalConfirm && (this.modalConfirmMeta = modalConfirm)
79
+ if (this.preventModalConfirm(modalConfirm)) {
80
+ this.$emit(item.eventName || 'click', { ...e, record: item, ...this.contextData })
81
+ return
82
+ }
83
+ modalConfirm && (this.modalConfirmValue = true)
84
+ this.$emit(item.eventName || 'click', { ...e, record: item, ...this.contextData })
85
+ }
86
+ return ret
87
+ }, {})
88
+ return {
89
+ ...this.$listeners,
90
+ ...events,
91
+ ...this.contextData
92
+ }
93
+ },
94
+ overrideModalConfirmEvent () {
95
+ return {
96
+ ...this.$listeners
97
+ }
98
+ },
99
+ currentContext () {
100
+ return {
101
+ _route: this.$route.query,
102
+ _routeMeta: this.$route.meta,
103
+ ...this.callContext
104
+ }
105
+ }
106
+ },
107
+ watch: {
108
+ dataSource: {
109
+ handler (dataSource) {
110
+ this.innerDatasource = dataSource.map(item => {
111
+ return {
112
+ ...item,
113
+ _show: this.executeExpression(item.show)
114
+ }
115
+ })
116
+ },
117
+ immediate: true
118
+ }
119
+ },
120
+ methods: {
121
+ setModalConfirm (arg = false) {
122
+ this.modalConfirmValue = arg
123
+ },
124
+ preventModalConfirm (modalConfirm = {}) {
125
+ const { show } = modalConfirm
126
+ return !this.executeExpression(show)
127
+ },
128
+ executeExpression (expression) {
129
+ if (type.isBool(expression)) return expression
130
+ if (type.isEmpty(expression)) return true
131
+ return parse(expression, { ...this.currentContext, ...this.contextData })
132
+ },
133
+ isBool (arg) {
134
+ return type.isBool(arg)
135
+ }
136
+ }
137
+ }
138
+ </script>
139
+
140
+ <style lang="scss" scoped>
141
+ .button-group__wrapper {
142
+ display: flex;
143
+ padding-left: 16px;
144
+ padding-right: 16px;
145
+ .ant-btn {
146
+ margin-left: 8px;
147
+ &:first-child {
148
+ margin-left: 0;
149
+ }
150
+ }
151
+ }
47
152
  </style>
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <div>
3
+ attachment
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'ele-form-attachment'
10
+ }
11
+ </script>
12
+
13
+ <style lang="scss" scoped>
14
+
15
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleFormImgCrop from './src/index.vue'
2
+
3
+ EleFormImgCrop.install = Vue => Vue.component(EleFormImgCrop.name, EleFormImgCrop)
4
+
5
+ export default EleFormImgCrop
@@ -0,0 +1,132 @@
1
+ <template>
2
+ <div class="ele__img--form">
3
+ <div class="form__img--wrapper"
4
+ @click="handleClick"
5
+ :style="style">
6
+ <div class="form__img--preivew" v-if="value">
7
+ <img style="width:100%;height:100%" :src="imageUrl" alt="" srcset="">
8
+ </div>
9
+ <div class="form__icon--wrapper">
10
+ <ele-icon class="icon--oper" type="icon-camera"></ele-icon>
11
+ <span class="icon__text--oper">{{ operText }}</span>
12
+ </div>
13
+ </div>
14
+ <ele-modal-img-crop
15
+ v-model="showModalImgCropValue"
16
+ :uploadFileConfig="uploadFileConfig"
17
+ @change="onChangeModalCropImg"
18
+ :cropperConfig="cropperConfig"
19
+ :imageId="value"
20
+ :title="modalTitle">
21
+ </ele-modal-img-crop>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ name: 'ele-form-img-crop',
28
+ model: {
29
+ prop: 'value',
30
+ event: 'change'
31
+ },
32
+ props: {
33
+ value: {
34
+ type: [String, Number]
35
+ },
36
+ modalTitle: {
37
+ type: String
38
+ },
39
+ operText: {
40
+ type: String,
41
+ default: '更改头像'
42
+ },
43
+ width: {
44
+ type: [Number, String],
45
+ default: 200
46
+ },
47
+ height: {
48
+ type: [Number, String],
49
+ default: 200
50
+ },
51
+ cropperConfig: {
52
+ type: Object,
53
+ default: () => {
54
+ return {
55
+ aspectRatio: 16 / 9
56
+ }
57
+ }
58
+ },
59
+ uploadFileConfig: {
60
+ type: Object,
61
+ default: () => {
62
+ return {
63
+ size: 10,
64
+ accept: '*',
65
+ byteConversion: 1024 * 1024
66
+ }
67
+ }
68
+ }
69
+ },
70
+ data() {
71
+ return {
72
+ showModalImgCropValue: false
73
+ }
74
+ },
75
+ computed: {
76
+ style () {
77
+ return {
78
+ width: this.width + 'px',
79
+ height: this.height + 'px'
80
+ }
81
+ },
82
+ imageUrl () {
83
+ return `/api-file/workbench/file/stream/${this.value}?origin=true`
84
+ }
85
+ },
86
+ methods: {
87
+ handleClick () {
88
+ this.showModalImgCropValue = true
89
+ },
90
+ onChangeModalCropImg (fileId) {
91
+ console.log('fileId', fileId)
92
+ this.$emit('change', fileId)
93
+ }
94
+ }
95
+ }
96
+ </script>
97
+
98
+ <style lang="scss" scoped>
99
+ .ele__img--form {
100
+ .form__img--wrapper {
101
+ cursor: pointer;
102
+ border-radius: 4px;
103
+ background: #000;
104
+ opacity: 0.3;
105
+ display: flex;
106
+ flex-direction: row;
107
+ align-items: center;
108
+ justify-content: center;
109
+ position: relative;
110
+ .form__img--preivew {
111
+ position: absolute;
112
+ color: red;
113
+ width: 100%;
114
+ height: 100%;
115
+ border-radius: 4px;
116
+ }
117
+ .form__icon--wrapper {
118
+ position: absolute;
119
+ display: flex;
120
+ flex-direction: column;
121
+ align-items: center;
122
+ color: #fff;
123
+ .icon--oper {
124
+ font-size: 40px;
125
+ }
126
+ .icon__text--oper {
127
+ font-size: 16px;
128
+ }
129
+ }
130
+ }
131
+ }
132
+ </style>
@@ -0,0 +1,5 @@
1
+ import EleModalConfirm from './src/index.vue'
2
+
3
+ EleModalConfirm.install = Vue => Vue.component(EleModalConfirm.name, EleModalConfirm)
4
+
5
+ export default EleModalConfirm