├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── .prettierignore
├── .prettierrc
├── .stylelintrc
├── LICENSE
├── README.md
├── build
├── utils.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── favicon.ico
├── index.html
├── mock
└── index.js
├── package.json
├── public
└── tinymce4.7.5
│ ├── langs
│ └── zh_CN.js
│ ├── plugins
│ ├── codesample
│ │ └── css
│ │ │ └── prism.css
│ ├── emoticons
│ │ └── img
│ │ │ ├── smiley-cool.gif
│ │ │ ├── smiley-cry.gif
│ │ │ ├── smiley-embarassed.gif
│ │ │ ├── smiley-foot-in-mouth.gif
│ │ │ ├── smiley-frown.gif
│ │ │ ├── smiley-innocent.gif
│ │ │ ├── smiley-kiss.gif
│ │ │ ├── smiley-laughing.gif
│ │ │ ├── smiley-money-mouth.gif
│ │ │ ├── smiley-sealed.gif
│ │ │ ├── smiley-smile.gif
│ │ │ ├── smiley-surprised.gif
│ │ │ ├── smiley-tongue-out.gif
│ │ │ ├── smiley-undecided.gif
│ │ │ ├── smiley-wink.gif
│ │ │ └── smiley-yell.gif
│ └── visualblocks
│ │ └── css
│ │ └── visualblocks.css
│ ├── skins
│ └── lightgray
│ │ ├── content.inline.min.css
│ │ ├── content.min.css
│ │ ├── fonts
│ │ ├── tinymce-mobile.woff
│ │ ├── tinymce-small.eot
│ │ ├── tinymce-small.svg
│ │ ├── tinymce-small.ttf
│ │ ├── tinymce-small.woff
│ │ ├── tinymce.eot
│ │ ├── tinymce.svg
│ │ ├── tinymce.ttf
│ │ └── tinymce.woff
│ │ ├── img
│ │ ├── anchor.gif
│ │ ├── loader.gif
│ │ ├── object.gif
│ │ └── trans.gif
│ │ ├── skin.min.css
│ │ └── skin.min.css.map
│ └── tinymce.min.js
└── src
├── App.vue
├── components
├── dynamic-form
│ ├── form.vue
│ ├── index.js
│ ├── input-number.vue
│ └── item.vue
├── icon-svg
│ ├── icon-svg.vue
│ ├── icons
│ │ ├── cascader.svg
│ │ ├── checkbox.svg
│ │ ├── disabled.svg
│ │ ├── input.svg
│ │ ├── number.svg
│ │ ├── radio.svg
│ │ ├── richtext.svg
│ │ ├── select.svg
│ │ └── switch.svg
│ └── index.js
├── themePicker.vue
└── tinymce
│ ├── index.vue
│ ├── init.js
│ └── zh_CN.json
├── gifs
├── ajax.gif
├── drag.gif
└── live.gif
├── index.js
├── router
└── index.js
├── store
├── index.js
└── modules
│ └── form.js
├── utils
├── guid.js
└── request.js
└── views
├── editor
├── form
│ ├── aside
│ │ ├── availabel-item-list.js
│ │ ├── editor-global.json
│ │ ├── editor-options.vue
│ │ ├── editor-rules.vue
│ │ ├── editors-item
│ │ │ ├── cascader.vue
│ │ │ ├── checkbox.vue
│ │ │ ├── date.vue
│ │ │ ├── input.vue
│ │ │ ├── number.vue
│ │ │ ├── radio.vue
│ │ │ ├── richtext.vue
│ │ │ ├── select.vue
│ │ │ └── switch.vue
│ │ ├── index.vue
│ │ └── items-list.vue
│ └── main
│ │ ├── fake-form-item.vue
│ │ ├── fake-form.vue
│ │ └── index.vue
├── index.vue
└── table
│ ├── aside.vue
│ ├── availabel-list.js
│ └── main.vue
└── preview
└── preview.vue
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "env",
5 | {
6 | "targets": {
7 | "browsers": ["last 2 versions", "not ie <= 10"]
8 | }
9 | }
10 | ]
11 | ],
12 | "plugins": [
13 | "transform-object-rest-spread",
14 | "transform-vue-jsx",
15 | [
16 | "transform-runtime",
17 | {
18 | "polyfill": false,
19 | "regenerator": true
20 | }
21 | ],
22 | // ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es" }]
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = crlf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // http://eslint.org/docs/user-guide/configuring
2 | module.exports = {
3 | root: true,
4 | parserOptions: {
5 | parser: 'babel-eslint',
6 | sourceType: 'module',
7 | ecmaVersion: 2018,
8 | },
9 | env: {
10 | browser: true,
11 | },
12 | extends: [
13 | 'eslint:recommended',
14 | 'plugin:vue/recommended', // or 'plugin:vue/base'
15 | 'plugin:compat/recommended',
16 | 'airbnb-base',
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue',
21 | 'compat',
22 | ],
23 | // check if imports actually resolve
24 | settings: {
25 | 'import/resolver': {
26 | webpack: {
27 | config: 'build/webpack.base.conf.js',
28 | },
29 | },
30 | // 真有毒 webpack 多文件不支持
31 | // 'import/core-modules': ['muggle-api']
32 | 'polyfills': [
33 | 'promises',
34 | 'fetch',
35 | 'url',
36 | 'urlsearchparams',
37 | ],
38 | },
39 | // add your custom rules here
40 | rules: {
41 | camelcase: 0,
42 | 'function-paren-newline': ['error', 'consistent'],
43 | 'arrow-body-style': 0,
44 | 'linebreak-style': 0,
45 | 'no-param-reassign': 0,
46 | 'no-plusplus': 0,
47 | 'no-await-in-loop': 0,
48 | 'no-underscore-dangle': 0,
49 | 'prefer-promise-reject-errors': 0,
50 | 'no-return-assign': 0,
51 | 'object-curly-newline': [
52 | 'error',
53 | {
54 | consistent: true,
55 | },
56 | ],
57 | 'no-mixed-operators': 0,
58 | // don't require .vue extension when importing
59 | 'import/extensions': [
60 | 'error',
61 | 'always',
62 | {
63 | js: 'never',
64 | vue: 'never',
65 | },
66 | ],
67 | // allow optionalDependencies
68 | 'import/no-extraneous-dependencies': [
69 | 'error',
70 | {
71 | optionalDependencies: ['test/unit/index.js'],
72 | },
73 | ],
74 | // allow debugger during development
75 | // "max-len": process.env.NODE_ENV === 'production' ? 1 : 0,
76 | "no-unused-vars": process.env.NODE_ENV === 'production' ? 1 : 0,
77 | 'max-len': 0,
78 | // 'no-unused-vars': 0,
79 | 'arrow-parens': 0,
80 | 'no-console': process.env.NODE_ENV === 'production' ? 1 : 0,
81 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
82 | // allow single export
83 | 'import/prefer-default-export': 'off',
84 | // vue lint configs
85 | // 'vue/attribute-hyphenation': ['error', 'always'],
86 | 'vue/html-end-tags': 'error',
87 | 'vue/html-quotes': ['error', 'double'],
88 | // 'vue/html-self-closing': 0,
89 | 'vue/html-self-closing': [
90 | 'error',
91 | {
92 | html: {
93 | normal: 'never',
94 | void: 'never',
95 | component: 'never',
96 | },
97 | // Input: 'any',
98 | svg: 'always',
99 | math: 'always',
100 | },
101 | ],
102 | 'vue/max-attributes-per-line': [
103 | 2,
104 | {
105 | singleline: 10,
106 | multiline: {
107 | max: 2,
108 | allowFirstLine: false,
109 | },
110 | },
111 | ],
112 | 'vue/mustache-interpolation-spacing': ['error', 'always'],
113 | 'vue/name-property-casing': ['error', 'kebab-case'],
114 | 'vue/no-async-in-computed-properties': 'error',
115 | 'vue/no-confusing-v-for-v-if': 'error',
116 | 'vue/no-dupe-keys': 'error',
117 | 'vue/no-duplicate-attributes': [
118 | 'error',
119 | {
120 | allowCoexistClass: true,
121 | allowCoexistStyle: true,
122 | },
123 | ],
124 | 'vue/no-multi-spaces': 'error',
125 | 'vue/no-parsing-error': 'error',
126 | 'vue/no-reserved-keys': [
127 | 'error',
128 | {
129 | reserved: ['$el', '$nextTick', '$route', '$router', 'asyncData'],
130 | groups: [],
131 | },
132 | ],
133 | 'vue/no-shared-component-data': 'error',
134 | 'vue/no-side-effects-in-computed-properties': 'error',
135 | 'vue/no-template-key': 'error',
136 | 'vue/no-textarea-mustache': 'error',
137 | 'vue/order-in-components': [
138 | 'warn',
139 | {
140 | order: [
141 | ['name', 'delimiters', 'functional', 'model'],
142 | ['components', 'directives', 'filters'],
143 | ['parent', 'mixins', 'extends', 'provide', 'inject'],
144 | 'el',
145 | 'template',
146 | 'props',
147 | 'propsData',
148 | 'data',
149 | 'computed',
150 | 'watch',
151 | 'asyncData',
152 | 'onWechatReady',
153 | 'LIFECYCLE_HOOKS',
154 | 'methods',
155 | 'render',
156 | 'renderError',
157 | ],
158 | },
159 | ],
160 | 'vue/require-component-is': 'error',
161 | 'vue/require-default-prop': 0,
162 | 'vue/require-prop-types': 'error',
163 | 'vue/require-render-return': 'error',
164 | 'vue/require-v-for-key': 'error',
165 | 'vue/require-valid-default-prop': 'error',
166 | 'vue/return-in-computed-property': 'error',
167 | 'vue/this-in-template': ['error', 'never'],
168 | 'vue/v-bind-style': ['error', 'shorthand'],
169 | 'vue/v-on-style': ['error', 'shorthand'],
170 | 'vue/valid-template-root': 'error',
171 | 'vue/valid-v-bind': 'error',
172 | 'vue/valid-v-cloak': 'error',
173 | 'vue/valid-v-else-if': 'error',
174 | 'vue/valid-v-else': 'error',
175 | 'vue/valid-v-for': 'error',
176 | 'vue/valid-v-html': 'error',
177 | 'vue/valid-v-if': 'error',
178 | 'vue/valid-v-model': 'error',
179 | 'vue/valid-v-on': 'error',
180 | 'vue/valid-v-once': 'error',
181 | 'vue/valid-v-pre': 'error',
182 | 'vue/valid-v-show': 'error',
183 | 'vue/valid-v-text': 'error',
184 |
185 | // 'vue/html-indent': ['error', 2, {
186 | // 'attribute': 1,
187 | // 'closeBracket': 0,
188 | // 'ignores': []
189 | // }],
190 | },
191 | };
192 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | plugins: {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | autoprefixer: {},
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | **/*.md
2 | **/*.svg
3 | **/*.html
4 | **/*.ejs
5 | package.json
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "all",
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "stylelint-config-standard",
3 | "rules": {
4 | "comment-empty-line-before": null,
5 | "declaration-empty-line-before": null,
6 | "function-comma-newline-after": null,
7 | "function-name-case": null,
8 | "function-parentheses-newline-inside": null,
9 | "function-max-empty-lines": null,
10 | "function-whitespace-after": null,
11 | "indentation": null,
12 | "number-leading-zero": null,
13 | "number-no-trailing-zeros": null,
14 | "rule-empty-line-before": null,
15 | "selector-combinator-space-after": null,
16 | "selector-list-comma-newline-after": null,
17 | "selector-pseudo-element-colon-notation": null,
18 | "unit-no-unknown": null,
19 | "value-list-max-empty-lines": null,
20 | "font-family-no-missing-generic-family-keyword": null,
21 | "no-descending-specificity": null
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 bowencool
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 超级表单
2 |
3 | > `表单` 可视化配置以及实时预览。
4 |
5 | ## 拖拽排序
6 | 
7 | ## 实时编辑预览
8 | 
9 | ## 从服务器获取 & 地区快捷配置
10 | 
11 |
12 | ## TODO
13 | - [x] 封装`input-number`支持显示单位、控制小数位数
14 | - [x] 常用验证规则封装
15 | - [x] 为文本框配置`SQL`验证规则
16 | - [x] (单选多选等)`options`增删改
17 | - [x] `省/市/区`级联快捷配置
18 | - [x] 为`options`配置`Ajax`接口
19 | - [x] 富文本支持
20 | - [ ] 表单栅格布局
21 | - [ ] 为下拉框配置`从服务器搜索`
22 | - [ ] 文件上传支持
23 | - [ ] 表格
24 |
25 |
26 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | function assetsPath(_path) {
4 | return path.posix.join('static', _path);
5 | }
6 |
7 | function resolve(dir) {
8 | return path.join(__dirname, '..', dir);
9 | }
10 | // const NODE_ENV = process.env.NODE_ENV || 'development';
11 | // const isProd = NODE_ENV === 'production';
12 |
13 | module.exports = {
14 | assetsPath,
15 | resolve,
16 | // NODE_ENV,
17 | // isProd,
18 | };
19 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | const { resolve, assetsPath } = require('./utils');
2 | const webpack = require('webpack');
3 | const VueLoaderPlugin = require('vue-loader/lib/plugin');
4 | const CopyWebpackPlugin = require('copy-webpack-plugin');
5 |
6 | module.exports = {
7 | resolve: {
8 | extensions: ['*', '.js', '.json', '.vue', '.less'],
9 | alias: {
10 | '@': resolve('src'),
11 | },
12 | },
13 | module: {
14 | rules: [
15 | {
16 | test: /\.vue$/,
17 | loader: 'vue-loader',
18 | options: {
19 | compilerOptions: {
20 | preserveWhitespace: false,
21 | },
22 | },
23 | },
24 | {
25 | test: /\.pug$/,
26 | loader: 'pug-plain-loader',
27 | },
28 | {
29 | test: /\.js$/,
30 | loader: 'babel-loader',
31 | exclude: /node_modules/,
32 | },
33 | {
34 | test: /\.svg$/,
35 | loader: 'svg-sprite-loader',
36 | include: [resolve('src/components/icon-svg/icons')],
37 | options: {
38 | symbolId: 'icon-[name]',
39 | },
40 | },
41 | {
42 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
43 | loader: 'url-loader',
44 | options: {
45 | limit: 10000,
46 | name: assetsPath('fonts/[name].[hash:7].[ext]'),
47 | },
48 | },
49 | {
50 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
51 | loader: 'url-loader',
52 | options: {
53 | limit: 10000,
54 | name: assetsPath('media/[name].[hash:7].[ext]'),
55 | },
56 | },
57 | {
58 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
59 | loader: 'url-loader',
60 | exclude: [resolve('src/components/icon-svg/icons')],
61 | options: {
62 | limit: 10000,
63 | name: assetsPath('img/[name].[hash:7].[ext]'),
64 | },
65 | },
66 | ],
67 | },
68 | plugins: [
69 | new VueLoaderPlugin(),
70 | new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
71 | new CopyWebpackPlugin([
72 | {
73 | from: 'public/',
74 | // to: 'static/',
75 | toType: 'dir',
76 | },
77 | ]),
78 | ],
79 | };
80 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | const { resolve } = require('./utils');
2 | const merge = require('webpack-merge');
3 | const webpack = require('webpack');
4 | const baseConfig = require('./webpack.base.conf');
5 | const HtmlWebpackPlugin = require('html-webpack-plugin');
6 | const StyleLintPlugin = require('stylelint-webpack-plugin');
7 | const apiMocker = require('mocker-api');
8 |
9 | module.exports = merge(baseConfig, {
10 | mode: 'development',
11 | module: {
12 | rules: [
13 | {
14 | test: /\.(js|vue)$/,
15 | loader: 'eslint-loader',
16 | enforce: 'pre',
17 | include: [resolve('src'), resolve('test')],
18 | options: {
19 | // emitWarning: true,
20 | cache: true,
21 | formatter: require('eslint-friendly-formatter'),
22 | },
23 | },
24 | {
25 | test: /\.css$/,
26 | use: ['vue-style-loader', 'css-loader', 'postcss-loader'],
27 | },
28 | {
29 | test: /\.less$/,
30 | use: [
31 | 'vue-style-loader',
32 | 'css-loader',
33 | 'postcss-loader',
34 | 'less-loader',
35 | ],
36 | },
37 | ],
38 | },
39 | devtool: '#cheap-eval-source-map',
40 | devServer: {
41 | port: 9527,
42 | hot: true,
43 | overlay: {
44 | warnings: false,
45 | errors: true,
46 | },
47 | before(app) {
48 | apiMocker(app, resolve('mock/index.js'))
49 | },
50 | stats: {
51 | entrypoints: false,
52 | children: false,
53 | modules: false,
54 | assets: false,
55 | version: false,
56 | builtAt: false,
57 | },
58 | },
59 | plugins: [
60 | new HtmlWebpackPlugin({
61 | template: resolve('index.html'),
62 | favicon: resolve('favicon.ico'),
63 | }),
64 | new webpack.HotModuleReplacementPlugin(),
65 | new StyleLintPlugin({
66 | configFile: resolve('.stylelintrc'),
67 | files: '**/*.{less,vue}',
68 | }),
69 | ],
70 | });
71 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | const { assetsPath, resolve } = require('./utils');
2 | const merge = require('webpack-merge');
3 | const baseConfig = require('./webpack.base.conf');
4 | const HtmlWebpackPlugin = require('html-webpack-plugin');
5 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
6 | const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
7 | const TerserPlugin = require('terser-webpack-plugin');
8 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
9 | .BundleAnalyzerPlugin;
10 |
11 | module.exports = merge(baseConfig, {
12 | mode: 'production',
13 | output: {
14 | publicPath: '/',
15 | filename: assetsPath('js/[name].[chunkhash].js'),
16 | },
17 | module: {
18 | rules: [
19 | {
20 | test: /\.css$/,
21 | use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'],
22 | },
23 | {
24 | test: /\.less$/,
25 | use: [
26 | MiniCssExtractPlugin.loader,
27 | 'css-loader',
28 | 'postcss-loader',
29 | 'less-loader',
30 | ],
31 | },
32 | ],
33 | },
34 | devtool: '#source-map',
35 | stats: {
36 | entrypoints: false,
37 | children: false,
38 | modules: false,
39 | warnings: false,
40 | },
41 | plugins: [
42 | new HtmlWebpackPlugin({
43 | template: resolve('index.html'),
44 | favicon: resolve('favicon.ico'),
45 | // todo https://github.com/jantimon/html-webpack-plugin/issues/1081
46 | minify: true,
47 | }),
48 | new MiniCssExtractPlugin({
49 | filename: assetsPath('css/[name].[chunkhash].css'),
50 | }),
51 | // new BundleAnalyzerPlugin(),
52 | ],
53 | optimization: {
54 | minimizer: [
55 | new OptimizeCSSAssetsPlugin({
56 | assetNameRegExp: /\.css(\?.*)?$/,
57 | }),
58 | new TerserPlugin({
59 | sourceMap: true,
60 | cache: true,
61 | parallel: true,
62 | terserOptions: {
63 | compress: {
64 | drop_console: true,
65 | },
66 | },
67 | }),
68 | ],
69 | },
70 | });
71 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/favicon.ico
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | super-form
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/mock/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | // 'DELETE /api/user/:id': (req, res) => {
3 | // console.log('---->', req.body)
4 | // console.log('---->', req.params.id)
5 | // res.send({ status: 'ok', message: '删除成功!' });
6 | // },
7 | 'GET /api/cascader/options': [
8 | {
9 | value: '1',
10 | label: '查看控制台',
11 | disabled: true,
12 | },
13 | {
14 | value: '340000',
15 | label: '安徽省',
16 | children: [
17 | {
18 | value: '340100',
19 | label: '合肥市',
20 | children: [
21 | {
22 | value: '340104',
23 | label: '蜀山区',
24 | },
25 | ],
26 | },
27 | ],
28 | },
29 | ],
30 | 'GET /api/some/options': [
31 | {
32 | value: '01',
33 | label: '查',
34 | },
35 | {
36 | value: '02',
37 | label: '看',
38 | },
39 | {
40 | value: '03',
41 | label: '控',
42 | },
43 | {
44 | value: '04',
45 | label: '制',
46 | disabled: true,
47 | },
48 | {
49 | value: '05',
50 | label: '台',
51 | disabled: true,
52 | },
53 | ],
54 | 'POST /api/validate': (req, res) => {
55 | res.json(/1$/.test(req.body.value));
56 | },
57 | };
58 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "super-form",
3 | "version": "1.0.2",
4 | "description": "A Vue.js project",
5 | "author": "赵博文 ",
6 | "private": true,
7 | "scripts": {
8 | "start": "npm run dev",
9 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
10 | "lint": "eslint src/**/*.{js,vue} --fix && npm run lint:style",
11 | "lint:style": "stylelint src/**/*.{less,vue} --fix",
12 | "prettier": "prettier --write ./src/**/**/**/*",
13 | "build": "webpack --config build/webpack.prod.conf.js --progress"
14 | },
15 | "lint-staged": {
16 | "**/*.{js,vue}": [
17 | "eslint --fix",
18 | "git add"
19 | ],
20 | "**/*.{vue,less}": [
21 | "stylelint --fix",
22 | "git add"
23 | ]
24 | },
25 | "dependencies": {
26 | "element-china-area-data": "^4.0.0",
27 | "element-ui": "^2.2.0",
28 | "vue": "^2.5.13",
29 | "vue-router": "^3.0.1",
30 | "vuedraggable": "^2.16.0",
31 | "vuex": "^3.0.1"
32 | },
33 | "devDependencies": {
34 | "autoprefixer": "^9.2.1",
35 | "babel-core": "^6.26.0",
36 | "babel-eslint": "^7.2.3",
37 | "babel-helper-vue-jsx-merge-props": "^2.0.2",
38 | "babel-loader": "^7.1.5",
39 | "babel-plugin-import": "^1.10.0",
40 | "babel-plugin-syntax-dynamic-import": "^6.18.0",
41 | "babel-plugin-syntax-jsx": "^6.18.0",
42 | "babel-plugin-transform-object-rest-spread": "^6.26.0",
43 | "babel-plugin-transform-runtime": "^6.23.0",
44 | "babel-plugin-transform-vue-jsx": "^3.5.0",
45 | "babel-preset-env": "^1.4.0",
46 | "copy-webpack-plugin": "^4.6.0",
47 | "css-loader": "^1.0.0",
48 | "eslint": "^5.8.0",
49 | "eslint-config-airbnb-base": "^13.1.0",
50 | "eslint-friendly-formatter": "^4.0.1",
51 | "eslint-import-resolver-webpack": "^0.10.1",
52 | "eslint-loader": "^2.1.1",
53 | "eslint-plugin-compat": "^2.5.1",
54 | "eslint-plugin-import": "^2.14.0",
55 | "eslint-plugin-vue": "^4.7.1",
56 | "html-webpack-plugin": "^3.2.0",
57 | "jsonlint": "^1.6.3",
58 | "less": "^3.8.1",
59 | "less-loader": "^4.1.0",
60 | "lint-staged": "^7.2.0",
61 | "mini-css-extract-plugin": "^0.4.4",
62 | "mocker-api": "^1.6.6",
63 | "optimize-css-assets-webpack-plugin": "^5.0.1",
64 | "postcss-import": "^11.0.0",
65 | "postcss-loader": "^2.1.6",
66 | "postcss-url": "^7.2.1",
67 | "prettier": "^1.13.7",
68 | "pug": "^2.0.3",
69 | "pug-plain-loader": "^1.0.0",
70 | "script-loader": "^0.7.2",
71 | "stylelint": "^9.3.0",
72 | "stylelint-config-standard": "^18.2.0",
73 | "stylelint-webpack-plugin": "^0.10.5",
74 | "svg-sprite-loader": "^4.1.3",
75 | "terser-webpack-plugin": "^1.1.0",
76 | "url-loader": "^1.1.2",
77 | "vue-loader": "^15.4.2",
78 | "vue-style-loader": "^4.1.2",
79 | "vue-template-compiler": "^2.5.17",
80 | "webpack": "^4.23.0",
81 | "webpack-bundle-analyzer": "^3.0.3",
82 | "webpack-cli": "^3.1.2",
83 | "webpack-dev-server": "^3.1.14",
84 | "webpack-merge": "^4.1.4"
85 | },
86 | "engines": {
87 | "node": ">= 6.0.0",
88 | "npm": ">= 3.0.0"
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/public/tinymce4.7.5/langs/zh_CN.js:
--------------------------------------------------------------------------------
1 | tinymce.addI18n('zh_CN',{
2 | "Cut": "\u526a\u5207",
3 | "Heading 5": "\u6807\u98985",
4 | "Header 2": "\u6807\u98982",
5 | "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
6 | "Heading 4": "\u6807\u98984",
7 | "Div": "Div\u533a\u5757",
8 | "Heading 2": "\u6807\u98982",
9 | "Paste": "\u7c98\u8d34",
10 | "Close": "\u5173\u95ed",
11 | "Font Family": "\u5b57\u4f53",
12 | "Pre": "\u9884\u683c\u5f0f\u6587\u672c",
13 | "Align right": "\u53f3\u5bf9\u9f50",
14 | "New document": "\u65b0\u6587\u6863",
15 | "Blockquote": "\u5f15\u7528",
16 | "Numbered list": "\u7f16\u53f7\u5217\u8868",
17 | "Heading 1": "\u6807\u98981",
18 | "Headings": "\u6807\u9898",
19 | "Increase indent": "\u589e\u52a0\u7f29\u8fdb",
20 | "Formats": "\u683c\u5f0f",
21 | "Headers": "\u6807\u9898",
22 | "Select all": "\u5168\u9009",
23 | "Header 3": "\u6807\u98983",
24 | "Blocks": "\u533a\u5757",
25 | "Undo": "\u64a4\u6d88",
26 | "Strikethrough": "\u5220\u9664\u7ebf",
27 | "Bullet list": "\u9879\u76ee\u7b26\u53f7",
28 | "Header 1": "\u6807\u98981",
29 | "Superscript": "\u4e0a\u6807",
30 | "Clear formatting": "\u6e05\u9664\u683c\u5f0f",
31 | "Font Sizes": "\u5b57\u53f7",
32 | "Subscript": "\u4e0b\u6807",
33 | "Header 6": "\u6807\u98986",
34 | "Redo": "\u91cd\u590d",
35 | "Paragraph": "\u6bb5\u843d",
36 | "Ok": "\u786e\u5b9a",
37 | "Bold": "\u7c97\u4f53",
38 | "Code": "\u4ee3\u7801",
39 | "Italic": "\u659c\u4f53",
40 | "Align center": "\u5c45\u4e2d",
41 | "Header 5": "\u6807\u98985",
42 | "Heading 6": "\u6807\u98986",
43 | "Heading 3": "\u6807\u98983",
44 | "Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
45 | "Header 4": "\u6807\u98984",
46 | "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
47 | "Underline": "\u4e0b\u5212\u7ebf",
48 | "Cancel": "\u53d6\u6d88",
49 | "Justify": "\u4e24\u7aef\u5bf9\u9f50",
50 | "Inline": "\u6587\u672c",
51 | "Copy": "\u590d\u5236",
52 | "Align left": "\u5de6\u5bf9\u9f50",
53 | "Visual aids": "\u7f51\u683c\u7ebf",
54 | "Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
55 | "Square": "\u65b9\u5757",
56 | "Default": "\u9ed8\u8ba4",
57 | "Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
58 | "Circle": "\u7a7a\u5fc3\u5706",
59 | "Disc": "\u5b9e\u5fc3\u5706",
60 | "Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
61 | "Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
62 | "Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
63 | "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
64 | "Name": "\u540d\u79f0",
65 | "Anchor": "\u951a\u70b9",
66 | "Id": "\u6807\u8bc6\u7b26",
67 | "You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
68 | "Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
69 | "Special character": "\u7279\u6b8a\u7b26\u53f7",
70 | "Source code": "\u6e90\u4ee3\u7801",
71 | "Language": "\u8bed\u8a00",
72 | "Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
73 | "B": "B",
74 | "R": "R",
75 | "G": "G",
76 | "Color": "\u989c\u8272",
77 | "Right to left": "\u4ece\u53f3\u5230\u5de6",
78 | "Left to right": "\u4ece\u5de6\u5230\u53f3",
79 | "Emoticons": "\u8868\u60c5",
80 | "Robots": "\u673a\u5668\u4eba",
81 | "Document properties": "\u6587\u6863\u5c5e\u6027",
82 | "Title": "\u6807\u9898",
83 | "Keywords": "\u5173\u952e\u8bcd",
84 | "Encoding": "\u7f16\u7801",
85 | "Description": "\u63cf\u8ff0",
86 | "Author": "\u4f5c\u8005",
87 | "Fullscreen": "\u5168\u5c4f",
88 | "Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
89 | "Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
90 | "Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
91 | "General": "\u666e\u901a",
92 | "Advanced": "\u9ad8\u7ea7",
93 | "Source": "\u5730\u5740",
94 | "Border": "\u8fb9\u6846",
95 | "Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
96 | "Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
97 | "Image description": "\u56fe\u7247\u63cf\u8ff0",
98 | "Style": "\u6837\u5f0f",
99 | "Dimensions": "\u5927\u5c0f",
100 | "Insert image": "\u63d2\u5165\u56fe\u7247",
101 | "Image": "\u56fe\u7247",
102 | "Zoom in": "\u653e\u5927",
103 | "Contrast": "\u5bf9\u6bd4\u5ea6",
104 | "Back": "\u540e\u9000",
105 | "Gamma": "\u4f3d\u9a6c\u503c",
106 | "Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
107 | "Resize": "\u8c03\u6574\u5927\u5c0f",
108 | "Sharpen": "\u9510\u5316",
109 | "Zoom out": "\u7f29\u5c0f",
110 | "Image options": "\u56fe\u7247\u9009\u9879",
111 | "Apply": "\u5e94\u7528",
112 | "Brightness": "\u4eae\u5ea6",
113 | "Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
114 | "Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
115 | "Edit image": "\u7f16\u8f91\u56fe\u7247",
116 | "Color levels": "\u989c\u8272\u5c42\u6b21",
117 | "Crop": "\u88c1\u526a",
118 | "Orientation": "\u65b9\u5411",
119 | "Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
120 | "Invert": "\u53cd\u8f6c",
121 | "Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
122 | "Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
123 | "Remove link": "\u5220\u9664\u94fe\u63a5",
124 | "Url": "\u5730\u5740",
125 | "Text to display": "\u663e\u793a\u6587\u5b57",
126 | "Anchors": "\u951a\u70b9",
127 | "Insert link": "\u63d2\u5165\u94fe\u63a5",
128 | "Link": "\u94fe\u63a5",
129 | "New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
130 | "None": "\u65e0",
131 | "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
132 | "Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
133 | "Target": "\u6253\u5f00\u65b9\u5f0f",
134 | "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
135 | "Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
136 | "Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
137 | "Media": "\u5a92\u4f53",
138 | "Alternative source": "\u955c\u50cf",
139 | "Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
140 | "Insert video": "\u63d2\u5165\u89c6\u9891",
141 | "Poster": "\u5c01\u9762",
142 | "Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
143 | "Embed": "\u5185\u5d4c",
144 | "Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
145 | "Page break": "\u5206\u9875\u7b26",
146 | "Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
147 | "Preview": "\u9884\u89c8",
148 | "Print": "\u6253\u5370",
149 | "Save": "\u4fdd\u5b58",
150 | "Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
151 | "Replace": "\u66ff\u6362",
152 | "Next": "\u4e0b\u4e00\u4e2a",
153 | "Whole words": "\u5168\u5b57\u5339\u914d",
154 | "Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
155 | "Replace with": "\u66ff\u6362\u4e3a",
156 | "Find": "\u67e5\u627e",
157 | "Replace all": "\u5168\u90e8\u66ff\u6362",
158 | "Match case": "\u533a\u5206\u5927\u5c0f\u5199",
159 | "Prev": "\u4e0a\u4e00\u4e2a",
160 | "Spellcheck": "\u62fc\u5199\u68c0\u67e5",
161 | "Finish": "\u5b8c\u6210",
162 | "Ignore all": "\u5168\u90e8\u5ffd\u7565",
163 | "Ignore": "\u5ffd\u7565",
164 | "Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
165 | "Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
166 | "Rows": "\u884c",
167 | "Height": "\u9ad8",
168 | "Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
169 | "Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
170 | "Border color": "\u8fb9\u6846\u989c\u8272",
171 | "Column group": "\u5217\u7ec4",
172 | "Row": "\u884c",
173 | "Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
174 | "Split cell": "\u62c6\u5206\u5355\u5143\u683c",
175 | "Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
176 | "Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
177 | "Row type": "\u884c\u7c7b\u578b",
178 | "Insert table": "\u63d2\u5165\u8868\u683c",
179 | "Body": "\u8868\u4f53",
180 | "Caption": "\u6807\u9898",
181 | "Footer": "\u8868\u5c3e",
182 | "Delete row": "\u5220\u9664\u884c",
183 | "Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
184 | "Scope": "\u8303\u56f4",
185 | "Delete table": "\u5220\u9664\u8868\u683c",
186 | "H Align": "\u6c34\u5e73\u5bf9\u9f50",
187 | "Top": "\u9876\u90e8\u5bf9\u9f50",
188 | "Header cell": "\u8868\u5934\u5355\u5143\u683c",
189 | "Column": "\u5217",
190 | "Row group": "\u884c\u7ec4",
191 | "Cell": "\u5355\u5143\u683c",
192 | "Middle": "\u5782\u76f4\u5c45\u4e2d",
193 | "Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
194 | "Copy row": "\u590d\u5236\u884c",
195 | "Row properties": "\u884c\u5c5e\u6027",
196 | "Table properties": "\u8868\u683c\u5c5e\u6027",
197 | "Bottom": "\u5e95\u90e8\u5bf9\u9f50",
198 | "V Align": "\u5782\u76f4\u5bf9\u9f50",
199 | "Header": "\u8868\u5934",
200 | "Right": "\u53f3\u5bf9\u9f50",
201 | "Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
202 | "Cols": "\u5217",
203 | "Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
204 | "Width": "\u5bbd",
205 | "Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
206 | "Left": "\u5de6\u5bf9\u9f50",
207 | "Cut row": "\u526a\u5207\u884c",
208 | "Delete column": "\u5220\u9664\u5217",
209 | "Center": "\u5c45\u4e2d",
210 | "Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
211 | "Insert template": "\u63d2\u5165\u6a21\u677f",
212 | "Templates": "\u6a21\u677f",
213 | "Background color": "\u80cc\u666f\u8272",
214 | "Custom...": "\u81ea\u5b9a\u4e49...",
215 | "Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
216 | "No color": "\u65e0",
217 | "Text color": "\u6587\u5b57\u989c\u8272",
218 | "Table of Contents": "\u5185\u5bb9\u5217\u8868",
219 | "Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
220 | "Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
221 | "Words: {0}": "\u5b57\u6570\uff1a{0}",
222 | "Insert": "\u63d2\u5165",
223 | "File": "\u6587\u4ef6",
224 | "Edit": "\u7f16\u8f91",
225 | "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
226 | "Tools": "\u5de5\u5177",
227 | "View": "\u89c6\u56fe",
228 | "Table": "\u8868\u683c",
229 | "Format": "\u683c\u5f0f"
230 | });
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/codesample/css/prism.css:
--------------------------------------------------------------------------------
1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
2 | /**
3 | * prism.js default theme for JavaScript, CSS and HTML
4 | * Based on dabblet (http://dabblet.com)
5 | * @author Lea Verou
6 | */
7 |
8 | code[class*="language-"],
9 | pre[class*="language-"] {
10 | color: black;
11 | text-shadow: 0 1px white;
12 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
13 | direction: ltr;
14 | text-align: left;
15 | white-space: pre;
16 | word-spacing: normal;
17 | word-break: normal;
18 | word-wrap: normal;
19 | line-height: 1.5;
20 |
21 | -moz-tab-size: 4;
22 | -o-tab-size: 4;
23 | tab-size: 4;
24 |
25 | -webkit-hyphens: none;
26 | -moz-hyphens: none;
27 | -ms-hyphens: none;
28 | hyphens: none;
29 | }
30 |
31 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
32 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
33 | text-shadow: none;
34 | background: #b3d4fc;
35 | }
36 |
37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
38 | code[class*="language-"]::selection, code[class*="language-"] ::selection {
39 | text-shadow: none;
40 | background: #b3d4fc;
41 | }
42 |
43 | @media print {
44 | code[class*="language-"],
45 | pre[class*="language-"] {
46 | text-shadow: none;
47 | }
48 | }
49 |
50 | /* Code blocks */
51 | pre[class*="language-"] {
52 | padding: 1em;
53 | margin: .5em 0;
54 | overflow: auto;
55 | }
56 |
57 | :not(pre) > code[class*="language-"],
58 | pre[class*="language-"] {
59 | background: #f5f2f0;
60 | }
61 |
62 | /* Inline code */
63 | :not(pre) > code[class*="language-"] {
64 | padding: .1em;
65 | border-radius: .3em;
66 | }
67 |
68 | .token.comment,
69 | .token.prolog,
70 | .token.doctype,
71 | .token.cdata {
72 | color: slategray;
73 | }
74 |
75 | .token.punctuation {
76 | color: #999;
77 | }
78 |
79 | .namespace {
80 | opacity: .7;
81 | }
82 |
83 | .token.property,
84 | .token.tag,
85 | .token.boolean,
86 | .token.number,
87 | .token.constant,
88 | .token.symbol,
89 | .token.deleted {
90 | color: #905;
91 | }
92 |
93 | .token.selector,
94 | .token.attr-name,
95 | .token.string,
96 | .token.char,
97 | .token.builtin,
98 | .token.inserted {
99 | color: #690;
100 | }
101 |
102 | .token.operator,
103 | .token.entity,
104 | .token.url,
105 | .language-css .token.string,
106 | .style .token.string {
107 | color: #a67f59;
108 | background: hsla(0, 0%, 100%, .5);
109 | }
110 |
111 | .token.atrule,
112 | .token.attr-value,
113 | .token.keyword {
114 | color: #07a;
115 | }
116 |
117 | .token.function {
118 | color: #DD4A68;
119 | }
120 |
121 | .token.regex,
122 | .token.important,
123 | .token.variable {
124 | color: #e90;
125 | }
126 |
127 | .token.important,
128 | .token.bold {
129 | font-weight: bold;
130 | }
131 | .token.italic {
132 | font-style: italic;
133 | }
134 |
135 | .token.entity {
136 | cursor: help;
137 | }
138 |
139 |
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/plugins/visualblocks/css/visualblocks.css:
--------------------------------------------------------------------------------
1 | .mce-visualblocks p {
2 | padding-top: 10px;
3 | border: 1px dashed #BBB;
4 | margin-left: 3px;
5 | background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
6 | background-repeat: no-repeat;
7 | }
8 |
9 | .mce-visualblocks h1 {
10 | padding-top: 10px;
11 | border: 1px dashed #BBB;
12 | margin-left: 3px;
13 | background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
14 | background-repeat: no-repeat;
15 | }
16 |
17 | .mce-visualblocks h2 {
18 | padding-top: 10px;
19 | border: 1px dashed #BBB;
20 | margin-left: 3px;
21 | background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
22 | background-repeat: no-repeat;
23 | }
24 |
25 | .mce-visualblocks h3 {
26 | padding-top: 10px;
27 | border: 1px dashed #BBB;
28 | margin-left: 3px;
29 | background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
30 | background-repeat: no-repeat;
31 | }
32 |
33 | .mce-visualblocks h4 {
34 | padding-top: 10px;
35 | border: 1px dashed #BBB;
36 | margin-left: 3px;
37 | background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
38 | background-repeat: no-repeat;
39 | }
40 |
41 | .mce-visualblocks h5 {
42 | padding-top: 10px;
43 | border: 1px dashed #BBB;
44 | margin-left: 3px;
45 | background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
46 | background-repeat: no-repeat;
47 | }
48 |
49 | .mce-visualblocks h6 {
50 | padding-top: 10px;
51 | border: 1px dashed #BBB;
52 | margin-left: 3px;
53 | background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
54 | background-repeat: no-repeat;
55 | }
56 |
57 | .mce-visualblocks div:not([data-mce-bogus]) {
58 | padding-top: 10px;
59 | border: 1px dashed #BBB;
60 | margin-left: 3px;
61 | background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
62 | background-repeat: no-repeat;
63 | }
64 |
65 | .mce-visualblocks section {
66 | padding-top: 10px;
67 | border: 1px dashed #BBB;
68 | margin: 0 0 1em 3px;
69 | background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
70 | background-repeat: no-repeat;
71 | }
72 |
73 | .mce-visualblocks article {
74 | padding-top: 10px;
75 | border: 1px dashed #BBB;
76 | margin: 0 0 1em 3px;
77 | background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
78 | background-repeat: no-repeat;
79 | }
80 |
81 | .mce-visualblocks blockquote {
82 | padding-top: 10px;
83 | border: 1px dashed #BBB;
84 | background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
85 | background-repeat: no-repeat;
86 | }
87 |
88 | .mce-visualblocks address {
89 | padding-top: 10px;
90 | border: 1px dashed #BBB;
91 | margin: 0 0 1em 3px;
92 | background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
93 | background-repeat: no-repeat;
94 | }
95 |
96 | .mce-visualblocks pre {
97 | padding-top: 10px;
98 | border: 1px dashed #BBB;
99 | margin-left: 3px;
100 | background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
101 | background-repeat: no-repeat;
102 | }
103 |
104 | .mce-visualblocks figure {
105 | padding-top: 10px;
106 | border: 1px dashed #BBB;
107 | margin: 0 0 1em 3px;
108 | background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
109 | background-repeat: no-repeat;
110 | }
111 |
112 | .mce-visualblocks hgroup {
113 | padding-top: 10px;
114 | border: 1px dashed #BBB;
115 | margin: 0 0 1em 3px;
116 | background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
117 | background-repeat: no-repeat;
118 | }
119 |
120 | .mce-visualblocks aside {
121 | padding-top: 10px;
122 | border: 1px dashed #BBB;
123 | margin: 0 0 1em 3px;
124 | background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
125 | background-repeat: no-repeat;
126 | }
127 |
128 | .mce-visualblocks figcaption {
129 | border: 1px dashed #BBB;
130 | }
131 |
132 | .mce-visualblocks ul {
133 | padding-top: 10px;
134 | border: 1px dashed #BBB;
135 | margin: 0 0 1em 3px;
136 | background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
137 | background-repeat: no-repeat;
138 | }
139 |
140 | .mce-visualblocks ol {
141 | padding-top: 10px;
142 | border: 1px dashed #BBB;
143 | margin: 0 0 1em 3px;
144 | background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
145 | background-repeat: no-repeat;
146 | }
147 |
148 | .mce-visualblocks dl {
149 | padding-top: 10px;
150 | border: 1px dashed #BBB;
151 | margin: 0 0 1em 3px;
152 | background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
153 | background-repeat: no-repeat;
154 | }
155 |
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/content.inline.min.css:
--------------------------------------------------------------------------------
1 | .word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3}
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/content.min.css:
--------------------------------------------------------------------------------
1 | body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2} a {color: #1478F0;}
2 |
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/img/anchor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/img/anchor.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/img/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/img/loader.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/img/object.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/img/object.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/img/trans.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/public/tinymce4.7.5/skins/lightgray/img/trans.gif
--------------------------------------------------------------------------------
/public/tinymce4.7.5/skins/lightgray/skin.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["./src/skins/lightgray/main/less/desktop/Reset.less","./src/skins/lightgray/main/less/desktop/Variables.less","./src/skins/lightgray/main/less/desktop/Mixins.less","./src/skins/lightgray/main/less/desktop/Animations.less","./src/skins/lightgray/main/less/desktop/TinyMCE.less","./src/skins/lightgray/main/less/desktop/CropRect.less","./src/skins/lightgray/main/less/desktop/ImagePanel.less","./src/skins/lightgray/main/less/desktop/Arrows.less","./src/skins/lightgray/main/less/desktop/Sidebar.less","./src/skins/lightgray/main/less/desktop/Container.less","./src/skins/lightgray/main/less/desktop/Scrollable.less","./src/skins/lightgray/main/less/desktop/Panel.less","./src/skins/lightgray/main/less/desktop/FloatPanel.less","./src/skins/lightgray/main/less/desktop/Window.less","./src/skins/lightgray/main/less/desktop/ToolTip.less","./src/skins/lightgray/main/less/desktop/Progress.less","./src/skins/lightgray/main/less/desktop/Notification.less","./src/skins/lightgray/main/less/desktop/AbsoluteLayout.less","./src/skins/lightgray/main/less/desktop/Button.less","./src/skins/lightgray/main/less/desktop/ButtonGroup.less","./src/skins/lightgray/main/less/desktop/Checkbox.less","./src/skins/lightgray/main/less/desktop/ComboBox.less","./src/skins/lightgray/main/less/desktop/ColorBox.less","./src/skins/lightgray/main/less/desktop/ColorButton.less","./src/skins/lightgray/main/less/desktop/ColorPicker.less","./src/skins/lightgray/main/less/desktop/Path.less","./src/skins/lightgray/main/less/desktop/FieldSet.less","./src/skins/lightgray/main/less/desktop/FitLayout.less","./src/skins/lightgray/main/less/desktop/FlowLayout.less","./src/skins/lightgray/main/less/desktop/Iframe.less","./src/skins/lightgray/main/less/desktop/InfoBox.less","./src/skins/lightgray/main/less/desktop/Label.less","./src/skins/lightgray/main/less/desktop/MenuBar.less","./src/skins/lightgray/main/less/desktop/MenuButton.less","./src/skins/lightgray/main/less/desktop/MenuItem.less","./src/skins/lightgray/main/less/desktop/Throbber.less","./src/skins/lightgray/main/less/desktop/Menu.less","./src/skins/lightgray/main/less/desktop/ListBox.less","./src/skins/lightgray/main/less/desktop/ResizeHandle.less","./src/skins/lightgray/main/less/desktop/SelectBox.less","./src/skins/lightgray/main/less/desktop/Slider.less","./src/skins/lightgray/main/less/desktop/Spacer.less","./src/skins/lightgray/main/less/desktop/SplitButton.less","./src/skins/lightgray/main/less/desktop/StackLayout.less","./src/skins/lightgray/main/less/desktop/TabPanel.less","./src/skins/lightgray/main/less/desktop/TextBox.less","./src/skins/lightgray/main/less/desktop/DropZone.less","./src/skins/lightgray/main/less/desktop/BrowseButton.less","./src/skins/lightgray/main/less/desktop/Icons.less","./src/skins/lightgray/main/less/desktop/FilePicker.less"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 | 编辑器
15 | 表单
16 | 表格
17 |
18 | 预览
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
33 |
34 |
63 |
--------------------------------------------------------------------------------
/src/components/dynamic-form/form.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
61 |
62 |
90 |
--------------------------------------------------------------------------------
/src/components/dynamic-form/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Form from './form';
3 | import Item from './item';
4 | import InputNumber from './input-number';
5 |
6 | Vue.component('input-number', InputNumber);
7 | Vue.component('dynamic-form', Form);
8 | Vue.component('dynamic-form-item', Item);
9 |
--------------------------------------------------------------------------------
/src/components/dynamic-form/input-number.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 | {{ prepend }}
14 | {{ append }}
18 |
19 |
20 |
135 |
--------------------------------------------------------------------------------
/src/components/dynamic-form/item.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
16 |
22 |
23 |
28 |
29 |
34 |
39 |
40 |
47 |
48 |
54 |
55 |
61 |
62 |
67 | {{ o.label }}
75 |
76 |
77 |
82 | {{ o.label }}
90 |
91 |
92 |
97 |
104 |
105 |
106 |
107 |
114 |
115 |
124 |
125 |
135 |
136 |
141 |
142 | 未知控件类型
143 |
144 |
145 |
146 |
147 |
222 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icon-svg.vue:
--------------------------------------------------------------------------------
1 |
2 | svg.icon-svg(aria-hidden="true" :class="[props.icon]")
3 | use(:xlink:href="`#icon-${props.icon}`")
4 |
5 |
6 |
15 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/cascader.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/input.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/number.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/radio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/richtext.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/select.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/icons/switch.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/icon-svg/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import IconSvg from './icon-svg'; // svg组件
3 |
4 | Vue.component('icon-svg', IconSvg);
5 |
6 | const requireAll = requireContext => requireContext.keys().map(requireContext);
7 | const req = require.context('./icons', false, /\.svg$/);
8 | requireAll(req);
9 |
--------------------------------------------------------------------------------
/src/components/themePicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
138 |
139 |
148 |
--------------------------------------------------------------------------------
/src/components/tinymce/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
90 |
--------------------------------------------------------------------------------
/src/components/tinymce/init.js:
--------------------------------------------------------------------------------
1 | import zh_CN from './zh_CN.json';
2 |
3 | export default () => new Promise((resolve, reject) => {
4 | if (window.tinymce) {
5 | resolve(window.tinymce);
6 | } else {
7 | const script = document.createElement('script');
8 | script.onload = () => {
9 | window.tinymce.addI18n('zh_CN', zh_CN);
10 | resolve(window.tinymce);
11 | };
12 | script.onerror = () => {
13 | reject(new Error('无法加载脚本'));
14 | };
15 | script.src = '/tinymce4.7.5/tinymce.min.js';
16 | document.head.appendChild(script);
17 | }
18 | });
19 |
--------------------------------------------------------------------------------
/src/components/tinymce/zh_CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "Cut": "\u526a\u5207",
3 | "Heading 5": "\u6807\u98985",
4 | "Header 2": "\u6807\u98982",
5 | "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X/C/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
6 | "Heading 4": "\u6807\u98984",
7 | "Div": "Div\u533a\u5757",
8 | "Heading 2": "\u6807\u98982",
9 | "Paste": "\u7c98\u8d34",
10 | "Close": "\u5173\u95ed",
11 | "Font Family": "\u5b57\u4f53",
12 | "Pre": "\u9884\u683c\u5f0f\u6587\u672c",
13 | "Align right": "\u53f3\u5bf9\u9f50",
14 | "New document": "\u65b0\u6587\u6863",
15 | "Blockquote": "\u5f15\u7528",
16 | "Numbered list": "\u7f16\u53f7\u5217\u8868",
17 | "Heading 1": "\u6807\u98981",
18 | "Headings": "\u6807\u9898",
19 | "Increase indent": "\u589e\u52a0\u7f29\u8fdb",
20 | "Formats": "\u683c\u5f0f",
21 | "Headers": "\u6807\u9898",
22 | "Select all": "\u5168\u9009",
23 | "Header 3": "\u6807\u98983",
24 | "Blocks": "\u533a\u5757",
25 | "Undo": "\u64a4\u6d88",
26 | "Strikethrough": "\u5220\u9664\u7ebf",
27 | "Bullet list": "\u9879\u76ee\u7b26\u53f7",
28 | "Header 1": "\u6807\u98981",
29 | "Superscript": "\u4e0a\u6807",
30 | "Clear formatting": "\u6e05\u9664\u683c\u5f0f",
31 | "Font Sizes": "\u5b57\u53f7",
32 | "Subscript": "\u4e0b\u6807",
33 | "Header 6": "\u6807\u98986",
34 | "Redo": "\u91cd\u590d",
35 | "Paragraph": "\u6bb5\u843d",
36 | "Ok": "\u786e\u5b9a",
37 | "Bold": "\u7c97\u4f53",
38 | "Code": "\u4ee3\u7801",
39 | "Italic": "\u659c\u4f53",
40 | "Align center": "\u5c45\u4e2d",
41 | "Header 5": "\u6807\u98985",
42 | "Heading 6": "\u6807\u98986",
43 | "Heading 3": "\u6807\u98983",
44 | "Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
45 | "Header 4": "\u6807\u98984",
46 | "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
47 | "Underline": "\u4e0b\u5212\u7ebf",
48 | "Cancel": "\u53d6\u6d88",
49 | "Justify": "\u4e24\u7aef\u5bf9\u9f50",
50 | "Inline": "\u6587\u672c",
51 | "Copy": "\u590d\u5236",
52 | "Align left": "\u5de6\u5bf9\u9f50",
53 | "Visual aids": "\u7f51\u683c\u7ebf",
54 | "Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
55 | "Square": "\u65b9\u5757",
56 | "Default": "\u9ed8\u8ba4",
57 | "Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
58 | "Circle": "\u7a7a\u5fc3\u5706",
59 | "Disc": "\u5b9e\u5fc3\u5706",
60 | "Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
61 | "Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
62 | "Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
63 | "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
64 | "Name": "\u540d\u79f0",
65 | "Anchor": "\u951a\u70b9",
66 | "Id": "\u6807\u8bc6\u7b26",
67 | "You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
68 | "Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
69 | "Special character": "\u7279\u6b8a\u7b26\u53f7",
70 | "Source code": "\u6e90\u4ee3\u7801",
71 | "Language": "\u8bed\u8a00",
72 | "Insert/Edit code sample": "\u63d2\u5165/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
73 | "B": "B",
74 | "R": "R",
75 | "G": "G",
76 | "Color": "\u989c\u8272",
77 | "Right to left": "\u4ece\u53f3\u5230\u5de6",
78 | "Left to right": "\u4ece\u5de6\u5230\u53f3",
79 | "Emoticons": "\u8868\u60c5",
80 | "Robots": "\u673a\u5668\u4eba",
81 | "Document properties": "\u6587\u6863\u5c5e\u6027",
82 | "Title": "\u6807\u9898",
83 | "Keywords": "\u5173\u952e\u8bcd",
84 | "Encoding": "\u7f16\u7801",
85 | "Description": "\u63cf\u8ff0",
86 | "Author": "\u4f5c\u8005",
87 | "Fullscreen": "\u5168\u5c4f",
88 | "Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
89 | "Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
90 | "Insert/edit image": "\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",
91 | "General": "\u666e\u901a",
92 | "Advanced": "\u9ad8\u7ea7",
93 | "Source": "\u5730\u5740",
94 | "Border": "\u8fb9\u6846",
95 | "Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
96 | "Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
97 | "Image description": "\u56fe\u7247\u63cf\u8ff0",
98 | "Style": "\u6837\u5f0f",
99 | "Dimensions": "\u5927\u5c0f",
100 | "Insert image": "\u63d2\u5165\u56fe\u7247",
101 | "Image": "\u56fe\u7247",
102 | "Zoom in": "\u653e\u5927",
103 | "Contrast": "\u5bf9\u6bd4\u5ea6",
104 | "Back": "\u540e\u9000",
105 | "Gamma": "\u4f3d\u9a6c\u503c",
106 | "Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
107 | "Resize": "\u8c03\u6574\u5927\u5c0f",
108 | "Sharpen": "\u9510\u5316",
109 | "Zoom out": "\u7f29\u5c0f",
110 | "Image options": "\u56fe\u7247\u9009\u9879",
111 | "Apply": "\u5e94\u7528",
112 | "Brightness": "\u4eae\u5ea6",
113 | "Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
114 | "Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
115 | "Edit image": "\u7f16\u8f91\u56fe\u7247",
116 | "Color levels": "\u989c\u8272\u5c42\u6b21",
117 | "Crop": "\u88c1\u526a",
118 | "Orientation": "\u65b9\u5411",
119 | "Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
120 | "Invert": "\u53cd\u8f6c",
121 | "Date/time": "\u65e5\u671f/\u65f6\u95f4",
122 | "Insert date/time": "\u63d2\u5165\u65e5\u671f/\u65f6\u95f4",
123 | "Remove link": "\u5220\u9664\u94fe\u63a5",
124 | "Url": "\u5730\u5740",
125 | "Text to display": "\u663e\u793a\u6587\u5b57",
126 | "Anchors": "\u951a\u70b9",
127 | "Insert link": "\u63d2\u5165\u94fe\u63a5",
128 | "Link": "\u94fe\u63a5",
129 | "New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
130 | "None": "\u65e0",
131 | "The URL you entered seems to be an external link. Do you want to add the required http:// prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp://:\u524d\u7f00\u5417\uff1f",
132 | "Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
133 | "Target": "\u6253\u5f00\u65b9\u5f0f",
134 | "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
135 | "Insert/edit link": "\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5",
136 | "Insert/edit video": "\u63d2\u5165/\u7f16\u8f91\u89c6\u9891",
137 | "Media": "\u5a92\u4f53",
138 | "Alternative source": "\u955c\u50cf",
139 | "Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
140 | "Insert video": "\u63d2\u5165\u89c6\u9891",
141 | "Poster": "\u5c01\u9762",
142 | "Insert/edit media": "\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53",
143 | "Embed": "\u5185\u5d4c",
144 | "Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
145 | "Page break": "\u5206\u9875\u7b26",
146 | "Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
147 | "Preview": "\u9884\u89c8",
148 | "Print": "\u6253\u5370",
149 | "Save": "\u4fdd\u5b58",
150 | "Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
151 | "Replace": "\u66ff\u6362",
152 | "Next": "\u4e0b\u4e00\u4e2a",
153 | "Whole words": "\u5168\u5b57\u5339\u914d",
154 | "Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
155 | "Replace with": "\u66ff\u6362\u4e3a",
156 | "Find": "\u67e5\u627e",
157 | "Replace all": "\u5168\u90e8\u66ff\u6362",
158 | "Match case": "\u533a\u5206\u5927\u5c0f\u5199",
159 | "Prev": "\u4e0a\u4e00\u4e2a",
160 | "Spellcheck": "\u62fc\u5199\u68c0\u67e5",
161 | "Finish": "\u5b8c\u6210",
162 | "Ignore all": "\u5168\u90e8\u5ffd\u7565",
163 | "Ignore": "\u5ffd\u7565",
164 | "Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
165 | "Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
166 | "Rows": "\u884c",
167 | "Height": "\u9ad8",
168 | "Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
169 | "Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
170 | "Border color": "\u8fb9\u6846\u989c\u8272",
171 | "Column group": "\u5217\u7ec4",
172 | "Row": "\u884c",
173 | "Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
174 | "Split cell": "\u62c6\u5206\u5355\u5143\u683c",
175 | "Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
176 | "Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
177 | "Row type": "\u884c\u7c7b\u578b",
178 | "Insert table": "\u63d2\u5165\u8868\u683c",
179 | "Body": "\u8868\u4f53",
180 | "Caption": "\u6807\u9898",
181 | "Footer": "\u8868\u5c3e",
182 | "Delete row": "\u5220\u9664\u884c",
183 | "Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
184 | "Scope": "\u8303\u56f4",
185 | "Delete table": "\u5220\u9664\u8868\u683c",
186 | "H Align": "\u6c34\u5e73\u5bf9\u9f50",
187 | "Top": "\u9876\u90e8\u5bf9\u9f50",
188 | "Header cell": "\u8868\u5934\u5355\u5143\u683c",
189 | "Column": "\u5217",
190 | "Row group": "\u884c\u7ec4",
191 | "Cell": "\u5355\u5143\u683c",
192 | "Middle": "\u5782\u76f4\u5c45\u4e2d",
193 | "Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
194 | "Copy row": "\u590d\u5236\u884c",
195 | "Row properties": "\u884c\u5c5e\u6027",
196 | "Table properties": "\u8868\u683c\u5c5e\u6027",
197 | "Bottom": "\u5e95\u90e8\u5bf9\u9f50",
198 | "V Align": "\u5782\u76f4\u5bf9\u9f50",
199 | "Header": "\u8868\u5934",
200 | "Right": "\u53f3\u5bf9\u9f50",
201 | "Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
202 | "Cols": "\u5217",
203 | "Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
204 | "Width": "\u5bbd",
205 | "Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
206 | "Left": "\u5de6\u5bf9\u9f50",
207 | "Cut row": "\u526a\u5207\u884c",
208 | "Delete column": "\u5220\u9664\u5217",
209 | "Center": "\u5c45\u4e2d",
210 | "Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
211 | "Insert template": "\u63d2\u5165\u6a21\u677f",
212 | "Templates": "\u6a21\u677f",
213 | "Background color": "\u80cc\u666f\u8272",
214 | "Custom...": "\u81ea\u5b9a\u4e49...",
215 | "Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
216 | "No color": "\u65e0",
217 | "Text color": "\u6587\u5b57\u989c\u8272",
218 | "Table of Contents": "\u5185\u5bb9\u5217\u8868",
219 | "Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
220 | "Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
221 | "Words: {0}": "\u5b57\u6570\uff1a{0}",
222 | "Insert": "\u63d2\u5165",
223 | "File": "\u6587\u4ef6",
224 | "Edit": "\u7f16\u8f91",
225 | "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
226 | "Tools": "\u5de5\u5177",
227 | "View": "\u89c6\u56fe",
228 | "Table": "\u8868\u683c",
229 | "Format": "\u683c\u5f0f"
230 | }
231 |
--------------------------------------------------------------------------------
/src/gifs/ajax.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/src/gifs/ajax.gif
--------------------------------------------------------------------------------
/src/gifs/drag.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/src/gifs/drag.gif
--------------------------------------------------------------------------------
/src/gifs/live.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bowencool/super-form/caa89a5c3ac94c690c384cae12500450ec64315f/src/gifs/live.gif
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Element from 'element-ui';
3 | import App from './App';
4 | import router from './router';
5 | import store from './store';
6 | import '@/components/icon-svg';
7 | import '@/components/dynamic-form';
8 |
9 | Vue.use(Element);
10 |
11 | Vue.config.productionTip = false;
12 |
13 | /* eslint-disable no-new */
14 | new Vue({
15 | el: '#app',
16 | router,
17 | store,
18 | render: h => h(App),
19 | });
20 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Router from 'vue-router';
3 | import Preview from '@/views/preview/preview';
4 | import Editor from '@/views/editor';
5 | import EditorFormAside from '@/views/editor/form/aside';
6 | import EditorFormMain from '@/views/editor/form/main';
7 | import EditorTableAside from '@/views/editor/table/aside';
8 | import EditorTableMain from '@/views/editor/table/main';
9 |
10 | Vue.use(Router);
11 |
12 | export default new Router({
13 | // mode: 'history',
14 | routes: [
15 | {
16 | path: '/editor',
17 | redirect: '/editor/form',
18 | component: Editor,
19 | children: [
20 | {
21 | path: 'form',
22 | components: {
23 | aside: EditorFormAside,
24 | main: EditorFormMain,
25 | },
26 | },
27 | {
28 | path: 'table',
29 | components: {
30 | aside: EditorTableAside,
31 | main: EditorTableMain,
32 | },
33 | },
34 | ],
35 | },
36 | {
37 | path: '/preview',
38 | component: Preview,
39 | },
40 | {
41 | path: '*',
42 | redirect: '/editor',
43 | },
44 | ],
45 | });
46 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuex from 'vuex';
3 | import form from './modules/form'; // 表单
4 |
5 | Vue.use(Vuex);
6 |
7 | const store = new Vuex.Store({
8 | state: {
9 | itemKey: '', // 当前选中的item
10 | asideActiveName: 'items-list', // 侧边栏标签当前活动位置
11 | },
12 | mutations: {
13 | SELECT_ITEM(state, newKey) {
14 | state.itemKey = newKey;
15 | // 只要itemKey变化, 就切换至'组件配置'页
16 | state.asideActiveName = 'item-config';
17 | },
18 | TOGGLE_ASIDE_ACTIVE(state, newName) {
19 | state.asideActiveName = newName;
20 | },
21 | },
22 | modules: {
23 | // todo 表格table
24 | form,
25 | },
26 | });
27 |
28 | export default store;
29 |
--------------------------------------------------------------------------------
/src/store/modules/form.js:
--------------------------------------------------------------------------------
1 | export default {
2 | state: {
3 | inline: false, // 是否使用inline排版
4 | labelPosition: 'right', // 标签对齐方式
5 | labelWidth: '80px', // 标签宽度
6 | size: 'small', // 尺寸
7 | statusIcon: true, // 显示验证图标
8 | formItemList: [],
9 | },
10 | mutations: {
11 | UPDATE_FORM(state, payload) {
12 | Object.assign(state, payload);
13 | },
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/src/utils/guid.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-bitwise */
2 | export default function () {
3 | return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
4 | const r = Math.random() * 16 | 0;
5 | const v = c === 'x' ? r : (r & 0x3 | 0x8);
6 | return v.toString(16);
7 | });
8 | }
9 |
--------------------------------------------------------------------------------
/src/utils/request.js:
--------------------------------------------------------------------------------
1 | export default (url, method, body) => fetch(url, {
2 | method,
3 | body: JSON.stringify(body),
4 | headers: {
5 | 'Content-Type': 'application/json; charset=utf-8',
6 | },
7 | })
8 | .then(response => {
9 | if (response.status >= 200 && response.status < 300) {
10 | return response.json();
11 | }
12 | throw new Error(response.statusText);
13 | });
14 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/availabel-item-list.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | export default {
3 | "input": {
4 | "type": 'input', // 必要, String
5 | // "subtype": 'text',
6 | "label": '文本', // 必要, String
7 | "disabled": false, //禁用, Boolean
8 | "readonly": false, //只读, Boolean
9 | // "block": true, //独占一行, Boolean, 如果选项太长也会自动换行
10 | "value": '', // 默认值
11 | "placeholder": '请输入一些文本',
12 | "rules": [
13 | // 验证规则, Array
14 | // https://github.com/yiminghe/async-validator
15 | { "required": true, "message": '不能为空', 'trigger': 'blur' },
16 | { "min": 1, "max": 8, "message": '长度在 1 到 8 个字符', 'trigger': 'blur' },
17 | { "pattern": '^[\\w\\u4e00-\\u9fa5-_]+$', "message": '正则验证失败:^[\\w\\u4e00-\\u9fa5-_]+$', 'trigger': 'blur' },
18 | { "sql": "SELECT {key} FROM balabala", "message": 'SQL验证失败', 'trigger': 'blur' }
19 | ],
20 | },
21 | "number": {
22 | "type": 'number', // number 类型目前采用的是"输入前"限制, 使用rules验证会出现bug
23 | "label": '数字',
24 | "value": 16,
25 | "decimal1": 2, // 允许的小数位数
26 | "min": 0,
27 | "max": 99998,
28 | "prepend": '¥', // String, 前缀
29 | "append": '元', // String, 后缀(单位)
30 | },
31 | "switch": {
32 | "type": 'switch',
33 | "label": '开关',
34 | "appearance": "switch", // 外观, 'switch'开关(默认) / checkbox勾选
35 | "value": true
36 | },
37 | "radio": {
38 | "type": 'radio',
39 | "label": '单选',
40 | "value": '',
41 | // "options": [
42 | // {
43 | // "value": 'opt1',
44 | // "label": '蒸羊羔',
45 | // "disabled": false
46 | // }
47 | // ],
48 | "button": false, // 按钮形状, inline模式下推荐开启, 多选框checkbox同样有效
49 | "border": true, // (非按钮形式)显示边框, inline模式下推荐开启, 多选框checkbox同样有效
50 | "rules": [
51 | { "required": true, "message": '请选择一项', "trigger": 'blur' },
52 | ],
53 | },
54 | "checkbox": {
55 | "type": 'checkbox',
56 | "label": '多选',
57 | "value": [],
58 | "border": true,
59 | "button": false,
60 | // "max": 2, // 限制输入
61 | // "min": 1,
62 | // "options": [],
63 | "rules": [
64 | { "type": "array", "required": true, "min": 1, "max": 2, "message": '请勾选1~2项' },
65 | ],
66 | },
67 | "select": {
68 | "type": 'select',
69 | "label": '下拉',
70 | "value": '',
71 | "disabled": false,
72 | "multiple": false,
73 | // "options": [],
74 | "placeholder": '请选择',
75 | "rules": [],
76 | },
77 | "date": {
78 | "type": 'date',
79 | // "subtype": 'year',
80 | // "label": '年',
81 | "value": null,
82 | "disabled": false,
83 | // "valueFormat": 'yyyy', // 默认为Date对象, 形如"2017-12-12T05:39:34.000Z"
84 | // "viewFormat": 'yyyy年', // 显示在输入框中的格式, 如不填写, 则使用valueFormat, 仅 type=date 有效
85 | "rules": [
86 | { required: "true", message: "此项为必填项" }
87 | ],
88 | "placeholder": '请选择'
89 | },
90 | "cascader": {
91 | "type": 'cascader',
92 | "label": '级联选择',
93 | "disabled": false,
94 | "filterable": false,
95 | "value": null,
96 | "placeholder": '请选择',
97 | "rules": [
98 | { "required": true, "type": 'array', "min": 1, "message": '请选择' },
99 | ],
100 | },
101 | "richtext": {
102 | "type": "richtext",
103 | "label": "内容",
104 | "value": '',
105 | }
106 | // {
107 | // "type": 'rate',
108 | // "label": '评分',
109 | // "key": 'rate1',
110 | // "value": 5,
111 | // },
112 | // {
113 | // "type": 'color',
114 | // "label": '颜色',
115 | // "key": 'color1',
116 | // // 选择透明度
117 | // "showAlpha": true,
118 | // // 颜色格式, String, hsl / hsv / hex / rgb, 默认值为 hex(showAlpha=false) / rgb(showAlpha=true)
119 | // // "format": 'rgb',
120 | // // "value": 'rgba(19, 206, 102, 0.8)',
121 | // },
122 | // {
123 | // "type": 'slider', // 可以限制范围, 也可以选择数字范围
124 | // "label": '滑块',
125 | // "key": 'slider1',
126 | // "value": 10,
127 | // // "block": true,
128 | // },
129 | // {
130 | // "type": 'slider',
131 | // "label": '自定义范围',
132 | // "key": 'slider2',
133 | // "value": 70,
134 | // "block": true,
135 | // "showStops": true, // 显示间断点
136 | // "step": 5, // 默认为1
137 | // "min": 60,
138 | // "max": 90,
139 | // },
140 | // {
141 | // "type": 'slider',
142 | // "isRange": true, // 选择范围
143 | // "label": '选择范围',
144 | // "key": 'slider3',
145 | // // "value": null, // 默认值为[min, max]
146 | // "block": true,
147 | // "min": 0,
148 | // "max": 100,
149 | // },
150 | // {
151 | // "type": 'time',
152 | // "label": '时间',
153 | // "key": 'time1',
154 | // "valueFormat": 'HH:mm:ss A',
155 | // "placeholder": '选择时间',
156 | // "rules": [{ "required": true, "message": '请选择一个时间' }]
157 | // },
158 | // {
159 | // "type": 'time',
160 | // "isRange": true, // 选择时间范围
161 | // "label": '时间范围',
162 | // "key": 'timeRange1',
163 | // "valueFormat": 'HH:mm:ss',
164 | // "viewFormat": 'HH:mm:ss',
165 | // // "value": null, // 返回格式: ['00:00', '00:00']
166 | // "rules": [{ "type": "array", "required": true, "message": '请选择一个时间范围' }]
167 | // },
168 | }
169 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editor-global.json:
--------------------------------------------------------------------------------
1 | {
2 | "inline": false,
3 | "labelPosition": "right",
4 | "labelWidth": "70px",
5 | "size": "mini",
6 | "statusIcon": true,
7 | "formItemList": [
8 | {
9 | "type": "switch",
10 | "label": "内联模式",
11 | "key": "inline",
12 | "value": false
13 | },
14 | {
15 | "type": "input",
16 | "subtype": "text",
17 | "label": "标签宽度",
18 | "key": "labelWidth",
19 | "value": "",
20 | "placeholder": "css width属性, 可不填, 但会影响对齐"
21 | },
22 | {
23 | "type": "radio",
24 | "label": "标签对齐",
25 | "key": "labelPosition",
26 | "value": "right",
27 | "button": true,
28 | "options": [
29 | {
30 | "value": "left",
31 | "label": "左对齐"
32 | },
33 | {
34 | "value": "top",
35 | "label": "顶部对齐"
36 | },
37 | {
38 | "value": "right",
39 | "label": "右对齐"
40 | }
41 | ]
42 | },
43 | {
44 | "type": "select",
45 | "label": "尺寸",
46 | "key": "size",
47 | "value": "small",
48 | "options": [
49 | {
50 | "value": "",
51 | "label": "默认"
52 | },
53 | {
54 | "value": "medium",
55 | "label": "中"
56 | },
57 | {
58 | "value": "small",
59 | "label": "小"
60 | },
61 | {
62 | "value": "mini",
63 | "label": "迷你"
64 | }
65 | ]
66 | },
67 | {
68 | "type": "switch",
69 | "label": "验证图标",
70 | "key": "statusIcon",
71 | "value": true
72 | }
73 | ]
74 | }
75 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editor-options.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 | div.bowen-options
13 | p.c666.text-center 选项配置[共{{itemOptions.length}}条]
14 |
15 | div.c666(v-for="(opt,i) in itemOptions" :key="i")
16 |
17 | template(v-if="editingIdx===i")
18 | el-input(
19 | size="mini"
20 | v-model="editingOpt.value"
21 | placeholder="值")
22 | el-input(
23 | size="mini"
24 | v-model="editingOpt.label"
25 | placeholder="标签")
26 | el-button-group
27 | el-button(
28 | size="mini"
29 | icon="el-icon-success"
30 | @click="handleSave(i)")
31 | el-button(
32 | size="mini"
33 | icon="el-icon-error"
34 | @click="editingIdx=-1")
35 |
36 | span(v-else)
37 | //- icon-svg(:icon="'checkbox'")
38 | span {{opt.value}}/{{opt.label}}
39 |
40 | el-button-group
41 | el-button(
42 | size="mini"
43 | round
44 | @click="opt.disabled = !opt.disabled"
45 | :title="opt.disabled?'不可选':'可选'"
46 | :type="opt.disabled?'info':''")
47 | icon-svg(icon="disabled")
48 | el-button(
49 | size="mini"
50 | @click="handlePreEdit(i, opt)"
51 | icon="el-icon-edit"
52 | round)
53 | el-button(
54 | size="mini"
55 | @click="itemOptions.splice(i,1)"
56 | icon="el-icon-delete"
57 | round)
58 |
59 | template(v-if="editingIdx===-2")
60 | el-input(
61 | size="mini"
62 | v-model="editingOpt.value"
63 | placeholder="值")
64 | el-input(
65 | size="mini"
66 | v-model="editingOpt.label"
67 | placeholder="标签")
68 | el-button-group
69 | el-button(
70 | size="mini"
71 | @click="handleSave(itemOptions.length)"
72 | icon="el-icon-success")
73 | el-button(
74 | size="mini"
75 | @click="editingIdx=-1"
76 | icon="el-icon-error")
77 |
78 | el-button(
79 | @click="handlePreAdd"
80 | size="mini"
81 | type="primary") 添加选项
82 |
83 |
84 |
138 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editor-rules.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | p.c666.text-center 验证规则[type={{itemType}}]
4 | //- pre {{itemRules}}
5 | //- 必填
6 | div(v-if="types.includes('required')")
7 | el-checkbox(:value="valid1.enable" @input="handleValid1") 必填
8 | //- 长度
9 | template(v-if="types.includes('length')")
10 | div
11 | el-checkbox(:value="valid2.enable" @input="handleValid2({enable:$event})") 验证长度
12 | div(v-show="valid2.enable")
13 | //- label.c666 长度
14 | el-input-number(controls-position="right" size="mini"
15 | :value="valid2.min"
16 | @input="handleValid2({min:$event})"
17 | :min="1"
18 | :max="valid2.max")
19 | span.c666 ~
20 | el-input-number(controls-position="right" size="mini"
21 | :value="valid2.max"
22 | @input="handleValid2({max:$event})"
23 | :min="valid2.min"
24 | :max="9999")
25 | //- 正则
26 | template(v-if="types.includes('regexp')")
27 | div
28 | el-checkbox(:value="valid3.enable" @input="handleValid3({enable:$event})") 正则验证(暂不支持flag)
29 | div(v-show="valid3.enable")
30 | //- todo 添加多条正则
31 | el-input(size="mini" :value="valid3.pattern" @input="handleValid3({pattern:$event})")
32 | //- sql
33 | template(v-if="types.includes('sql')")
34 | div
35 | el-checkbox(:value="valid4.enable" @input="handleValid4({enable:$event})") SQL验证
36 | div(v-show="valid4.enable")
37 | el-input(size="mini" :value="valid4.sql" @input="handleValid4({sql:$event})")
38 |
39 |
40 |
210 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/cascader.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="占位文本")
9 | el-input(v-model="formItem.placeholder")
10 | el-form-item(label="默认值" v-if="formItem.optionsUrl===undefined")
11 | el-cascader(v-model="formItem.value" :options="formItem.options||require('element-china-area-data')[formItem.areaShortcut]" :clearable="true")
12 | el-form-item(label="数据URL" v-else)
13 | el-input(v-model="formItem.optionsUrl")
14 | el-form-item(label="禁用")
15 | el-checkbox(v-model="formItem.disabled")
16 | //- el-form-item(label="可搜索") todo
17 | //- el-checkbox(v-model="formItem.filterable")
18 |
19 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required")
20 |
21 | pre {{formItem}}
22 |
23 |
24 |
37 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="默认值" v-if="formItem.optionsUrl===undefined")
9 | el-select(v-model="formItem.value" :multiple="true")
10 | el-option(v-for="o in formItem.options" :key="o.value" :label="o.label" :value="o.value")
11 | el-form-item(v-else label="数据URL")
12 | el-input(v-model="formItem.optionsUrl")
13 | el-form-item(label="显示边框")
14 | el-switch(v-model="formItem.border")
15 | el-form-item(label="按钮形状")
16 | el-switch(v-model="formItem.button")
17 |
18 | editor-options(v-if="formItem.optionsUrl===undefined" :itemOptions="formItem.options")
19 |
20 | //- wtf?
21 | //- editor-rules(:item-rules.sync="formItem.rules" :item-type="formItem.type")
22 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required,length")
23 |
24 | pre {{formItem}}
25 |
26 |
27 |
41 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/date.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="占位文本")
9 | el-input(v-model="formItem.placeholder")
10 | el-form-item(label="格式")
11 | el-input(v-model="formItem.valueFormat")
12 | el-form-item(label="默认值")
13 | el-date-picker(
14 | :type="formItem.subtype"
15 | :value-format="formItem.valueFormat"
16 | :format="formItem.viewFormat||formItem.valueFormat"
17 | placeholder="选择默认值"
18 | range-separator="至"
19 | start-placeholder="开始时间"
20 | end-placeholder="结束时间"
21 | v-model="formItem.value")
22 | el-form-item(label="禁用")
23 | el-checkbox(v-model="formItem.disabled")
24 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required")
25 |
26 | pre {{formItem}}
27 |
28 |
29 |
42 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/input.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="占位文本")
7 | el-input(v-model="formItem.placeholder")
8 | el-form-item(label="键名")
9 | el-input(:value="formItem.key" readonly)
10 | el-form-item(label="默认值")
11 | el-input(v-model="formItem.value" :type="formItem.subtype")
12 | el-form-item(label="禁用")
13 | el-switch(v-model="formItem.disabled")
14 | el-form-item(label="只读")
15 | el-switch(v-model="formItem.readonly")
16 |
17 | //- wtf?
18 | //- editor-rules(:item-rules.sync="formItem.rules" :item-type="formItem.type")
19 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required,length,regexp,sql")
20 |
21 | pre {{formItem}}
22 |
23 |
24 |
38 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/number.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="前缀")
7 | el-input(v-model="formItem.prepend")
8 | el-form-item(label="后缀")
9 | el-input(v-model="formItem.append")
10 | el-form-item(label="键名")
11 | el-input(:value="formItem.key" readonly)
12 | el-form-item(label="默认值")
13 | el-input-number(v-model="formItem.value" controls-position="right")
14 | el-form-item(label="最小值")
15 | el-input-number(v-model="formItem.min" controls-position="right")
16 | el-form-item(label="最大值")
17 | el-input-number(v-model="formItem.max" controls-position="right")
18 | el-form-item(label="小数位数")
19 | el-checkbox(:value="formItem.decimal1!==null" @input="handleDecimal")
20 | el-input-number(v-if="formItem.decimal1!==null" v-model="formItem.decimal1" controls-position="right")
21 | el-form-item(label="禁用")
22 | el-checkbox(v-model="formItem.disabled")
23 | //- el-form-item(label="只读")
24 | //- el-switch(v-model="formItem.readonly")
25 |
26 | pre {{formItem}}
27 |
28 |
29 |
45 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/radio.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="默认值" v-if="formItem.optionsUrl===undefined")
9 | el-select(v-model="formItem.value" clearable)
10 | el-option(v-for="o in formItem.options" :key="o.value" :label="o.label" :value="o.value")
11 | el-form-item(v-else label="数据URL")
12 | el-input(v-model="formItem.optionsUrl")
13 | el-form-item(label="显示边框")
14 | el-switch(v-model="formItem.border")
15 | el-form-item(label="按钮形状")
16 | el-switch(v-model="formItem.button")
17 |
18 | editor-options(v-if="formItem.optionsUrl===undefined" :itemOptions="formItem.options")
19 |
20 | //- wtf?
21 | //- editor-rules(:item-rules.sync="formItem.rules" :item-type="formItem.type")
22 | //- todo 理论上不需要@update
23 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required")
24 |
25 | pre {{formItem}}
26 |
27 |
28 |
42 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/richtext.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | //- el-form-item(label="占位文本")
7 | //- el-input(v-model="formItem.placeholder")
8 | el-form-item(label="键名")
9 | el-input(:value="formItem.key" readonly)
10 | el-form-item(label="默认值")
11 | el-input(v-model="formItem.value" type="textarea")
12 | //- el-form-item(label="禁用")
13 | //- el-switch(v-model="formItem.disabled")
14 | //- el-form-item(label="只读")
15 | //- el-switch(v-model="formItem.readonly")
16 |
17 | //- wtf?
18 | //- editor-rules(:item-rules.sync="formItem.rules" :item-type="formItem.type")
19 | //- editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" types="required,length,regexp,sql")
20 |
21 | pre {{formItem}}
22 |
23 |
24 |
37 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/select.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="默认值" v-if="formItem.optionsUrl===undefined")
9 | el-select(v-model="formItem.value" clearable :multiple="formItem.multiple")
10 | el-option(v-for="o in formItem.options" :key="o.value" :label="o.label" :value="o.value")
11 | el-form-item(v-else label="数据URL")
12 | el-input(v-model="formItem.optionsUrl")
13 | el-form-item(label="禁用")
14 | el-checkbox(v-model="formItem.disabled")
15 |
16 | editor-options(v-if="formItem.optionsUrl===undefined" :itemOptions="formItem.options")
17 |
18 | //- wtf?
19 | //- editor-rules(:item-rules.sync="formItem.rules" :item-type="formItem.type")
20 | editor-rules(:item-rules="formItem.rules" @update:item-rules="n => formItem.rules = n" :item-type="formItem.type" :types="formItem.multiple?'required,length':'required'")
21 |
22 | pre {{formItem}}
23 |
24 |
25 |
39 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/editors-item/switch.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | el-form(v-on="$listeners" v-bind="$attrs")
4 | el-form-item(label="标签名")
5 | el-input(v-model="formItem.label")
6 | el-form-item(label="键名")
7 | el-input(:value="formItem.key" readonly)
8 | el-form-item(label="默认值")
9 | el-checkbox(v-if="formItem.appearance==='checkbox'" v-model="formItem.value")
10 | el-switch(v-else v-model="formItem.value")
11 | el-form-item(label="形状")
12 | el-radio-group(v-model="formItem.appearance")
13 | el-radio-button(label="checkbox") 复选框
14 | el-radio-button(label="switch") 开关
15 | el-form-item(label="禁用")
16 | el-checkbox(v-model="formItem.disabled")
17 |
18 | pre {{formItem}}
19 |
20 |
21 |
31 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/index.vue:
--------------------------------------------------------------------------------
1 |
26 |
27 |
28 | el-aside.bowen-aside
29 | el-tabs(v-model="activeName")
30 |
31 | el-tab-pane(label="添加组件" name="items-list")
32 | items-list(@add="addItem")
33 |
34 | el-tab-pane(label="组件配置" name="item-config")
35 | component(
36 | v-if="selectedItem"
37 | :is="`editor-${selectedItem.type}`"
38 | :form-item="selectedItem"
39 | size="mini"
40 | label-position="right"
41 | label-width="70px"
42 | )
43 | p(v-else) 先选择一个组件
44 |
45 | el-tab-pane(label="全局配置" name="global-config")
46 | dynamic-form(:form-config="require('./editor-global.json')" v-model="formConfig")
47 | //- todo 配置按钮
48 |
49 | el-tab-pane(label="查看JSON" name="source")
50 | pre {{formConfig}}
51 |
52 |
53 |
110 |
--------------------------------------------------------------------------------
/src/views/editor/form/aside/items-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 | 选择一个类型:
9 |
10 | 普通文本
16 | 密码
22 | 文本域
28 |
29 |
30 |
34 |
35 | 文本
36 |
37 |
38 |
42 |
43 | 数字
44 |
45 |
46 |
50 |
51 | 开关
52 |
53 |
54 |
58 | 选择数据来源:
59 |
60 | 从服务器获取
66 | 自定义
72 |
73 |
74 |
78 |
79 | 单选
80 |
81 |
82 |
86 | 选择数据来源:
87 |
88 | 从服务器获取
94 | 自定义
100 |
101 |
102 |
106 |
107 | 多选
108 |
109 |
110 |
114 | 选择模式:
115 |
119 | 单选
120 | 多选
121 |
122 | 数据来源:
123 |
127 | 从服务器获取
128 | 自定义
129 |
130 |
131 | 选好了
138 |
139 |
140 |
144 |
145 | 下拉
146 |
147 |
148 |
149 |
153 | 选择模式:
154 |
155 | 年份
161 | 月份
167 | 日期
173 | 日期时间
179 |
180 | 范围:
181 |
182 | 日期范围
188 | 日期时间范围
194 |
195 |
196 |
200 |
201 | 日期
202 |
203 |
204 |
205 |
209 | 常用:
210 |
211 | 省/市
217 | 省/市/区
223 |
224 | 带“全部”选项:
225 |
226 | 省/市
232 | 省/市/区
238 |
239 | 其他:
240 |
241 | 从服务器获取
247 | 自定义
253 |
254 |
255 |
259 |
260 | 级联
261 |
262 |
263 |
267 |
268 | 富文本
269 |
270 |
271 |
272 |
273 |
330 |
--------------------------------------------------------------------------------
/src/views/editor/form/main/fake-form-item.vue:
--------------------------------------------------------------------------------
1 |
2 | el-form-item(:label="item.label")
3 | //- 文本
4 | el-input(
5 | v-if="item.type==='input'||item.type==='richtext'"
6 | :disabled="true"
7 | :type="item.subtype||'textarea'"
8 | :placeholder="item.placeholder"
9 | :autosize="item.autosize"
10 | :value="item.value")
11 | //- 数字
12 | el-input(
13 | v-else-if="item.type==='number'"
14 | :disabled="true"
15 | :value="item.value"
16 | )
17 | template(v-if="item.append" slot="append") {{item.append}}
18 | template(v-if="item.prepend" slot="prepend") {{item.prepend}}
19 | //- 开关
20 | el-checkbox(
21 | v-else-if="item.type==='switch' && item.appearance==='checkbox'"
22 | :value="item.value"
23 | :disabled="true")
24 | el-switch(
25 | v-else-if="item.type==='switch'"
26 | :value="item.value"
27 | :disabled="true")
28 | //- 单选
29 | el-radio-group(
30 | v-else-if="item.type==='radio'"
31 | :value="item.value")
32 | component(
33 | :is="item.button?'el-radio-button':'el-radio'"
34 | v-for="o in item.options||ajaxOptions"
35 | :key='o.value'
36 | :label="o.value"
37 | :border="item.border"
38 | disabled) {{o.label}}
39 | //- 多选
40 | el-checkbox-group(
41 | v-else-if="item.type==='checkbox'"
42 | :value="item.value")
43 | component(
44 | :is="item.button?'el-checkbox-button':'el-checkbox'"
45 | v-for="o in item.options||ajaxOptions"
46 | :key='o.value'
47 | :label="o.value"
48 | :border="item.border"
49 | disabled) {{o.label}}
50 | //- 下拉
51 | el-select(
52 | v-else-if="item.type==='select'"
53 | :value="item.value"
54 | :multiple="item.multiple"
55 | disabled)
56 | el-option(
57 | v-for="o in item.options"
58 | :key="o.value"
59 | :label="o.label"
60 | :value="o.value"
61 | disabled)
62 | //- 日期
63 | el-date-picker(
64 | v-else-if="item.type==='date'"
65 | :disabled="true"
66 | :type="item.subtype"
67 | :value-format="item.valueFormat"
68 | :format="item.viewFormat||item.valueFormat"
69 | range-separator="至"
70 | start-placeholder="开始时间"
71 | end-placeholder="结束时间"
72 | :placeholder="item.placeholder"
73 | :value="item.value")
74 | //- 级联
75 | el-cascader(
76 | v-else-if="item.type==='cascader'"
77 | :disabled="true"
78 | :options="item.options||require('element-china-area-data')[item.areaShortcut]||[]"
79 | :placeholder="item.placeholder"
80 | :value="item.value"
81 | )
82 |
83 | span(v-else) 未知控件类型
84 |
85 |
86 |
87 |
107 |
--------------------------------------------------------------------------------
/src/views/editor/form/main/fake-form.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
22 |
23 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
58 |
59 |
110 |
--------------------------------------------------------------------------------
/src/views/editor/form/main/index.vue:
--------------------------------------------------------------------------------
1 |
2 | el-main
3 | fake-form(:form-config="currentForm")
4 | //- pre {{currentForm}}
5 |
6 |
7 |
19 |
--------------------------------------------------------------------------------
/src/views/editor/index.vue:
--------------------------------------------------------------------------------
1 |
2 | el-container
3 | router-view(name="aside" style="width:380px")
4 | router-view(name="main")
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/src/views/editor/table/aside.vue:
--------------------------------------------------------------------------------
1 |
2 | el-aside(style="background-color: rgb(238, 241, 246)") table-aside
3 |
4 |
5 |
12 |
--------------------------------------------------------------------------------
/src/views/editor/table/availabel-list.js:
--------------------------------------------------------------------------------
1 | export default {
2 | showCheckBox: true, // 显示复选框
3 | showIndex: false, // 显示序号
4 | border: false, // 纵向边框
5 | stripe: false, // 斑马纹(隔行变色)
6 | // size: 'medium', // 表格尺寸, 可选值: 不填 / 'medium' / 'small' / 'mini'
7 | fit: false, // 列的宽度是否自撑开
8 | maxHeight: '650', // 最大高度, 内容过多出现滚动条(用来固定表头)
9 | pagination: {
10 | // 分页配置
11 | pageSize: 10, // 默认尺寸
12 | pageSizes: [10, 20, 50, 100], // 可选尺寸
13 | layout: 'total, sizes, prev, pager, next, jumper', //默认布局
14 | },
15 | columns: [
16 | // 列
17 | {
18 | key: 'id', // 字段名, 必要
19 | label: '编号', // 显示的标签, 必要
20 | sortable: true, // 可排序
21 | // width: '120', // 对应列的宽度
22 | minWidth: '120', //对应列的最小宽度
23 | fixed: true, // 列是否固定在左侧或者右侧,true 表示固定在左侧, 可选: true, 'left', 'right'
24 | // resizable: true, // 对应列是否可以通过拖动改变宽度(需要在 table 上设置 border 属性为true)
25 | align: 'left', // 对齐方式 left/center/right
26 | // showOverflowTooltip: true // 当内容过长被隐藏时显示 tooltip(可以保证内容不换行)
27 | },
28 | {
29 | key: 'title',
30 | label: '标题',
31 | minWidth: '120',
32 | fixed: true,
33 | // showOverflowTooltip: true
34 | },
35 | {
36 | key: 'domain',
37 | label: '域名',
38 | minWidth: '120',
39 | },
40 | {
41 | key: 'ip',
42 | label: 'IP',
43 | minWidth: '140',
44 | },
45 | {
46 | key: 'email',
47 | label: '邮箱',
48 | minWidth: '220',
49 | },
50 | { key: 'name', label: '审核人', minWidth: '70' },
51 | { key: 'date', label: '日期', sortable: true, minWidth: '100' },
52 | {
53 | key: 'desc',
54 | label: '描述',
55 | minWidth: '200',
56 | showOverflowTooltip: true,
57 | },
58 | ],
59 | };
60 |
--------------------------------------------------------------------------------
/src/views/editor/table/main.vue:
--------------------------------------------------------------------------------
1 |
2 | el-main table-main
3 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/src/views/preview/preview.vue:
--------------------------------------------------------------------------------
1 |
2 | div
3 | dynamic-form(:form-config="form" v-model="hehe" ref="form-preview")
4 | el-button(@click='$router.go(-1)' :size="form.size") 返回
5 | el-button(@click='validate' :loading="loading" type="primary" :size="form.size") 测试验证
6 | p 表单数据:
7 | pre {{hehe}}
8 | p 表单配置:
9 | pre {{form}}
10 |
11 |
12 |
41 |
--------------------------------------------------------------------------------