@bdsoft/element 1.1.0

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 (238) hide show
  1. package/README.md +90 -0
  2. package/global/index.ts +6 -0
  3. package/global/register-properties.ts +10 -0
  4. package/index.html +13 -0
  5. package/index.js +84 -0
  6. package/package-form/core/components/formCreate.js +274 -0
  7. package/package-form/core/components/fragment.js +12 -0
  8. package/package-form/core/factory/context.js +257 -0
  9. package/package-form/core/factory/creator.js +63 -0
  10. package/package-form/core/factory/maker.js +17 -0
  11. package/package-form/core/factory/manager.js +79 -0
  12. package/package-form/core/factory/node.js +85 -0
  13. package/package-form/core/factory/parser.js +28 -0
  14. package/package-form/core/frame/api.js +599 -0
  15. package/package-form/core/frame/attrs.js +12 -0
  16. package/package-form/core/frame/dataDriver.js +76 -0
  17. package/package-form/core/frame/fetch.js +119 -0
  18. package/package-form/core/frame/formCreate.js +274 -0
  19. package/package-form/core/frame/index.js +760 -0
  20. package/package-form/core/frame/provider.js +288 -0
  21. package/package-form/core/frame/util.js +274 -0
  22. package/package-form/core/handler/context.js +380 -0
  23. package/package-form/core/handler/effect.js +122 -0
  24. package/package-form/core/handler/index.js +111 -0
  25. package/package-form/core/handler/inject.js +145 -0
  26. package/package-form/core/handler/input.js +197 -0
  27. package/package-form/core/handler/lifecycle.js +43 -0
  28. package/package-form/core/handler/loader.js +373 -0
  29. package/package-form/core/handler/page.js +46 -0
  30. package/package-form/core/handler/render.js +29 -0
  31. package/package-form/core/index.js +12 -0
  32. package/package-form/core/package.json +15 -0
  33. package/package-form/core/parser/html.js +17 -0
  34. package/package-form/core/render/cache.js +47 -0
  35. package/package-form/core/render/index.js +31 -0
  36. package/package-form/core/render/render.js +393 -0
  37. package/package-form/element-form/components/checkbox/package.json +17 -0
  38. package/package-form/element-form/components/checkbox/src/component.jsx +110 -0
  39. package/package-form/element-form/components/checkbox/src/index.js +3 -0
  40. package/package-form/element-form/components/frame/package.json +17 -0
  41. package/package-form/element-form/components/frame/src/IconCircleClose.vue +14 -0
  42. package/package-form/element-form/components/frame/src/IconDelete.vue +12 -0
  43. package/package-form/element-form/components/frame/src/IconDocument.vue +12 -0
  44. package/package-form/element-form/components/frame/src/IconFolderOpened.vue +12 -0
  45. package/package-form/element-form/components/frame/src/IconView.vue +12 -0
  46. package/package-form/element-form/components/frame/src/component.jsx +349 -0
  47. package/package-form/element-form/components/frame/src/index.js +3 -0
  48. package/package-form/element-form/components/frame/src/style.css +66 -0
  49. package/package-form/element-form/components/group/package.json +17 -0
  50. package/package-form/element-form/components/group/src/component.jsx +314 -0
  51. package/package-form/element-form/components/group/src/index.js +3 -0
  52. package/package-form/element-form/components/group/src/style.css +125 -0
  53. package/package-form/element-form/components/index.js +22 -0
  54. package/package-form/element-form/components/radio/package.json +17 -0
  55. package/package-form/element-form/components/radio/src/component.jsx +101 -0
  56. package/package-form/element-form/components/radio/src/index.js +3 -0
  57. package/package-form/element-form/components/select/package.json +17 -0
  58. package/package-form/element-form/components/select/src/component.jsx +52 -0
  59. package/package-form/element-form/components/select/src/index.js +3 -0
  60. package/package-form/element-form/components/subform/package.json +14 -0
  61. package/package-form/element-form/components/subform/src/component.jsx +76 -0
  62. package/package-form/element-form/components/subform/src/index.js +3 -0
  63. package/package-form/element-form/components/tree/package.json +17 -0
  64. package/package-form/element-form/components/tree/src/component.jsx +62 -0
  65. package/package-form/element-form/components/tree/src/index.js +3 -0
  66. package/package-form/element-form/components/upload/package.json +17 -0
  67. package/package-form/element-form/components/upload/src/IconUpload.vue +12 -0
  68. package/package-form/element-form/components/upload/src/component.jsx +129 -0
  69. package/package-form/element-form/components/upload/src/index.js +3 -0
  70. package/package-form/element-form/components/upload/src/style.css +11 -0
  71. package/package-form/element-form/index.js +8 -0
  72. package/package-form/element-form/package.json +16 -0
  73. package/package-form/element-form/src/components/icon/IconWarning.vue +12 -0
  74. package/package-form/element-form/src/components/index.js +22 -0
  75. package/package-form/element-form/src/core/alias.js +34 -0
  76. package/package-form/element-form/src/core/api.js +208 -0
  77. package/package-form/element-form/src/core/config.js +62 -0
  78. package/package-form/element-form/src/core/index.js +60 -0
  79. package/package-form/element-form/src/core/maker.js +76 -0
  80. package/package-form/element-form/src/core/manager.js +315 -0
  81. package/package-form/element-form/src/core/provider.js +79 -0
  82. package/package-form/element-form/src/parsers/datePicker.js +31 -0
  83. package/package-form/element-form/src/parsers/hidden.js +12 -0
  84. package/package-form/element-form/src/parsers/index.js +17 -0
  85. package/package-form/element-form/src/parsers/input.js +21 -0
  86. package/package-form/element-form/src/parsers/row.js +10 -0
  87. package/package-form/element-form/src/parsers/select.js +15 -0
  88. package/package-form/element-form/src/parsers/slider.js +21 -0
  89. package/package-form/element-form/src/parsers/timePicker.js +17 -0
  90. package/package-form/element-form/src/style/index.css +52 -0
  91. package/package.json +17 -0
  92. package/src/App.vue +28 -0
  93. package/src/assets/css/element.scss +179 -0
  94. package/src/assets/css/layout.scss +215 -0
  95. package/src/assets/css/tailwind.scss +67 -0
  96. package/src/assets/images/banner.gif +0 -0
  97. package/src/assets/images/banner.png +0 -0
  98. package/src/assets/images/bg1.svg +22 -0
  99. package/src/assets/images/bg2.png +0 -0
  100. package/src/assets/images/ff.png +0 -0
  101. package/src/assets/images/home-file1.png +0 -0
  102. package/src/assets/images/ky.png +0 -0
  103. package/src/assets/images/menu/add.png +0 -0
  104. package/src/assets/images/menu/del.png +0 -0
  105. package/src/assets/images/menu/down.png +0 -0
  106. package/src/assets/images/menu/dr.png +0 -0
  107. package/src/assets/images/menu/edit.png +0 -0
  108. package/src/assets/images/menu/kx.png +0 -0
  109. package/src/assets/images/menu/mb.png +0 -0
  110. package/src/assets/images/menu/pz.png +0 -0
  111. package/src/assets/images/menu/save.png +0 -0
  112. package/src/assets/images/menu/sj.png +0 -0
  113. package/src/assets/images/menu/sjk.png +0 -0
  114. package/src/assets/images/menu/up.png +0 -0
  115. package/src/assets/images/po-i.png +0 -0
  116. package/src/assets/images/po1-i1.png +0 -0
  117. package/src/assets/images/po1-i2.png +0 -0
  118. package/src/assets/images/po1-i3.png +0 -0
  119. package/src/assets/images/po1-i4.png +0 -0
  120. package/src/assets/images/po1-i5.png +0 -0
  121. package/src/assets/images/po1-i6.png +0 -0
  122. package/src/assets/images/po1-i7.png +0 -0
  123. package/src/assets/images/po1-i8.png +0 -0
  124. package/src/assets/images/po2-i1.png +0 -0
  125. package/src/assets/images/po2-i2.png +0 -0
  126. package/src/assets/images/po3-i1.png +0 -0
  127. package/src/assets/images/po4-i1.png +0 -0
  128. package/src/assets/images/po5-i1.png +0 -0
  129. package/src/assets/images/po6-i1.png +0 -0
  130. package/src/assets/images/po6-i2.png +0 -0
  131. package/src/assets/images/po7-i1.png +0 -0
  132. package/src/assets/images/tj1.png +0 -0
  133. package/src/assets/images/tj2.png +0 -0
  134. package/src/assets/images/tj3.png +0 -0
  135. package/src/components/3dcloudwords/index.js +346 -0
  136. package/src/components/3dcloudwords/index.vue +99 -0
  137. package/src/components/3dcloudwords/readme.md +66 -0
  138. package/src/components/badge/index.js +167 -0
  139. package/src/components/badge/index.scss +166 -0
  140. package/src/components/badge/index.vue +98 -0
  141. package/src/components/badge/readme.md +18 -0
  142. package/src/components/basic/Finish.vue +107 -0
  143. package/src/components/basic/button.vue +19 -0
  144. package/src/components/basic/readme.md +7 -0
  145. package/src/components/button/index.vue +48 -0
  146. package/src/components/button/readme.md +62 -0
  147. package/src/components/carousel/index.vue +104 -0
  148. package/src/components/carousel/readme.md +12 -0
  149. package/src/components/chartconfig/index.vue +141 -0
  150. package/src/components/chartconfig/readme.md +25 -0
  151. package/src/components/contextMenu/hookContxtMenu.js +41 -0
  152. package/src/components/contextMenu/index.vue +245 -0
  153. package/src/components/contextMenu/readme.md +55 -0
  154. package/src/components/contextMenu/useElementBounding.js +40 -0
  155. package/src/components/countup/countUp.js +196 -0
  156. package/src/components/countup/index.vue +112 -0
  157. package/src/components/countup/readme.md +9 -0
  158. package/src/components/empty/assets/build.png +0 -0
  159. package/src/components/empty/assets/emptybg.gif +0 -0
  160. package/src/components/empty/assets/emptybg.png +0 -0
  161. package/src/components/empty/assets/emptybg2.jpg +0 -0
  162. package/src/components/empty/assets/emptybg3.jpg +0 -0
  163. package/src/components/empty/assets/wuxiao.png +0 -0
  164. package/src/components/empty/assets/wuxiao.webp +0 -0
  165. package/src/components/empty/building.vue +117 -0
  166. package/src/components/empty/empty.vue +120 -0
  167. package/src/components/empty/index.js +12 -0
  168. package/src/components/empty/invalid.vue +56 -0
  169. package/src/components/error/Error.vue +79 -0
  170. package/src/components/error/readme.md +20 -0
  171. package/src/components/form/Form.vue +84 -0
  172. package/src/components/form/FormItem.vue +143 -0
  173. package/src/components/form/data.js +52 -0
  174. package/src/components/form/readme.md +69 -0
  175. package/src/components/layout/banner.vue +412 -0
  176. package/src/components/layout/bar.vue +43 -0
  177. package/src/components/layout/layout1.vue +60 -0
  178. package/src/components/layout/layout2.vue +134 -0
  179. package/src/components/layout/layout3.vue +107 -0
  180. package/src/components/layout/layout4.vue +66 -0
  181. package/src/components/layout/nav.vue +333 -0
  182. package/src/components/layout/readme.md +61 -0
  183. package/src/components/loading/index.vue +122 -0
  184. package/src/components/loading/readme.md +6 -0
  185. package/src/components/notice/NoticeList.vue +198 -0
  186. package/src/components/notice/NoticeListPaging.vue +281 -0
  187. package/src/components/notice/NoticeView.vue +92 -0
  188. package/src/components/notice/readme.md +1 -0
  189. package/src/components/pagination/index.vue +100 -0
  190. package/src/components/pagination/readme.md +19 -0
  191. package/src/components/pagination/scroll-to.js +51 -0
  192. package/src/components/progress/bar.vue +72 -0
  193. package/src/components/progress/progress.vue +58 -0
  194. package/src/components/screenfull/index.js +3 -0
  195. package/src/components/screenfull/index.vue +65 -0
  196. package/src/components/screenfull/package.json +15 -0
  197. package/src/components/screenfull/readme.md +6 -0
  198. package/src/components/statisticalCount/index.vue +80 -0
  199. package/src/components/statisticalCount/readme.md +21 -0
  200. package/src/components/username/index.vue +79 -0
  201. package/src/components/username/readme.md +22 -0
  202. package/src/components/username//346/225/210/346/236/234/345/233/276.png +0 -0
  203. package/src/index.js +82 -0
  204. package/src/utils/index.js +32 -0
  205. package/src/xm_components/HeadSearch/hook/hookSearch.js +96 -0
  206. package/src/xm_components/HeadSearch/index.vue +206 -0
  207. package/src/xm_components/HeadSearch/readme.md +12 -0
  208. package/src/xm_components/HeadSearch//346/220/234/347/264/242/345/210/227/350/241/250.png +0 -0
  209. package/src/xm_components/Milestone/index.vue +212 -0
  210. package/src/xm_components/Milestone/readme.md +15 -0
  211. package/src/xm_components/readme.md +1 -0
  212. package/utils/coms/load.jsx +10 -0
  213. package/utils/func.js +32 -0
  214. package/utils/hookDialog.js +38 -0
  215. package/utils/hookPage.js +49 -0
  216. package/utils/index.js +5 -0
  217. package/utils/lib/console.js +39 -0
  218. package/utils/lib/debounce.js +19 -0
  219. package/utils/lib/deepextend.js +51 -0
  220. package/utils/lib/deepset.js +14 -0
  221. package/utils/lib/extend.js +28 -0
  222. package/utils/lib/index.js +13 -0
  223. package/utils/lib/json.js +90 -0
  224. package/utils/lib/mergeprops.js +62 -0
  225. package/utils/lib/mitt.js +43 -0
  226. package/utils/lib/modify.js +8 -0
  227. package/utils/lib/slot.js +19 -0
  228. package/utils/lib/toarray.js +5 -0
  229. package/utils/lib/tocase.js +11 -0
  230. package/utils/lib/todate.js +10 -0
  231. package/utils/lib/toline.js +10 -0
  232. package/utils/lib/tostring.js +7 -0
  233. package/utils/lib/type.js +45 -0
  234. package/utils/lib/unique.js +6 -0
  235. package/utils/message.js +166 -0
  236. package/utils/package.json +16 -0
  237. package/utils/type.js +45 -0
  238. package/vite.config.js +51 -0
