simple-frame-unit 1.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 (260) hide show
  1. package/.env.dev +14 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +24 -0
  4. package/dist/ed-frame-vue.common.1.js +11046 -0
  5. package/dist/ed-frame-vue.common.1.js.map +1 -0
  6. package/dist/ed-frame-vue.common.2.js +1715 -0
  7. package/dist/ed-frame-vue.common.2.js.map +1 -0
  8. package/dist/ed-frame-vue.common.js +53427 -0
  9. package/dist/ed-frame-vue.common.js.map +1 -0
  10. package/dist/ed-frame-vue.umd.1.js +11046 -0
  11. package/dist/ed-frame-vue.umd.1.js.map +1 -0
  12. package/dist/ed-frame-vue.umd.2.js +1715 -0
  13. package/dist/ed-frame-vue.umd.2.js.map +1 -0
  14. package/dist/ed-frame-vue.umd.js +53437 -0
  15. package/dist/ed-frame-vue.umd.js.map +1 -0
  16. package/dist/ed-frame-vue.umd.min.1.js +17 -0
  17. package/dist/ed-frame-vue.umd.min.1.js.map +1 -0
  18. package/dist/ed-frame-vue.umd.min.2.js +4 -0
  19. package/dist/ed-frame-vue.umd.min.2.js.map +1 -0
  20. package/dist/ed-frame-vue.umd.min.js +470 -0
  21. package/dist/ed-frame-vue.umd.min.js.map +1 -0
  22. package/import.easydata.js +46 -0
  23. package/lib/CHANGELOG.md +18 -0
  24. package/lib/README.md +27 -0
  25. package/lib/api/ds/index.js +124 -0
  26. package/lib/api/easyData.js +90 -0
  27. package/lib/api/easyform/easyForm.js +32 -0
  28. package/lib/api/index.js +61 -0
  29. package/lib/api/interface/index.js +32 -0
  30. package/lib/api/system.js +20 -0
  31. package/lib/index.js +80 -0
  32. package/lib/packages/BasicTemplate/EasyDataTemplate.vue +189 -0
  33. package/lib/packages/BasicTemplate/Props.js +64 -0
  34. package/lib/packages/BasicTemplate/components/TemplateComp.vue +263 -0
  35. package/lib/packages/BasicTemplate/components/TemplateViews.vue +292 -0
  36. package/lib/packages/BasicTemplate/hooks/business.js +74 -0
  37. package/lib/packages/BasicTemplate/hooks/getFormData.js +89 -0
  38. package/lib/packages/BasicTemplate/hooks/queryFormData.js +194 -0
  39. package/lib/packages/BasicTemplate/hooks/submitForm.js +53 -0
  40. package/lib/packages/BasicTemplate/hooks/useEmits.js +15 -0
  41. package/lib/packages/BasicTemplate/hooks/validate.js +42 -0
  42. package/lib/packages/EasyDataForm/EasyDataForm.vue +597 -0
  43. package/lib/packages/EasyDataForm/Props.js +22 -0
  44. package/lib/packages/EasyDataForm/components/FormItem.vue +228 -0
  45. package/lib/packages/EasyDataForm/hooks/useChosePopup.js +85 -0
  46. package/lib/packages/EasyDataForm/hooks/useEmits.js +19 -0
  47. package/lib/packages/EasyDataForm/hooks/useForm.js +169 -0
  48. package/lib/packages/EasyDataForm/hooks/useUpload.js +168 -0
  49. package/lib/packages/EasyDataList/EasyDataList.vue +348 -0
  50. package/lib/packages/EasyDataList/Props.js +116 -0
  51. package/lib/packages/EasyDataList/components/BasicModal.vue +150 -0
  52. package/lib/packages/EasyDataList/components/FormAction.vue +63 -0
  53. package/lib/packages/EasyDataList/hooks/useEmits.js +30 -0
  54. package/lib/packages/EasyDataList/hooks/useForm.js +62 -0
  55. package/lib/packages/EasyDataList/hooks/useTable.js +314 -0
  56. package/lib/packages/EasyDataTable/EasyDataTable.vue +233 -0
  57. package/lib/packages/EasyDataView/EasyDataView.vue +105 -0
  58. package/lib/packages/EdRichPreview/index.js +32 -0
  59. package/lib/packages/EdRichText/index.vue +167 -0
  60. package/lib/packages/EdRichText/replaceUrl.js +49 -0
  61. package/lib/packages/components/FileView.vue +97 -0
  62. package/lib/packages/index.js +11 -0
  63. package/lib/packages/mixins/EasyDataMixins.js +133 -0
  64. package/lib/packages/mixins/useTable.jsx +130 -0
  65. package/lib/pages/DataSource/index.js +8 -0
  66. package/lib/pages/DataSource/src/components/ControlViews/BaseProps.js +103 -0
  67. package/lib/pages/DataSource/src/components/ControlViews/control.js +1089 -0
  68. package/lib/pages/DataSource/src/components/ControlViews/index.vue +301 -0
  69. package/lib/pages/DataSource/src/components/TableOperationModal.vue +225 -0
  70. package/lib/pages/DataSource/src/components/TablePropsModal.vue +367 -0
  71. package/lib/pages/DataSource/src/components/ViewPropsModal.vue +737 -0
  72. package/lib/pages/DataSource/src/components/modal/ChooseDict.vue +119 -0
  73. package/lib/pages/DataSource/src/hooks/useTable.js +138 -0
  74. package/lib/pages/DataSource/src/index.vue +431 -0
  75. package/lib/pages/Interface/index.js +8 -0
  76. package/lib/pages/Interface/src/components/InterfaceCall.vue +73 -0
  77. package/lib/pages/Interface/src/components/InterfaceDepend.vue +299 -0
  78. package/lib/pages/Interface/src/components/InterfaceFee.vue +131 -0
  79. package/lib/pages/Interface/src/components/InterfaceMessage.vue +878 -0
  80. package/lib/pages/Interface/src/components/InterfaceMock.vue +203 -0
  81. package/lib/pages/Interface/src/components/InterfaceParam.vue +308 -0
  82. package/lib/pages/Interface/src/components/InterfaceRepeat.vue +281 -0
  83. package/lib/pages/Interface/src/components/InterfaceVariable.vue +31 -0
  84. package/lib/pages/Interface/src/index.vue +216 -0
  85. package/lib/pages/Template/index.js +8 -0
  86. package/lib/pages/Template/src/components/DefineModal.vue +524 -0
  87. package/lib/pages/Template/src/components/TemplatePreview.vue +109 -0
  88. package/lib/pages/Template/src/components/model/AddDialog.vue +60 -0
  89. package/lib/pages/Template/src/components/model/TemplatePreview2.vue +101 -0
  90. package/lib/pages/Template/src/hooks/index.js +3 -0
  91. package/lib/pages/Template/src/hooks/useEmits.js +64 -0
  92. package/lib/pages/Template/src/index.vue +124 -0
  93. package/lib/popup/index.js +8 -0
  94. package/lib/popup/src/DataSourceChoose.vue +44 -0
  95. package/lib/popup/src/DataSourceViewIdChoose.vue +67 -0
  96. package/lib/popup/src/DictChoose.vue +104 -0
  97. package/lib/popup/src/InterfaceChoose.vue +46 -0
  98. package/lib/popup/src/OrgChoose.vue +121 -0
  99. package/lib/popup/src/RoleChoose.vue +101 -0
  100. package/lib/popup/src/TemplateChoose.vue +43 -0
  101. package/lib/popup/src/UserChoose.vue +161 -0
  102. package/lib/popup//347/273/204/344/273/266/345/274/200/345/217/221/350/247/204/350/214/203.md +25 -0
  103. package/lib/style/custom.scss +126 -0
  104. package/lib/style/deep.scss +109 -0
  105. package/lib/style/index.scss +4 -0
  106. package/lib/utils/MapLoader.js +48 -0
  107. package/lib/utils/dateUtils.js +58 -0
  108. package/lib/utils/index.js +8 -0
  109. package/lib/utils/setting.js +25 -0
  110. package/lib/utils/sortable/index.js +3784 -0
  111. package/lib/utils/useBusiness.js +212 -0
  112. package/lib/utils/utils.js +588 -0
  113. package/package.json +77 -0
  114. package/src/App.vue +12 -0
  115. package/src/assets/Vue.png +0 -0
  116. package/src/assets/avatar.png +0 -0
  117. package/src/assets/images/bg.png +0 -0
  118. package/src/assets/images/logo-bills.png +0 -0
  119. package/src/assets/images/pic.png +0 -0
  120. package/src/assets/images/weplus-logo.png +0 -0
  121. package/src/assets/marker.png +0 -0
  122. package/src/assets/styles/common.scss +359 -0
  123. package/src/assets/styles/ele-docs.css +3278 -0
  124. package/src/assets/styles/fonts/icomoon.eot +0 -0
  125. package/src/assets/styles/fonts/icomoon.svg +14 -0
  126. package/src/assets/styles/fonts/icomoon.ttf +0 -0
  127. package/src/assets/styles/fonts/icomoon.woff +0 -0
  128. package/src/assets/styles/fonts/style.css +39 -0
  129. package/src/assets/styles/higtlightEle.css +84 -0
  130. package/src/assets/svg/code.svg +7 -0
  131. package/src/assets/svg/password.svg +1 -0
  132. package/src/components/Popups/DiyCompDictChoose.vue +112 -0
  133. package/src/components/Popups/index.js +28 -0
  134. package/src/components/ed-base-vue/global/variable.js +8 -0
  135. package/src/components/ed-base-vue/index.js +81 -0
  136. package/src/components/ed-base-vue/package/EdCard/index.js +7 -0
  137. package/src/components/ed-base-vue/package/EdCard/src/index.vue +87 -0
  138. package/src/components/ed-base-vue/package/EdCodeEditor/index.js +8 -0
  139. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/AceConfig.js +71 -0
  140. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Editor.vue +137 -0
  141. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Toolbar.vue +68 -0
  142. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/index.vue +119 -0
  143. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/webpack-resolver.js +51 -0
  144. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/Toolbar.vue +57 -0
  145. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/config.js +64 -0
  146. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/index.vue +309 -0
  147. package/src/components/ed-base-vue/package/EdCodeEditor/src/EdCodeEditor.vue +238 -0
  148. package/src/components/ed-base-vue/package/EdDate/index.js +8 -0
  149. package/src/components/ed-base-vue/package/EdDate/src/index.js +50 -0
  150. package/src/components/ed-base-vue/package/EdDescriptions/index.js +8 -0
  151. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptions.vue +46 -0
  152. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptionsItem.js +20 -0
  153. package/src/components/ed-base-vue/package/EdDescriptions/src/Props.js +20 -0
  154. package/src/components/ed-base-vue/package/EdDialog/index.js +8 -0
  155. package/src/components/ed-base-vue/package/EdDialog/src/EdDialog.vue +138 -0
  156. package/src/components/ed-base-vue/package/EdDialog/src/Props.js +91 -0
  157. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogFooter.vue +42 -0
  158. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogWrapper.vue +53 -0
  159. package/src/components/ed-base-vue/package/EdDrawer/index.js +8 -0
  160. package/src/components/ed-base-vue/package/EdDrawer/src/DrawerFooter.vue +41 -0
  161. package/src/components/ed-base-vue/package/EdDrawer/src/EdDrawer.vue +150 -0
  162. package/src/components/ed-base-vue/package/EdDrawer/src/props.js +71 -0
  163. package/src/components/ed-base-vue/package/EdFlow/index.js +8 -0
  164. package/src/components/ed-base-vue/package/EdFlow/src/EdFlowItem.vue +733 -0
  165. package/src/components/ed-base-vue/package/EdFlow/src/index.vue +148 -0
  166. package/src/components/ed-base-vue/package/EdForm/index.js +8 -0
  167. package/src/components/ed-base-vue/package/EdForm/src/EdForm.vue +172 -0
  168. package/src/components/ed-base-vue/package/EdForm/src/Props.js +33 -0
  169. package/src/components/ed-base-vue/package/EdForm/src/components/EdFormItem.vue +34 -0
  170. package/src/components/ed-base-vue/package/EdIcons/index.js +8 -0
  171. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons.js +406 -0
  172. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons1.js +830 -0
  173. package/src/components/ed-base-vue/package/EdIcons/src/index.vue +13 -0
  174. package/src/components/ed-base-vue/package/EdImage/index.js +8 -0
  175. package/src/components/ed-base-vue/package/EdImage/src/index.vue +28 -0
  176. package/src/components/ed-base-vue/package/EdInputArray/index.js +8 -0
  177. package/src/components/ed-base-vue/package/EdInputArray/src/Props.js +26 -0
  178. package/src/components/ed-base-vue/package/EdInputArray/src/index.vue +97 -0
  179. package/src/components/ed-base-vue/package/EdInputColor/index.js +8 -0
  180. package/src/components/ed-base-vue/package/EdInputColor/src/InputColor.vue +81 -0
  181. package/src/components/ed-base-vue/package/EdInputMap/index.js +9 -0
  182. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMap.vue +246 -0
  183. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMapProps.js +6 -0
  184. package/src/components/ed-base-vue/package/EdInputPop/index.js +13 -0
  185. package/src/components/ed-base-vue/package/EdInputPop/src/EdInputPop.vue +144 -0
  186. package/src/components/ed-base-vue/package/EdInputPop/src/Props.js +48 -0
  187. package/src/components/ed-base-vue/package/EdInputTable/index.js +8 -0
  188. package/src/components/ed-base-vue/package/EdInputTable/src/EdInputTable.vue +368 -0
  189. package/src/components/ed-base-vue/package/EdInputTable/src/Fetch.js +40 -0
  190. package/src/components/ed-base-vue/package/EdJsonEditor/index.js +13 -0
  191. package/src/components/ed-base-vue/package/EdJsonEditor/src/EdJsonEditor.vue +198 -0
  192. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/img/jsoneditor-icons.svg +749 -0
  193. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/jsoneditor.css +2031 -0
  194. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/plus.svg +1 -0
  195. package/src/components/ed-base-vue/package/EdJsonEditor/src/hooks.js +63 -0
  196. package/src/components/ed-base-vue/package/EdJsonViewer/index.js +8 -0
  197. package/src/components/ed-base-vue/package/EdJsonViewer/src/EdJsonViewer.vue +44 -0
  198. package/src/components/ed-base-vue/package/EdLable/index.js +8 -0
  199. package/src/components/ed-base-vue/package/EdLable/src/index.vue +34 -0
  200. package/src/components/ed-base-vue/package/EdLink/index.js +8 -0
  201. package/src/components/ed-base-vue/package/EdLink/src/index.vue +43 -0
  202. package/src/components/ed-base-vue/package/EdMarkEditor/index.js +15 -0
  203. package/src/components/ed-base-vue/package/EdMarkEditor/src/EdMarkEditor.vue +368 -0
  204. package/src/components/ed-base-vue/package/EdMarkEditor/src/extra-function.js +538 -0
  205. package/src/components/ed-base-vue/package/EdMarkEditor/src/highlight.js +95 -0
  206. package/src/components/ed-base-vue/package/EdTable/index.js +8 -0
  207. package/src/components/ed-base-vue/package/EdTable/src/EdTable.vue +240 -0
  208. package/src/components/ed-base-vue/package/EdTable/src/Props.js +97 -0
  209. package/src/components/ed-base-vue/package/EdTable/src/components/TableColumnItem.js +24 -0
  210. package/src/components/ed-base-vue/package/EdTable/src/components/TablePagination.vue +73 -0
  211. package/src/components/ed-base-vue/package/EdTableEditor/index.js +8 -0
  212. package/src/components/ed-base-vue/package/EdTableEditor/src/EdTableEditor.vue +282 -0
  213. package/src/components/ed-base-vue/package/EdTableEditor/src/Props.js +107 -0
  214. package/src/components/ed-base-vue/package/EdTableEditor/src/hooks/validate.js +90 -0
  215. package/src/components/ed-base-vue/package/EdUpload/index.js +8 -0
  216. package/src/components/ed-base-vue/package/EdUpload/src/Props.js +90 -0
  217. package/src/components/ed-base-vue/package/EdUpload/src/index.vue +88 -0
  218. package/src/components/ed-base-vue/package/EdViewer/index.js +8 -0
  219. package/src/components/ed-base-vue/package/EdViewer/src/EdViewer.vue +310 -0
  220. package/src/components/ed-base-vue/package/EdWangEditor/index.js +14 -0
  221. package/src/components/ed-base-vue/package/EdWangEditor/src/EdWangEditor.vue +127 -0
  222. package/src/components/ed-base-vue/package/ExtendSlot.js +12 -0
  223. package/src/components/ed-base-vue/package/OptionSlot.js +65 -0
  224. package/src/components/ed-base-vue/plugin/Message/index.js +2 -0
  225. package/src/components/ed-base-vue/plugin/Message/src/main.js +91 -0
  226. package/src/components/ed-base-vue/plugin/Message/src/main.vue +253 -0
  227. package/src/components/ed-base-vue/plugin/print/index.js +156 -0
  228. package/src/components/ed-base-vue/plugin/sortable/index.js +3784 -0
  229. package/src/components/ed-base-vue/style/custom.scss +107 -0
  230. package/src/components/ed-base-vue/style/deep.scss +100 -0
  231. package/src/components/ed-base-vue/style/index.scss +4 -0
  232. package/src/components/ed-base-vue/tools/date-format.js +315 -0
  233. package/src/components/ed-base-vue/tools/utils.js +124 -0
  234. package/src/layouts/components/AppMain.vue +17 -0
  235. package/src/layouts/components/Header.vue +256 -0
  236. package/src/layouts/components/Logo.vue +56 -0
  237. package/src/layouts/components/Navbar.vue +169 -0
  238. package/src/layouts/components/SideBar.vue +107 -0
  239. package/src/layouts/components/index.js +5 -0
  240. package/src/layouts/index.vue +57 -0
  241. package/src/main.js +42 -0
  242. package/src/request/config.js +6 -0
  243. package/src/request/index.js +85 -0
  244. package/src/request/request.js +147 -0
  245. package/src/router/index.js +65 -0
  246. package/src/router/modules/baseRouter.js +43 -0
  247. package/src/router/modules/easydata.js +49 -0
  248. package/src/views/base/BaseRichPreview.vue +23 -0
  249. package/src/views/base/BaseRichText.vue +28 -0
  250. package/src/views/base/EdFormView.vue +54 -0
  251. package/src/views/base/EdTable.vue +98 -0
  252. package/src/views/base/inputTable.vue +103 -0
  253. package/src/views/easydata/Interface.vue +3 -0
  254. package/src/views/easydata/dataSource.vue +13 -0
  255. package/src/views/easydata/dataSourceView.vue +71 -0
  256. package/src/views/easydata/templateDemo.vue +89 -0
  257. package/src/views/easydata/templateInfo.vue +13 -0
  258. package/src/views/index.vue +17 -0
  259. package/src/views/login.vue +208 -0
  260. package/src/views/redirect.vue +15 -0
