vue-super-crud 1.7.1 → 1.7.4

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 (273) hide show
  1. package/README.md +42 -10
  2. package/lib/index.css +1 -1
  3. package/lib/super-crud.min.js +2 -2
  4. package/package.json +21 -16
  5. package/src/config/common.js +2 -1
  6. package/src/config/crud.js +3 -3
  7. package/src/index.js +4 -0
  8. package/src/template/formatData.js +75 -87
  9. package/.browserslistrc +0 -3
  10. package/.versionrc.json +0 -36
  11. package/CHANGELOG.md +0 -232
  12. package/babel.config.js +0 -12
  13. package/build/alias.js +0 -10
  14. package/build/build.js +0 -52
  15. package/build/config.js +0 -70
  16. package/deploy.bat +0 -14
  17. package/docs/.vuepress/components/button/base.vue +0 -88
  18. package/docs/.vuepress/components/common/code-format.vue +0 -331
  19. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/base.vue +0 -68
  20. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/customParams.vue +0 -73
  21. package/docs/.vuepress/components/commonConfig/renderType/component.vue +0 -160
  22. package/docs/.vuepress/components/commonConfig/renderType/formatter.vue +0 -49
  23. package/docs/.vuepress/components/commonConfig/renderType/render.vue +0 -91
  24. package/docs/.vuepress/components/commonConfig/renderType/slot.vue +0 -63
  25. package/docs/.vuepress/components/crud/baseUse/baseUse.vue +0 -98
  26. package/docs/.vuepress/components/crud/baseUse/columnAction.vue +0 -72
  27. package/docs/.vuepress/components/crud/baseUse/columnWidth.vue +0 -107
  28. package/docs/.vuepress/components/crud/baseUse/handleRow.vue +0 -65
  29. package/docs/.vuepress/components/crud/baseUse/height.vue +0 -82
  30. package/docs/.vuepress/components/crud/baseUse/index.vue +0 -54
  31. package/docs/.vuepress/components/crud/baseUse/loading.vue +0 -70
  32. package/docs/.vuepress/components/crud/baseUse/pagination.vue +0 -108
  33. package/docs/.vuepress/components/crud/baseUse/selection.vue +0 -114
  34. package/docs/.vuepress/components/crud/baseUse/summaryMethod.vue +0 -118
  35. package/docs/.vuepress/components/crud/baseUse/title.vue +0 -54
  36. package/docs/.vuepress/components/crud/baseUse/toolbar.vue +0 -69
  37. package/docs/.vuepress/components/crud/buttons/common.vue +0 -115
  38. package/docs/.vuepress/components/crud/buttons/fast.vue +0 -82
  39. package/docs/.vuepress/components/crud/contextMenu/base.vue +0 -72
  40. package/docs/.vuepress/components/crud/copy.vue +0 -52
  41. package/docs/.vuepress/components/crud/crudEvents/api.vue +0 -157
  42. package/docs/.vuepress/components/crud/crudEvents/deleteTip.vue +0 -93
  43. package/docs/.vuepress/components/crud/crudEvents/events.vue +0 -188
  44. package/docs/.vuepress/components/crud/dataSort/base.vue +0 -142
  45. package/docs/.vuepress/components/crud/genDynamicColumns/base.vue +0 -53
  46. package/docs/.vuepress/components/crud/genDynamicColumns/dynamicAndFixed.vue +0 -111
  47. package/docs/.vuepress/components/crud/genDynamicColumns/treeDynamic.vue +0 -68
  48. package/docs/.vuepress/components/crud/handleBar/handleRow.vue +0 -65
  49. package/docs/.vuepress/components/crud/handleBar/toolbar.vue +0 -69
  50. package/docs/.vuepress/components/crud/renderType/1.vue +0 -57
  51. package/docs/.vuepress/components/crud/renderType/2.vue +0 -63
  52. package/docs/.vuepress/components/crud/renderType/3.vue +0 -105
  53. package/docs/.vuepress/components/crud/renderType/5.vue +0 -91
  54. package/docs/.vuepress/components/crud/search/1.vue +0 -90
  55. package/docs/.vuepress/components/crud/search/2.vue +0 -78
  56. package/docs/.vuepress/components/crud/search/3.vue +0 -107
  57. package/docs/.vuepress/components/crud/search/base.vue +0 -123
  58. package/docs/.vuepress/components/crud/search/localSearch.vue +0 -124
  59. package/docs/.vuepress/components/crud/search/special.vue +0 -148
  60. package/docs/.vuepress/components/crud/selection/events.vue +0 -47
  61. package/docs/.vuepress/components/crud/selection/pagination.vue +0 -94
  62. package/docs/.vuepress/components/crud/selection/singleSelection.vue +0 -64
  63. package/docs/.vuepress/components/crud/span/base.vue +0 -69
  64. package/docs/.vuepress/components/crud/span/special.vue +0 -75
  65. package/docs/.vuepress/components/crud/summary/base.vue +0 -99
  66. package/docs/.vuepress/components/crud/tableEdit/addDeleteBtn.vue +0 -174
  67. package/docs/.vuepress/components/crud/tableEdit/cellEdit.vue +0 -194
  68. package/docs/.vuepress/components/crud/tableEdit/controlEdit.vue +0 -219
  69. package/docs/.vuepress/components/crud/tableEdit/dialog.vue +0 -172
  70. package/docs/.vuepress/components/crud/tableEdit/free.vue +0 -88
  71. package/docs/.vuepress/components/crud/tableEdit/freeColumn.vue +0 -82
  72. package/docs/.vuepress/components/crud/tableEdit/methods.vue +0 -154
  73. package/docs/.vuepress/components/crud/tableEdit/rowAction.vue +0 -107
  74. package/docs/.vuepress/components/crud/tableEdit/rowBatch.vue +0 -116
  75. package/docs/.vuepress/components/crud/tableEdit/rowClick.vue +0 -98
  76. package/docs/.vuepress/components/crud/validate/base.vue +0 -122
  77. package/docs/.vuepress/components/crud/validate/custom.vue +0 -82
  78. package/docs/.vuepress/components/crud/validate/regulars.vue +0 -88
  79. package/docs/.vuepress/components/crud/validate/relation.vue +0 -91
  80. package/docs/.vuepress/components/crud/validate/tree.vue +0 -82
  81. package/docs/.vuepress/components/dialog/baseUse/base.vue +0 -92
  82. package/docs/.vuepress/components/dialog/baseUse/beforeConfirm.vue +0 -78
  83. package/docs/.vuepress/components/dialog/baseUse/control.vue +0 -79
  84. package/docs/.vuepress/components/dialog/baseUse/drawer.vue +0 -59
  85. package/docs/.vuepress/components/dialog/baseUse/footer.vue +0 -87
  86. package/docs/.vuepress/components/dialog/baseUse/insertSlot.vue +0 -79
  87. package/docs/.vuepress/components/dict/DictLinkage.vue +0 -91
  88. package/docs/.vuepress/components/dict/baseUse.vue +0 -72
  89. package/docs/.vuepress/components/dict/component.vue +0 -82
  90. package/docs/.vuepress/components/dict/localDict.vue +0 -68
  91. package/docs/.vuepress/components/form/baseUse/base.vue +0 -48
  92. package/docs/.vuepress/components/form/baseUse/dataFormat.vue +0 -92
  93. package/docs/.vuepress/components/form/baseUse/deep.vue +0 -57
  94. package/docs/.vuepress/components/form/baseUse/gridLayout.vue +0 -47
  95. package/docs/.vuepress/components/form/baseUse/group.vue +0 -66
  96. package/docs/.vuepress/components/form/baseUse/hidden.vue +0 -40
  97. package/docs/.vuepress/components/form/baseUse/inlineLayout.vue +0 -48
  98. package/docs/.vuepress/components/form/baseUse/label.vue +0 -51
  99. package/docs/.vuepress/components/form/baseUse/tooltip.vue +0 -40
  100. package/docs/.vuepress/components/form/baseUse/validate.vue +0 -52
  101. package/docs/.vuepress/components/form/detail/base.vue +0 -78
  102. package/docs/.vuepress/components/form/detail/border.vue +0 -90
  103. package/docs/.vuepress/components/form/detail/singleDetail.vue +0 -72
  104. package/docs/.vuepress/components/formatData/baseUse.vue +0 -131
  105. package/docs/.vuepress/components/mock/index.js +0 -347
  106. package/docs/.vuepress/components/mockData/custom.vue +0 -69
  107. package/docs/.vuepress/components/mockData/example.vue +0 -290
  108. package/docs/.vuepress/components/positionSlot/base.vue +0 -24
  109. package/docs/.vuepress/components/positionSlot/form.vue +0 -71
  110. package/docs/.vuepress/components/positionSlot/table.vue +0 -85
  111. package/docs/.vuepress/components/tabs/base.vue +0 -57
  112. package/docs/.vuepress/components/temp.js +0 -195
  113. package/docs/.vuepress/config.js +0 -146
  114. package/docs/.vuepress/enhanceApp.js +0 -142
  115. package/docs/.vuepress/public/favicon.ico +0 -0
  116. package/docs/.vuepress/public/super.png +0 -0
  117. package/docs/.vuepress/styles/index.styl +0 -25
  118. package/docs/.vuepress/styles/palette.styl +0 -6
  119. package/docs/README.md +0 -14
  120. package/docs/guide/button/base.md +0 -31
  121. package/docs/guide/commonConfig/jsx.md +0 -166
  122. package/docs/guide/commonConfig/presetCodeTemplate.md +0 -68
  123. package/docs/guide/commonConfig/renderType.md +0 -181
  124. package/docs/guide/crud/baseUse.md +0 -120
  125. package/docs/guide/crud/buttons.md +0 -18
  126. package/docs/guide/crud/config.md +0 -217
  127. package/docs/guide/crud/contextMenu.md +0 -18
  128. package/docs/guide/crud/dataSort.md +0 -66
  129. package/docs/guide/crud/genDynamicColumns.md +0 -145
  130. package/docs/guide/crud/handleBar.md +0 -26
  131. package/docs/guide/crud/renderType.md +0 -4
  132. package/docs/guide/crud/search.md +0 -150
  133. package/docs/guide/crud/selection.md +0 -73
  134. package/docs/guide/crud/span.md +0 -98
  135. package/docs/guide/crud/summary.md +0 -167
  136. package/docs/guide/crud/tableEdit.md +0 -377
  137. package/docs/guide/crud/validate.md +0 -158
  138. package/docs/guide/dialog/baseUse.md +0 -81
  139. package/docs/guide/dict/baseUse.md +0 -174
  140. package/docs/guide/dict/component.md +0 -88
  141. package/docs/guide/dict/config.md +0 -44
  142. package/docs/guide/form/baseUse.md +0 -142
  143. package/docs/guide/form/detail.md +0 -38
  144. package/docs/guide/formatData/baseUse.md +0 -98
  145. package/docs/guide/formatData/config.md +0 -142
  146. package/docs/guide/mockData/base.md +0 -26
  147. package/docs/guide/positionSlot/base.md +0 -41
  148. package/docs/guide/question/base.md +0 -44
  149. package/docs/guide/start/base.md +0 -30
  150. package/docs/guide/tabs/base.md +0 -63
  151. package/examples/App.vue +0 -52
  152. package/examples/Layout/components/AppMain.vue +0 -40
  153. package/examples/Layout/components/Item.vue +0 -29
  154. package/examples/Layout/components/Link.vue +0 -44
  155. package/examples/Layout/components/SidebarItem.vue +0 -93
  156. package/examples/Layout/index.vue +0 -69
  157. package/examples/assets/logo.png +0 -0
  158. package/examples/favicon.ico +0 -0
  159. package/examples/index.html +0 -18
  160. package/examples/main.js +0 -54
  161. package/examples/router/index.js +0 -140
  162. package/examples/store/index.js +0 -0
  163. package/examples/styles/index.scss +0 -63
  164. package/examples/styles/sidebar.scss +0 -226
  165. package/examples/styles/transition.scss +0 -48
  166. package/examples/styles/variables.scss +0 -25
  167. package/examples/views/crud/base.vue +0 -68
  168. package/examples/views/crud/handleRow.vue +0 -84
  169. package/examples/views/crud/search.vue +0 -116
  170. package/examples/views/dashboard/index.vue +0 -244
  171. package/examples/views/dashboard/index1.vue +0 -234
  172. package/examples/views/dashboard/test.vue +0 -9
  173. package/examples/views/formTest/index.vue +0 -168
  174. package/examples/views/nested/menu1/index.vue +0 -7
  175. package/examples/views/nested/menu1/menu1-1/index.vue +0 -7
  176. package/examples/views/nested/menu1/menu1-2/index.vue +0 -7
  177. package/examples/views/nested/menu1/menu1-2/menu1-2-1/index.vue +0 -5
  178. package/examples/views/nested/menu1/menu1-2/menu1-2-2/index.vue +0 -5
  179. package/examples/views/nested/menu1/menu1-3/index.vue +0 -5
  180. package/examples/views/nested/menu2/index.vue +0 -5
  181. package/gulpfile.js +0 -84
  182. package/packages/button/index.vue +0 -189
  183. package/packages/core/components/comp.vue +0 -223
  184. package/packages/core/components/position.vue +0 -135
  185. package/packages/core/components/render.vue +0 -460
  186. package/packages/core/configManager.js +0 -302
  187. package/packages/core/create.js +0 -8
  188. package/packages/core/defaultRender.js +0 -64
  189. package/packages/core/dict/global.js +0 -10
  190. package/packages/core/dict/index.js +0 -432
  191. package/packages/core/dict/mixin.js +0 -94
  192. package/packages/core/event.js +0 -60
  193. package/packages/core/index.js +0 -6
  194. package/packages/core/init.js +0 -122
  195. package/packages/core/mock/genConfig.js +0 -228
  196. package/packages/core/mock/genData.js +0 -422
  197. package/packages/core/mock/index.js +0 -4
  198. package/packages/core/rules.js +0 -111
  199. package/packages/crud/column.vue +0 -205
  200. package/packages/crud/columnAction.vue +0 -207
  201. package/packages/crud/columnCell.vue +0 -146
  202. package/packages/crud/defaultColumn.vue +0 -130
  203. package/packages/crud/drawerColumn.vue +0 -225
  204. package/packages/crud/form.vue +0 -69
  205. package/packages/crud/index.vue +0 -564
  206. package/packages/crud/menuBar.vue +0 -298
  207. package/packages/crud/mixins/cacheHandler.js +0 -36
  208. package/packages/crud/mixins/calcColumnWidth.js +0 -79
  209. package/packages/crud/mixins/calcHeight.js +0 -105
  210. package/packages/crud/mixins/columnHandler.js +0 -128
  211. package/packages/crud/mixins/contextMenu.js +0 -98
  212. package/packages/crud/mixins/dataProcessor.js +0 -202
  213. package/packages/crud/mixins/dialog.js +0 -109
  214. package/packages/crud/mixins/excelHandler.js +0 -150
  215. package/packages/crud/mixins/exposeMethods.js +0 -107
  216. package/packages/crud/mixins/generateDynamicColumns.js +0 -250
  217. package/packages/crud/mixins/props.js +0 -38
  218. package/packages/crud/mixins/searchHandler.js +0 -151
  219. package/packages/crud/mixins/select.js +0 -359
  220. package/packages/crud/mixins/spanMethod.js +0 -288
  221. package/packages/crud/mixins/summary.js +0 -177
  222. package/packages/crud/mixins/tableEdit.js +0 -547
  223. package/packages/crud/mixins/validate.js +0 -219
  224. package/packages/crud/pagination.vue +0 -110
  225. package/packages/crud/search.vue +0 -119
  226. package/packages/crud/searchHeader.vue +0 -231
  227. package/packages/crud/selectBanner.vue +0 -138
  228. package/packages/crud/utils/EditState.js +0 -319
  229. package/packages/crud/utils/excelExport.js +0 -112
  230. package/packages/crud/utils/excelImport.js +0 -112
  231. package/packages/crud/utils/index.js +0 -98
  232. package/packages/dialog/dialog.js +0 -233
  233. package/packages/dialog/dialog.vue +0 -15
  234. package/packages/dialog/index.js +0 -22
  235. package/packages/dict/cascadeFormat.vue +0 -179
  236. package/packages/dict/dateFormat.vue +0 -40
  237. package/packages/dict/form/cascade.vue +0 -61
  238. package/packages/dict/form/checkbox.vue +0 -90
  239. package/packages/dict/form/extendMethod.js +0 -22
  240. package/packages/dict/form/input-base.js +0 -31
  241. package/packages/dict/form/input.js +0 -20
  242. package/packages/dict/form/radio.vue +0 -69
  243. package/packages/dict/form/select.vue +0 -118
  244. package/packages/dict/form/switch.vue +0 -75
  245. package/packages/dict/valueFormat.vue +0 -188
  246. package/packages/directive/dialog/drag.js +0 -86
  247. package/packages/directive/dialog/dragSize.js +0 -42
  248. package/packages/directive/index.js +0 -9
  249. package/packages/directive/insertSlot.js +0 -10
  250. package/packages/form/contextMenu.js +0 -192
  251. package/packages/form/draftDrawer.vue +0 -391
  252. package/packages/form/formAction.vue +0 -97
  253. package/packages/form/formItem.vue +0 -259
  254. package/packages/form/index.vue +0 -451
  255. package/packages/form/props.js +0 -15
  256. package/packages/grid/cell.vue +0 -65
  257. package/packages/grid/index.vue +0 -130
  258. package/packages/group/index.vue +0 -96
  259. package/packages/tabs/index.vue +0 -290
  260. package/packages/tooltip/index.js +0 -9
  261. package/packages/tooltip/tooltip.vue +0 -32
  262. package/packages/tooltip/tooltipComponent.js +0 -38
  263. package/packages/verifyInput/index.vue +0 -131
  264. package/styles/button.scss +0 -3
  265. package/styles/crud.scss +0 -425
  266. package/styles/dialog.scss +0 -95
  267. package/styles/form.scss +0 -532
  268. package/styles/group.scss +0 -78
  269. package/styles/index.scss +0 -94
  270. package/styles/tabs.scss +0 -139
  271. package/styles/verifyInput.scss +0 -56
  272. package/vue-jsx-sync.js +0 -90
  273. package/vue.config.js +0 -54
