diff --git a/babel.config.js b/babel.config.js index 4fe62293efcf2ab07f91e236380f319869f5bb4f..beb68e22dc2fc37761fe2c3539cc2e23c890228c 100644 --- a/babel.config.js +++ b/babel.config.js @@ -13,7 +13,7 @@ plugins.push(['import', { 'libraryName': 'ant-design-vue', 'libraryDirectory': 'es', 'style': true // `style: true` 会加载 less 文件 -}]) +}, 'antdv']) module.exports = { presets: [ diff --git a/package.json b/package.json index d130aa77e487e1ccbb315a2bb54a834b7b0eeddd..8b9bb386c49444da63cb696f62c4795fa35f1cb6 100644 --- a/package.json +++ b/package.json @@ -13,14 +13,13 @@ "dependencies": { "@ant-design-vue/pro-layout": "^1.0.13", "@antv/data-set": "^0.11.8", - "@form-create/ant-design-vue": "^2.5.23", - "@wangeditor/editor": "^5.1.1", - "@wangeditor/editor-for-vue": "^1.0.1", + "@wangeditor/editor": "^5.1.14", + "@wangeditor/editor-for-vue": "^1.0.2", "@wangeditor/plugin-md": "^1.0.0", "ant-design-vue": "^1.7.8", "axios": "^0.27.2", - "core-js": "^3.23.2", - "cron-parser": "^4.4.0", + "core-js": "^3.24.0", + "cron-parser": "^4.5.0", "echarts": "^5.3.3", "enquire.js": "^2.1.6", "lodash": "^4.17.21", @@ -34,17 +33,21 @@ "prismjs": "^1.28.0", "screenfull": "^5.2.0", "store": "^2.0.12", + "vcolorpicker": "^1.1.0", "viser-vue": "^2.4.6", "vue": "^2.6.14", "vue-bus": "^1.2.1", "vue-clipboard2": "^0.3.3", + "vue-codemirror-lite": "^1.0.4", "vue-cropper": "0.5.8", "vue-qr": "^2.5.0", + "vue-quill-editor": "^3.0.6", "vue-router": "^3.5.2", "vue-svg-component-runtime": "^1.0.1", + "vuedraggable": "^2.23.2", "vuex": "^3.6.2", - "vxe-table": "^3.5.8", - "xe-utils": "^3.5.4" + "vxe-table": "^3.5.9", + "xe-utils": "^3.5.6" }, "devDependencies": { "@ant-design/colors": "^3.2.1", diff --git a/src/api/starter/codeGen.js b/src/api/develop/codeGen.js similarity index 100% rename from src/api/starter/codeGen.js rename to src/api/develop/codeGen.js diff --git a/src/api/starter/fileUpload.js b/src/api/develop/fileUpload.js similarity index 98% rename from src/api/starter/fileUpload.js rename to src/api/develop/fileUpload.js index 949f413bba054452965390a05dc6f28d454478e2..269a742aecb78cb342278340b5656e496d040829 100644 --- a/src/api/starter/fileUpload.js +++ b/src/api/develop/fileUpload.js @@ -6,4 +6,4 @@ export function page (params) { method: 'GET', params: params }) -} \ No newline at end of file +} diff --git a/src/api/notice/dingRobotConfig.js b/src/api/third/dingRobotConfig.js similarity index 100% rename from src/api/notice/dingRobotConfig.js rename to src/api/third/dingRobotConfig.js diff --git a/src/api/third/weComRobotConfig.js b/src/api/third/weComRobotConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..fb2824070c03300f8addd2792baae141227f2509 --- /dev/null +++ b/src/api/third/weComRobotConfig.js @@ -0,0 +1,59 @@ +import { axios } from '@/utils/request' + +export function add (obj) { + return axios({ + url: '/wecom/robot/config/add', + method: 'POST', + data: obj + }) +} + +export function update (obj) { + return axios({ + url: '/wecom/robot/config/update', + method: 'POST', + data: obj + }) +} + +export function page (params) { + return axios({ + url: '/wecom/robot/config/page', + method: 'GET', + params: params + }) +} + +export function get (id) { + return axios({ + url: '/wecom/robot/config/findById', + method: 'GET', + params: { id } + }) +} + +/** + * 编码是否被使用 + */ +export function existsByCode (code) { + return axios({ + url: '/wecom/robot/config/existsByCode', + method: 'GET', + params: { code } + }) +} +export function existsByCodeNotId (code, id) { + return axios({ + url: '/wecom/robot/config/existsByCodeNotId', + method: 'GET', + params: { code, id } + }) +} + +export function del (id) { + return axios({ + url: '/wecom/robot/config/delete', + params: { id }, + method: 'DELETE' + }) +} diff --git a/src/components/Bootx/SuperQuery/README.md b/src/components/Bootx/SuperQuery/README.md index 0c242cc2efb812e41bb03ca1973e40f127200c53..d2a9050d825e52dd67caa891dbdb932c36525ce4 100644 --- a/src/components/Bootx/SuperQuery/README.md +++ b/src/components/Bootx/SuperQuery/README.md @@ -46,9 +46,9 @@ type: LIST, list: [ - { name: '测试1', value: 'cs1' }, - { name: '测试2', value: 'cs2' }, - { name: '测试3', value: 'cs3' } + { label: '测试1', value: 'cs1' }, + { label: '测试2', value: 'cs2' }, + { label: '测试3', value: 'cs3' } ] } ] ``` @@ -58,7 +58,7 @@ - `type`:数据类型,根据传入不同的的数据类型,使用不同的组件进行查询,对应后端`ParamTypeEnum` 枚举 - `underLine`:参数名称是否需要转换成下划线命名,默认转换 - `list`:type数据类型为list的时候,通过这个字段传入 - - `name`:显示名称 + - `label`:显示名称 - `value`:查询的值,等同`field` **数据类型(type)** diff --git a/src/components/Bootx/SuperQuery/SuperQueryItem.vue b/src/components/Bootx/SuperQuery/SuperQueryItem.vue index eaec7b108fb22d0e374a6ca591c4ec708d089eb8..40e34c1325b7dda7c7ae0348de52237de266766d 100644 --- a/src/components/Bootx/SuperQuery/SuperQueryItem.vue +++ b/src/components/Bootx/SuperQuery/SuperQueryItem.vue @@ -33,39 +33,38 @@ - + - + - - {{ o.name }} + @@ -85,7 +84,7 @@ - - diff --git a/src/components/KFormDesign/packages/KBatch/batch.vue b/src/components/KFormDesign/packages/KBatch/batch.vue new file mode 100644 index 0000000000000000000000000000000000000000..6c3c7369d0a08ae5d7db338e05bc286a55db05fc --- /dev/null +++ b/src/components/KFormDesign/packages/KBatch/batch.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/src/components/KFormDesign/packages/KBatch/index.js b/src/components/KFormDesign/packages/KBatch/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c8c01b5afb85ac3058f535f17633f00ecd5469a0 --- /dev/null +++ b/src/components/KFormDesign/packages/KBatch/index.js @@ -0,0 +1,2 @@ +import KBatch from './batch.vue' +export default KBatch diff --git a/src/components/KFormDesign/packages/KBatch/module/KFormModelItem.vue b/src/components/KFormDesign/packages/KBatch/module/KFormModelItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..45fe554b605f4cfe4e50ea42cce4e7610c332a2e --- /dev/null +++ b/src/components/KFormDesign/packages/KBatch/module/KFormModelItem.vue @@ -0,0 +1,255 @@ + + + + diff --git a/src/components/KFormDesign/packages/KChangeOption/index.vue b/src/components/KFormDesign/packages/KChangeOption/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b8679128f7ea72d07958f8b6bc61621c1d8fcd78 --- /dev/null +++ b/src/components/KFormDesign/packages/KChangeOption/index.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/components/KFormDesign/packages/KCheckbox/index.vue b/src/components/KFormDesign/packages/KCheckbox/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4397c23068955f904b1cdc4a7b9bc3235c37ced2 --- /dev/null +++ b/src/components/KFormDesign/packages/KCheckbox/index.vue @@ -0,0 +1,44 @@ + + diff --git a/src/components/KFormDesign/packages/KDatePicker/datePicker.vue b/src/components/KFormDesign/packages/KDatePicker/datePicker.vue new file mode 100644 index 0000000000000000000000000000000000000000..c2f517ff3c3d97356b41b26ff55bfe595d215d91 --- /dev/null +++ b/src/components/KFormDesign/packages/KDatePicker/datePicker.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/components/KFormDesign/packages/KDatePicker/index.js b/src/components/KFormDesign/packages/KDatePicker/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c47ad8ed81bd023a68a22876c3b1f29a6a198eaa --- /dev/null +++ b/src/components/KFormDesign/packages/KDatePicker/index.js @@ -0,0 +1,2 @@ +import DatePicker from './datePicker.vue' +export default DatePicker diff --git a/src/components/KFormDesign/packages/KEditor/index.js b/src/components/KFormDesign/packages/KEditor/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a3f87269edf77dc40d742afdbe5cc1428ac9dd67 --- /dev/null +++ b/src/components/KFormDesign/packages/KEditor/index.js @@ -0,0 +1,9 @@ +/* + * @Description:导出富文本编辑器 + * @Author: kcz + * @Date: 2020-03-30 12:45:04 + * @LastEditors: kcz + * @LastEditTime: 2020-03-30 12:45:40 + */ +import KEditor from './kEditor.vue' +export default KEditor diff --git a/src/components/KFormDesign/packages/KEditor/kEditor.vue b/src/components/KFormDesign/packages/KEditor/kEditor.vue new file mode 100644 index 0000000000000000000000000000000000000000..237887ea4952ff67d576940d2241b29158e66814 --- /dev/null +++ b/src/components/KFormDesign/packages/KEditor/kEditor.vue @@ -0,0 +1,62 @@ + + + + diff --git a/src/components/KFormDesign/packages/KFormBuild/README.md b/src/components/KFormDesign/packages/KFormBuild/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a5945262f61cc1d6c9d726a12c64a1f8d62137e8 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormBuild/README.md @@ -0,0 +1,62 @@ +KFormBuild +==== + 构建表单 + 将传入的json数组,解析成ant UI组件 + + +### 使用方式 + +```vue + + + +``` + + +父组件可调用函数 getData - 返回Porimse对象 + diff --git a/src/components/KFormDesign/packages/KFormBuild/buildBlocks.vue b/src/components/KFormDesign/packages/KFormBuild/buildBlocks.vue new file mode 100644 index 0000000000000000000000000000000000000000..3e69500b18426b52439926b69bb94d67c4b8dca4 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormBuild/buildBlocks.vue @@ -0,0 +1,220 @@ + + diff --git a/src/components/KFormDesign/packages/KFormBuild/index.js b/src/components/KFormDesign/packages/KFormBuild/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0e0173097a5efb9f6c25bcc55e5995466a72d867 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormBuild/index.js @@ -0,0 +1,11 @@ +/* + * author kcz + * date 2019-11-20 + */ +import KFormBuild from './index.vue' + +KFormBuild.install = function (Vue) { + Vue.component(KFormBuild.name, KFormBuild) +} + +export default KFormBuild diff --git a/src/components/KFormDesign/packages/KFormBuild/index.vue b/src/components/KFormDesign/packages/KFormBuild/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..9993d5dcf30982fec06ec558cc31d6a6c0092fe4 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormBuild/index.vue @@ -0,0 +1,232 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/config/formItemsConfig.js b/src/components/KFormDesign/packages/KFormDesign/config/formItemsConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..99e03d6644b4af1682704039df05597c03e8469e --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/config/formItemsConfig.js @@ -0,0 +1,727 @@ +/* + * author kcz + * date 2019-11-20 + * description 表单控件项 + */ +// 基础控件 +export const basicsList = [ + { + type: 'input', // 表单类型 + label: '输入框', // 标题文字 + icon: 'icon-write', + options: { + type: 'text', + width: '100%', // 宽度 + defaultValue: '', // 默认值 + placeholder: '请输入', // 没有输入时,提示文字 + clearable: false, + maxLength: null, + addonBefore: '', + addonAfter: '', + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false // 是否禁用,false不禁用,true禁用 + }, + model: '', // 数据字段 + key: '', + help: '', + rules: [ + // 验证规则 + { + required: false, // 必须填写 + message: '必填项' + } + ] + }, + { + type: 'textarea', // 表单类型 + label: '文本框', // 标题文字 + icon: 'icon-edit', + options: { + width: '100%', // 宽度 + minRows: 4, + maxRows: 6, + maxLength: null, + defaultValue: '', + clearable: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false, + placeholder: '请输入' + }, + model: '', // 数据字段 + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'number', // 表单类型 + label: '数字输入框', // 标题文字 + icon: 'icon-number', + options: { + width: '100%', // 宽度 + defaultValue: 0, // 默认值 + min: null, // 可输入最小值 + max: null, // 可输入最大值 + precision: null, + step: 1, // 步长,点击加减按钮时候,加减多少 + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false, // 是否禁用 + placeholder: '请输入' + }, + model: '', // 数据字段 + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'select', // 表单类型 + label: '下拉选择器', // 标题文字 + icon: 'icon-xiala', + options: { + width: '100%', // 宽度 + defaultValue: undefined, // 下拉选框请使用undefined为默认值 + multiple: false, // 是否允许多选 + disabled: false, // 是否禁用 + clearable: false, // 是否显示清除按钮 + hidden: false, // 是否隐藏,false显示,true隐藏 + placeholder: '请选择', // 默认提示文字 + dynamicKey: '', + dynamic: false, + options: [ + // 下拉选择项配置 + { + value: '1', + label: '下拉框1' + }, + { + value: '2', + label: '下拉框2' + } + ], + showSearch: false // 是否显示搜索框,搜索选择的项的值,而不是文字 + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'checkbox', + label: '多选框', + icon: 'icon-duoxuan1', + options: { + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + defaultValue: [], + dynamicKey: '', + dynamic: false, + options: [ + { + value: '1', + label: '选项1' + }, + { + value: '2', + label: '选项2' + }, + { + value: '3', + label: '选项3' + } + ] + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'radio', // 表单类型 + label: '单选框', // 标题文字 + icon: 'icon-danxuan-cuxiantiao', + options: { + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + defaultValue: '', // 默认值 + dynamicKey: '', + dynamic: false, + options: [ + { + value: '1', + label: '选项1' + }, + { + value: '2', + label: '选项2' + }, + { + value: '3', + label: '选项3' + } + ] + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'date', // 表单类型 + label: '日期选择框', // 标题文字 + icon: 'icon-calendar', + options: { + width: '100%', // 宽度 + defaultValue: '', // 默认值,字符串 12:00:00 + rangeDefaultValue: [], // 默认值,字符串 12:00:00 + range: false, // 范围日期选择,为true则会显示两个时间选择框(同时defaultValue和placeholder要改成数组), + showTime: false, // 是否显示时间选择器 + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + clearable: false, // 是否显示清除按钮 + placeholder: '请选择', + rangePlaceholder: ['开始时间', '结束时间'], + format: 'YYYY-MM-DD' // 展示格式 (请按照这个规则写 YYYY-MM-DD HH:mm:ss,区分大小写) + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'time', // 表单类型 + label: '时间选择框', // 标题文字 + icon: 'icon-time', + options: { + width: '100%', // 宽度 + defaultValue: '', // 默认值,字符串 12:00:00 + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + clearable: false, // 是否显示清除按钮 + placeholder: '请选择', + format: 'HH:mm:ss' // 展示格式 + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'rate', // 表单类型 + label: '评分', // 标题文字 + icon: 'icon-pingfen_moren', + options: { + defaultValue: 0, + max: 5, // 最大值 + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + allowHalf: false // 是否允许半选 + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'slider', // 表单类型 + label: '滑动输入条', // 标题文字 + icon: 'icon-menu', + options: { + width: '100%', // 宽度 + defaultValue: 0, // 默认值, 如果range为true的时候,则需要改成数组,如:[12,15] + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + min: 0, // 最小值 + max: 100, // 最大值 + step: 1, // 步长,取值必须大于 0,并且可被 (max - min) 整除 + showInput: false // 是否显示输入框,range为true时,请勿开启 + // range: false // 双滑块模式 + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'uploadFile', // 表单类型 + label: '上传文件', // 标题文字 + icon: 'icon-upload', + options: { + defaultValue: '[]', + multiple: false, + disabled: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + drag: false, + downloadWay: 'a', + dynamicFun: '', + width: '100%', + limit: 3, + data: '{}', + fileName: 'file', + headers: {}, + action: 'http://127..0.0.1/uploadFile.txt', + placeholder: '上传' + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'uploadImg', + label: '上传图片', + icon: 'icon-image', + options: { + defaultValue: '[]', + multiple: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false, + width: '100%', + data: '{}', + limit: 3, + placeholder: '上传', + fileName: 'image', + headers: {}, + action: 'http://127.0.0.1/upload-img.txt', + listType: 'picture-card' + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'treeSelect', // 表单类型 + label: '树选择器', // 标题文字 + icon: 'icon-tree', + options: { + disabled: false, // 是否禁用 + defaultValue: undefined, // 默认值 + multiple: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + clearable: false, // 是否显示清除按钮 + showSearch: false, // 是否显示搜索框,搜索选择的项的值,而不是文字 + treeCheckable: false, + placeholder: '请选择', + dynamicKey: '', + dynamic: true, + options: [ + { + value: '1', + label: '选项1', + children: [ + { + value: '11', + label: '选项11' + } + ] + }, + { + value: '2', + label: '选项2', + children: [ + { + value: '22', + label: '选项22' + } + ] + } + ] + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'cascader', // 表单类型 + label: '级联选择器', // 标题文字 + icon: 'icon-guanlian', + options: { + disabled: false, // 是否禁用 + hidden: false, // 是否隐藏,false显示,true隐藏 + defaultValue: undefined, // 默认值 + showSearch: false, // 是否显示搜索框,搜索选择的项的值,而不是文字 + placeholder: '请选择', + clearable: false, // 是否显示清除按钮 + dynamicKey: '', + dynamic: true, + options: [ + { + value: '1', + label: '选项1', + children: [ + { + value: '11', + label: '选项11' + } + ] + }, + { + value: '2', + label: '选项2', + children: [ + { + value: '22', + label: '选项22' + } + ] + } + ] + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'batch', + label: '动态表格', + icon: 'icon-biaoge', + list: [], + options: { + scrollY: 0, + disabled: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + showLabel: false, + hideSequence: false, + width: '100%' + }, + model: '', + key: '', + help: '' + }, + { + type: 'selectInputList', + label: '选择输入列', + icon: 'icon-biaoge', + columns: [ + { + value: '1', + label: '选项1', + list: [] + }, + { + value: '2', + label: '选项2', + list: [] + } + ], + options: { + disabled: false, + multiple: true, // 是否允许多选 + hidden: false, // 是否隐藏,false显示,true隐藏 + showLabel: false, + width: '100%' + }, + model: '', + key: '', + help: '' + }, + { + type: 'editor', + label: '富文本', + icon: 'icon-LC_icon_edit_line_1', + list: [], + options: { + height: 300, + placeholder: '请输入', + defaultValue: '', + chinesization: true, + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false, + showLabel: false, + width: '100%' + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'switch', // 表单类型 + label: '开关', // 标题文字 + icon: 'icon-kaiguan3', + options: { + defaultValue: false, // 默认值 Boolean 类型 + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false // 是否禁用 + }, + model: '', + key: '', + help: '', + rules: [ + { + required: false, + message: '必填项' + } + ] + }, + { + type: 'button', // 表单类型 + label: '按钮', // 标题文字 + icon: 'icon-button-remove', + options: { + type: 'primary', + handle: 'submit', + dynamicFun: '', + hidden: false, // 是否隐藏,false显示,true隐藏 + disabled: false // 是否禁用,false不禁用,true禁用 + }, + key: '' + }, + { + type: 'alert', + label: '警告提示', + icon: 'icon-zu', + options: { + type: 'success', + description: '', + showIcon: false, + banner: false, + hidden: false, // 是否隐藏,false显示,true隐藏 + closable: false + }, + key: '' + }, + { + type: 'text', + label: '文字', + icon: 'icon-zihao', + options: { + textAlign: 'left', + hidden: false, // 是否隐藏,false显示,true隐藏 + showRequiredMark: false, + color: 'rgb(0, 0, 0)', + fontFamily: 'SimHei', + fontSize: '16pt' + }, + key: '' + }, + { + type: 'html', + label: 'HTML', + icon: 'icon-ai-code', + options: { + hidden: false, // 是否隐藏,false显示,true隐藏 + defaultValue: 'HTML' + }, + key: '' + } +] + +// 高级控件 +// export const highList = []; + +// import { Alert } from "ant-design-vue"; + +// 自定义组件 +export const customComponents = { + title: '自定义组件', + list: [ + // { + // label: "测试", + // type: "jkjksdf", + // component: Alert, + // options: { + // multiple: false, + // disabled: false, + // width: "100%", + // data: "{}", + // limit: 3, + // placeholder: "上传", + // action: "", + // listType: "picture-card" + // }, + // model: "", + // key: "", + // rules: [ + // { + // required: false, + // message: "必填项" + // } + // ] + // } + ] +} +// window.$customComponentList = customComponents.list; + +// 布局控件 +export const layoutList = [ + { + type: 'divider', + label: '分割线', + icon: 'icon-fengexian', + options: { + orientation: 'left' + }, + key: '', + model: '' + }, + { + type: 'card', + label: '卡片布局', + icon: 'icon-qiapian', + list: [], + key: '', + model: '' + }, + { + type: 'tabs', + label: '标签页布局', + icon: 'icon-tabs', + options: { + tabBarGutter: null, + type: 'line', + tabPosition: 'top', + size: 'default', + animated: true + }, + columns: [ + { + value: '1', + label: '选项1', + list: [] + }, + { + value: '2', + label: '选项2', + list: [] + } + ], + key: '', + model: '' + }, + { + type: 'grid', + label: '栅格布局', + icon: 'icon-zhage', + columns: [ + { + span: 12, + list: [] + }, + { + span: 12, + list: [] + } + ], + options: { + gutter: 0 + }, + key: '', + model: '' + }, + { + type: 'table', + label: '表格布局', + icon: 'icon-biaoge', + trs: [ + { + tds: [ + { + colspan: 1, + rowspan: 1, + list: [] + }, + { + colspan: 1, + rowspan: 1, + list: [] + } + ] + }, + { + tds: [ + { + colspan: 1, + rowspan: 1, + list: [] + }, + { + colspan: 1, + rowspan: 1, + list: [] + } + ] + } + ], + options: { + width: '100%', + bordered: true, + bright: false, + small: true, + customStyle: '' + }, + key: '', + model: '' + } +] diff --git a/src/components/KFormDesign/packages/KFormDesign/config/jsonFormat.js b/src/components/KFormDesign/packages/KFormDesign/config/jsonFormat.js new file mode 100644 index 0000000000000000000000000000000000000000..68241faeed521ed47de198bb03f55cb302e76b8e --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/config/jsonFormat.js @@ -0,0 +1,52 @@ +/* + * author kcz + * date 2019-11-20 + * description 默认导入json数据格式 + */ +export default `{ + "list": [ + { + "type": "input", + "label": "输入框", + "options": { + "type": "text", + "width": "100%", + "defaultValue": "", + "placeholder": "请输入", + "clearable": false, + "maxLength": null, + "hidden": false, + "disabled": false + }, + "model": "input_1603939737389", + "key": "input_1603939737389", + "rules": [ + { + "required": false, + "message": "必填项" + } + ] + } + ], + "config": { + "layout": "horizontal", + "labelCol": { + "xs": 4, + "sm": 4, + "md": 4, + "lg": 4, + "xl": 4, + "xxl": 4 + }, + "wrapperCol": { + "xs": 18, + "sm": 18, + "md": 18, + "lg": 18, + "xl": 18, + "xxl": 18 + }, + "hideRequiredMark": false, + "customStyle": "" + } +}`; diff --git a/src/components/KFormDesign/packages/KFormDesign/index.js b/src/components/KFormDesign/packages/KFormDesign/index.js new file mode 100644 index 0000000000000000000000000000000000000000..331cb64a18ce31fd37c2437b46b41c6f8a567ddc --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/index.js @@ -0,0 +1,11 @@ +/* + * author kcz + * date 2019-11-20 + */ +import KFormDesign from './index.vue' + +KFormDesign.install = function (Vue) { + Vue.component(KFormDesign.name, KFormDesign) +} + +export default KFormDesign diff --git a/src/components/KFormDesign/packages/KFormDesign/index.vue b/src/components/KFormDesign/packages/KFormDesign/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..7b3064df55be081bb518d99f119d667948d7da33 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/index.vue @@ -0,0 +1,588 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/codeModal.vue b/src/components/KFormDesign/packages/KFormDesign/module/codeModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..142e559fb5174b7b9a0bbfe604ccee898add1c08 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/codeModal.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/collapseItem.vue b/src/components/KFormDesign/packages/KFormDesign/module/collapseItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..54f26bca775f85841ed9ca28f6d89bafc4b2422b --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/collapseItem.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/footer.vue b/src/components/KFormDesign/packages/KFormDesign/module/footer.vue new file mode 100644 index 0000000000000000000000000000000000000000..5b34994768ec49c00482e567c8254a12508e3b43 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/footer.vue @@ -0,0 +1,16 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/formComponentPanel.vue b/src/components/KFormDesign/packages/KFormDesign/module/formComponentPanel.vue new file mode 100644 index 0000000000000000000000000000000000000000..8c184bb59e3b87fcc4b9633fc893ff21e93b77e1 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/formComponentPanel.vue @@ -0,0 +1,510 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/formItemProperties.vue b/src/components/KFormDesign/packages/KFormDesign/module/formItemProperties.vue new file mode 100644 index 0000000000000000000000000000000000000000..a84268516665aef0486d09d7f07d040a4ac55743 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/formItemProperties.vue @@ -0,0 +1,664 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/formNode.vue b/src/components/KFormDesign/packages/KFormDesign/module/formNode.vue new file mode 100644 index 0000000000000000000000000000000000000000..7bab21762659384f677cf0c6290bc4b1fee5c1bc --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/formNode.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/formProperties.vue b/src/components/KFormDesign/packages/KFormDesign/module/formProperties.vue new file mode 100644 index 0000000000000000000000000000000000000000..ffdbc96f503a601a0106469d1db6fd70b0d0f81b --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/formProperties.vue @@ -0,0 +1,149 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/header.vue b/src/components/KFormDesign/packages/KFormDesign/module/header.vue new file mode 100644 index 0000000000000000000000000000000000000000..e0944f30fa137f0c7efc946438e7afc7a76b7e26 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/header.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/importJsonModal.vue b/src/components/KFormDesign/packages/KFormDesign/module/importJsonModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..3d33a529cf3df3a202eac0cac56b603112268175 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/importJsonModal.vue @@ -0,0 +1,107 @@ + + + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/jsonModal.vue b/src/components/KFormDesign/packages/KFormDesign/module/jsonModal.vue new file mode 100644 index 0000000000000000000000000000000000000000..a8c1cff1c122dea35b5d47e13167f7ed7a886836 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/jsonModal.vue @@ -0,0 +1,47 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/layoutItem.vue b/src/components/KFormDesign/packages/KFormDesign/module/layoutItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..e803e5b6a3611d840673f9e482738086c299d0b3 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/layoutItem.vue @@ -0,0 +1,541 @@ + + diff --git a/src/components/KFormDesign/packages/KFormDesign/module/operatingArea.vue b/src/components/KFormDesign/packages/KFormDesign/module/operatingArea.vue new file mode 100644 index 0000000000000000000000000000000000000000..ea662ece031a9b4ff264971ed2387ea30676dbb3 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormDesign/module/operatingArea.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormItem/README.md b/src/components/KFormDesign/packages/KFormItem/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6c6f76425efbd40215c38178d41a95ce299ee1a4 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormItem/README.md @@ -0,0 +1,35 @@ +KFormItem +==== +构建表单控件 +根据参数不同的type,生成对应的控件 + + +### 使用方式 + +``` +# 参数record: +{ + type: "input", // 表单类型 + name: "输入框", // 标题文字 + options: { + type: "text", // input的type类型 + width: "100%", // 宽度 + defaultValue: "", // 默认值 + placeholder: "请输入", // 占位内容 + disabled: false // 是否禁用 + }, + model: "", // 数据字段 + key: "", + rules: [ //验证规则 + { + required: false, // 是否必填 + message: "必填项" + } + ] + } + +``` + + + + diff --git a/src/components/KFormDesign/packages/KFormItem/customComponent.vue b/src/components/KFormDesign/packages/KFormItem/customComponent.vue new file mode 100644 index 0000000000000000000000000000000000000000..344a895535f799bc5c3990d38593c5baa1c0765d --- /dev/null +++ b/src/components/KFormDesign/packages/KFormItem/customComponent.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/KFormDesign/packages/KFormItem/index.js b/src/components/KFormDesign/packages/KFormItem/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e8082df3a2ea40ea628f7d8bace56a19d7726e80 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormItem/index.js @@ -0,0 +1,11 @@ +/* + * author kcz + * date 2019-11-20 + */ +import KFormItem from "./index.vue"; + +KFormItem.install = function(Vue) { + Vue.component(KFormItem.name, KFormItem); +}; + +export default KFormItem; diff --git a/src/components/KFormDesign/packages/KFormItem/index.vue b/src/components/KFormDesign/packages/KFormItem/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..1afe157bf88d8b4ada66ce3d83c8a636fb9d9595 --- /dev/null +++ b/src/components/KFormDesign/packages/KFormItem/index.vue @@ -0,0 +1,467 @@ + + + + diff --git a/src/components/KFormDesign/packages/KFormPreview/README.md b/src/components/KFormDesign/packages/KFormPreview/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/components/KFormDesign/packages/KFormPreview/index.js b/src/components/KFormDesign/packages/KFormPreview/index.js new file mode 100644 index 0000000000000000000000000000000000000000..69eee30a426d0bc84f51f49cf1627a508188041b --- /dev/null +++ b/src/components/KFormDesign/packages/KFormPreview/index.js @@ -0,0 +1,11 @@ +/* + * author kcz + * date 2019-11-20 + */ +import KFormPreview from "./index.vue"; + +KFormPreview.install = function(Vue) { + Vue.component(KFormPreview.name, KFormPreview); +}; + +export default KFormPreview; diff --git a/src/components/KFormDesign/packages/KFormPreview/index.vue b/src/components/KFormDesign/packages/KFormPreview/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2bfdbd6efbb7748328931940fb6dc3f55377e8db --- /dev/null +++ b/src/components/KFormDesign/packages/KFormPreview/index.vue @@ -0,0 +1,68 @@ + + diff --git a/src/components/KFormDesign/packages/KSelectInputList/index.js b/src/components/KFormDesign/packages/KSelectInputList/index.js new file mode 100644 index 0000000000000000000000000000000000000000..80d0fd7773333a31b56ea75f7217df226751fd82 --- /dev/null +++ b/src/components/KFormDesign/packages/KSelectInputList/index.js @@ -0,0 +1,2 @@ +import KSelectInputList from "./selectInputList.vue"; +export default KSelectInputList; diff --git a/src/components/KFormDesign/packages/KSelectInputList/module/KFormModelItem.vue b/src/components/KFormDesign/packages/KSelectInputList/module/KFormModelItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..5ca06c02d0055d0a82ce2eaa62e653e2b5f9d781 --- /dev/null +++ b/src/components/KFormDesign/packages/KSelectInputList/module/KFormModelItem.vue @@ -0,0 +1,259 @@ + + + + diff --git a/src/components/KFormDesign/packages/KSelectInputList/selectInputList.vue b/src/components/KFormDesign/packages/KSelectInputList/selectInputList.vue new file mode 100644 index 0000000000000000000000000000000000000000..8baaf8bcb905aff7c2bbdc2ca3af9dc7a273199c --- /dev/null +++ b/src/components/KFormDesign/packages/KSelectInputList/selectInputList.vue @@ -0,0 +1,118 @@ + + + + diff --git a/src/components/KFormDesign/packages/KTimePicker/index.js b/src/components/KFormDesign/packages/KTimePicker/index.js new file mode 100644 index 0000000000000000000000000000000000000000..624ad6d94afbc596f1cde796d329efdfc176cee1 --- /dev/null +++ b/src/components/KFormDesign/packages/KTimePicker/index.js @@ -0,0 +1,2 @@ +import TimePicker from "./timePicker.vue"; +export default TimePicker; diff --git a/src/components/KFormDesign/packages/KTimePicker/timePicker.vue b/src/components/KFormDesign/packages/KTimePicker/timePicker.vue new file mode 100644 index 0000000000000000000000000000000000000000..2b10eec4806c1183ad07a9f69700c67fed33c142 --- /dev/null +++ b/src/components/KFormDesign/packages/KTimePicker/timePicker.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/components/KFormDesign/packages/PreviewCode/index.vue b/src/components/KFormDesign/packages/PreviewCode/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..cd6437b5ae6fe57109e14b1a2da88d730ce6e4eb --- /dev/null +++ b/src/components/KFormDesign/packages/PreviewCode/index.vue @@ -0,0 +1,81 @@ + + diff --git a/src/components/KFormDesign/packages/UploadFile/index.js b/src/components/KFormDesign/packages/UploadFile/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b440b1ad687b1cbc4de49a2a05f89c839a5101f7 --- /dev/null +++ b/src/components/KFormDesign/packages/UploadFile/index.js @@ -0,0 +1,2 @@ +import UploadFile from "./uploadFile.vue"; +export default UploadFile; diff --git a/src/components/KFormDesign/packages/UploadFile/uploadFile.vue b/src/components/KFormDesign/packages/UploadFile/uploadFile.vue new file mode 100644 index 0000000000000000000000000000000000000000..28c4e90d026b40c01cf64d6f9bbd2fc804ebdac6 --- /dev/null +++ b/src/components/KFormDesign/packages/UploadFile/uploadFile.vue @@ -0,0 +1,217 @@ + + + diff --git a/src/components/KFormDesign/packages/UploadImg/index.js b/src/components/KFormDesign/packages/UploadImg/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a9d36500e8086cf96e48520c1e94874785270fab --- /dev/null +++ b/src/components/KFormDesign/packages/UploadImg/index.js @@ -0,0 +1,2 @@ +import UploadImg from "./uploadImg.vue"; +export default UploadImg; diff --git a/src/components/KFormDesign/packages/UploadImg/uploadImg.vue b/src/components/KFormDesign/packages/UploadImg/uploadImg.vue new file mode 100644 index 0000000000000000000000000000000000000000..b17b3e92484e5d07fa13f1075d5e8555a593c711 --- /dev/null +++ b/src/components/KFormDesign/packages/UploadImg/uploadImg.vue @@ -0,0 +1,180 @@ + + + + diff --git a/src/components/KFormDesign/packages/config/modal.js b/src/components/KFormDesign/packages/config/modal.js new file mode 100644 index 0000000000000000000000000000000000000000..aa83e62e401f7cdec6d10eb45091cbf5ba0bfbd1 --- /dev/null +++ b/src/components/KFormDesign/packages/config/modal.js @@ -0,0 +1,15 @@ +export const dialogStyle = { + position: 'absolute', + right: '150px', + left: '150px', + minWidth: '700px', + width: 'auto', + top: '56px', + bottom: '30px', + minHeight: '500px' +} + +export const bodyStyle = { + height: 'calc(100% - 108px)', + overflow: 'auto' +} diff --git a/src/components/KFormDesign/packages/core/components_use.js b/src/components/KFormDesign/packages/core/components_use.js new file mode 100644 index 0000000000000000000000000000000000000000..158d2d0163fb062153e17bac9b7176df5bb216c0 --- /dev/null +++ b/src/components/KFormDesign/packages/core/components_use.js @@ -0,0 +1,47 @@ +/** + * 该文件是为了按需加载,剔除掉了一些不需要的框架组件。 + * 减少了编译支持库包大小 + * + * 当需要更多组件依赖时,在该文件加入即可 + */ +import Vue from 'vue' +import { + Input, + Rate, + Slider, + InputNumber, + Switch, + Radio, + Checkbox, + Select, + Cascader, + TreeSelect +} from 'ant-design-vue' + +import KBatch from '../KBatch' +import KSelectInputList from '../KSelectInputList' +import KEditor from '../KEditor' +import UploadFile from '../UploadFile' +import UploadImg from '../UploadImg' +import KDatePicker from '../KDatePicker' +import KTimePicker from '../KTimePicker' + +export default { + input: Input, + number: InputNumber, + select: Select, + checkbox: Checkbox, + radio: Radio, + date: KDatePicker, + time: KTimePicker, + rate: Rate, + slider: Slider, + switch: Switch, + uploadFile: UploadFile, + uploadImg: UploadImg, + treeSelect: TreeSelect, + cascader: Cascader, + batch: KBatch, + selectInputList: KSelectInputList, + editor: KEditor +} diff --git a/src/components/KFormDesign/packages/core/revoke.js b/src/components/KFormDesign/packages/core/revoke.js new file mode 100644 index 0000000000000000000000000000000000000000..23c13b237ae7964f7413260289c3de7dcad5b01a --- /dev/null +++ b/src/components/KFormDesign/packages/core/revoke.js @@ -0,0 +1,93 @@ +/** + 撤销重做功能 + */ +export class Revoke { + // 历史记录 + recordList = []; + + // 撤销记录,用于重做 + redoList = []; + + // 当前记录用currentRecord变量暂时存储,当用户修改时,再存放到recordList + currentRecord = null; + + // 上次插入数据时间 + time = 0; + + /** + * @description: 插入历史记录 + * @param {object}record + * @return {boolean} + */ + push (record) { + const nowTime = Date.now() + // 防止添加重复的时间,当添加间隔小于100ms时,则替换当前记录并取消执行添加 + if (this.time + 100 > nowTime) { + this.currentRecord = JSON.stringify(record) + return false + } + + this.time = nowTime + + // 判断之前是否已经存在currentRecord记录,有则存储到recordList + if (this.currentRecord) { + this.recordList.push(this.currentRecord) + // 增加记录后则应该清空重做记录 + this.redoList.splice(0, this.redoList.length) + } + + // 将json转成字符串存储 + this.currentRecord = JSON.stringify(record) + + // 最多存储20条记录,超过20天记录则删除之前的记录 + if (this.length > 20) { + this.recordList.unshift() + } + + return true + } + + /** + * @description: 撤销操作 + * @param {*} + * @return {object} + */ + undo () { + // 没有记录时,返回false + if (this.recordList.length === 0) { + return false + } + const record = this.recordList.pop() + + // 将当前记录添加到重做记录里面 + if (this.currentRecord) { + this.redoList.push(this.currentRecord) + } + // 丢弃当前记录,防止重复添加 + this.currentRecord = null + + return JSON.parse(record) + } + + /** + * @description: 重做操作 + * @param {*} + * @return {*} + */ + redo () { + // 没有重做记录时,返回false + if (this.redoList.length === 0) { + return false + } + + const record = this.redoList.pop() + // 添加到重做记录里面 + if (this.currentRecord) { + this.recordList.push(this.currentRecord) + } + // 丢弃当前记录,防止重复添加 + this.currentRecord = null + + return JSON.parse(record) + } +} diff --git a/src/components/KFormDesign/packages/index.js b/src/components/KFormDesign/packages/index.js new file mode 100644 index 0000000000000000000000000000000000000000..28a55eca581447f678e67eab0416432766a4d21c --- /dev/null +++ b/src/components/KFormDesign/packages/index.js @@ -0,0 +1,19 @@ +/* + * @Description: 增加antd ui 组件 + * @Author: kcz + * @Date: 2020-01-02 22:41:48 + * @LastEditors: kcz + * @LastEditTime: 2021-05-14 14:20:45 + */ + +// 导入ant组件 +import './core/components_use' +import * as all from './mini' + +export default all.default +export const setFormDesignConfig = all.setFormDesignConfig +export const setFormBuildConfig = all.setFormBuildConfig +export const KFormDesign = all.KFormDesign +export const KFormPreview = all.KFormPreview +export const KFormBuild = all.KFormBuild +export const KFormItem = all.KFormItem diff --git a/src/components/KFormDesign/packages/mini.js b/src/components/KFormDesign/packages/mini.js new file mode 100644 index 0000000000000000000000000000000000000000..f75905604f9f8e5ad9535660a1576d5abfe87287 --- /dev/null +++ b/src/components/KFormDesign/packages/mini.js @@ -0,0 +1,126 @@ +/* + * @Description: 组件输出文件,不打包antd ui组件 + * @Author: kcz + * @Date: 2020-01-02 22:41:48 + * @LastEditors: kcz + * @LastEditTime: 2021-05-14 19:09:25 + */ + +// 解决Chrome控制台non-passive event listener输出问题 +// import "default-passive-events"; +// 导入样式 +import '../styles/form-design.less' + +// 导出本地iconfont +import '../static/icons/iconfont' + +// 导入单个组件 +import KFormDesign from './KFormDesign/index' +import KFormPreview from './KFormPreview/index' +import KFormBuild from './KFormBuild/index' +import KFormItem from './KFormItem/index' +import { + customComponents, + basicsList +} from './KFormDesign/config/formItemsConfig' + +const components = [KFormDesign, KFormBuild, KFormItem, KFormPreview] + +const install = function (Vue) { + // use ant组件 + if (install.installed) return + install.installed = true + + components.map(component => { + Vue.component(component.name, component) + }) +} + +if (typeof window !== 'undefined' && window.Vue) { + install(window.Vue) +} + +/** + * @Author: kcz + * @description: 配置组件及添加自定义组件 + * @param {json} + * @return: Boolean + */ +function setFormDesignConfig (config) { + if (!config || typeof config !== 'object') { + console.error('传入config的参数必须为对象') + return false + } + try { + customComponents.title = config.title || '自义定组件' + customComponents.list = config.list || [] + // 将自定义组件列表绑到window.$customComponentList上 + window.$customComponentList = config.list || [] + // uploadFile 配置 start + // 配置uploadFile默认上传地址 + const uploadFile = basicsList.filter(item => item.type === 'uploadFile')[0] + uploadFile.options.action = + config.uploadFile || 'http://127.0.0.1/uploadFile.txt' + + // 配置uploadFile默认额外参数 + uploadFile.options.data = JSON.stringify(config.uploadFileData || {}) + + // 配置uploadFile默认name + uploadFile.options.fileName = config.uploadFileName || 'file' + // 配置uploadFile默认headers + uploadFile.options.headers = config.uploadFileHeaders || {} + // uploadFile 配置 end + + // uploadImage配置 start + // 配置uploadImage默认上传地址 + const uploadImg = basicsList.filter(item => item.type === 'uploadImg')[0] + uploadImg.options.action = + config.uploadImage || 'http://127.0.0.1/upload-img.txt' + // 配置uploadImage默认额外参数 + uploadImg.options.data = JSON.stringify(config.uploadImageData || {}) + // 配置uploadFile默认name + uploadImg.options.fileName = config.uploadImageName || 'image' + // 配置uploadFile默认headers + uploadImg.options.headers = config.uploadImageHeaders || {} + // uploadImage配置 end + + return true + } catch (err) { + console.error(err) + return false + } +} + +/** + * @author lizhichao + * @description 配置k-form-build(预览时),暂只支持dynamicData的设置 + * @param { object }config + */ +function setFormBuildConfig (config) { + if (!config || typeof config !== 'object') { + console.error('传入setFormBuildConfig的参数必须为对象') + return false + } + if (config.dynamicData) { + window.$kfb_dynamicData = config.dynamicData + } +} + +// 这里可以用es6的解构语法导入组件 +export { + install, + KFormDesign, + KFormBuild, + KFormItem, + KFormPreview, + setFormDesignConfig, + setFormBuildConfig +} + +// 这里默认导入全部组件 +export default { + install, + setConfig: setFormDesignConfig, + setFormDesignConfig: setFormDesignConfig, + setFormBuildConfig: setFormBuildConfig +} diff --git a/src/components/KFormDesign/static/icons/demo.css b/src/components/KFormDesign/static/icons/demo.css new file mode 100644 index 0000000000000000000000000000000000000000..e06b41e547b0f934ca12e6f80b4ed81e94c1d481 --- /dev/null +++ b/src/components/KFormDesign/static/icons/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + /*z-index: 1;*/ + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/components/KFormDesign/static/icons/demo_index.html b/src/components/KFormDesign/static/icons/demo_index.html new file mode 100644 index 0000000000000000000000000000000000000000..a38507bb087c2b486fad5f75c02570c3a5cb097f --- /dev/null +++ b/src/components/KFormDesign/static/icons/demo_index.html @@ -0,0 +1,1154 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    拆分
    +
    
    +
  • + +
  • + +
    撤销
    +
    
    +
  • + +
  • + +
    全屏
    +
    
    +
  • + +
  • + +
    重做
    +
    
    +
  • + +
  • + +
    组件
    +
    
    +
  • + +
  • + +
    编辑2
    +
    
    +
  • + +
  • + +
    tabs
    +
    
    +
  • + +
  • + +
    LC_icon_edit_line_1
    +
    
    +
  • + +
  • + +
    edit
    +
    
    +
  • + +
  • + +
    edit-2
    +
    
    +
  • + +
  • + +
    树型
    +
    
    +
  • + +
  • + +
    模型树
    +
    
    +
  • + +
  • + +
    关联
    +
    
    +
  • + +
  • + +
    edit-编辑
    +
    
    +
  • + +
  • + +
    write-写
    +
    
    +
  • + +
  • + +
    gallery-画廊
    +
    
    +
  • + +
  • + +
    代码
    +
    
    +
  • + +
  • + +
    html5
    +
    
    +
  • + +
  • + +
    提示
    +
    
    +
  • + +
  • + +
    time-时间
    +
    
    +
  • + +
  • + +
    number
    +
    
    +
  • + +
  • + +
    menu-菜单
    +
    
    +
  • + +
  • + +
    download-下载
    +
    
    +
  • + +
  • + +
    upload-上传
    +
    
    +
  • + +
  • + +
    folder-文件夹
    +
    
    +
  • + +
  • + +
    image-图像
    +
    
    +
  • + +
  • + +
    calendar-日历
    +
    
    +
  • + +
  • + +
    单选-粗线条
    +
    
    +
  • + +
  • + +
    字号
    +
    
    +
  • + +
  • + +
    button-add-按钮添加
    +
    
    +
  • + +
  • + +
    button-remove-按钮删除
    +
    
    +
  • + +
  • + +
    多选
    +
    
    +
  • + +
  • + +
    单行文本
    +
    
    +
  • + +
  • + +
    多行文本
    +
    
    +
  • + +
  • + +
    单选 选中
    +
    
    +
  • + +
  • + +
    开关3
    +
    
    +
  • + +
  • + +
    表格
    +
    
    +
  • + +
  • + +
    卡片
    +
    
    +
  • + +
  • + +
    栅格
    +
    
    +
  • + +
  • + +
    下拉2
    +
    
    +
  • + +
  • +  +
    分割线
    +
    
    +
  • + +
  • + +
    评分_默认
    +
    
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1622099828259') format('woff2'),
+       url('iconfont.woff?t=1622099828259') format('woff'),
+       url('iconfont.ttf?t=1622099828259') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 拆分 +
    +
    .icon-chaifen +
    +
  • + +
  • + +
    + 撤销 +
    +
    .icon-chexiao +
    +
  • + +
  • + +
    + 全屏 +
    +
    .icon-quanping +
    +
  • + +
  • + +
    + 重做 +
    +
    .icon-zhongzuo +
    +
  • + +
  • + +
    + 组件 +
    +
    .icon-zujian +
    +
  • + +
  • + +
    + 编辑2 +
    +
    .icon-bianji2 +
    +
  • + +
  • + +
    + tabs +
    +
    .icon-tabs +
    +
  • + +
  • + +
    + LC_icon_edit_line_1 +
    +
    .icon-LC_icon_edit_line_1 +
    +
  • + +
  • + +
    + edit +
    +
    .icon-edit1 +
    +
  • + +
  • + +
    + edit-2 +
    +
    .icon-edit- +
    +
  • + +
  • + +
    + 树型 +
    +
    .icon-juxingkaobei +
    +
  • + +
  • + +
    + 模型树 +
    +
    .icon-tree +
    +
  • + +
  • + +
    + 关联 +
    +
    .icon-guanlian +
    +
  • + +
  • + +
    + edit-编辑 +
    +
    .icon-edit +
    +
  • + +
  • + +
    + write-写 +
    +
    .icon-write +
    +
  • + +
  • + +
    + gallery-画廊 +
    +
    .icon-gallery +
    +
  • + +
  • + +
    + 代码 +
    +
    .icon-ai-code +
    +
  • + +
  • + +
    + html5 +
    +
    .icon-html +
    +
  • + +
  • + +
    + 提示 +
    +
    .icon-zu +
    +
  • + +
  • + +
    + time-时间 +
    +
    .icon-time +
    +
  • + +
  • + +
    + number +
    +
    .icon-number +
    +
  • + +
  • + +
    + menu-菜单 +
    +
    .icon-menu +
    +
  • + +
  • + +
    + download-下载 +
    +
    .icon-download +
    +
  • + +
  • + +
    + upload-上传 +
    +
    .icon-upload +
    +
  • + +
  • + +
    + folder-文件夹 +
    +
    .icon-folder +
    +
  • + +
  • + +
    + image-图像 +
    +
    .icon-image +
    +
  • + +
  • + +
    + calendar-日历 +
    +
    .icon-calendar +
    +
  • + +
  • + +
    + 单选-粗线条 +
    +
    .icon-danxuan-cuxiantiao +
    +
  • + +
  • + +
    + 字号 +
    +
    .icon-zihao +
    +
  • + +
  • + +
    + button-add-按钮添加 +
    +
    .icon-button-add +
    +
  • + +
  • + +
    + button-remove-按钮删除 +
    +
    .icon-button-remove +
    +
  • + +
  • + +
    + 多选 +
    +
    .icon-duoxuan1 +
    +
  • + +
  • + +
    + 单行文本 +
    +
    .icon-danhangwenben +
    +
  • + +
  • + +
    + 多行文本 +
    +
    .icon-duohangwenben +
    +
  • + +
  • + +
    + 单选 选中 +
    +
    .icon-danxuanxuanzhong +
    +
  • + +
  • + +
    + 开关3 +
    +
    .icon-kaiguan3 +
    +
  • + +
  • + +
    + 表格 +
    +
    .icon-biaoge +
    +
  • + +
  • + +
    + 卡片 +
    +
    .icon-qiapian +
    +
  • + +
  • + +
    + 栅格 +
    +
    .icon-zhage +
    +
  • + +
  • + +
    + 下拉2 +
    +
    .icon-xiala +
    +
  • + +
  • + +
    + 分割线 +
    +
    .icon-fengexian +
    +
  • + +
  • + +
    + 评分_默认 +
    +
    .icon-pingfen_moren +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    拆分
    +
    #icon-chaifen
    +
  • + +
  • + +
    撤销
    +
    #icon-chexiao
    +
  • + +
  • + +
    全屏
    +
    #icon-quanping
    +
  • + +
  • + +
    重做
    +
    #icon-zhongzuo
    +
  • + +
  • + +
    组件
    +
    #icon-zujian
    +
  • + +
  • + +
    编辑2
    +
    #icon-bianji2
    +
  • + +
  • + +
    tabs
    +
    #icon-tabs
    +
  • + +
  • + +
    LC_icon_edit_line_1
    +
    #icon-LC_icon_edit_line_1
    +
  • + +
  • + +
    edit
    +
    #icon-edit1
    +
  • + +
  • + +
    edit-2
    +
    #icon-edit-
    +
  • + +
  • + +
    树型
    +
    #icon-juxingkaobei
    +
  • + +
  • + +
    模型树
    +
    #icon-tree
    +
  • + +
  • + +
    关联
    +
    #icon-guanlian
    +
  • + +
  • + +
    edit-编辑
    +
    #icon-edit
    +
  • + +
  • + +
    write-写
    +
    #icon-write
    +
  • + +
  • + +
    gallery-画廊
    +
    #icon-gallery
    +
  • + +
  • + +
    代码
    +
    #icon-ai-code
    +
  • + +
  • + +
    html5
    +
    #icon-html
    +
  • + +
  • + +
    提示
    +
    #icon-zu
    +
  • + +
  • + +
    time-时间
    +
    #icon-time
    +
  • + +
  • + +
    number
    +
    #icon-number
    +
  • + +
  • + +
    menu-菜单
    +
    #icon-menu
    +
  • + +
  • + +
    download-下载
    +
    #icon-download
    +
  • + +
  • + +
    upload-上传
    +
    #icon-upload
    +
  • + +
  • + +
    folder-文件夹
    +
    #icon-folder
    +
  • + +
  • + +
    image-图像
    +
    #icon-image
    +
  • + +
  • + +
    calendar-日历
    +
    #icon-calendar
    +
  • + +
  • + +
    单选-粗线条
    +
    #icon-danxuan-cuxiantiao
    +
  • + +
  • + +
    字号
    +
    #icon-zihao
    +
  • + +
  • + +
    button-add-按钮添加
    +
    #icon-button-add
    +
  • + +
  • + +
    button-remove-按钮删除
    +
    #icon-button-remove
    +
  • + +
  • + +
    多选
    +
    #icon-duoxuan1
    +
  • + +
  • + +
    单行文本
    +
    #icon-danhangwenben
    +
  • + +
  • + +
    多行文本
    +
    #icon-duohangwenben
    +
  • + +
  • + +
    单选 选中
    +
    #icon-danxuanxuanzhong
    +
  • + +
  • + +
    开关3
    +
    #icon-kaiguan3
    +
  • + +
  • + +
    表格
    +
    #icon-biaoge
    +
  • + +
  • + +
    卡片
    +
    #icon-qiapian
    +
  • + +
  • + +
    栅格
    +
    #icon-zhage
    +
  • + +
  • + +
    下拉2
    +
    #icon-xiala
    +
  • + +
  • + +
    分割线
    +
    #icon-fengexian
    +
  • + +
  • + +
    评分_默认
    +
    #icon-pingfen_moren
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/src/components/KFormDesign/static/icons/iconfont.css b/src/components/KFormDesign/static/icons/iconfont.css new file mode 100644 index 0000000000000000000000000000000000000000..42a8562b146d4a3a05d0c9239d2180544357b9d5 --- /dev/null +++ b/src/components/KFormDesign/static/icons/iconfont.css @@ -0,0 +1,183 @@ +@font-face { + font-family: "iconfont"; /* Project id 1609652 */ + src: url('iconfont.woff2?t=1622099828259') format('woff2'), + url('iconfont.woff?t=1622099828259') format('woff'), + url('iconfont.ttf?t=1622099828259') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-chaifen:before { + content: "\e653"; +} + +.icon-chexiao:before { + content: "\e609"; +} + +.icon-quanping:before { + content: "\e60d"; +} + +.icon-zhongzuo:before { + content: "\e60e"; +} + +.icon-zujian:before { + content: "\e60f"; +} + +.icon-bianji2:before { + content: "\e610"; +} + +.icon-tabs:before { + content: "\e8cd"; +} + +.icon-LC_icon_edit_line_1:before { + content: "\e65b"; +} + +.icon-edit1:before { + content: "\e72a"; +} + +.icon-edit-:before { + content: "\e83b"; +} + +.icon-juxingkaobei:before { + content: "\e7a5"; +} + +.icon-tree:before { + content: "\e608"; +} + +.icon-guanlian:before { + content: "\e61f"; +} + +.icon-edit:before { + content: "\e607"; +} + +.icon-write:before { + content: "\e612"; +} + +.icon-gallery:before { + content: "\e613"; +} + +.icon-ai-code:before { + content: "\e606"; +} + +.icon-html:before { + content: "\e693"; +} + +.icon-zu:before { + content: "\e615"; +} + +.icon-time:before { + content: "\e633"; +} + +.icon-number:before { + content: "\e639"; +} + +.icon-menu:before { + content: "\e605"; +} + +.icon-download:before { + content: "\e60b"; +} + +.icon-upload:before { + content: "\e60c"; +} + +.icon-folder:before { + content: "\e611"; +} + +.icon-image:before { + content: "\e61a"; +} + +.icon-calendar:before { + content: "\e60a"; +} + +.icon-danxuan-cuxiantiao:before { + content: "\e676"; +} + +.icon-zihao:before { + content: "\e623"; +} + +.icon-button-add:before { + content: "\e637"; +} + +.icon-button-remove:before { + content: "\e638"; +} + +.icon-duoxuan1:before { + content: "\e66d"; +} + +.icon-danhangwenben:before { + content: "\e6e6"; +} + +.icon-duohangwenben:before { + content: "\e6e7"; +} + +.icon-danxuanxuanzhong:before { + content: "\e62d"; +} + +.icon-kaiguan3:before { + content: "\e6da"; +} + +.icon-biaoge:before { + content: "\e63e"; +} + +.icon-qiapian:before { + content: "\e674"; +} + +.icon-zhage:before { + content: "\e63f"; +} + +.icon-xiala:before { + content: "\e640"; +} + +.icon-fengexian:before { + content: "\ec7f"; +} + +.icon-pingfen_moren:before { + content: "\e877"; +} + diff --git a/src/components/KFormDesign/static/icons/iconfont.js b/src/components/KFormDesign/static/icons/iconfont.js new file mode 100644 index 0000000000000000000000000000000000000000..a07d883b349797f1ad545ab670f049bb0937a015 --- /dev/null +++ b/src/components/KFormDesign/static/icons/iconfont.js @@ -0,0 +1 @@ +!function(a){var h,t,o,l,v,i,c='',e=(e=document.getElementsByTagName("script"))[e.length-1].getAttribute("data-injectcss");if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function d(){v||(v=!0,o())}h=function(){var a,h,t;(t=document.createElement("div")).innerHTML=c,c=null,(h=t.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",a=h,(t=document.body).firstChild?(h=t.firstChild).parentNode.insertBefore(a,h):t.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),h()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(o=h,l=a.document,v=!1,(i=function(){try{l.documentElement.doScroll("left")}catch(a){return void setTimeout(i,50)}d()})(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,d())})}(window); \ No newline at end of file diff --git a/src/components/KFormDesign/static/icons/iconfont.json b/src/components/KFormDesign/static/icons/iconfont.json new file mode 100644 index 0000000000000000000000000000000000000000..e3db0b3d89b43c772c83e2d89f74faaa180179f8 --- /dev/null +++ b/src/components/KFormDesign/static/icons/iconfont.json @@ -0,0 +1,303 @@ +{ + "id": "1609652", + "name": "k-form-design", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "657585", + "name": "拆分", + "font_class": "chaifen", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "16194540", + "name": "撤销", + "font_class": "chexiao", + "unicode": "e609", + "unicode_decimal": 58889 + }, + { + "icon_id": "16194544", + "name": "全屏", + "font_class": "quanping", + "unicode": "e60d", + "unicode_decimal": 58893 + }, + { + "icon_id": "16194545", + "name": "重做", + "font_class": "zhongzuo", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "16194678", + "name": "组件", + "font_class": "zujian", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "16198616", + "name": "编辑2", + "font_class": "bianji2", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "15617359", + "name": "tabs", + "font_class": "tabs", + "unicode": "e8cd", + "unicode_decimal": 59597 + }, + { + "icon_id": "648145", + "name": "LC_icon_edit_line_1", + "font_class": "LC_icon_edit_line_1", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "7712657", + "name": "edit", + "font_class": "edit1", + "unicode": "e72a", + "unicode_decimal": 59178 + }, + { + "icon_id": "11249706", + "name": "edit-2", + "font_class": "edit-", + "unicode": "e83b", + "unicode_decimal": 59451 + }, + { + "icon_id": "7544797", + "name": "树型", + "font_class": "juxingkaobei", + "unicode": "e7a5", + "unicode_decimal": 59301 + }, + { + "icon_id": "10901926", + "name": "模型树", + "font_class": "tree", + "unicode": "e608", + "unicode_decimal": 58888 + }, + { + "icon_id": "12694622", + "name": "关联", + "font_class": "guanlian", + "unicode": "e61f", + "unicode_decimal": 58911 + }, + { + "icon_id": "1812699", + "name": "edit-编辑", + "font_class": "edit", + "unicode": "e607", + "unicode_decimal": 58887 + }, + { + "icon_id": "1813034", + "name": "write-写", + "font_class": "write", + "unicode": "e612", + "unicode_decimal": 58898 + }, + { + "icon_id": "1813038", + "name": "gallery-画廊", + "font_class": "gallery", + "unicode": "e613", + "unicode_decimal": 58899 + }, + { + "icon_id": "721659", + "name": "代码", + "font_class": "ai-code", + "unicode": "e606", + "unicode_decimal": 58886 + }, + { + "icon_id": "1467357", + "name": "html5", + "font_class": "html", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "11976079", + "name": "提示", + "font_class": "zu", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "1813719", + "name": "time-时间", + "font_class": "time", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "11737013", + "name": "number", + "font_class": "number", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "1812689", + "name": "menu-菜单", + "font_class": "menu", + "unicode": "e605", + "unicode_decimal": 58885 + }, + { + "icon_id": "1812743", + "name": "download-下载", + "font_class": "download", + "unicode": "e60b", + "unicode_decimal": 58891 + }, + { + "icon_id": "1812751", + "name": "upload-上传", + "font_class": "upload", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "1813029", + "name": "folder-文件夹", + "font_class": "folder", + "unicode": "e611", + "unicode_decimal": 58897 + }, + { + "icon_id": "1813190", + "name": "image-图像", + "font_class": "image", + "unicode": "e61a", + "unicode_decimal": 58906 + }, + { + "icon_id": "1812735", + "name": "calendar-日历", + "font_class": "calendar", + "unicode": "e60a", + "unicode_decimal": 58890 + }, + { + "icon_id": "5755487", + "name": "单选-粗线条", + "font_class": "danxuan-cuxiantiao", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "7274115", + "name": "字号", + "font_class": "zihao", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "1813731", + "name": "button-add-按钮添加", + "font_class": "button-add", + "unicode": "e637", + "unicode_decimal": 58935 + }, + { + "icon_id": "1813733", + "name": "button-remove-按钮删除", + "font_class": "button-remove", + "unicode": "e638", + "unicode_decimal": 58936 + }, + { + "icon_id": "731574", + "name": "多选", + "font_class": "duoxuan1", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "1790453", + "name": "单行文本", + "font_class": "danhangwenben", + "unicode": "e6e6", + "unicode_decimal": 59110 + }, + { + "icon_id": "1790454", + "name": "多行文本", + "font_class": "duohangwenben", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "695129", + "name": "单选 选中", + "font_class": "danxuanxuanzhong", + "unicode": "e62d", + "unicode_decimal": 58925 + }, + { + "icon_id": "784217", + "name": "开关3", + "font_class": "kaiguan3", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "1305461", + "name": "表格", + "font_class": "biaoge", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "2471370", + "name": "卡片", + "font_class": "qiapian", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "5203323", + "name": "栅格", + "font_class": "zhage", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "6022670", + "name": "下拉2", + "font_class": "xiala", + "unicode": "e640", + "unicode_decimal": 58944 + }, + { + "icon_id": "6337454", + "name": "分割线", + "font_class": "fengexian", + "unicode": "ec7f", + "unicode_decimal": 60543 + }, + { + "icon_id": "9626907", + "name": "评分_默认", + "font_class": "pingfen_moren", + "unicode": "e877", + "unicode_decimal": 59511 + } + ] +} diff --git a/src/components/KFormDesign/static/icons/iconfont.ttf b/src/components/KFormDesign/static/icons/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b0bf224844ee172dbe51a5b4bf729b4b9de62169 Binary files /dev/null and b/src/components/KFormDesign/static/icons/iconfont.ttf differ diff --git a/src/components/KFormDesign/static/icons/iconfont.woff b/src/components/KFormDesign/static/icons/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..c9648fd6426e5424d8d899d9eff7ceadd8bbf93e Binary files /dev/null and b/src/components/KFormDesign/static/icons/iconfont.woff differ diff --git a/src/components/KFormDesign/static/icons/iconfont.woff2 b/src/components/KFormDesign/static/icons/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f1faf64f0de7fa4b8453d0832804351bd6c85727 Binary files /dev/null and b/src/components/KFormDesign/static/icons/iconfont.woff2 differ diff --git a/src/components/KFormDesign/styles/form-design.less b/src/components/KFormDesign/styles/form-design.less new file mode 100644 index 0000000000000000000000000000000000000000..3930f603e88365096656486c675516e0e0f7a332 --- /dev/null +++ b/src/components/KFormDesign/styles/form-design.less @@ -0,0 +1,874 @@ +// 表单设计器样式 +@primary-color: #13c2c2; +@layout-color : #9867f7; + +@primary-background-color: fade(@primary-color, 6%); +@primary-hover-bg-color : fade(@primary-color, 20%); +@layout-background-color : fade(@layout-color, 12%); +@layout-hover-bg-color : fade(@layout-color, 24%); + +@title-text-color: #fff; +@border-color : #ccc; + +@left-right-width : 270px; +@header-height : 56px; +@operating-area-height : 45px; +@import "./k-table.less"; +@import "./k-editor.less"; + + + +// 表单设计器样式 +.form-designer-container-9136076486841527 { + height : 100vh; + width : 100%; + overflow: hidden; + + + + + + // header样式 + .header { + width : 100%; + height : @header-height; + text-align : center; + background : @primary-color; + color : @title-text-color; + // margin-bottom: 6px; + // border-bottom: 1px solid @border-color; + line-height : @header-height; + font-size : 18px; + font-weight : bold; + } + + // 头部操作按钮区域 + .operating-area { + border-bottom : 2px solid @border-color; + font-size : 16px; + text-align : left; + height : @operating-area-height; + line-height : @operating-area-height; + padding : 0px 12px; + display : flex; + justify-content: space-between; + align-content : center; + + a { + color : #666; + margin: 0 5px; + + &.disabled, + &.disabled:hover { + color: #ccc; + } + + &:hover { + color: @primary-color; + } + + >span { + font-size : 14px; + padding-left: 2px; + } + } + } + + // iconfont 样式 + .icon { + width : 1em; + height : 1em; + vertical-align: -0.15em; + fill : currentColor; + overflow : hidden; + } + + // 设计器内容样式 + .content { + display: flex; + height : 100%; + flex : 1; + + &.show-head { + margin-top: 6px; + height : calc(100% - @header-height - 6px); + } + + &.toolbars-top { + margin-top: 6px; + height : calc(100% - @operating-area-height - 6px); + } + + &.show-head-and-toolbars-top { + margin-top: 6px; + height : calc(100% - @header-height - @operating-area-height - 6px); + } + + // 左右栏 + aside { + box-shadow : 0px 0px 1px 1px @border-color; + width : @left-right-width; + height : 100%; + // >.left-title { + // padding : 12px 10px 8px; + // user-select: none; + // } + + &.left { + // border-right: 1px solid @aside-border-color; + height : 100%; + overflow : auto; + user-select: none; + + .ant-collapse-content-box { + padding: 0; + } + + .ant-collapse { + border: 0; + + >.ant-collapse-item { + border-color: @border-color; + + >.ant-collapse-header { + padding: 7px 0 7px 40px; + } + + >.ant-collapse-content { + border-color: @border-color; + } + } + } + + + ul { + padding : 5px; + list-style : none; + display : flex; + margin-bottom: 0; + flex-wrap : wrap; + // background: #efefef; + + li { + border-radius: 0; + border : 0; + box-shadow : 1px 0 0 0 @border-color, 0 1px 0 0 @border-color, 1px 1px 0 0 @border-color, 1px 0 0 0 @border-color inset, 0 1px 0 0 @border-color inset; + padding : 8px 12px; + transition : all 0.3s; + width : calc(50% - 6px); + margin : 2.7px; + height : 36px; + line-height : 20px; + cursor : move; + border : 1px solid transparent; + border-radius: 3px; + transition : all .3s; + + &:hover { + color : @primary-color; + border : 1px solid @primary-color; + position : relative; + z-index : 1; + box-shadow: 0 2px 6px @primary-color; + } + } + } + } + + // 右侧区域 + &.right { + height : 100%; + // border-left: 1px solid @aside-border-color; + // border-top : 1px solid @aside-border-color; + color : #fff; + overflow : hidden; + position : relative; + + + // 控件属性设置 + .form-item-properties { + width : 100%; + height: 100%; + } + + .ant-tabs { + height: 100%; + + .ant-tabs-content { + height: 100%; + + .ant-tabs-tabpane { + + height : calc(100% - 45px); + overflow: auto; + } + } + } + + .properties-centent { + height : 100%; + overflow : hidden; + background: #fff; + + .properties-body { + overflow: auto; + height : 100%; + padding : 8px 16px; + } + + + .ant-form-item { + margin-bottom: 0; + padding : 6px 0; + border-bottom: 1px solid @border-color; + + .ant-form-item-label { + line-height: 2; + } + } + } + + .hint-box { + margin-top: 120px; + } + } + } + + // 中间内容区域 + section { + flex : 1; + max-width : calc(100% - @left-right-width - @left-right-width); + user-select: none; + margin : 0 8px 0; + box-shadow : 0px 0px 1px 1px @border-color; + + + + // 内容操作区域 + .form-panel { + // height : calc(100% - 50px); + height : 100%; + background : #eee; + // border : 1px solid #ccc; + position : relative; + + &.no-toolbars-top { + height: calc(100% - 50px); + } + + >.hint-text { + position : absolute; + left : 0; + top : 50%; + width : 100%; + transform: translateY(-50%); + font-size: 20px; + color : #aaa; + z-index : 16; + } + + .a-form-box { + height : 100%; + // box-shadow: 0px 1px 5px 1px #ccc; + } + + .draggable-box { + height : 100%; + overflow: auto; + + .list-main { + min-height : 100%; + padding : 5px; + position : relative; + background : #fafafa; + // border : 1px #ccc dashed; + + .moving { + // 拖放移动中 + // outline-width: 0; + min-height : 35px; + box-sizing : border-box; + overflow : hidden; + padding : 0 !important; + // margin : 3px 0; + position : relative; + + &::before { + content : ''; + height : 5px; + width : 100%; + background: @primary-color; + position : absolute; + top : 0; + right : 0; + } + } + + .drag-move-box { + position : relative; + box-sizing: border-box; + padding : 8px; + overflow : hidden; + transition: all .3s; + min-height: 36px; + + &:hover { + background: @primary-hover-bg-color; + } + + // 选择时 start + &::before { + content : ''; + height : 5px; + width : 100%; + background: @primary-color; + position : absolute; + top : 0; + right : -100%; + transition: all .3s; + } + + &.active { + &::before { + right: 0; + } + + background : @primary-hover-bg-color; + outline-offset: 0; + } + + // 选择时 end + .form-item-box { + position : relative; + box-sizing: border-box; + word-wrap : break-word; + + &::before { + content : ""; + position: absolute; + width : 100%; + height : 100%; + top : 0; + left : 0; + z-index : 888; + } + + .ant-form-item { + // 修改ant form-item的margin为padding + margin : 0; + padding-bottom: 6px; + } + } + + .show-key-box { + // 显示key + position : absolute; + bottom : 2px; + right : 5px; + font-size: 14px; + z-index : 999; + color : @primary-color; + } + + >.copy, + >.delete { + position : absolute; + top : 0; + width : 30px; + height : 30px; + line-height: 30px; + text-align : center; + color : #fff; + z-index : 989; + transition : all .3s; + + &.unactivated { + opacity : 0 !important; + pointer-events: none; + } + + &.active { + opacity: 1 !important; + } + } + + >.copy { + border-radius: 0 0 0 8px; + right : 30px; + background : @primary-color; + } + + >.delete { + right : 0px; + background: @primary-color; + } + + } + + // 动态表格设计面板样式 + .batch-box, + .select-input-list-box { + >.batch-label { + font-size : 16px; + font-weight: 500; + padding : 10px 10px; + + } + + + .draggable-box { + min-height: 60px; + width : 100%; + border : 1px #ccc dashed; + background: #fff; + + .list-main { + min-height : 60px; + position : relative; + border : 1px #ccc dashed; + overflow-x : auto; + overflow-y : auto; + white-space: nowrap; + + .moving { + // 拖放移动中 + width : 175px; + min-height: 94px; + display : inline-block; + } + + >div { + min-width : 185px; + display : inline-block; + vertical-align: top; + + .ant-form-item>.ant-form-item-label, + .ant-form-item>.ant-form-item-control-wrapper { + text-align: left; + display : block; + } + + .ant-col { + width: 100%; + } + + } + } + } + + } + + .select-input-list-box { + .column-box { + display: flex; + width : 100%; + + .check-box { + width: 80px; + } + + .draggable-box { + flex: 1; + } + } + + // 隐藏选择输入列的所有组件的label + .draggable-box { + .ant-form-item-label { + display: none !important; + } + } + } + + .batch-box, + .select-input-list-box, + .grid-box, + .table-box { + position : relative; + box-sizing: border-box; + padding : 5px; + background: @layout-background-color; + width : 100%; + transition: all .3s; + overflow : hidden; + + .form-item-box { + position : relative; + box-sizing: border-box; + + .ant-form-item { + // 修改ant form-item的margin为padding + margin : 0; + padding-bottom: 15px; + } + } + + .grid-row, + .table-layout { + background: @layout-background-color; + + + .grid-col, + .table-td { + .draggable-box { + min-height: 60px; + min-width : 50px; + border : 1px #ccc dashed; + background: #fff; + + .list-main { + min-height: 60px; + position : relative; + border : 1px #ccc dashed; + } + } + } + } + + // 选择时 start + &::before { + content : ''; + height : 5px; + width : 100%; + background: transparent; + position : absolute; + top : 0; + right : -100%; + transition: all .3s; + } + + &.active { + &::before { + background: @layout-color; + right : 0; + } + + background : @layout-hover-bg-color; + outline-offset: 0; + } + + >.copy, + >.delete { + position : absolute; + top : 0px; + width : 30px; + height : 30px; + line-height: 30px; + text-align : center; + color : #fff; + z-index : 989; + transition : all .3s; + + &.unactivated { + opacity : 0 !important; + pointer-events: none; + } + + &.active { + opacity: 1 !important; + } + } + + >.copy { + border-radius: 0 0 0 8px; + right : 30px; + background : @layout-color; + } + + >.delete { + right : 0px; + background: @layout-color; + } + } + } + } + } + } + } + + // 表格右键菜单样式 + .right-menu { + width : 160px; + background : #fff; + border : 1px solid #ccc; + position : fixed; + transition : all 0s; + box-shadow : 3px 3px 8px #999; + border-radius: 3px; + padding : 8px 0; + z-index : 2199; + + ul { + padding : 0; + margin : 0; + list-style: none; + + li { + cursor : pointer; + user-select: none; + padding : 0 15px; + height : 30px; + line-height: 30px; + font-size : 14px; + + i { + margin-right: 4px; + } + + &:hover { + background: #eee; + } + } + } + } + + // 控件属性复选组件样式 + .kk-checkbox { + .ant-checkbox-wrapper { + margin-left : 0 !important; + margin-right: 8px; + } + } + + // 列表动画 + .list-enter-active { + transition: all .5s; + } + + .list-leave-active { + transition: all .3s; + } + + .list-enter, + .list-leave-to + + /* .list-leave-active for below version 2.1.8 */ + { + opacity : 0; + transform: translateX(-100px); + } + + .list-enter { + height: 30px; + } + + ::-webkit-scrollbar { + /*滚动条整体样式*/ + width : 6px; + /*高宽分别对应横竖滚动条的尺寸*/ + height : 6px; + scrollbar-arrow-color: red; + + } + + ::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + border-radius : 5px; + box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2); + background : rgba(0, 0, 0, 0.2); + scrollbar-arrow-color: red; + } + + ::-webkit-scrollbar-track { + /*滚动条里面轨道*/ + box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2); + border-radius: 0; + background : rgba(0, 0, 0, 0.1); + } + + // 行内组件宽度默认175px + .ant-form-inline { + .list-main { + display : flex; + flex-wrap : wrap; + justify-content: flex-start; + align-content : flex-start; + + .layout-width { + width: 100%; + } + } + + .ant-form-item-control-wrapper { + width: 175px !important; + } + } +} + + + +// code盒子样式 +.json-box-9136076486841527 { + height : 570px; + overflow: auto; + + .vue-codemirror-wrap { + height: 100%; + + .CodeMirror-wrap { + height : 100%; + background: #f6f6f6; + + .CodeMirror-scroll { + height: 100%; + width : 100%; + } + + pre.CodeMirror-line, + .CodeMirror-linenumber { + min-height : 21px; + line-height: 21px; + } + } + } +} + + + + +// modal样式 +.k-form-modal { + .ant-modal-content { + height: 100%; + } +} + + // code-modal盒子样式 + &.code-modal-9136076486841527 { + .ant-modal-body { + padding: 12px; + } +} + + +// modal复制按钮样式 +.copy-btn-box-9136076486841527 { + padding-top: 8px; + text-align : center; + + .copy-btn { + margin-right: 8px; + } +} + +// k-form-build +.k-form-build-9136076486841527 { + + .select-input-list-box { + color : rgba(0, 0, 0, 0.65); + font-size: 14px; + + .ant-form-item { + margin-bottom: 2px; + margin-right : 8px + } + + &.ant-form-horizontal { + .ant-col.ant-form-item-control-wrapper { + height : 30px; + display : flex; + align-items: center; + } + + .text-box { + height : 30px; + line-height: 30px; + } + } + + } + + .ant-form-item { + margin-bottom: 16px; + } + + // 防止报错信息占位 + .ant-form-item-control { + position: relative; + + .ant-form-explain { + bottom : -16px; + position: absolute; + z-index : 10; + } + } + + &.ant-form-inline { + .ant-form-item-control-wrapper { + width: 175px !important; + } + } + + // 动态表格样式 + .batch-table { + .ant-form-item { + margin: 0; + } + + .ant-form-item-control-wrapper { + width: 170px !important; + } + + .ant-table-thead>tr>th { + + padding: 12px; + } + + .ant-table-tbody>tr>td { + padding: 8px; + } + + .ant-form-inline .ant-form-item-with-help { + margin: 0; + } + + .ant-table-placeholder { + padding: 0; + } + } + + // 拖拽上传控件隐藏 + .hide-upload-drag { + .ant-upload.ant-upload-drag { + display: none; + } + } + +} + +//颜色选择器覆盖 +.m-colorPicker { + width : 25%; + vertical-align: bottom; + padding : 5px; + border : 1px solid #e6e6e6; + border-radius : 4px; + font-size : 0; + + .colorBtn { + height: 22px !important; + width : 100% !important; + } +} + + + + +// footer样式 +// .footer-9136076486841527 { +// width : 100%; +// height : 30px; +// line-height: 30px; +// padding : 0 15px; +// text-align : right; +// background : #fafafa; +// color : @primary-color; +// font-size : 14px; +// font-weight: bold; +// border-top : 1px solid #e0e0e0; + +// >a { +// color : @primary-color; +// text-decoration: none; +// } +// } \ No newline at end of file diff --git a/src/components/KFormDesign/styles/k-editor.less b/src/components/KFormDesign/styles/k-editor.less new file mode 100644 index 0000000000000000000000000000000000000000..4fc92cfac8810bbb01deff6c99aa40bd35c76efa --- /dev/null +++ b/src/components/KFormDesign/styles/k-editor.less @@ -0,0 +1,83 @@ +/* + * @Description: 用于汉化编辑器 + * @Author: kcz + * @Date: 2020-03-30 14:00:29 + * @LastEditors: kcz + * @LastEditTime: 2020-03-30 14:04:41 + */ + + .form-designer-container-9136076486841527,.k-form-build-9136076486841527{ + .chinesization{ + .ql-snow .ql-tooltip[data-mode="link"]::before { + content: "请输入链接地址:"; + } + .ql-snow .ql-tooltip.ql-editing a.ql-action::after { + border-right: 0px; + content: "保存"; + padding-right: 0px; + } + + .ql-snow .ql-tooltip[data-mode="video"]::before { + content: "请输入视频地址:"; + } + + .ql-snow .ql-picker.ql-size .ql-picker-label::before, + .ql-snow .ql-picker.ql-size .ql-picker-item::before { + content: "14px"; + } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, + .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { + content: "10px"; + } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, + .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { + content: "18px"; + } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, + .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { + content: "32px"; + } + + .ql-snow .ql-picker.ql-header .ql-picker-label::before, + .ql-snow .ql-picker.ql-header .ql-picker-item::before { + content: "文本"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + content: "标题1"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + content: "标题2"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + content: "标题3"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + content: "标题4"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + content: "标题5"; + } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, + .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + content: "标题6"; + } + + .ql-snow .ql-picker.ql-font .ql-picker-label::before, + .ql-snow .ql-picker.ql-font .ql-picker-item::before { + content: "标准字体"; + } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, + .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { + content: "衬线字体"; + } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, + .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { + content: "等宽字体"; + } + } + } \ No newline at end of file diff --git a/src/components/KFormDesign/styles/k-form-design.less b/src/components/KFormDesign/styles/k-form-design.less new file mode 100644 index 0000000000000000000000000000000000000000..5ed7711eaf0cf33a9f2a835d65ec2b58092d775e --- /dev/null +++ b/src/components/KFormDesign/styles/k-form-design.less @@ -0,0 +1,4 @@ +// 允许用户引入less,定义主题 +// @import "../lib/k-form-design.css"; +@import "./k-table.less"; +@import "./form-design.less"; diff --git a/src/components/KFormDesign/styles/k-table.less b/src/components/KFormDesign/styles/k-table.less new file mode 100644 index 0000000000000000000000000000000000000000..3d8e7ddb0418f35e456528aa88a2660dd2d85961 --- /dev/null +++ b/src/components/KFormDesign/styles/k-table.less @@ -0,0 +1,46 @@ +// 表单设计器-表格样式 +.kk-table-9136076486841527 { + width: 100%; + box-sizing: border-box; + transition: all 0.3s; + border-collapse: collapse; + + tr { + transition: all 0.3s; + border-collapse: collapse; + td { + box-sizing: border-box; + transition: all 0.3s; + padding: 12px 12px; + border-collapse: collapse; + vertical-align:top; + } + } + &.bordered { + // 添加边框 + tr { + td { + border: 1px solid #e8e8e8 !important; + } + } + } + &.bright { + // 点亮行 + tr { + &:hover > td { + background: #e6f7ff; + } + } + } + &.small { + // 紧凑型 + tr { + td { + padding: 8px 8px; + } + } + } + .ant-row.ant-form-item{ + margin: 0 !important; + } +} diff --git a/src/components/MultiTab/MultiTab.vue b/src/components/MultiTab/MultiTab.vue index 03154a04a52514cb092eba4de0216ba2cca78bcf..f91a386b45156eaa127acf5b26427c5b9b72f366 100644 --- a/src/components/MultiTab/MultiTab.vue +++ b/src/components/MultiTab/MultiTab.vue @@ -2,7 +2,7 @@ import events from './events' import { CACHE_MULTI_TAB_COMPONENTS } from '@/store/mutation-types' import storage from 'store' - +import DefaultSettings from '@/config/defaultSettings' export default { name: 'MultiTab', data () { @@ -182,7 +182,8 @@ export default { }) return ( -
+ /* 是否随着顶栏活动 */ +
.ant-form-item-label { line-height: 32px; - padding-right: 5px; width: auto; } .ant-form-item-control { height: 32px; line-height: 32px; } + .ant-input { + height: 32px; + line-height: 32px; + } } } @@ -89,6 +90,28 @@ ol { } } +// vxe模态框样式 +.vxe-modal--wrapper{ + // 层级与保持antdv一致 + z-index: 1000 !important; + .vxe-modal--box{ + .vxe-modal--footer{ + padding: .8em 1em; + border-top: 1px solid #ebeef5 + } + } +} +// vxe表格相关 +.vxe-custom--option-wrapper{ + // 需要低于顶栏 + z-index: 8 !important; +} +.vxe-table--border-line{ + // 需要低于顶栏 + z-index: 8 !important; +} + + /* 抽屉样式按钮 */ .drawer-button { z-index: 1; diff --git a/src/layouts/BasicLayout.less b/src/layouts/BasicLayout.less index 6eb91672ac6225b4e25cdab2f9e7a40535e39c97..d389af8efa4b133a5784b2f75a39c82e0a9f1b3c 100644 --- a/src/layouts/BasicLayout.less +++ b/src/layouts/BasicLayout.less @@ -18,6 +18,17 @@ transition: background 300ms; } } + +// 多页签 +.ant-pro-multi-tab{ + z-index: 9; + position: fixed; + top: @headerHeight+10; + padding-top: 1px; + width: 100%; + background-color: #ececec; +} + #logo{ .headHeight() } @@ -43,7 +54,6 @@ .headHeight() } - // 主体边距 .ant-layout-content{ &.ant-pro-basicLayout-content{ diff --git a/src/layouts/BasicLayout.vue b/src/layouts/BasicLayout.vue index e2634746e20dbd27a29d0bfb08875e70262d9edc..e978048db7312e1a8be41b354e990e5b229c0c0e 100644 --- a/src/layouts/BasicLayout.vue +++ b/src/layouts/BasicLayout.vue @@ -13,7 +13,7 @@ --> @@ -22,17 +22,12 @@ --> - -
- This is SettingDrawer custom footer content. -
-
diff --git a/src/mixins/FormMixin.js b/src/mixins/FormMixin.js index ff4e738907d32cf329cf21830aa3a3622955c17a..ba88168fe76b6bff8861f9c0130eb5eb40302bb3 100644 --- a/src/mixins/FormMixin.js +++ b/src/mixins/FormMixin.js @@ -8,12 +8,16 @@ import { findByParamKey } from '@/api/system/param' export const FormMixin = { data () { return { + // 表单项标题文字 labelCol: { sm: { span: 7 } }, + // 表单项内容 wrapperCol: { sm: { span: 13 } }, + // vxe 弹窗窗口的默认位置 + vxePosition: { top: '9%', left: '35%' }, title: '新增', rawForm: {}, modalWidth: 640, diff --git a/src/views/account/bind/Binding.vue b/src/views/account/bind/Binding.vue index ebe123f65980dce1f10459a1707e8d3b623cda2a..612fd6bc0615a8d0753b99f93028ce474a345beb 100644 --- a/src/views/account/bind/Binding.vue +++ b/src/views/account/bind/Binding.vue @@ -102,8 +102,9 @@ export default { clientCode: this.currentClientCode }).then(() => { this.$message.success('绑定成功') + }).finally(() => { + this.init() }) - this.init() }, /** * 解绑账号 diff --git a/src/views/modules/demo/data/perm/DataPermDemoList.vue b/src/views/modules/demo/data/perm/DataPermDemoList.vue index 7d6eb2740d274ccbc92816fa600d397e7ed3d51c..64fed2ee52ad5cf3cd82321624ae2bef986df055 100644 --- a/src/views/modules/demo/data/perm/DataPermDemoList.vue +++ b/src/views/modules/demo/data/perm/DataPermDemoList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/demo/query/SuperQueryDemoList.vue b/src/views/modules/demo/query/SuperQueryDemoList.vue index 8596f1030e9e28dbaddce6011a899f2c4b239b2a..7e435ef96801cf6f5c905cc238e65e50867c4498 100644 --- a/src/views/modules/demo/query/SuperQueryDemoList.vue +++ b/src/views/modules/demo/query/SuperQueryDemoList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/starter/codegen/CodeGenForm.vue b/src/views/modules/develop/codegen/CodeGenForm.vue similarity index 98% rename from src/views/modules/starter/codegen/CodeGenForm.vue rename to src/views/modules/develop/codegen/CodeGenForm.vue index 31842b0941d7c7f07922adf526acac921fff054b..eedaae58fdc826458180217875808097fa354836 100644 --- a/src/views/modules/starter/codegen/CodeGenForm.vue +++ b/src/views/modules/develop/codegen/CodeGenForm.vue @@ -18,7 +18,7 @@ diff --git a/src/views/modules/starter/codegen/CodeGenList.vue b/src/views/modules/develop/codegen/CodeGenList.vue similarity index 96% rename from src/views/modules/starter/codegen/CodeGenList.vue rename to src/views/modules/develop/codegen/CodeGenList.vue index 5bd7d4e83f66d4ed31870da08393622221ea2959..4605de105c1e9d9e56c88f915e69cd68876e3987 100644 --- a/src/views/modules/starter/codegen/CodeGenList.vue +++ b/src/views/modules/develop/codegen/CodeGenList.vue @@ -2,7 +2,7 @@
- + @@ -59,7 +59,7 @@ + + diff --git a/src/views/modules/develop/dynamicform/DynamicFormList.vue b/src/views/modules/develop/dynamicform/DynamicFormList.vue new file mode 100644 index 0000000000000000000000000000000000000000..7d01a29c2d9baa2733c6310326b581db89df1ec4 --- /dev/null +++ b/src/views/modules/develop/dynamicform/DynamicFormList.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/views/modules/starter/file/FileUploadList.vue b/src/views/modules/develop/file/FileUploadList.vue similarity index 98% rename from src/views/modules/starter/file/FileUploadList.vue rename to src/views/modules/develop/file/FileUploadList.vue index 9054df4a454c5a6ecacdb12f0d0fe92354fa61a1..48549c91a36c85c5cbe2532c3c064beb50decb21 100644 --- a/src/views/modules/starter/file/FileUploadList.vue +++ b/src/views/modules/develop/file/FileUploadList.vue @@ -51,7 +51,7 @@ - - \ No newline at end of file diff --git a/src/views/modules/starter/log/DataVersionLogList.vue b/src/views/modules/starter/log/DataVersionLogList.vue index 497df5a7dd089710cf76a16626cafb996cdbe335..4c0c686bac55b4d1ecbb97b0307e796b4a770c6e 100644 --- a/src/views/modules/starter/log/DataVersionLogList.vue +++ b/src/views/modules/starter/log/DataVersionLogList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/starter/log/LoginLogList.vue b/src/views/modules/starter/log/LoginLogList.vue index cae38d7d8e55c069b952b6c4fd3342fd1dc069ec..11f986af230760723401b09b833b63da8ba2fc27 100644 --- a/src/views/modules/starter/log/LoginLogList.vue +++ b/src/views/modules/starter/log/LoginLogList.vue @@ -2,7 +2,7 @@
- + @@ -149,7 +149,6 @@ export default { return findOneByField(this.clients, code, 'code')?.['name'] }, getLoginType (code) { - console.log(this.loginTypes) return findOneByField(this.loginTypes, code, 'code')?.['name'] } }, diff --git a/src/views/modules/starter/log/OperateLogList.vue b/src/views/modules/starter/log/OperateLogList.vue index ace45b044d09edee7d21396b9e5d926d18fd618d..1e71d4f3e98337331e1d8d7513560b943b31be02 100644 --- a/src/views/modules/starter/log/OperateLogList.vue +++ b/src/views/modules/starter/log/OperateLogList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/starter/monitor/RedisInfoMonitor.vue b/src/views/modules/starter/monitor/RedisInfoMonitor.vue index 983a02252af9e1032d7fd496e97c83f713b10885..2a65f67931d94a9e161389b2472860a05f3c1cc0 100644 --- a/src/views/modules/starter/monitor/RedisInfoMonitor.vue +++ b/src/views/modules/starter/monitor/RedisInfoMonitor.vue @@ -153,7 +153,6 @@ export default { * 图表自适应 防抖 */ chartReactive: debounce(function () { - console.log(123) this.commandStatsChart.resize() this.memoryUsedChart.resize() }, 300) diff --git a/src/views/modules/system/client/ClientList.vue b/src/views/modules/system/client/ClientList.vue index 4b07e6a391916d03d8b17d48530fb017026004b5..170483fe0406c2132bbd66706fda53f7d8318e07 100644 --- a/src/views/modules/system/client/ClientList.vue +++ b/src/views/modules/system/client/ClientList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/client/LoginTypeList.vue b/src/views/modules/system/client/LoginTypeList.vue index ac5fea70213221f5f0399a1e8a459119787c27b1..3055d67fb73463c77887c8bd19817636f0cd8552 100644 --- a/src/views/modules/system/client/LoginTypeList.vue +++ b/src/views/modules/system/client/LoginTypeList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/dept/DeptList.vue b/src/views/modules/system/dept/DeptList.vue index 393053a5ffbae85d82641f020a2bf448a4b1c4a4..4bb957555f704c7cc96185be2725afed46a571c4 100644 --- a/src/views/modules/system/dept/DeptList.vue +++ b/src/views/modules/system/dept/DeptList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/dict/DictList.vue b/src/views/modules/system/dict/DictList.vue index a23d789ba65067a2255c5da91f6032d79c8d7b49..89b233f10b1431cad63df09686f0179c4e5aaa8e 100644 --- a/src/views/modules/system/dict/DictList.vue +++ b/src/views/modules/system/dict/DictList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/menu/MenuList.vue b/src/views/modules/system/menu/MenuList.vue index 21c7f56dac2832a34d4e73ccc046ab0a068c0a13..93ef8691e763d022170b7ba11ce1a3f4cd31d599 100644 --- a/src/views/modules/system/menu/MenuList.vue +++ b/src/views/modules/system/menu/MenuList.vue @@ -2,7 +2,7 @@
- + { this.$refs.xTree.setAllTreeExpand(treeExpand) }) - } + }, 500) }, created () { this.initClients() diff --git a/src/views/modules/system/role/RoleList.vue b/src/views/modules/system/role/RoleList.vue index 8bc557d80b9372ccc732ec9d6bb3ba20f690b270..949a9f4388199d947080e0bd1907d58728127c14 100644 --- a/src/views/modules/system/role/RoleList.vue +++ b/src/views/modules/system/role/RoleList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/scope/DataScopeList.vue b/src/views/modules/system/scope/DataScopeList.vue index f558ad2c8f1a850d88edf361cfa090fae9e2fcbd..1c0806274906f3e7bc39e011991d965f9e0b1d58 100644 --- a/src/views/modules/system/scope/DataScopeList.vue +++ b/src/views/modules/system/scope/DataScopeList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/system/user/UserList.vue b/src/views/modules/system/user/UserList.vue index 96ce774825805ca70f100968c420ee74b3f21e0c..aaf3ac9bed0d5bac3224e52cbeb52a3f1a266f2f 100644 --- a/src/views/modules/system/user/UserList.vue +++ b/src/views/modules/system/user/UserList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/social/dingtalk/config/DingTalkConfigEdit.vue b/src/views/modules/third/dingtalk/config/DingTalkConfigEdit.vue similarity index 100% rename from src/views/modules/social/dingtalk/config/DingTalkConfigEdit.vue rename to src/views/modules/third/dingtalk/config/DingTalkConfigEdit.vue diff --git a/src/views/modules/social/dingtalk/config/DingTalkConfigList.vue b/src/views/modules/third/dingtalk/config/DingTalkConfigList.vue similarity index 99% rename from src/views/modules/social/dingtalk/config/DingTalkConfigList.vue rename to src/views/modules/third/dingtalk/config/DingTalkConfigList.vue index ff828902e947af833b47b6f4d13cb65bc3e147a1..38f007b702fd581a1db57ab1fa622d401fc396fc 100644 --- a/src/views/modules/social/dingtalk/config/DingTalkConfigList.vue +++ b/src/views/modules/third/dingtalk/config/DingTalkConfigList.vue @@ -2,7 +2,7 @@
- + diff --git a/src/views/modules/notice/dingTalk/robot/DingRobotConfigEdit.vue b/src/views/modules/third/dingtalk/robot/DingRobotConfigEdit.vue similarity index 53% rename from src/views/modules/notice/dingTalk/robot/DingRobotConfigEdit.vue rename to src/views/modules/third/dingtalk/robot/DingRobotConfigEdit.vue index cef636b4619cf6e18fc9b8606c09ee682040bcbe..dc14a1e8384c0bbedc0f5a994d2cc42341d8def8 100644 --- a/src/views/modules/notice/dingTalk/robot/DingRobotConfigEdit.vue +++ b/src/views/modules/third/dingtalk/robot/DingRobotConfigEdit.vue @@ -1,80 +1,81 @@ + + diff --git a/src/views/modules/third/wecom/robot/WecomRobotConfigEdit.vue b/src/views/modules/third/wecom/robot/WecomRobotConfigEdit.vue new file mode 100644 index 0000000000000000000000000000000000000000..ada2f9642150f9cd9dd3fa158373bacd8f46691e --- /dev/null +++ b/src/views/modules/third/wecom/robot/WecomRobotConfigEdit.vue @@ -0,0 +1,150 @@ + + + + + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 37fba0ac401b23cc7d293c243d91a6aa56dc028e..f6cb278ad7d8558669edba43264f03559597fec8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1105,56 +1105,6 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@form-create/ant-design-vue@^2.5.23": - version "2.5.23" - resolved "https://registry.npmmirror.com/@form-create/ant-design-vue/-/ant-design-vue-2.5.23.tgz#0e00b6cb3dc1c364ed18453653816ac072437896" - integrity sha512-WAayHKQDHDQnxSqA6PUmKy03GHILpyFSZY2571BKJfIQX2OFUONTTGUknlCyd7VYQYHweXdTS0s5BlCnCI86dw== - dependencies: - "@form-create/component-antdv-frame" "^2.5.21" - "@form-create/component-antdv-group" "^2.5.22" - "@form-create/component-antdv-upload" "^2.5.18" - "@form-create/component-subform" "^2.5.20" - "@form-create/core" "^2.5.23" - "@form-create/utils" "^2.5.18" - -"@form-create/component-antdv-frame@^2.5.21": - version "2.5.21" - resolved "https://registry.npmmirror.com/@form-create/component-antdv-frame/-/component-antdv-frame-2.5.21.tgz#e701a34675164f99cb65b580fbf45938b168f834" - integrity sha512-QyACBHeoqCWJuA0Bh5geEKEYGp2+R8ekSLIE2hsxqqYF65drq7KURzYhTFzQvA33oeHc8Y1m7FbJXkKCzxRcqg== - dependencies: - "@form-create/utils" "^2.5.18" - -"@form-create/component-antdv-group@^2.5.22": - version "2.5.22" - resolved "https://registry.npmmirror.com/@form-create/component-antdv-group/-/component-antdv-group-2.5.22.tgz#fb3c871516c50fc0141421bedd31a50da092c286" - integrity sha512-gG1dvZCzn/iukPJCUnXoWCwkZkF5CbKbrCOY8b2h8q/5POA5dtpQKJwSYSgOo05r7fErICJZ/vIonHMpeUzAdQ== - dependencies: - "@form-create/utils" "^2.5.18" - -"@form-create/component-antdv-upload@^2.5.18": - version "2.5.18" - resolved "https://registry.npmmirror.com/@form-create/component-antdv-upload/-/component-antdv-upload-2.5.18.tgz#4e47993a54194c0753379dfbddb911d89e5d96d6" - integrity sha512-h+KdDkKJwfb7DXiaW20ah1tdXsKVjW3IyY35KNTG+EspAG2tRgk41/clb1ss8lN0g/NEEoqAaxZP3t/ByBC4hg== - dependencies: - "@form-create/utils" "^2.5.18" - -"@form-create/component-subform@^2.5.20": - version "2.5.20" - resolved "https://registry.npmmirror.com/@form-create/component-subform/-/component-subform-2.5.20.tgz#7a611ca015eb909b46e0f27406c389ca481bebd3" - integrity sha512-0km6B3kl9DXeSIpcrhwaqMCyLjj8b/QotG7dxZmmL1LILtOwe8DBNlxHuR20lYiICh33HLJSodGbHLNrFitpqg== - -"@form-create/core@^2.5.23": - version "2.5.23" - resolved "https://registry.npmmirror.com/@form-create/core/-/core-2.5.23.tgz#ad209a33dcea08987cbc259cc1c8f62beefec0ee" - integrity sha512-0j01KYp1KO7+Vpjgkm7jNeoeqlXIq4V1CM5XymjtgTGWGD08At62Bh1f7VCV0qJ9y8RRWngYjCd9mIqYHMKfDQ== - dependencies: - "@form-create/utils" "^2.5.18" - -"@form-create/utils@^2.5.18": - version "2.5.18" - resolved "https://registry.npmmirror.com/@form-create/utils/-/utils-2.5.18.tgz#cf30da9f89f360efdb16d65554c253f72fae2410" - integrity sha512-+TtDMHoRu0v1WT/ufLbTN2VSwY9TbkIyfcPvngVEAkVy6T8gBa7vCQd5i0x9Ce0Brg7rYLjSBGGaZlKGcPC/pA== - "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -2046,10 +1996,10 @@ resolved "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== -"@wangeditor/basic-modules@^1.1.1": - version "1.1.1" - resolved "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.1.tgz#1ae0b11202b2ac319b4883e46f4d069ffce2f78d" - integrity sha512-tQl2Pw8M2g3CM+ESx2phzr9zSKeuFCM1AMBoPdnlbatU7Dnae0CsEB/b3C+gI0dIQzM2jh34yTmqgbbhrwuRLg== +"@wangeditor/basic-modules@^1.1.3": + version "1.1.3" + resolved "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.3.tgz#57884ae60947613324e94acde5abae7f00d59e2a" + integrity sha512-TGJix4UelO46yAgwI946ctx4lSIJbYBwNvjSJ9Tf8mKr0WMCeLVBV+MV85rXPsfcmWtR4wBNwSg648Z+RbqRUg== dependencies: is-url "^1.2.4" @@ -2060,10 +2010,10 @@ dependencies: prismjs "^1.23.0" -"@wangeditor/core@^1.1.1": - version "1.1.1" - resolved "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.1.tgz#f749a7d65ad95dbffccdf4d6f11272be8134eb88" - integrity sha512-SrbvOGlONMNMOeFIJI7fC9x0/6T6LvQHTITPCqjgbCm2QF+POcrHzRKGQOqKCsyKi9UJz9hLsjsvJnvP10rxjQ== +"@wangeditor/core@^1.1.11": + version "1.1.11" + resolved "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.11.tgz#1525a7cddd2c41ceee7a4f9ef6a794b6bacf779b" + integrity sha512-BwHVRJzESnkjKikTc2U2zsbd06l1pSo7qKy5+SpZLudYWrFxmd85VN+5GxM57FodogkNw/k04DFHcFSUfXcaKA== dependencies: "@types/event-emitter" "^0.3.3" event-emitter "^0.3.5" @@ -2072,25 +2022,25 @@ scroll-into-view-if-needed "^2.2.28" slate-history "^0.66.0" -"@wangeditor/editor-for-vue@^1.0.1": - version "1.0.1" - resolved "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.1.tgz#b17e5857870e124c48665e07c64febcd4a3ec181" - integrity sha512-Dpq7PUjg774OE8Ga+uXG/P2+CCBUkA2Dh+Vo0m/ViyktNu4cedF7KSAAR/8LSRfFeLcLYRIJ/zSj6ylwlSALYA== +"@wangeditor/editor-for-vue@^1.0.2": + version "1.0.2" + resolved "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.2.tgz#62674d56354319ff8dcc83db5c62cec4437ee906" + integrity sha512-BOENvAXJVtVXlE2X50AAvjV82YlCUeu5cbeR0cvEQHQjYtiVnJtq7HSoj85r2kTgGouI5OrpJG9BBEjSjUSPyA== -"@wangeditor/editor@^5.1.1": - version "5.1.1" - resolved "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.1.tgz#009b11277de86a4052087d0428934e7d2dd30147" - integrity sha512-BtccuHFm0QvYunIhIu7tllQWkwppkmEkD3OJ5Mn+F0REPQ/Z3HiEXbtlss2t9c/kHO4CtiFwv2XD/k/VEg7taA== +"@wangeditor/editor@^5.1.14": + version "5.1.14" + resolved "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.14.tgz#863cef775ead194503d5636232e96b04ecc34040" + integrity sha512-erILPAkpKldyGi4cEwrOW65v12GhZy2qj2A8kPlypU46lE72Y3XowZxWogN1TI/mqMDR84AHr0QWOvygOV1xwQ== dependencies: "@uppy/core" "^2.1.1" "@uppy/xhr-upload" "^2.0.3" - "@wangeditor/basic-modules" "^1.1.1" + "@wangeditor/basic-modules" "^1.1.3" "@wangeditor/code-highlight" "^1.0.2" - "@wangeditor/core" "^1.1.1" + "@wangeditor/core" "^1.1.11" "@wangeditor/list-module" "^1.0.2" - "@wangeditor/table-module" "^1.1.0" + "@wangeditor/table-module" "^1.1.1" "@wangeditor/upload-image-module" "^1.0.1" - "@wangeditor/video-module" "^1.1.0" + "@wangeditor/video-module" "^1.1.1" dom7 "^3.0.0" is-hotkey "^0.2.0" lodash.camelcase "^4.3.0" @@ -2114,20 +2064,20 @@ resolved "https://registry.npmmirror.com/@wangeditor/plugin-md/-/plugin-md-1.0.0.tgz#8bbd604a54af2ab98c3d334135fcaa98095e3398" integrity sha512-wpbusrhSNmb6keC5vmiaQ2nBBfiwwVWmfRp+zNB65nGrPHVRjaFQBNxTpGoL+rc02KCYdflzEbZAg+kzGtMXlQ== -"@wangeditor/table-module@^1.1.0": - version "1.1.0" - resolved "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.0.tgz#5cd4ebdd0500915c51793efd6227c43b5e185d77" - integrity sha512-QpjCXSzsXcsR0pEI5Pu28e8aYh9+lHcVV4TTmGV6lRGE/etQF3PHUZNGUlfhkCgmGPq+E7n/Whb4RpAM3PJVhw== +"@wangeditor/table-module@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.1.tgz#cc88f2d566a3f314801cda4ab7ffceeb3c21c251" + integrity sha512-VPjEWQtncS2DsXYXiHUxPSxn2Xhc8GdhG3la7N5YhvxQde1+4N0SZLXeWsYvbGzOq4um5XToq5pktLLbE8G+EA== "@wangeditor/upload-image-module@^1.0.1": version "1.0.1" resolved "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.1.tgz#a074518d73ce9c5cfd3e8ee56d1adf831996f142" integrity sha512-vgUV4ENttTITblqtVuzleIq732OmzmzzgrIvX6b3GRGPSw5u8glJ/87tOEhvHjHECc4oFo18B7xzJ1GpBj79/w== -"@wangeditor/video-module@^1.1.0": - version "1.1.0" - resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.0.tgz#664405b1eeef1e9ab09f84a50270a4394f885355" - integrity sha512-VR6x7Vk9ebvXtxCPwobiNiTGZGgqEzCVc6ViWlNH3v4jlDIeo/s7N7OCgpvELR7X/X7GHecBu7wySDkHIskB5w== +"@wangeditor/video-module@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.1.tgz#67f24a8a64bd94baf2116d26da042faf5e8a5eb8" + integrity sha512-6gzpS5cnJihW2T0HFjqmbv6v8ouyaeMUjdM2X8BPohwD74p1ov00dCmRt5QekNTyYSmRHK0ASkUMOvRGqaDxMg== "@webassemblyjs/ast@1.9.0": version "1.9.0" @@ -3663,6 +3613,11 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" +codemirror@^5.22.0: + version "5.65.7" + resolved "https://registry.npmmirror.com/codemirror/-/codemirror-5.65.7.tgz#29af41ce5f4c2b8f1c1e16f4e645ff392823716a" + integrity sha512-zb67cXzgugIQmb6tfD4G11ILjYoMfTjwcjn+cWsa4GewlI2adhR/h3kolkoCQTm1msD/1BuqVTKuO09ELsS++A== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3955,10 +3910,10 @@ core-js@^2.4.0: resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.23.2: - version "3.23.2" - resolved "https://registry.npmmirror.com/core-js/-/core-js-3.23.2.tgz#e07a60ca8b14dd129cabdc3d2551baf5a01c76f0" - integrity sha512-ELJOWxNrJfOH/WK4VJ3Qd+fOqZuOuDNDJz0xG6Bt4mGg2eO/UT9CljCrbqDGovjLKUrGajEEBcoTOc0w+yBYeQ== +core-js@^3.24.0: + version "3.24.0" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57" + integrity sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ== core-js@^3.6.5: version "3.13.0" @@ -4011,12 +3966,12 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cron-parser@^4.4.0: - version "4.4.0" - resolved "https://registry.npmmirror.com/cron-parser/-/cron-parser-4.4.0.tgz#829d67f9e68eb52fa051e62de0418909f05db983" - integrity sha512-TrE5Un4rtJaKgmzPewh67yrER5uKM0qI9hGLDBfWb8GGRe9pn/SDkhVrdHa4z7h0SeyeNxnQnogws/H+AQANQA== +cron-parser@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/cron-parser/-/cron-parser-4.5.0.tgz#2c6240a0301eff1424689835ce9c8de4cde9cfbd" + integrity sha512-QHdeh3zLWz6YvYTFKpRb860rJlip16pEinbxXT1i2NZB/nOxBjd2RbSv54sn5UrAj9WykiSLYWWDgo8azQK0HA== dependencies: - luxon "^1.28.0" + luxon "^2.4.0" cross-spawn@^5.0.1: version "5.1.0" @@ -5304,6 +5259,11 @@ event-pubsub@4.3.0: resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== +eventemitter3@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" + integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -5464,10 +5424,10 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.2, extend@~3.0.2: version "3.0.2" - resolved "https://registry.npmmirror.com/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: version "3.1.0" @@ -5514,6 +5474,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== + fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -6154,6 +6119,11 @@ highlight.js@^10.7.1: resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== +highlight.js@^9.12.0: + version "9.18.5" + resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -7979,10 +7949,10 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -luxon@^1.28.0: - version "1.28.0" - resolved "https://registry.npmmirror.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== +luxon@^2.4.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" + integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -8889,6 +8859,11 @@ param-case@2.1.x: dependencies: no-case "^2.2.0" +parchment@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" + integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -9701,6 +9676,27 @@ querystringify@^2.1.1: resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +quill-delta@^3.6.2: + version "3.6.3" + resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" + integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== + dependencies: + deep-equal "^1.0.1" + extend "^3.0.2" + fast-diff "1.1.2" + +quill@^1.3.4: + version "1.3.7" + resolved "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8" + integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g== + dependencies: + clone "^2.1.1" + deep-equal "^1.0.1" + eventemitter3 "^2.0.3" + extend "^3.0.2" + parchment "^1.1.4" + quill-delta "^3.6.2" + raf@^3.4.0: version "3.4.1" resolved "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -10567,6 +10563,11 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +sortablejs@1.10.2: + version "1.10.2" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" + integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== + source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -11628,6 +11629,14 @@ vary@~1.1.2: resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vcolorpicker@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/vcolorpicker/-/vcolorpicker-1.1.0.tgz#527e2463ab330faab8b9637a30f915aebbef75f6" + integrity sha512-FbI7rq0EliwaPU8Qh/QVv9MFdZnG3dHjZEvODIcpPS774TTvilg6tq6cWDRbtCITBNDdpgVWnNlJ0aKnecgrJg== + dependencies: + highlight.js "^9.12.0" + vue "^2.5.17" + vendors@^1.0.0: version "1.0.4" resolved "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" @@ -11691,6 +11700,13 @@ vue-clipboard2@^0.3.3: dependencies: clipboard "^2.0.0" +vue-codemirror-lite@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/vue-codemirror-lite/-/vue-codemirror-lite-1.0.4.tgz#48a5cd7d17c0914503c8cd9d9b56b438e49c3410" + integrity sha512-p9199uCWgJwkMEfr89vHRbhiYEg+w0NmucqOGt/o3XuR1LeEVmY0uSsBPvrBzVG5dqjaGPSAkEEePnc0Wtpb/w== + dependencies: + codemirror "^5.22.0" + vue-container-query@^0.1.0: version "0.1.0" resolved "https://registry.npmmirror.com/vue-container-query/-/vue-container-query-0.1.0.tgz#8210b49388f2350aa4afda92df5caca18ff220a1" @@ -11771,6 +11787,14 @@ vue-qr@^2.5.0: resolved "https://registry.npmmirror.com/vue-qr/download/vue-qr-2.5.0.tgz#2b938f8d4c3d07eaf9e4931b714e32f7ca15b5dd" integrity sha1-K5OPjUw9B+r55JMbcU4y98oVtd0= +vue-quill-editor@^3.0.6: + version "3.0.6" + resolved "https://registry.npmmirror.com/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz#1f85646211d68a31a80a72cb7f45bb2f119bc8fb" + integrity sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ== + dependencies: + object-assign "^4.1.1" + quill "^1.3.4" + vue-ref@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/vue-ref/-/vue-ref-2.0.0.tgz#483084d732abed11da796778a8266a3af0ea1a9c" @@ -11837,15 +11861,22 @@ vue@^2.6.14: resolved "https://registry.npmmirror.com/vue/download/vue-2.6.14.tgz?cache=0&sync_timestamp=1631046210210&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fvue%2Fdownload%2Fvue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" integrity sha1-5RqlJQJQ1Wmj+606ilpofWA24jU= +vuedraggable@^2.23.2: + version "2.24.3" + resolved "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19" + integrity sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== + dependencies: + sortablejs "1.10.2" + vuex@^3.6.2: version "3.6.2" resolved "https://registry.npmmirror.com/vuex/download/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" integrity sha1-I2vAhqhww655lG8QfxbeWdWJXnE= -vxe-table@^3.5.8: - version "3.5.8" - resolved "https://registry.npmmirror.com/vxe-table/-/vxe-table-3.5.8.tgz#eeac1f103f2bddc27085d98454f236a817ec8cda" - integrity sha512-oozFUylUKUFXm7u2aWz5+rJaBRxgqFqKxc2C8Gw3qOTsU7g0qBj1K5cKB4b0rgHxxtAkMz0HL8cq3rmZbtS81w== +vxe-table@^3.5.9: + version "3.5.9" + resolved "https://registry.npmmirror.com/vxe-table/-/vxe-table-3.5.9.tgz#b2fa902bef6cc4d2d4f02f0c2fa22aa90d891c3d" + integrity sha512-8idPnu377Ufwyv6/8GsAk2s9KNcF2nVdp3M8izMmrapOJ2fJRTWmaBTH//XbKqF4ELmvRPXAtkEOl6h37T7RaA== w3c-hr-time@^1.0.1: version "1.0.2" @@ -12261,10 +12292,10 @@ ws@^7.3.1: resolved "https://registry.npmmirror.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== -xe-utils@^3.5.4: - version "3.5.4" - resolved "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.5.4.tgz#d4335633fede280c68c1c0c9a4c8f3a533cfd831" - integrity sha512-oH7VOgvHv34pn198dhKPVKnuEHV22Q06YpCTVnAS3JuutylmZj/rtJGvn0BxxWQ37w2LgCknoebLA4uIGXwFtw== +xe-utils@^3.5.6: + version "3.5.6" + resolved "https://registry.npmmirror.com/xe-utils/-/xe-utils-3.5.6.tgz#1d8cf03d635bc2ede3f34bfdf39ce6051b6fcaaa" + integrity sha512-oFZWxtTqxR6a2FtTQ1vSD10ab+XUXSz6jWaTaK+CsfbpIWH79jU6DipJJPgw9zxfYigcnJvb98aaT188kqhqcA== xml-name-validator@^3.0.0: version "3.0.0"