vue-super-crud 1.7.1 → 1.7.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 (269) 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/.browserslistrc +0 -3
  6. package/.versionrc.json +0 -36
  7. package/CHANGELOG.md +0 -232
  8. package/babel.config.js +0 -12
  9. package/build/alias.js +0 -10
  10. package/build/build.js +0 -52
  11. package/build/config.js +0 -70
  12. package/deploy.bat +0 -14
  13. package/docs/.vuepress/components/button/base.vue +0 -88
  14. package/docs/.vuepress/components/common/code-format.vue +0 -331
  15. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/base.vue +0 -68
  16. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/customParams.vue +0 -73
  17. package/docs/.vuepress/components/commonConfig/renderType/component.vue +0 -160
  18. package/docs/.vuepress/components/commonConfig/renderType/formatter.vue +0 -49
  19. package/docs/.vuepress/components/commonConfig/renderType/render.vue +0 -91
  20. package/docs/.vuepress/components/commonConfig/renderType/slot.vue +0 -63
  21. package/docs/.vuepress/components/crud/baseUse/baseUse.vue +0 -98
  22. package/docs/.vuepress/components/crud/baseUse/columnAction.vue +0 -72
  23. package/docs/.vuepress/components/crud/baseUse/columnWidth.vue +0 -107
  24. package/docs/.vuepress/components/crud/baseUse/handleRow.vue +0 -65
  25. package/docs/.vuepress/components/crud/baseUse/height.vue +0 -82
  26. package/docs/.vuepress/components/crud/baseUse/index.vue +0 -54
  27. package/docs/.vuepress/components/crud/baseUse/loading.vue +0 -70
  28. package/docs/.vuepress/components/crud/baseUse/pagination.vue +0 -108
  29. package/docs/.vuepress/components/crud/baseUse/selection.vue +0 -114
  30. package/docs/.vuepress/components/crud/baseUse/summaryMethod.vue +0 -118
  31. package/docs/.vuepress/components/crud/baseUse/title.vue +0 -54
  32. package/docs/.vuepress/components/crud/baseUse/toolbar.vue +0 -69
  33. package/docs/.vuepress/components/crud/buttons/common.vue +0 -115
  34. package/docs/.vuepress/components/crud/buttons/fast.vue +0 -82
  35. package/docs/.vuepress/components/crud/contextMenu/base.vue +0 -72
  36. package/docs/.vuepress/components/crud/copy.vue +0 -52
  37. package/docs/.vuepress/components/crud/crudEvents/api.vue +0 -157
  38. package/docs/.vuepress/components/crud/crudEvents/deleteTip.vue +0 -93
  39. package/docs/.vuepress/components/crud/crudEvents/events.vue +0 -188
  40. package/docs/.vuepress/components/crud/dataSort/base.vue +0 -142
  41. package/docs/.vuepress/components/crud/genDynamicColumns/base.vue +0 -53
  42. package/docs/.vuepress/components/crud/genDynamicColumns/dynamicAndFixed.vue +0 -111
  43. package/docs/.vuepress/components/crud/genDynamicColumns/treeDynamic.vue +0 -68
  44. package/docs/.vuepress/components/crud/handleBar/handleRow.vue +0 -65
  45. package/docs/.vuepress/components/crud/handleBar/toolbar.vue +0 -69
  46. package/docs/.vuepress/components/crud/renderType/1.vue +0 -57
  47. package/docs/.vuepress/components/crud/renderType/2.vue +0 -63
  48. package/docs/.vuepress/components/crud/renderType/3.vue +0 -105
  49. package/docs/.vuepress/components/crud/renderType/5.vue +0 -91
  50. package/docs/.vuepress/components/crud/search/1.vue +0 -90
  51. package/docs/.vuepress/components/crud/search/2.vue +0 -78
  52. package/docs/.vuepress/components/crud/search/3.vue +0 -107
  53. package/docs/.vuepress/components/crud/search/base.vue +0 -123
  54. package/docs/.vuepress/components/crud/search/localSearch.vue +0 -124
  55. package/docs/.vuepress/components/crud/search/special.vue +0 -148
  56. package/docs/.vuepress/components/crud/selection/events.vue +0 -47
  57. package/docs/.vuepress/components/crud/selection/pagination.vue +0 -94
  58. package/docs/.vuepress/components/crud/selection/singleSelection.vue +0 -64
  59. package/docs/.vuepress/components/crud/span/base.vue +0 -69
  60. package/docs/.vuepress/components/crud/span/special.vue +0 -75
  61. package/docs/.vuepress/components/crud/summary/base.vue +0 -99
  62. package/docs/.vuepress/components/crud/tableEdit/addDeleteBtn.vue +0 -174
  63. package/docs/.vuepress/components/crud/tableEdit/cellEdit.vue +0 -194
  64. package/docs/.vuepress/components/crud/tableEdit/controlEdit.vue +0 -219
  65. package/docs/.vuepress/components/crud/tableEdit/dialog.vue +0 -172
  66. package/docs/.vuepress/components/crud/tableEdit/free.vue +0 -88
  67. package/docs/.vuepress/components/crud/tableEdit/freeColumn.vue +0 -82
  68. package/docs/.vuepress/components/crud/tableEdit/methods.vue +0 -154
  69. package/docs/.vuepress/components/crud/tableEdit/rowAction.vue +0 -107
  70. package/docs/.vuepress/components/crud/tableEdit/rowBatch.vue +0 -116
  71. package/docs/.vuepress/components/crud/tableEdit/rowClick.vue +0 -98
  72. package/docs/.vuepress/components/crud/validate/base.vue +0 -122
  73. package/docs/.vuepress/components/crud/validate/custom.vue +0 -82
  74. package/docs/.vuepress/components/crud/validate/regulars.vue +0 -88
  75. package/docs/.vuepress/components/crud/validate/relation.vue +0 -91
  76. package/docs/.vuepress/components/crud/validate/tree.vue +0 -82
  77. package/docs/.vuepress/components/dialog/baseUse/base.vue +0 -92
  78. package/docs/.vuepress/components/dialog/baseUse/beforeConfirm.vue +0 -78
  79. package/docs/.vuepress/components/dialog/baseUse/control.vue +0 -79
  80. package/docs/.vuepress/components/dialog/baseUse/drawer.vue +0 -59
  81. package/docs/.vuepress/components/dialog/baseUse/footer.vue +0 -87
  82. package/docs/.vuepress/components/dialog/baseUse/insertSlot.vue +0 -79
  83. package/docs/.vuepress/components/dict/DictLinkage.vue +0 -91
  84. package/docs/.vuepress/components/dict/baseUse.vue +0 -72
  85. package/docs/.vuepress/components/dict/component.vue +0 -82
  86. package/docs/.vuepress/components/dict/localDict.vue +0 -68
  87. package/docs/.vuepress/components/form/baseUse/base.vue +0 -48
  88. package/docs/.vuepress/components/form/baseUse/dataFormat.vue +0 -92
  89. package/docs/.vuepress/components/form/baseUse/deep.vue +0 -57
  90. package/docs/.vuepress/components/form/baseUse/gridLayout.vue +0 -47
  91. package/docs/.vuepress/components/form/baseUse/group.vue +0 -66
  92. package/docs/.vuepress/components/form/baseUse/hidden.vue +0 -40
  93. package/docs/.vuepress/components/form/baseUse/inlineLayout.vue +0 -48
  94. package/docs/.vuepress/components/form/baseUse/label.vue +0 -51
  95. package/docs/.vuepress/components/form/baseUse/tooltip.vue +0 -40
  96. package/docs/.vuepress/components/form/baseUse/validate.vue +0 -52
  97. package/docs/.vuepress/components/form/detail/base.vue +0 -78
  98. package/docs/.vuepress/components/form/detail/border.vue +0 -90
  99. package/docs/.vuepress/components/form/detail/singleDetail.vue +0 -72
  100. package/docs/.vuepress/components/formatData/baseUse.vue +0 -131
  101. package/docs/.vuepress/components/mock/index.js +0 -347
  102. package/docs/.vuepress/components/mockData/custom.vue +0 -69
  103. package/docs/.vuepress/components/mockData/example.vue +0 -290
  104. package/docs/.vuepress/components/positionSlot/base.vue +0 -24
  105. package/docs/.vuepress/components/positionSlot/form.vue +0 -71
  106. package/docs/.vuepress/components/positionSlot/table.vue +0 -85
  107. package/docs/.vuepress/components/tabs/base.vue +0 -57
  108. package/docs/.vuepress/components/temp.js +0 -195
  109. package/docs/.vuepress/config.js +0 -146
  110. package/docs/.vuepress/enhanceApp.js +0 -142
  111. package/docs/.vuepress/public/favicon.ico +0 -0
  112. package/docs/.vuepress/public/super.png +0 -0
  113. package/docs/.vuepress/styles/index.styl +0 -25
  114. package/docs/.vuepress/styles/palette.styl +0 -6
  115. package/docs/README.md +0 -14
  116. package/docs/guide/button/base.md +0 -31
  117. package/docs/guide/commonConfig/jsx.md +0 -166
  118. package/docs/guide/commonConfig/presetCodeTemplate.md +0 -68
  119. package/docs/guide/commonConfig/renderType.md +0 -181
  120. package/docs/guide/crud/baseUse.md +0 -120
  121. package/docs/guide/crud/buttons.md +0 -18
  122. package/docs/guide/crud/config.md +0 -217
  123. package/docs/guide/crud/contextMenu.md +0 -18
  124. package/docs/guide/crud/dataSort.md +0 -66
  125. package/docs/guide/crud/genDynamicColumns.md +0 -145
  126. package/docs/guide/crud/handleBar.md +0 -26
  127. package/docs/guide/crud/renderType.md +0 -4
  128. package/docs/guide/crud/search.md +0 -150
  129. package/docs/guide/crud/selection.md +0 -73
  130. package/docs/guide/crud/span.md +0 -98
  131. package/docs/guide/crud/summary.md +0 -167
  132. package/docs/guide/crud/tableEdit.md +0 -377
  133. package/docs/guide/crud/validate.md +0 -158
  134. package/docs/guide/dialog/baseUse.md +0 -81
  135. package/docs/guide/dict/baseUse.md +0 -174
  136. package/docs/guide/dict/component.md +0 -88
  137. package/docs/guide/dict/config.md +0 -44
  138. package/docs/guide/form/baseUse.md +0 -142
  139. package/docs/guide/form/detail.md +0 -38
  140. package/docs/guide/formatData/baseUse.md +0 -98
  141. package/docs/guide/formatData/config.md +0 -142
  142. package/docs/guide/mockData/base.md +0 -26
  143. package/docs/guide/positionSlot/base.md +0 -41
  144. package/docs/guide/question/base.md +0 -44
  145. package/docs/guide/start/base.md +0 -30
  146. package/docs/guide/tabs/base.md +0 -63
  147. package/examples/App.vue +0 -52
  148. package/examples/Layout/components/AppMain.vue +0 -40
  149. package/examples/Layout/components/Item.vue +0 -29
  150. package/examples/Layout/components/Link.vue +0 -44
  151. package/examples/Layout/components/SidebarItem.vue +0 -93
  152. package/examples/Layout/index.vue +0 -69
  153. package/examples/assets/logo.png +0 -0
  154. package/examples/favicon.ico +0 -0
  155. package/examples/index.html +0 -18
  156. package/examples/main.js +0 -54
  157. package/examples/router/index.js +0 -140
  158. package/examples/store/index.js +0 -0
  159. package/examples/styles/index.scss +0 -63
  160. package/examples/styles/sidebar.scss +0 -226
  161. package/examples/styles/transition.scss +0 -48
  162. package/examples/styles/variables.scss +0 -25
  163. package/examples/views/crud/base.vue +0 -68
  164. package/examples/views/crud/handleRow.vue +0 -84
  165. package/examples/views/crud/search.vue +0 -116
  166. package/examples/views/dashboard/index.vue +0 -244
  167. package/examples/views/dashboard/index1.vue +0 -234
  168. package/examples/views/dashboard/test.vue +0 -9
  169. package/examples/views/formTest/index.vue +0 -168
  170. package/examples/views/nested/menu1/index.vue +0 -7
  171. package/examples/views/nested/menu1/menu1-1/index.vue +0 -7
  172. package/examples/views/nested/menu1/menu1-2/index.vue +0 -7
  173. package/examples/views/nested/menu1/menu1-2/menu1-2-1/index.vue +0 -5
  174. package/examples/views/nested/menu1/menu1-2/menu1-2-2/index.vue +0 -5
  175. package/examples/views/nested/menu1/menu1-3/index.vue +0 -5
  176. package/examples/views/nested/menu2/index.vue +0 -5
  177. package/gulpfile.js +0 -84
  178. package/packages/button/index.vue +0 -189
  179. package/packages/core/components/comp.vue +0 -223
  180. package/packages/core/components/position.vue +0 -135
  181. package/packages/core/components/render.vue +0 -460
  182. package/packages/core/configManager.js +0 -302
  183. package/packages/core/create.js +0 -8
  184. package/packages/core/defaultRender.js +0 -64
  185. package/packages/core/dict/global.js +0 -10
  186. package/packages/core/dict/index.js +0 -432
  187. package/packages/core/dict/mixin.js +0 -94
  188. package/packages/core/event.js +0 -60
  189. package/packages/core/index.js +0 -6
  190. package/packages/core/init.js +0 -122
  191. package/packages/core/mock/genConfig.js +0 -228
  192. package/packages/core/mock/genData.js +0 -422
  193. package/packages/core/mock/index.js +0 -4
  194. package/packages/core/rules.js +0 -111
  195. package/packages/crud/column.vue +0 -205
  196. package/packages/crud/columnAction.vue +0 -207
  197. package/packages/crud/columnCell.vue +0 -146
  198. package/packages/crud/defaultColumn.vue +0 -130
  199. package/packages/crud/drawerColumn.vue +0 -225
  200. package/packages/crud/form.vue +0 -69
  201. package/packages/crud/index.vue +0 -564
  202. package/packages/crud/menuBar.vue +0 -298
  203. package/packages/crud/mixins/cacheHandler.js +0 -36
  204. package/packages/crud/mixins/calcColumnWidth.js +0 -79
  205. package/packages/crud/mixins/calcHeight.js +0 -105
  206. package/packages/crud/mixins/columnHandler.js +0 -128
  207. package/packages/crud/mixins/contextMenu.js +0 -98
  208. package/packages/crud/mixins/dataProcessor.js +0 -202
  209. package/packages/crud/mixins/dialog.js +0 -109
  210. package/packages/crud/mixins/excelHandler.js +0 -150
  211. package/packages/crud/mixins/exposeMethods.js +0 -107
  212. package/packages/crud/mixins/generateDynamicColumns.js +0 -250
  213. package/packages/crud/mixins/props.js +0 -38
  214. package/packages/crud/mixins/searchHandler.js +0 -151
  215. package/packages/crud/mixins/select.js +0 -359
  216. package/packages/crud/mixins/spanMethod.js +0 -288
  217. package/packages/crud/mixins/summary.js +0 -177
  218. package/packages/crud/mixins/tableEdit.js +0 -547
  219. package/packages/crud/mixins/validate.js +0 -219
  220. package/packages/crud/pagination.vue +0 -110
  221. package/packages/crud/search.vue +0 -119
  222. package/packages/crud/searchHeader.vue +0 -231
  223. package/packages/crud/selectBanner.vue +0 -138
  224. package/packages/crud/utils/EditState.js +0 -319
  225. package/packages/crud/utils/excelExport.js +0 -112
  226. package/packages/crud/utils/excelImport.js +0 -112
  227. package/packages/crud/utils/index.js +0 -98
  228. package/packages/dialog/dialog.js +0 -233
  229. package/packages/dialog/dialog.vue +0 -15
  230. package/packages/dialog/index.js +0 -22
  231. package/packages/dict/cascadeFormat.vue +0 -179
  232. package/packages/dict/dateFormat.vue +0 -40
  233. package/packages/dict/form/cascade.vue +0 -61
  234. package/packages/dict/form/checkbox.vue +0 -90
  235. package/packages/dict/form/extendMethod.js +0 -22
  236. package/packages/dict/form/input-base.js +0 -31
  237. package/packages/dict/form/input.js +0 -20
  238. package/packages/dict/form/radio.vue +0 -69
  239. package/packages/dict/form/select.vue +0 -118
  240. package/packages/dict/form/switch.vue +0 -75
  241. package/packages/dict/valueFormat.vue +0 -188
  242. package/packages/directive/dialog/drag.js +0 -86
  243. package/packages/directive/dialog/dragSize.js +0 -42
  244. package/packages/directive/index.js +0 -9
  245. package/packages/directive/insertSlot.js +0 -10
  246. package/packages/form/contextMenu.js +0 -192
  247. package/packages/form/draftDrawer.vue +0 -391
  248. package/packages/form/formAction.vue +0 -97
  249. package/packages/form/formItem.vue +0 -259
  250. package/packages/form/index.vue +0 -451
  251. package/packages/form/props.js +0 -15
  252. package/packages/grid/cell.vue +0 -65
  253. package/packages/grid/index.vue +0 -130
  254. package/packages/group/index.vue +0 -96
  255. package/packages/tabs/index.vue +0 -290
  256. package/packages/tooltip/index.js +0 -9
  257. package/packages/tooltip/tooltip.vue +0 -32
  258. package/packages/tooltip/tooltipComponent.js +0 -38
  259. package/packages/verifyInput/index.vue +0 -131
  260. package/styles/button.scss +0 -3
  261. package/styles/crud.scss +0 -425
  262. package/styles/dialog.scss +0 -95
  263. package/styles/form.scss +0 -532
  264. package/styles/group.scss +0 -78
  265. package/styles/index.scss +0 -94
  266. package/styles/tabs.scss +0 -139
  267. package/styles/verifyInput.scss +0 -56
  268. package/vue-jsx-sync.js +0 -90
  269. package/vue.config.js +0 -54