@@ -1,97 +0,0 @@
1
- <template>
2
- <component
3
- v-if="showAction"
4
- :class="b([action.align])"
5
- :is="layoutCell"
6
- :widthSize="widthSize"
7
- >
8
- <el-form-item label-width="0px">
9
- <button_
10
- v-for="(item, index) in formActionButtons"
11
- :key="index"
12
- :size="formCtx.formOptions.size"
13
- :loading="formCtx.loadingStatus"
14
- :scope="scope"
15
- v-bind="item"
16
- ></button_>
17
- </el-form-item>
18
- </component>
19
- </template>
20
-
21
- <script>
22
- import create from "core/create";
23
- import { batchMerge } from "utils/mergeTemp";
24
- import Cell from "../grid/cell.vue";
25
- import button_ from "pak/button";
26
- import { checkVisibility } from "utils";
27
- export default create({
28
- name: "form-action",
29
- inject: ["formCtx"],
30
- components: { Cell, button_ },
31
- computed: {
32
- showAction() {
33
- return checkVisibility(
34
- this.action,
35
- null,
36
- this.formActionButtons.length > 0
37
- );
38
- },
39
- action() {
40
- return this.formCtx.formOptions.action;
41
- },
42
- scope() {
43
- return {
44
- ctx: this.formCtx,
45
- row: this.formCtx.value,
46
- };
47
- },
48
- layoutCell() {
49
- if (this.formCtx.formOptions.layout === "grid") {
50
- return "cell";
51
- }
52
- if (this.formCtx.formOptions.layout === "el-row") {
53
- return "el-col";
54
- }
55
- },
56
- widthSize() {
57
- if (this.action.widthSize) {
58
- return this.action.widthSize;
59
- }
60
- if (this.action.fill !== false) {
61
- return this.formCtx.formOptions.columns;
62
- }
63
- return 1;
64
- },
65
- formActionButtons() {
66
- const action = this.action;
67
- const buttons = [];
68
- const merges = batchMerge(
69
- "btn.form",
70
- action,
71
- {
72
- ctx: this.formCtx,
73
- row: this.formCtx.value,
74
- },
75
- this.formActionTemps
76
- );
77
- buttons.push(...merges);
78
- return buttons;
79
- },
80
- formActionTemps() {
81
- return {
82
- submit: (item, { ctx }) => ({
83
- label: "提交",
84
- icon: "el-icon-check",
85
- type: "primary",
86
- onClick: this.formCtx.submit,
87
- }),
88
- reset: (item, { ctx }) => ({
89
- icon: "el-icon-refresh",
90
- label: "重置",
91
- onClick: this.formCtx.reset,
92
- }),
93
- };
94
- },
95
- },
96
- });
97
- </script>
@@ -1,259 +0,0 @@
1
- <script>
2
- import { create } from "core";
3
- import { omit } from "lodash-es";
4
- import grid from "../grid/index.vue";
5
- import cell from "pak/grid/cell.vue";
6
- import formItem from "./formItem";
7
- import position from "core/components/position";
8
- import Render from "core/components/render";
9
- import tooltip from "../tooltip/tooltip.vue";
10
- import { generateRules } from "core";
11
- export default create({
12
- name: "form-item",
13
- props: {
14
- col: Object,
15
- isFirstRow: Boolean,
16
- },
17
- inject: ["formCtx", "elForm"],
18
- provide() {
19
- return this.provide;
20
- },
21
- components: {
22
- cell,
23
- grid,
24
- formItem,
25
- },
26
- data() {
27
- return {};
28
- },
29
- created() {
30
- this.formCtx.$on("handleChild", (method, prop, params) => {
31
- if (!method) return;
32
- if (prop) {
33
- if (prop !== this.item.prop) return;
34
- if (!this[method])
35
- return console.error(`不存在方法${method},prop-${this.item.prop}`);
36
- this[method](params);
37
- } else {
38
- this[method](params);
39
- }
40
- });
41
- },
42
- methods: {
43
- resetField(isCondition) {
44
- const config = this.getComponentConfig();
45
- if (isCondition && (config?.disabled || this.disabled)) {
46
- return;
47
- }
48
- this.$refs.formItem?.resetField();
49
- },
50
- getComponentConfig(callBack) {
51
- const config = this.$refs.render?.getComponentConfig();
52
- callBack && callBack(config);
53
- return config;
54
- },
55
- },
56
- watch: {
57
- isDetail() {
58
- // 改变模式时,重置form,刷新item组件的provide
59
- this.formCtx.refreshForm();
60
- },
61
- },
62
- computed: {
63
- provide() {
64
- // 控制子组件单个禁用
65
- if (this.isDetail) {
66
- return {
67
- elForm: {
68
- ...this.elForm,
69
- disabled: true,
70
- },
71
- };
72
- }
73
- },
74
- disabled() {
75
- return this.isDetail || this.item.disabled || this.elForm?.disabled;
76
- },
77
- isDetail() {
78
- if (this.col.isDetail === false) return false;
79
- return this.formCtx.isDetail || this.col.detail;
80
- },
81
- item() {
82
- if (this.isDetail) {
83
- return this.col.detail || this.col;
84
- }
85
- return this.col;
86
- },
87
- formOptions() {
88
- return this.formCtx.formOptions;
89
- },
90
- generateRules() {
91
- return generateRules(this.item, this.formCtx.formScope);
92
- },
93
- rules() {
94
- return this.generateRules.rules;
95
- },
96
- rawRules() {
97
- return this.generateRules.rawRules;
98
- },
99
- mode() {
100
- return this.item.mode || this.formOptions.mode;
101
- },
102
-
103
- labelOverTip() {
104
- return (
105
- this.formCtx.formOptions.labelOverTip ||
106
- this.formCtx.formOptions.labelOverTip === "" ||
107
- this.item.labelOverTip
108
- );
109
- },
110
- className() {
111
- const names = [];
112
- // 标签隐藏
113
- if (this.formOptions.hiddenLabel || this.item.hiddenLabel) {
114
- names.push("hidden-label");
115
- }
116
- // 标签粗细
117
- if (this.formCtx.isBorder || this.formOptions.shrinkLabel) {
118
- names.push("shrink-label");
119
- }
120
- if (this.hasFormChildren) {
121
- names.push("has-form-children");
122
- }
123
- if (this.item.class) {
124
- names.push(this.item.class);
125
- }
126
- if (this.rules.required) names.push("is-required");
127
- if (this.isDetail) names.push("is-detail");
128
- if (this.isFirstRow) names.push("is-first-row");
129
- return names;
130
- },
131
- hasFormChildren() {
132
- return this.item.formItems && Array.isArray(this.item.formItems);
133
- },
134
- },
135
- render(h) {
136
- const cellRender = () => {
137
- if (this.hasFormChildren) {
138
- return (
139
- <this.formOptions.layout
140
- columns={this.item.columns || this.item.formItems.length}
141
- props={this.item}
142
- >
143
- {this.item.formItems.map((item) => {
144
- item.hiddenLabel = true;
145
- return <formItem item={item} props={item} />;
146
- })}
147
- </this.formOptions.layout>
148
- );
149
- }
150
- return (
151
- <tooltip
152
- hide={!this.item.contentTip}
153
- content={
154
- typeof this.item.contentTip === "string"
155
- ? this.item.contentTip
156
- : this.formCtx.value[this.item.prop]
157
- }
158
- >
159
- <Render
160
- ref="render"
161
- value={this.formCtx.value[this.item.prop]}
162
- onInput={(e) => {
163
- this.$set(this.formCtx.value, this.item.prop, e);
164
- }}
165
- props={this.item}
166
- item={this.item}
167
- slots={this.formCtx.slots}
168
- mode={this.formOptions.mode}
169
- scope={this.formCtx.formScope}
170
- size={this.formOptions.size}
171
- rawRules={this.rawRules}
172
- defaultRender={this.formOptions.defaultRender}
173
- controlDefault={(defaultRender, scope) => {
174
- if (
175
- this.item.formatter ||
176
- this.formCtx.isDetail ||
177
- this.item.detail
178
- ) {
179
- return (h, scope) => defaultRender.formatter(h, scope, true);
180
- }
181
- return defaultRender.input;
182
- }}
183
- ></Render>
184
- </tooltip>
185
- );
186
- };
187
- const labelRender = () => {
188
- const labelVNode = (
189
- <tooltip
190
- hide={!this.labelOverTip}
191
- content={
192
- typeof this.item.labelOverTip === "string"
193
- ? this.item.labelOverTip
194
- : this.item.label
195
- }
196
- overflow={true}
197
- >
198
- <position
199
- class="form-label"
200
- ellipsis={this.labelOverTip ? true : false}
201
- slotName={this.item.prop}
202
- slotSuffixes={this.mode ? [this.mode, "label"] : ["label"]}
203
- render={this.item.labelRender}
204
- slots={this.formCtx.slots}
205
- scope={this.formCtx.formScope}
206
- >
207
- {this.item.label}
208
- </position>
209
- </tooltip>
210
- );
211
- const hasTooltip =
212
- this.item.tooltip ||
213
- this.item.tooltipRender ||
214
- this.formCtx.slots[`${this.item.prop}-tooltip`];
215
- const tooltipVNode = (
216
- <el-tooltip effect="dark" placement="top">
217
- <position
218
- slot="content"
219
- slotName={this.item.prop}
220
- slotSuffixes={this.mode ? [this.mode, "tooltip"] : ["tooltip"]}
221
- render={this.item.tooltipRender}
222
- slots={this.formCtx.slots}
223
- scope={this.formCtx.formScope}
224
- >
225
- {this.item.tooltip}
226
- </position>
227
- <i class="el-icon-question" />
228
- </el-tooltip>
229
- );
230
- return (
231
- <span>
232
- {labelVNode} {hasTooltip ? tooltipVNode : null}
233
- </span>
234
- );
235
- };
236
- return (
237
- <this.formCtx.layoutCell props={this.item} attrs={this.item}>
238
- <el-form-item
239
- class={this.className}
240
- style={{
241
- "--label-width": this.item.labelWidth,
242
- }}
243
- ref="formItem"
244
- label={this.item.label}
245
- label-width={this.item.labelWidth}
246
- size={this.formOptions.size}
247
- prop={this.item.validateProp || this.item.prop}
248
- rules={this.rules}
249
- scopedSlots={{
250
- label: labelRender,
251
- }}
252
- >
253
- {cellRender()}
254
- </el-form-item>
255
- </this.formCtx.layoutCell>
256
- );
257
- },
258
- });
259
- </script>