@@ -0,0 +1,349 @@
1
+ import toArray from '@bdsoft-element/utils/lib/toarray';
2
+ import Mitt from '@bdsoft-element/utils/lib/mitt';
3
+ import {defineComponent, nextTick, resolveComponent} from 'vue';
4
+ import './style.css';
5
+ import IconCircleClose from './IconCircleClose.vue';
6
+ import IconDocument from './IconDocument.vue';
7
+ import IconDelete from './IconDelete.vue';
8
+ import IconView from './IconView.vue';
9
+ import IconFolderOpened from './IconFolderOpened.vue';
10
+
11
+ const NAME = 'fcFrame';
12
+
13
+ export default defineComponent({
14
+ name: NAME,
15
+ props: {
16
+ type: {
17
+ type: String,
18
+ default: 'input'
19
+ },
20
+ field: String,
21
+ helper: {
22
+ type: Boolean,
23
+ default: true
24
+ },
25
+ disabled: {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ src: {
30
+ type: String,
31
+ required: true
32
+ },
33
+ icon: {
34
+ type: String,
35
+ default: 'IconFolderOpened'
36
+ },
37
+ width: {
38
+ type: String,
39
+ default: '500px'
40
+ },
41
+ height: {
42
+ type: String,
43
+ default: '370px'
44
+ },
45
+ maxLength: {
46
+ type: Number,
47
+ default: 0
48
+ },
49
+ okBtnText: {
50
+ type: String,
51
+ default: ''
52
+ },
53
+ closeBtnText: {
54
+ type: String,
55
+ default: ''
56
+ },
57
+ modalTitle: String,
58
+ handleIcon: {
59
+ type: [String, Boolean],
60
+ default: undefined,
61
+ },
62
+ title: String,
63
+ allowRemove: {
64
+ type: Boolean,
65
+ default: true
66
+ },
67
+ onOpen: {
68
+ type: Function,
69
+ default: () => {
70
+ }
71
+ },
72
+ onOk: {
73
+ type: Function,
74
+ default: () => {
75
+ }
76
+ },
77
+ onCancel: {
78
+ type: Function,
79
+ default: () => {
80
+ }
81
+ },
82
+ onLoad: {
83
+ type: Function,
84
+ default: () => {
85
+ }
86
+ },
87
+ onBeforeRemove: {
88
+ type: Function,
89
+ default: () => {
90
+ }
91
+ },
92
+ onRemove: {
93
+ type: Function,
94
+ default: () => {
95
+ }
96
+ },
97
+ onHandle: Function,
98
+ modal: {
99
+ type: Object,
100
+ default: () => ({})
101
+ },
102
+ srcKey: [String, Number],
103
+ modelValue: [Array, String, Number, Object],
104
+ previewMask: undefined,
105
+ footer: {
106
+ type: Boolean,
107
+ default: true
108
+ },
109
+ reload: {
110
+ type: Boolean,
111
+ default: true
112
+ },
113
+ closeBtn: {
114
+ type: Boolean,
115
+ default: true
116
+ },
117
+ okBtn: {
118
+ type: Boolean,
119
+ default: true
120
+ },
121
+ formCreateInject: Object,
122
+ },
123
+ emits: ['update:modelValue', 'change'],
124
+ components: {
125
+ IconFolderOpened,
126
+ IconView,
127
+ },
128
+ data() {
129
+ return {
130
+ fileList: toArray(this.modelValue),
131
+ previewVisible: false,
132
+ frameVisible: false,
133
+ previewImage: '',
134
+ bus: new Mitt()
135
+ }
136
+ },
137
+ watch: {
138
+ modelValue(n) {
139
+ this.fileList = toArray(n);
140
+ }
141
+ },
142
+ methods: {
143
+ close() {
144
+ this.closeModel(true);
145
+ },
146
+ closeModel(close) {
147
+ this.bus.$emit(close ? '$close' : '$ok');
148
+ if (this.reload) {
149
+ this.bus.$off('$ok');
150
+ this.bus.$off('$close');
151
+ }
152
+ this.frameVisible = false;
153
+ },
154
+ handleCancel() {
155
+ this.previewVisible = false;
156
+ },
157
+
158
+ showModel() {
159
+ if (this.disabled || false === this.onOpen()) {
160
+ return;
161
+ }
162
+ this.frameVisible = true;
163
+ },
164
+ input() {
165
+ const n = this.fileList;
166
+ const val = this.maxLength === 1 ? (n[0] || '') : n;
167
+ this.$emit('update:modelValue', val);
168
+ this.$emit('change', val);
169
+ },
170
+ makeInput() {
171
+ return <ElInput {...{
172
+ type: 'text',
173
+ modelValue: (this.fileList.map(v => this.getSrc(v))).toString(),
174
+ readonly: true
175
+ }} key={1} v-slots={{
176
+ append: () => <ElButton icon={resolveComponent(this.icon)} onClick={() => this.showModel()}/>,
177
+ suffix: () => this.fileList.length && !this.disabled ?
178
+ <ElIcon class="el-input__icon _fc-upload-icon" onClick={() => {
179
+ this.fileList = [];
180
+ this.input();
181
+ }}>
182
+ <IconCircleClose/>
183
+ </ElIcon> : null
184
+ }}/>
185
+ },
186
+ makeGroup(children) {
187
+ if (!this.maxLength || this.fileList.length < this.maxLength) {
188
+ children.push(this.makeBtn());
189
+ }
190
+ return <div key={2}>{children}</div>
191
+ },
192
+
193
+ makeItem(index, children) {
194
+ return <div class="_fc-files" key={'3' + index}>{children}</div>;
195
+ },
196
+ valid(f) {
197
+ const field = this.formCreateInject.field || this.field;
198
+ if (field && f !== field) {
199
+ throw new Error('[frame]无效的字段值');
200
+ }
201
+ },
202
+ makeIcons(val, index) {
203
+ if (this.handleIcon !== false || this.allowRemove === true) {
204
+ const icons = [];
205
+ if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon)) {
206
+ icons.push(this.makeHandleIcon(val, index));
207
+ }
208
+ if (this.allowRemove) {
209
+ icons.push(this.makeRemoveIcon(val, index));
210
+ }
211
+ return <div class="_fc-upload-cover" key={4}>{icons}</div>
212
+ }
213
+ },
214
+ makeHandleIcon(val, index) {
215
+ const Type = resolveComponent((this.handleIcon === true || this.handleIcon === undefined) ? 'icon-view' : this.handleIcon);
216
+ return <ElIcon onClick={() => this.handleClick(val)} key={'5' + index}><Type/></ElIcon>
217
+ },
218
+
219
+ makeRemoveIcon(val, index) {
220
+ return <ElIcon onClick={() => this.handleRemove(val)} key={'6' + index}>
221
+ <IconDelete/>
222
+ </ElIcon>
223
+ },
224
+
225
+ makeFiles() {
226
+ return this.makeGroup(this.fileList.map((src, index) => {
227
+ return this.makeItem(index, [<ElIcon onClick={() => this.handleClick(src)}>
228
+ <IconDocument/>
229
+ </ElIcon>, this.makeIcons(src, index)])
230
+ }))
231
+ },
232
+ makeImages() {
233
+ return this.makeGroup(this.fileList.map((src, index) => {
234
+ return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])
235
+ }))
236
+ },
237
+ makeBtn() {
238
+ const Type = resolveComponent(this.icon);
239
+ return <div class="_fc-upload-btn" onClick={() => this.showModel()} key={7}>
240
+ <ElIcon><Type/></ElIcon>
241
+ </div>
242
+ },
243
+ handleClick(src) {
244
+ if (this.onHandle) {
245
+ return this.onHandle(src);
246
+ } else {
247
+ this.previewImage = this.getSrc(src);
248
+ this.previewVisible = true;
249
+ }
250
+ },
251
+ handleRemove(src) {
252
+ if (this.disabled) {
253
+ return;
254
+ }
255
+ if (false !== this.onBeforeRemove(src)) {
256
+ this.fileList.splice(this.fileList.indexOf(src), 1);
257
+ this.input();
258
+ this.onRemove(src);
259
+ }
260
+ },
261
+ getSrc(src) {
262
+ return !this.srcKey ? src : src[this.srcKey];
263
+ },
264
+ frameLoad(iframe) {
265
+ this.onLoad(iframe);
266
+ try {
267
+ if (this.helper === true) {
268
+ iframe['form_create_helper'] = {
269
+ api: this.formCreateInject.api,
270
+ close: (field) => {
271
+ this.valid(field);
272
+ this.closeModel();
273
+ },
274
+ set: (field, value) => {
275
+ this.valid(field);
276
+ !this.disabled && this.$emit('update:modelValue', value);
277
+ },
278
+ get: (field) => {
279
+ this.valid(field);
280
+ return this.modelValue;
281
+ },
282
+ onOk: fn => this.bus.$on('$ok', fn),
283
+ onClose: fn => this.bus.$on('$close', fn)
284
+ };
285
+
286
+ }
287
+ } catch (e) {
288
+ console.error(e);
289
+ }
290
+ },
291
+ makeFooter() {
292
+ const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;
293
+
294
+ if (!footer) {
295
+ return;
296
+ }
297
+ return <div>
298
+ {closeBtn ? <ElButton
299
+ onClick={() => (this.onCancel() !== false && (this.frameVisible = false))}>{closeBtnText || this.formCreateInject.t('close') || '关闭'}</ElButton> : null}
300
+ {okBtn ? <ElButton type="primary"
301
+ onClick={() => (this.onOk() !== false && this.closeModel())}>{okBtnText || this.formCreateInject.t('ok') || '确定'}</ElButton> : null}
302
+ </div>
303
+ }
304
+ },
305
+ render() {
306
+ const type = this.type;
307
+
308
+ let node;
309
+ if (type === 'input') {
310
+ node = this.makeInput();
311
+ } else if (type === 'image') {
312
+ node = this.makeImages();
313
+ } else {
314
+ node = this.makeFiles();
315
+ }
316
+
317
+ const {width = '30%', height, src, title, modalTitle} = this.$props;
318
+ nextTick(() => {
319
+ if (this.$refs.frame) {
320
+ this.frameLoad(this.$refs.frame.contentWindow || {});
321
+ }
322
+ });
323
+ return <div class={{'_fc-frame': true, '_fc-disabled': this.disabled}}>{node}
324
+ <ElDialog appendToBody={true} modal={this.previewMask} title={modalTitle} modelValue={this.previewVisible}
325
+ onClose={this.handleCancel}>
326
+ <img style="width: 100%" src={this.previewImage}/>
327
+ </ElDialog>
328
+ <ElDialog appendToBody={true} {...{width, title, ...this.modal}} modelValue={this.frameVisible}
329
+ onClose={() => (this.closeModel(true))} v-slots={{
330
+ footer: () => this.makeFooter()
331
+ }}>
332
+ {(this.frameVisible || !this.reload) ? <iframe ref="frame" src={src} frameBorder="0" style={{
333
+ height,
334
+ 'border': '0 none',
335
+ 'width': '100%'
336
+ }}/> : null}</ElDialog>
337
+ </div>
338
+ },
339
+ beforeMount() {
340
+ const {name, field, api} = this.formCreateInject;
341
+ name && api.on('fc:closeModal:' + name, this.close);
342
+ field && api.on('fc:closeModal:' + field, this.close);
343
+ },
344
+ beforeUnmount() {
345
+ const {name, field, api} = this.formCreateInject;
346
+ name && api.off('fc:closeModal:' + name, this.close);
347
+ field && api.off('fc:closeModal:' + field, this.close);
348
+ }
349
+ })
@@ -0,0 +1,3 @@
1
+ import Frame from './component';
2
+
3
+ export default Frame;
@@ -0,0 +1,66 @@
1
+ ._fc-frame ._fc-files img {
2
+ width: 100%;
3
+ height: 100%;
4
+ display: inline-block;
5
+ vertical-align: top;
6
+ }
7
+
8
+ ._fc-frame ._fc-upload-btn {
9
+ border: 1px dashed #c0ccda;
10
+ cursor: pointer;
11
+ }
12
+
13
+ ._fc-frame._fc-disabled ._fc-upload-btn ,._fc-frame._fc-disabled .el-button {
14
+ cursor: not-allowed !important;
15
+ color: #999;
16
+ }
17
+
18
+ ._fc-frame ._fc-upload-cover {
19
+ opacity: 0;
20
+ position: absolute;
21
+ top: 0;
22
+ bottom: 0;
23
+ left: 0;
24
+ right: 0;
25
+ background: rgba(0, 0, 0, .6);
26
+ -webkit-transition: opacity .3s;
27
+ -o-transition: opacity .3s;
28
+ transition: opacity .3s;
29
+ }
30
+
31
+ ._fc-frame ._fc-upload-cover i {
32
+ color: #fff;
33
+ font-size: 20px;
34
+ cursor: pointer;
35
+ margin: 0 2px;
36
+ }
37
+
38
+ ._fc-frame ._fc-files:hover ._fc-upload-cover {
39
+ opacity: 1;
40
+ }
41
+
42
+ ._fc-frame .el-upload {
43
+ display: block;
44
+ }
45
+
46
+ ._fc-frame ._fc-upload-icon {
47
+ cursor: pointer;
48
+ }
49
+
50
+ ._fc-frame ._fc-upload-btn, ._fc-files {
51
+ display: inline-block;
52
+ width: 58px;
53
+ height: 58px;
54
+ text-align: center;
55
+ line-height: 58px;
56
+ border: 1px solid #c0ccda;
57
+ border-radius: 4px;
58
+ overflow: hidden;
59
+ background: #fff;
60
+ position: relative;
61
+ -webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, .1);
62
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, .1);
63
+ margin-right: 4px;
64
+ -webkit-box-sizing: border-box;
65
+ box-sizing: border-box;
66
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@bdsoft-element/form-group",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "./dist/index.min.js",
6
+ "module": "./dist/index.esm.js",
7
+ "unpkg": "./dist/index.min.js",
8
+ "jsdelivr": "./dist/index.min.js",
9
+ "scripts": {
10
+ "clean": "rimraf dist/",
11
+ "bili": "cross-env bili",
12
+ "build": "npm-run-all clean bili"
13
+ },
14
+ "dependencies": {
15
+ "@bdsoft-element/utils": "workspace:^1.0.1"
16
+ }
17
+ }