@@ -0,0 +1,148 @@
1
+ <template>
2
+ <div ref="edFlow" class="ed-flow">
3
+ <template v-for="(date, index) in dateArray">
4
+ <ed-flow-item :key="index" :end="end || nowDate"
5
+ :flow-item="date"
6
+ :notDate="getNotDate"
7
+ :sort="index+1"
8
+ :start="start" :stopDate="getStopDate"
9
+ :total="dateArray.length"
10
+ :width="itemWidth"></ed-flow-item>
11
+ </template>
12
+ </div>
13
+ </template>
14
+
15
+ <script>
16
+ import EdFlowItem from "./EdFlowItem";
17
+ import {getDate, getMonth, getNowDate, monthNumber} from "../../../tools/date-format";
18
+
19
+ export default {
20
+ name: "EdFlow",
21
+ components: {EdFlowItem},
22
+ props: {
23
+ // 无数据描述
24
+ tips: {
25
+ type: String,
26
+ default: '暂无数据'
27
+ },
28
+ // 开始日期
29
+ start: {
30
+ type: String,
31
+ default: ''
32
+ },
33
+ // 结束日期
34
+ end: {
35
+ type: String,
36
+ default: ''
37
+ },
38
+ // 数据信息
39
+ data: {
40
+ type: Object,
41
+ default: () => {
42
+ }
43
+ },
44
+ // 数据映射
45
+ map: {
46
+ type: Object,
47
+ default: () => {
48
+ return {
49
+ stop: 'stopDate',
50
+ nots: "notDate"
51
+ }
52
+ }
53
+ },
54
+ },
55
+ data() {
56
+ return {
57
+ dateArray: [],
58
+ itemWidth: 0
59
+ }
60
+ },
61
+ computed: {
62
+ total() {
63
+ return getDate(this.end || this.nowDate).getFullYear() - getDate(this.start).getFullYear() + 1
64
+ },
65
+ years() {
66
+ let years = []
67
+ for (let i = 0; i < this.total; i++) {
68
+ years.push(getDate(this.start).getFullYear() + i)
69
+ }
70
+ return years
71
+ },
72
+ nowDate() {
73
+ return getNowDate()
74
+ },
75
+
76
+ // 计算总月份数量
77
+ months() {
78
+ return monthNumber(this.start, this.end)
79
+ },
80
+ // 无数据时间段
81
+ getStopDate() {
82
+ return this.data && this.data[this.map.stop] ? this.data[this.map.stop] : []
83
+ },
84
+ // 中断日期
85
+ getNotDate() {
86
+ return this.data && this.data[this.map.nots] ? this.data[this.map.nots] : []
87
+ },
88
+ },
89
+ mounted() {
90
+ //测试,第一个参数为数组,第二个为份数
91
+ this.getTimeSlot()
92
+ },
93
+ methods: {
94
+ // 获取每行数据
95
+ getTimeSlot() {
96
+ let startM = Number(getMonth(this.start))
97
+ let items = []
98
+ let y = 0
99
+ for (let i = 0; i < this.months; i++) {
100
+ if (startM <= 12) {
101
+ items.push({
102
+ label: this.years[y],
103
+ value: startM
104
+ })
105
+ if (startM === 12) y++
106
+ startM++
107
+ } else {
108
+ startM = 1
109
+ }
110
+ }
111
+
112
+ const result = [];
113
+ for (let i = 0; i < items.length; i += 12) {
114
+ result.push(items.slice(i, i + 12));
115
+ }
116
+
117
+ this.dateArray = result
118
+ this.itemWidth = Number((this.$refs.edFlow.offsetWidth / 12).toFixed(2))
119
+ },
120
+ // 筛选年份
121
+ Includes(arr) {
122
+ return arr.map(i => {
123
+ return getDate(i).getFullYear()
124
+ })
125
+ },
126
+ }
127
+ }
128
+ </script>
129
+
130
+ <style lang="scss" scoped>
131
+ .ed-flow {
132
+ padding-top: 16px;
133
+
134
+ //.ed-flow-item {
135
+ // height: 60px;
136
+ //
137
+ // .ed-flow-item--box {
138
+ // height: 10px;
139
+ // background: #1376FB;
140
+ // }
141
+ //}
142
+ }
143
+
144
+ .ed-flow-none {
145
+ text-align: center;
146
+ font-size: 15px;
147
+ }
148
+ </style>
@@ -0,0 +1,8 @@
1
+ import EdForm from './src/EdForm.vue'
2
+
3
+ /* istanbul ignore next */
4
+ EdForm.install = function (Vue) {
5
+ Vue.component(EdForm.name, EdForm)
6
+ }
7
+
8
+ export default EdForm
@@ -0,0 +1,172 @@
1
+ <template>
2
+ <div class="ed-form">
3
+ <el-form ref="elForm" :model="model" :rules="rules" v-bind="$props">
4
+ <!-- 默认插槽作为表单项 -->
5
+ <slot/>
6
+
7
+ <!-- 自定义插槽作为表单项 -->
8
+ <slot :formDesc="formDesc" :model="model" :props="$props" name="form-content">
9
+ <template v-for="(formItem, field) of formDesc">
10
+ <!-- 自定义内容层 -->
11
+ <slot :data="model[formItem.prop]" :desc="getFormItem(formItem)" :model="model"
12
+ :name="formItem.prop+'Wrapper'"
13
+ :props="$props">
14
+ <el-form-item v-show="formItem.hasOwnProperty('isShow') ? formItem.isShow : true"
15
+ v-bind="getFormItem(formItem)">
16
+ <template v-if="formItem.hasOwnProperty('tooltip')" #label>
17
+ <span>{{ getFormItem(formItem).label }}</span>
18
+ <el-tooltip class="item" effect="dark" placement="bottom">
19
+ <div slot="content">{{ formItem.tooltip }}</div>
20
+ <i class="el-icon-question"></i>
21
+ </el-tooltip>
22
+ </template>
23
+
24
+
25
+ <!-- 具名 作用域插槽(用于用户自定义显示) -->
26
+ <slot :data="model[formItem.prop]" :desc="formItem" :model="model" :name="formItem.prop"
27
+ :props="$props">
28
+ <!-- children==array -->
29
+ <template v-if="getVarType(formItem.children) === 'array'">
30
+ <template v-for="(child, index) in formItem.children">
31
+ <ed-form-item :key="index" v-model="model[child.prop]" :formItem="child" @input="setValue(child.prop, $event)"></ed-form-item>
32
+ </template>
33
+ </template>
34
+
35
+ <!-- children==object -->
36
+ <template v-else-if="getVarType(formItem.children) === 'object'">
37
+ <ed-form-item v-model="model[formItem.prop]" :formItem="formItem.children" @input="setValue(formItem.prop, $event)"></ed-form-item>
38
+ </template>
39
+ </slot>
40
+
41
+ <!-- children==string -->
42
+ <template v-if="getVarType(formItem.children) === 'string'">{{ formItem.children }}</template>
43
+ </el-form-item>
44
+ </slot>
45
+ <!-- 按钮区域 -->
46
+ <el-form-item v-if="showBtn(formItem)" :key="field+'btn'">
47
+ <slot :btns="formItem.btns" name="form-btn">
48
+ <el-button v-for="(btn, index) of formItem.btns" :key="index" v-bind="btn.attrs" @click="btn.click">{{ btn.text }}</el-button>
49
+ </slot>
50
+ </el-form-item>
51
+ </template>
52
+ </slot>
53
+ </el-form>
54
+ </div>
55
+ </template>
56
+
57
+ <script>
58
+ import props from './Props'
59
+ import EdFormItem from "./components/EdFormItem";
60
+ import {getVarType} from "../../../tools/utils";
61
+
62
+ /**
63
+ * 基础表单组件
64
+ *
65
+ * - 示例
66
+ *
67
+ * ```vue
68
+ *
69
+ * <ed-form ref="ElsForm" v-model="elsFormData" :form-desc="elsFormDesc" :form-rules="elsFormRules">
70
+ * </ed-form>
71
+ * ```
72
+ *
73
+ * [](./EdFormProps.md ':include')
74
+ *
75
+ */
76
+ export default {
77
+ name: "EdForm",
78
+ props: props,
79
+ components: {EdFormItem},
80
+ model: {
81
+ prop: 'model',
82
+ event: "input"
83
+ },
84
+ computed: {
85
+ showBtn() {
86
+ return (formItem) => {
87
+ let isBtns = Object.prototype.hasOwnProperty.call(formItem, 'btns')
88
+ let isScopedSlots = Object.prototype.hasOwnProperty.call(this.$scopedSlots, 'form-btn')
89
+ let isSlot = Object.prototype.hasOwnProperty.call(this.$slots, 'form-btn')
90
+ return isScopedSlots || isSlot || isBtns
91
+ }
92
+ },
93
+ getFormItem() {
94
+ return (formItem) => {
95
+ let item = JSON.parse(JSON.stringify(formItem))
96
+ delete item.children
97
+ delete item.tooltip
98
+ return item
99
+ }
100
+ },
101
+ },
102
+ methods: {
103
+ /**
104
+ * @private
105
+ */
106
+ getVarType,
107
+
108
+ /**
109
+ * 设置值
110
+ * @param field
111
+ * @param val
112
+ */
113
+ setValue(field, val) {
114
+ this.$set(this.model, field, val)
115
+ this.$emit('input', this.model)
116
+ },
117
+
118
+ /**
119
+ * 验证表单
120
+ * @returns {Promise<unknown>}
121
+ */
122
+ validate(callback) {
123
+ return this.$refs.elForm.validate(callback)
124
+ },
125
+
126
+ /**
127
+ * @name validateField
128
+ * @param props
129
+ * @param callback
130
+ * @description 对部分表单字段进行校验的方法
131
+ */
132
+ validateField(props, callback) {
133
+ this.$refs.elForm.validateField(props, callback)
134
+ },
135
+
136
+ /**
137
+ * 获取数据
138
+ * @param isValidate
139
+ * @returns {Promise<unknown>}
140
+ */
141
+ getFormData(isValidate = false) {
142
+ // eslint-disable-next-line no-async-promise-executor
143
+ return new Promise(async (resolve, reject) => {
144
+ try {
145
+ isValidate ? await this.$refs.elForm.validate() : null;
146
+ resolve(this.model)
147
+ } catch (err) {
148
+ reject(err)
149
+ }
150
+ })
151
+ },
152
+ /**
153
+ * 重置表单
154
+ */
155
+ resetFields() {
156
+ this.$refs.elForm.resetFields()
157
+ },
158
+
159
+ /**
160
+ * @name clearValidate
161
+ * @description 移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果
162
+ */
163
+ clearValidate() {
164
+ this.$refs.elForm.clearValidate()
165
+ }
166
+ }
167
+ }
168
+ </script>
169
+
170
+ <style lang="scss" scoped>
171
+ @import "../../../style/index";
172
+ </style>
@@ -0,0 +1,33 @@
1
+ /**
2
+ * EdForm组件属性
3
+ */
4
+ export default {
5
+ /** Data of form component */
6
+ model: {type: Object, default: () => {}},
7
+ /** Validation rules of form */
8
+ rules: {type: Object, default: () => {}},
9
+ /** Whether the form is inline */
10
+ inline: {type: Boolean, default: false},
11
+ /** Whether the form is disabled */
12
+ disabled: {type: Boolean, default: false},
13
+ /** 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 label-width right/left/top */
14
+ labelPosition: {type: String, default: 'left'},
15
+ /** 表单域标签的宽度,例如 '50px'。作为 Form 直接子元素的 form-item 会继承该值。支持 auto。 */
16
+ labelWidth: {type: String, default: 'auto'},
17
+ /** 表单域标签的后缀 */
18
+ labelSuffix: {type: String, default: ''},
19
+ /** Whether to show the error message */
20
+ showMessage: {type: Boolean, default: true},
21
+ /** Whether to display the error message inline with the form item */
22
+ inlineMessage: {type: Boolean, default: false},
23
+ /** Whether to display an icon indicating the validation result */
24
+ statusIcon: {type: Boolean, default: false},
25
+ /** Whether to trigger validation when the `rules` prop is changed */
26
+ validateOnRuleChange: {type: Boolean, default: true},
27
+ /** Controls the size of components in this form */
28
+ size: {type: String, default: 'small'},
29
+ // 是否隐藏必填字段的标签旁边的红色星号
30
+ hideRequiredAsterisk: {type: Boolean, default: false},
31
+ // 表单描述
32
+ formDesc: {type: Array, required: true},
33
+ }
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <component :is="formItem.tags" :value="value" :style="formItem.style"
3
+ v-bind="formItem.attrs" @input="setValue">
4
+ <template v-if="formItem.options">
5
+ <ed-option-slot v-for="(option, index) of formItem.options"
6
+ :key="index"
7
+ :data="option"
8
+ :optionAttrs="option.attrs"
9
+ :tags="formItem.tags"
10
+ ></ed-option-slot>
11
+ </template>
12
+ </component>
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ name: "EdFormItem",
18
+ props: {
19
+ formItem: {
20
+ type: Object
21
+ },
22
+ value: ""
23
+ },
24
+ methods:{
25
+ setValue(val){
26
+ this.$emit('input', val)
27
+ }
28
+ }
29
+ }
30
+ </script>
31
+
32
+ <style scoped>
33
+
34
+ </style>
@@ -0,0 +1,8 @@
1
+ import EdIcons from './src/index.vue'
2
+
3
+ /* istanbul ignore next */
4
+ EdIcons.install = function (Vue) {
5
+ Vue.component(EdIcons.name, EdIcons)
6
+ }
7
+
8
+ export default EdIcons