@@ -1,302 +0,0 @@
1
- import {
2
- cloneDeep,
3
- merge,
4
- get,
5
- set,
6
- isPlainObject,
7
- isFunction,
8
- } from "lodash-es";
9
- import { mergeTemp, getObjectType } from "utils";
10
-
11
- /**
12
- * 配置管理器
13
- */
14
- class ConfigManager {
15
- constructor(defaultConfigs = {}, globalConfigs = {}, options = {}) {
16
- this.excludeKeys = options.excludeKeys || [];
17
- this.defaultConfigs = defaultConfigs;
18
- this.globalConfigs = globalConfigs;
19
- }
20
- /**
21
- * 获取预设配置
22
- */
23
- getPresetConfig(userConfig) {
24
- const presetName = userConfig.presetType;
25
- return presetName
26
- ? mergeTemp("options", presetName, userConfig)
27
- : userConfig;
28
- }
29
-
30
- getDefaultConfig(key) {
31
- return cloneDeep(this.defaultConfigs[key]) || {};
32
- }
33
-
34
- getGlobalConfig(key) {
35
- return (
36
- cloneDeep({
37
- size: this.globalConfigs.size,
38
- checkPermission:
39
- this.globalConfigs.checkPermission ||
40
- (() => {
41
- return true;
42
- }),
43
- ...this.globalConfigs[key],
44
- }) || {}
45
- );
46
- }
47
-
48
- /**
49
- * 转换配置对象
50
- */
51
- transformConfig(config, transforms) {
52
- const result = cloneDeep(config);
53
- if (this.excludeKeys.length > 0) {
54
- this.excludeKeys.forEach((key) => {
55
- delete result[key];
56
- });
57
- }
58
- if (!transforms) return result;
59
- const handleTransform = (source, key) => {
60
- for (const transform of transforms) {
61
- transform(source, key, source[key]);
62
- }
63
- // 如果值是对象,递归处理
64
- const value = source[key];
65
- if (isPlainObject(value)) {
66
- Object.keys(value).forEach((key) => {
67
- handleTransform(value, key, value[key]);
68
- });
69
- }
70
- };
71
-
72
- // 处理每个顶级属性
73
- Object.keys(result).forEach((key) => {
74
- handleTransform(result, key);
75
- });
76
- return result;
77
- }
78
- /**
79
- * 合并配置
80
- */
81
- mergeConfig(userConfig = {}, options = {}) {
82
- const { type = "", config = {} } = options;
83
-
84
- const defaultConfig = this.getDefaultConfig(type) || config;
85
- const globalConfig = this.getGlobalConfig(type) || {};
86
-
87
- userConfig = this.getPresetConfig(userConfig);
88
-
89
- const transformConfig = this.transformConfig(
90
- merge({}, globalConfig, userConfig),
91
- defaultConfig.transforms
92
- );
93
- const resultConfig = this.applyDefaults(
94
- transformConfig,
95
- defaultConfig.schema
96
- );
97
- // 验证配置
98
- this.validateConfig(resultConfig, {
99
- schema: defaultConfig.schema,
100
- strict: defaultConfig.strict,
101
- ignoreKeys: defaultConfig.ignoreKeys,
102
- type,
103
- });
104
-
105
- return resultConfig;
106
- }
107
-
108
- /**
109
- * 验证配置
110
- */
111
- validateConfig(config, options = {}) {
112
- const { schema, strict, ignoreKeys, type } = options;
113
- // 对schema对象进行严格校验
114
- if (strict) {
115
- const extraKeys = Object.keys(config).filter(
116
- (key) => !schema[key] && !(ignoreKeys || []).includes(key)
117
- );
118
- if (extraKeys.length > 0) {
119
- console.warn(
120
- `配置对象 ${type} 包含不存在的属性: ${extraKeys.join(", ")}`
121
- );
122
- }
123
- }
124
- const validate = (config, schema, path = "") => {
125
- for (const [key, definition] of Object.entries(schema)) {
126
- const value = get(config, key);
127
- const fullPath = path ? `${path}.${key}` : key;
128
- let def = definition;
129
- if (!isPlainObject(def)) {
130
- def = {
131
- type: def,
132
- };
133
- }
134
- if (value === undefined || value === null) {
135
- if (def.required) console.warn(`缺少必填配置项: "${fullPath}"`);
136
- } else {
137
- // 类型检查
138
- if (def.type) {
139
- const types = Array.isArray(def.type) ? def.type : [def.type];
140
-
141
- const valid = types.some((type) => {
142
- if (type === Boolean) return typeof value === "boolean";
143
- if (type === Function) return typeof value === "function";
144
- if (type === Object) return isPlainObject(value);
145
- if (type === Array) return Array.isArray(value);
146
- if (type === String) return typeof value === "string";
147
- if (type === Number) return typeof value === "number";
148
- if (type === Promise) return value instanceof Promise;
149
- if (type === RegExp) return value instanceof RegExp;
150
- if (type === Date) return value instanceof Date;
151
- return false;
152
- });
153
-
154
- if (!valid) {
155
- console.warn(
156
- `配置项 "${fullPath.replace(
157
- /\.arrayOf/g,
158
- ""
159
- )}" 类型错误: 期望类型为 ${types
160
- .map((t) => t.name)
161
- .join("|")}, 实际类型为 ${getObjectType(
162
- value
163
- )}, 值为 ${value}`
164
- );
165
- }
166
- }
167
-
168
- // 数组类型校验
169
- if (def.arrayOf && Array.isArray(value)) {
170
- value.forEach((item, index) => {
171
- const itemPath = `${fullPath}[${index}]`;
172
-
173
- if (isPlainObject(def.arrayOf)) {
174
- validate({ arrayOf: item }, { arrayOf: def.arrayOf }, itemPath);
175
- }
176
-
177
- if (isFunction(def.arrayOf.validate)) {
178
- try {
179
- def.arrayOf.validate(item);
180
- } catch (error) {
181
- console.warn(
182
- `数组项 "${itemPath}" 验证失败: ${error.message}, 值为 ${value}`
183
- );
184
- }
185
- }
186
- });
187
- }
188
-
189
- // 枚举值校验
190
- if (
191
- def.enum &&
192
- typeof value === "string" &&
193
- !def.enum.includes(value)
194
- ) {
195
- console.warn(
196
- `配置项 "${fullPath}" 的值无效: 必须是 ${def.enum.join(
197
- ", "
198
- )}, 当前值为 ${value}`
199
- );
200
- }
201
-
202
- // 自定义验证
203
- if (def.validator && !def.validator(value)) {
204
- console.warn(`配置项 "${fullPath}" 验证失败, 值为 ${value}`);
205
- }
206
-
207
- // 嵌套对象验证
208
- if (def.properties && isPlainObject(value)) {
209
- // 对象严格校验
210
- if (def.strict) {
211
- const extraKeys = Object.keys(value).filter(
212
- (k) => !def.properties[k] && !(def.ignoreKeys || []).includes(k)
213
- );
214
- if (extraKeys.length > 0) {
215
- console.warn(
216
- `配置项 "${fullPath}" 包含不存在的属性: ${extraKeys.join(
217
- ", "
218
- )}}`
219
- );
220
- }
221
- }
222
- validate(value, def.properties, fullPath);
223
- }
224
- }
225
- }
226
- };
227
- validate(config, schema);
228
- }
229
-
230
- /**
231
- * 应用默认值
232
- */
233
- applyDefaults(config, schema) {
234
- const result = cloneDeep(config);
235
-
236
- const applyDefaultsRecursive = (config, schema, basePath = "") => {
237
- for (const [key, definition] of Object.entries(schema)) {
238
- const fullPath = basePath ? `${basePath}.${key}` : key;
239
- const value = get(config, key);
240
-
241
- let def = definition;
242
- if (!isPlainObject(def)) {
243
- def = {
244
- type: def,
245
- };
246
- }
247
-
248
- if (def.default) {
249
- if (value === undefined) {
250
- const defaultValue = isFunction(definition.default)
251
- ? definition.default()
252
- : definition.default;
253
- defaultValue && set(result, fullPath, defaultValue);
254
- } else if (isPlainObject(value)) {
255
- // 值为对象类型与默认值合并
256
- const defaultValue = isFunction(definition.default)
257
- ? definition.default()
258
- : definition.default;
259
- if (isPlainObject(defaultValue)) {
260
- defaultValue &&
261
- set(result, fullPath, merge({}, defaultValue, value));
262
- }
263
- }
264
- }
265
-
266
- // 空字符串转换为 true
267
- if (def.type) {
268
- const types = Array.isArray(def.type) ? def.type : [def.type];
269
- if (types.includes(Boolean) && value === "") {
270
- set(result, fullPath, true);
271
- }
272
- }
273
-
274
- // 处理嵌套对象的属性
275
- if (def.properties) {
276
- const currentValue = get(result, fullPath) || {};
277
- if (isPlainObject(currentValue)) {
278
- applyDefaultsRecursive(currentValue, def.properties, fullPath);
279
- }
280
- }
281
- }
282
- };
283
-
284
- applyDefaultsRecursive(config, schema);
285
- return result;
286
- }
287
- }
288
-
289
- let instance = null;
290
-
291
- export default {
292
- create: (conf, gloConf) => {
293
- if (!instance) {
294
- instance = new ConfigManager(conf, gloConf);
295
- return instance;
296
- }
297
- return instance;
298
- },
299
- getInstance: () => instance,
300
- };
301
-
302
- export { ConfigManager };
@@ -1,8 +0,0 @@
1
- import bem from "utils/bem";
2
- export default function (sfc) {
3
- sfc.name = "sc-" + (sfc.name || "");
4
- sfc.mixins = sfc.mixins || [];
5
- sfc.mixins.push(bem);
6
- sfc.inheritAttrs = false;
7
- return sfc;
8
- }
@@ -1,64 +0,0 @@
1
- import tooltip from "../tooltip";
2
- export default {
3
- input: (h, { item, $value }) => {
4
- return h("el-input", {
5
- class: "sc-default-input",
6
- props: {
7
- value: $value.get,
8
- clearable: true,
9
- },
10
- attrs: {
11
- placeholder: `请输入${item.label}`,
12
- },
13
- on: {
14
- input: (v) => {
15
- $value.set(v);
16
- },
17
- },
18
- });
19
- },
20
- formatter: (h, { row, column, $index, item, $value }) => {
21
- let value = item.formatter
22
- ? typeof item.formatter === "function"
23
- ? item.formatter(row, column, $value.get, $index)
24
- : item.formatter
25
- : $value.get;
26
- let vm;
27
- const tooltipEvents = {
28
- mouseenter: (e) => {
29
- vm = tooltip({
30
- content: value + "",
31
- placement: "top",
32
- target: e.target,
33
- overflow: true,
34
- });
35
- vm.show();
36
- },
37
- mouseleave: (e) => {
38
- vm && vm.hide();
39
- },
40
- };
41
- if (item.suffix && value) value = value + " " + item.suffix;
42
- if (item.html) {
43
- return h("div", {
44
- class: "sc-default-formatter",
45
- domProps: {
46
- innerHTML: value,
47
- },
48
- style: {
49
- display: "inline",
50
- },
51
- on: tooltipEvents,
52
- });
53
- }
54
-
55
- return h(
56
- "div",
57
- {
58
- class: "sc-default-formatter",
59
- on: tooltipEvents,
60
- },
61
- value
62
- );
63
- },
64
- };
@@ -1,10 +0,0 @@
1
- import { DictManager } from "./index";
2
- import resolveTemp from "src/template";
3
- import { get } from "lodash-es";
4
-
5
- export default function (Vue, globalOpt) {
6
- const dictManager = new DictManager(Vue, globalOpt);
7
- const dicts = get(resolveTemp, "dicts");
8
- if (dicts) dictManager.registerBatch(dicts);
9
- return dictManager;
10
- }