diff --git a/.gitignore b/.gitignore index 4a2e5017696664037a197e679db1dcc1d17b3dbe..4b8f2bd73a457cef0939bb195a42f13bbfd94be4 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ pnpm-debug.log* *.njsproj *.sln *.sw? + +lib/ +package-lock.json \ No newline at end of file diff --git a/README.md b/README.md index b331eec0f2b1187e92d48c730a5e09538fe52140..d0c97f7215ab3766ff4b93dd3134e3929d792076 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,7 @@ Vue.use(NgFormElement) | basic-item| 基础组件是否要展示或待选组件列表集合 |boolean/Array | true | | personal-item| 个性化组件是否要展示或待选组件列表集合 |boolean/Array | true | | layout-item| 布局组件是否要展示或待选组件列表集合 |boolean/Array | true | +| template| 初始化表单内容,可通过.sync进行双向绑定。该数据为通过getModel所返回的内容。|Object| {list: [],config: {labelPosition: "left",labelWidth: 100, size: 'mini',outputHidden: true ,hideRequiredMark: false ,syncLabelRequired: false,customStyle: ""}}| 插槽: diff --git a/package.json b/package.json index b651bb21c95ba1987ab69e7e9cf2fa21a1e2950d..c0f81e04d620c5c027583b920290a25645eae6d0 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,10 @@ "@vue/cli-service": "~4.4.0", "babel-eslint": "^10.1.0", "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", "sass": "^1.26.5", "sass-loader": "^8.0.2", - "eslint-plugin-vue": "^6.2.2", + "terser-webpack-plugin": "^5.3.7", "vue-template-compiler": "^2.6.11", "vuex-persistedstate": "^3.0.1", "webpack-bundle-analyzer": "^4.4.2" @@ -70,7 +71,7 @@ "url": "https://gitee.com/jjxliu306/vue-form-design/issues" }, "homepage": "https://gitee.com/jjxliu306/vue-form-design#readme", - "keywords": [ + "keywords": [ "ng-form", "ng-form-element", "vue-form-design", diff --git a/packages/constants.js b/packages/constants.js new file mode 100644 index 0000000000000000000000000000000000000000..67802cf4c5f0ffda6a7601cac112f96289bbecb8 --- /dev/null +++ b/packages/constants.js @@ -0,0 +1,4 @@ + +export default { + itemConfig: null +} \ No newline at end of file diff --git a/packages/form-design/index.vue b/packages/form-design/index.vue index bdfa39665f61a22fa52ff93ce68fbbefe1b5e19d..b772cb446365e7209ccbf87c0d035e7cd13cc312 100644 --- a/packages/form-design/index.vue +++ b/packages/form-design/index.vue @@ -57,21 +57,26 @@ export default { data(){ return { selectItem: undefined, - formTemplate: { - list: [], - config: { - labelPosition: "left", - labelWidth: 100, - size: 'mini', - outputHidden: true ,// 是否输出隐藏字段的值 默认打开,所有字段都输出 - hideRequiredMark: false , - syncLabelRequired: false, - customStyle: "" - } - } } }, props:{ + template: { + type: Object, + default: () => { + return { + list: [], + config: { + labelPosition: "left", + labelWidth: 100, + size: 'mini', + outputHidden: true ,// 是否输出隐藏字段的值 默认打开,所有字段都输出 + hideRequiredMark: false , + syncLabelRequired: false, + customStyle: "" + } + } + } + }, customComponents: { type: Array, default: ()=>[] @@ -119,6 +124,20 @@ export default { }, }, computed: { + formTemplate() { + return this.template || { + list: [], + config: { + labelPosition: "left", + labelWidth: 100, + size: 'mini', + outputHidden: true ,// 是否输出隐藏字段的值 默认打开,所有字段都输出 + hideRequiredMark: false , + syncLabelRequired: false, + customStyle: "" + } + } + }, templateConfig() { if(this.formTemplate) return this.formTemplate.config return {} @@ -143,6 +162,13 @@ export default { httpConfig(val) { if(val) window.nghttpConfig = val + }, + formTemplate: { + handler: function(newVal, oldVal) { + this.$emit('update:formTemplate', newVal) + }, + deep: true, + immediate: false, } }, provide: function () { @@ -153,6 +179,22 @@ export default { httpConfigC: this.httpConfig } }, + created() { + if(this.formTemplate == null){ + this.formTemplate = { + list: [], + config: { + labelPosition: "left", + labelWidth: 100, + size: 'mini', + outputHidden: true ,// 是否输出隐藏字段的值 默认打开,所有字段都输出 + hideRequiredMark: false , + syncLabelRequired: false, + customStyle: "" + } + } + } + }, methods: { handleSelectItem(record) { this.selectItem = record diff --git a/packages/form-design/items/index.js b/packages/form-design/items/index.js index 4ed53ced3a51ea7454bb16145cafbb35eca2d864..3e26b21d48f5d0c866e6f6e792c8e67ed5fe4c30 100644 --- a/packages/form-design/items/index.js +++ b/packages/form-design/items/index.js @@ -7,10 +7,10 @@ import baseConfig from './base/index.js' import decorateConfig from './decorate/index.js' import layoutConfig from './layout/index.js' import applicationConfig from './application/index.js' +import NgConstants from '../../constants' const list = [ baseConfig , decorateConfig , layoutConfig , applicationConfig] - // 将配置信息放到全局变量中 let itemConfig = {} list.forEach(t=> { @@ -23,12 +23,13 @@ list.forEach(t=> { }) -Vue.prototype.$itemConfig = itemConfig +NgConstants.itemConfig = itemConfig + // 将配置项转换为普通json配置 list.forEach(t=> { t.list = translateConfig(t.list) -}) +}) export default list \ No newline at end of file diff --git a/packages/form-design/panel-container/node.vue b/packages/form-design/panel-container/node.vue index bf07f79ff10c975906bcd4aefe0d665e0d1c3ec2..d7548ff193d6960e96737077e99813fd710723fb 100644 --- a/packages/form-design/panel-container/node.vue +++ b/packages/form-design/panel-container/node.vue @@ -2,7 +2,7 @@ -
+