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
package/build/build.js DELETED
@@ -1,52 +0,0 @@
1
- const merge = require("webpack-merge");
2
- const webpack = require("webpack");
3
- const { VueLoaderPlugin } = require("vue-loader");
4
- const ProgressBarPlugin = require("progress-bar-webpack-plugin");
5
- const alias = require("./alias");
6
- let config = require("./config");
7
- const path = require("path");
8
- const prd = process.env.TARGET;
9
- const isDev = prd === "dev";
10
-
11
- module.exports = merge(config, {
12
- resolve: {
13
- extensions: [".js", ".vue", ".json"],
14
- alias: alias,
15
- modules: [
16
- path.resolve(__dirname, "src"),
17
- path.resolve(__dirname, "packages"),
18
- "node_modules",
19
- ],
20
- },
21
- module: {
22
- rules: [
23
- {
24
- test: /\.css$/,
25
- use: ["css-loader"],
26
- },
27
- {
28
- test: /\.js$/,
29
- exclude: /node_modules/,
30
- loader: "babel-loader",
31
- options: {
32
- cacheDirectory: true, // 启用babel-loader缓存
33
- },
34
- },
35
- {
36
- test: /\.vue$/,
37
- exclude: /node_modules/,
38
- loader: "vue-loader",
39
- options: {
40
- preserveWhitespace: false,
41
- },
42
- },
43
- ],
44
- },
45
- plugins: [
46
- new VueLoaderPlugin(),
47
- new ProgressBarPlugin(),
48
- new webpack.LoaderOptionsPlugin({
49
- minimize: isDev ? false : true,
50
- }),
51
- ],
52
- });
package/build/config.js DELETED
@@ -1,70 +0,0 @@
1
- const path = require("path");
2
- const aliases = require("./alias");
3
- const prd = process.env.TARGET;
4
-
5
- const externals = {
6
- vue: {
7
- root: "Vue",
8
- commonjs2: "vue",
9
- commonjs: "vue",
10
- amd: "vue",
11
- },
12
- "element-ui": {
13
- root: "ELEMENT",
14
- commonjs2: "element-ui",
15
- commonjs: "element-ui",
16
- amd: "element-ui",
17
- },
18
- axios: "axios",
19
- mockjs: "mockjs",
20
- vuedraggable: "vuedraggable",
21
- };
22
- const resolve = (p) => {
23
- const base = p.split("/")[0];
24
- if (aliases[base]) {
25
- return path.resolve(aliases[base], p.slice(base.length + 1));
26
- } else {
27
- return path.resolve(__dirname, "../", p);
28
- }
29
- };
30
-
31
- const builds = {
32
- prod: {
33
- entry: resolve("src/index.js"),
34
- dest: resolve("lib"),
35
- filename: "super-crud.min.js",
36
- env: "production",
37
- externals: externals,
38
- },
39
- dev: {
40
- entry: resolve("src/index.js"),
41
- dest: resolve("lib"),
42
- filename: "super-crud.js",
43
- env: "development",
44
- externals: externals,
45
- },
46
- };
47
- function genConfig(name) {
48
- const opts = builds[name];
49
- const config = {
50
- entry: {
51
- app: [opts.entry],
52
- },
53
- output: {
54
- filename: opts.filename,
55
- path: opts.dest,
56
- chunkFilename: "[id].js",
57
- libraryExport: "default",
58
- libraryTarget: "umd",
59
- library: "super-crud",
60
- umdNamedDefine: true,
61
- globalObject: "this",
62
- },
63
- externals: opts.externals,
64
- devtool: name === "dev" ? "cheap-module-eval-source-map" : false,
65
- };
66
- config.mode = builds[name].env;
67
- return config;
68
- }
69
-
70
- module.exports = genConfig(prd || "prod");
package/deploy.bat DELETED
@@ -1,14 +0,0 @@
1
- @echo off
2
- call npm run docs:build
3
-
4
- pushd docs\.vuepress\dist
5
-
6
- git init
7
- git add -A
8
- git commit -m "deploy"
9
-
10
- git push -f git@github.com:Blade-H1kar1/vue-super-crud.git master:gh-pages
11
-
12
- popd
13
-
14
- rmdir /s /q docs\.vuepress\dist
@@ -1,88 +0,0 @@
1
- <template>
2
- <div>
3
- <!-- 基础按钮 -->
4
- <sc-button @click="handleClick">基础</sc-button>
5
-
6
- <!-- 下拉菜单按钮 -->
7
- <sc-button
8
- type="primary"
9
- label="下拉按钮"
10
- :children="[
11
- {
12
- label: '编辑',
13
- onClick: handleClick,
14
- },
15
- {
16
- label: '删除',
17
- onClick: handleClick,
18
- confirm: true,
19
- type: 'danger',
20
- },
21
- ]"
22
- />
23
-
24
- <!-- 带输入框的提交 -->
25
- <sc-button
26
- type="warning"
27
- label="文本提交"
28
- :textSubmit="{
29
- title: '驳回原因',
30
- label: '驳回原因',
31
- rows: 4, // 默认值
32
- required: true, // 默认值
33
- }"
34
- @click="handleReject"
35
- />
36
-
37
- <!-- 带确认框的按钮 -->
38
- <sc-button
39
- type="danger"
40
- label="确认操作"
41
- confirm="确认操作"
42
- @click="handleClick"
43
- />
44
-
45
- <!-- 使用对象配置确认框 -->
46
- <sc-button
47
- type="warning"
48
- label="对象配置确认框"
49
- :confirm="{
50
- title: '对象配置确认框',
51
- label: '确定要执行此操作吗?',
52
- confirmButtonText: '通过',
53
- cancelButtonText: '拒绝',
54
- type: 'warning',
55
- }"
56
- @click="handleClick"
57
- />
58
-
59
- <!-- 带自定义确认框的按钮 -->
60
- <sc-button
61
- type="warning"
62
- label="自定义确认框"
63
- :customConfirm="{
64
- title: '自定义确认框',
65
- label: '确定要执行此操作吗?',
66
- content: renderContent,
67
- }"
68
- @click="handleClick"
69
- />
70
- </div>
71
- </template>
72
-
73
- <script>
74
- export default {
75
- methods: {
76
- handleClick() {
77
- console.log("click");
78
- },
79
- handleReject(cb, reason) {
80
- console.log("驳回原因:", cb, reason);
81
- cb(); // 完成后调用回调
82
- },
83
- renderContent(h) {
84
- return <div>111</div>;
85
- },
86
- },
87
- };
88
- </script>
@@ -1,331 +0,0 @@
1
- <template>
2
- <div
3
- class="code-format"
4
- :class="{ hover: hovering }"
5
- @mouseenter="hovering = true"
6
- @mouseleave="hovering = false"
7
- >
8
- <div class="source" :class="{ source_height: sourceHeight }">
9
- <slot name="source"></slot>
10
- </div>
11
- <div class="meta" ref="meta">
12
- <div class="description" v-if="$slots.desc">
13
- <slot name="desc"></slot>
14
- </div>
15
- <div class="highlight">
16
- <slot></slot>
17
- </div>
18
- </div>
19
- <div
20
- class="code-format-control"
21
- ref="control"
22
- :class="{ 'is-fixed': fixedControl }"
23
- @click="isExpanded = !isExpanded"
24
- >
25
- <transition name="arrow-slide">
26
- <i :class="[iconClass, { hovering: hovering }]"></i>
27
- </transition>
28
- <transition name="text-slide">
29
- <span v-show="hovering">{{ controlText }}</span>
30
- </transition>
31
- <div class="control-button-container">
32
- <el-button
33
- v-show="isExpanded"
34
- ref="copyButton"
35
- size="small"
36
- type="text"
37
- class="control-button copy-button"
38
- @click.stop="copyCode"
39
- >复制代码</el-button
40
- >
41
- </div>
42
- </div>
43
- </div>
44
- </template>
45
-
46
- <script>
47
- export default {
48
- name: "CodeFormat",
49
- props: {
50
- sourceHeight: {
51
- type: Boolean,
52
- default: false,
53
- },
54
- },
55
- data() {
56
- return {
57
- qrCodeDialog: false,
58
- hovering: false,
59
- isExpanded: false,
60
- fixedControl: false,
61
- scrollParent: null,
62
- currentWidth: 0,
63
- };
64
- },
65
- computed: {
66
- lang() {
67
- return this.$route.path.split("/")[1];
68
- },
69
- iconClass() {
70
- return this.isExpanded ? "el-icon-caret-top" : "el-icon-caret-bottom";
71
- },
72
- controlText() {
73
- return this.isExpanded ? "隐藏代码" : "显示代码";
74
- },
75
- codeArea() {
76
- return this.$el.getElementsByClassName("meta")[0];
77
- },
78
- },
79
- watch: {
80
- isExpanded(val) {
81
- this.setCodeAreaHeight();
82
- if (!val) {
83
- this.fixedControl = false;
84
- // this.$refs.control.style.left = '0'
85
- this.removeScrollHandler();
86
- return;
87
- }
88
- setTimeout(() => {
89
- this.scrollParent = window;
90
- this.scrollParent &&
91
- this.scrollParent.addEventListener("scroll", this.scrollHandler);
92
- this.scrollHandler();
93
- this.setFixedWidth();
94
- }, 200);
95
- },
96
- },
97
- mounted() {
98
- const observer = new ResizeObserver(() => {
99
- this.currentWidth = Math.round(this.$el.getBoundingClientRect().width);
100
- });
101
- observer.observe(this.$el);
102
- },
103
- beforeDestroy() {
104
- this.removeScrollHandler();
105
- },
106
- methods: {
107
- setFixedWidth() {
108
- this.$el.querySelector(
109
- ".code-format-control"
110
- ).style.width = `${this.currentWidth}px`;
111
- },
112
- getCodeAreaHeight() {
113
- if (this.$el.getElementsByClassName("description").length > 0) {
114
- return (
115
- this.$el.getElementsByClassName("description")[0].clientHeight +
116
- this.$el.getElementsByClassName("highlight")[0].clientHeight +
117
- 20
118
- );
119
- }
120
- return this.$el.getElementsByClassName("highlight")[0].clientHeight;
121
- },
122
- setCodeAreaHeight() {
123
- this.codeArea.style.height = this.isExpanded
124
- ? `${this.getCodeAreaHeight() + 1}px`
125
- : "0";
126
- },
127
- copyCode() {
128
- const pre = this.$el.querySelectorAll("pre")[0];
129
- pre.setAttribute("contenteditable", "true");
130
- pre.focus();
131
- document.execCommand("selectAll", false, null);
132
- const copied = document.execCommand("copy");
133
- if (copied) {
134
- pre.removeAttribute("contenteditable");
135
- this.$message.success("复制成功!");
136
- } else {
137
- this.$message.error("复制失败!");
138
- }
139
- },
140
- scrollHandler() {
141
- const { top, bottom, left } = this.$refs.meta.getBoundingClientRect();
142
- this.fixedControl =
143
- bottom > document.documentElement.clientHeight &&
144
- top + 44 <= document.documentElement.clientHeight;
145
- // this.$refs.control.style.left = this.fixedControl ? `${left}px` : '0'
146
- },
147
- removeScrollHandler() {
148
- this.scrollParent &&
149
- this.scrollParent.removeEventListener("scroll", this.scrollHandler);
150
- },
151
- },
152
- };
153
- </script>
154
- <style lang="scss">
155
- .code-format {
156
- border: solid 1px #ebebeb;
157
- border-radius: 3px;
158
- transition: 0.2s;
159
- &.hover {
160
- box-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6),
161
- 0 2px 4px 0 rgba(232, 237, 250, 0.5);
162
- }
163
- code {
164
- font-family: Menlo, Monaco, Consolas, Courier, monospace;
165
- }
166
- .demo-button {
167
- float: right;
168
- }
169
- .source {
170
- padding: 15px;
171
- }
172
- .source_height {
173
- height: 600px;
174
- }
175
- .meta {
176
- background-color: #fafafa;
177
- border-top: solid 1px #eaeefb;
178
- overflow: hidden;
179
- height: 0;
180
- transition: height 0.5s;
181
- }
182
- .description {
183
- padding: 20px;
184
- box-sizing: border-box;
185
- border: solid 1px #ebebeb;
186
- border-radius: 3px;
187
- font-size: 14px;
188
- line-height: 22px;
189
- color: #666;
190
- word-break: break-word;
191
- margin: 10px !important;
192
- background-color: #fff;
193
- p {
194
- margin: 0;
195
- line-height: 26px;
196
- }
197
- code {
198
- color: #5e6d82;
199
- background-color: #e6effb;
200
- margin: 0 4px;
201
- display: inline-block;
202
- padding: 1px 5px;
203
- font-size: 12px;
204
- border-radius: 3px;
205
- height: 18px;
206
- line-height: 18px;
207
- }
208
- }
209
- .highlight {
210
- pre {
211
- margin: 0;
212
- }
213
- code.hljs {
214
- margin: 0;
215
- border: none;
216
- max-height: none;
217
- border-radius: 0;
218
- &::before {
219
- content: none;
220
- }
221
- }
222
- }
223
- .code-format-control {
224
- z-index: 1;
225
- border-top: solid 1px #eaeefb;
226
- height: 44px;
227
- box-sizing: border-box;
228
- background-color: #fff;
229
- border-bottom-left-radius: 4px;
230
- border-bottom-right-radius: 4px;
231
- text-align: center;
232
- margin-top: -1px;
233
- color: #d3dce6;
234
- cursor: pointer;
235
- position: relative;
236
- &.is-fixed {
237
- position: fixed;
238
- bottom: 0;
239
- width: 1068px;
240
- z-index: 1;
241
- }
242
- i {
243
- font-size: 16px;
244
- line-height: 44px;
245
- transition: 0.3s;
246
- &.hovering {
247
- transform: translateX(-40px);
248
- }
249
- }
250
- > span {
251
- position: absolute;
252
- transform: translateX(-30px);
253
- font-size: 14px;
254
- line-height: 44px;
255
- transition: 0.3s;
256
- display: inline-block;
257
- }
258
- &:hover {
259
- color: #409eff;
260
- background-color: #f9fafc;
261
- }
262
- & .text-slide-enter,
263
- & .text-slide-leave-active {
264
- opacity: 0;
265
- transform: translateX(10px);
266
- }
267
- .qr_code {
268
- line-height: 26px;
269
- position: absolute;
270
- top: 0;
271
- left: 0;
272
- font-size: 14px;
273
- padding-left: 15px;
274
- padding-right: 25px;
275
- }
276
- .control-button {
277
- line-height: 26px;
278
- position: absolute;
279
- top: 0;
280
- right: 0;
281
- font-size: 14px;
282
- padding-left: 5px;
283
- padding-right: 25px;
284
- }
285
- }
286
- @media (max-width: 1500px) {
287
- .code-format-control {
288
- &.is-fixed {
289
- width: 916px;
290
- }
291
- }
292
- }
293
- @media (max-width: 1300px) {
294
- .code-format-control {
295
- &.is-fixed {
296
- width: 840px;
297
- }
298
- }
299
- }
300
- @media (max-width: 1200px) {
301
- .code-format-control {
302
- &.is-fixed {
303
- width: 770px;
304
- }
305
- }
306
- }
307
- table {
308
- margin: 0;
309
- display: table;
310
- }
311
- th,
312
- td,
313
- tr {
314
- border: 0;
315
- }
316
- }
317
- .el-popper {
318
- table {
319
- margin: 0;
320
- display: table;
321
- }
322
- th,
323
- td,
324
- tr {
325
- border: 0;
326
- }
327
- tr:nth-child(2n) {
328
- background: none;
329
- }
330
- }
331
- </style>
@@ -1,68 +0,0 @@
1
- <template>
2
- <div>
3
- <sc-crud :search.sync="searchForm" :options="options" :data="data">
4
- </sc-crud>
5
- </div>
6
- </template>
7
-
8
- <script>
9
- /***
10
- * date 匹配到的全局配置对象
11
- *
12
- *date: {
13
- comp: {
14
- name: "el-date-picker",
15
- type: "date",
16
- valueFormat: "yyyy-MM-dd",
17
- },
18
- }
19
- * * */
20
- export default {
21
- data() {
22
- return {
23
- searchForm: {},
24
- options: {
25
- renderColumns: [
26
- { prop: "name", label: "昵称" },
27
- {
28
- prop: "username",
29
- label: "姓名",
30
- },
31
- {
32
- prop: "createTime",
33
- label: "模板复用示例",
34
- presetType: "date", // 使用模板
35
- },
36
- {
37
- prop: "createTime",
38
- label: "不使用模板,效果与模板等价",
39
- comp: {
40
- name: "el-date-picker",
41
- type: "date",
42
- valueFormat: "yyyy-MM-dd",
43
- },
44
- },
45
- ],
46
- },
47
- data: [
48
- {
49
- createTime: "2018-06-02",
50
- createUser: 94,
51
- id: 56,
52
- idNumber: "8",
53
- name: "识间华中张认",
54
- password: "sed laboris",
55
- phone: "18157668675",
56
- gender: "男",
57
- age: 20,
58
- status: 35,
59
- updateTime: "2018-09-08 16:33:19",
60
- updateUser: 58,
61
- username: "石洋",
62
- },
63
- ],
64
- };
65
- },
66
- methods: {},
67
- };
68
- </script>
@@ -1,73 +0,0 @@
1
- <template>
2
- <div>
3
- <sc-crud :search.sync="searchForm" :options="options" :data="data">
4
- </sc-crud>
5
- </div>
6
- </template>
7
-
8
- <script>
9
- /***
10
- * "testCodeTemplate" 匹配到的配置对象
11
- * @param {Object} item - 当前配置对象
12
- *
13
- *testCodeTemplate: (item) => ({
14
- search: {
15
- comp: {
16
- name: item.searchCompName,
17
- type: item.SearchCompType,
18
- },
19
- },
20
- form: {
21
- comp: {
22
- name: item.formCompName,
23
- },
24
- },
25
- formatter: (row) => row[item.prop] + "自定义格式化",
26
- }),
27
- * * */
28
- export default {
29
- data() {
30
- return {
31
- searchForm: {},
32
- options: {
33
- rowEdit: true,
34
- searchHeader: true,
35
- renderColumns: [
36
- {
37
- prop: "name",
38
- label: "昵称",
39
- presetType: "testCodeTemplate",
40
- searchCompName: "el-select",
41
- formCompName: "el-select",
42
- },
43
- {
44
- prop: "username",
45
- label: "姓名",
46
- presetType: "testCodeTemplate",
47
- searchCompName: "el-input",
48
- formCompName: "el-input",
49
- },
50
- ],
51
- },
52
- data: [
53
- {
54
- createTime: "2018-06-02 12:28:47",
55
- createUser: 94,
56
- id: 56,
57
- idNumber: "8",
58
- name: "识间华中张认",
59
- password: "sed laboris",
60
- phone: "18157668675",
61
- gender: "男",
62
- age: 20,
63
- status: 35,
64
- updateTime: "2018-09-08 16:33:19",
65
- updateUser: 58,
66
- username: "石洋",
67
- },
68
- ],
69
- };
70
- },
71
- methods: {},
72
- };
73
- </script>