From 21ca867c2850640ef6df888d604de35d3108335f Mon Sep 17 00:00:00 2001 From: wangqing <250543222@qq.com> Date: Wed, 16 Dec 2020 23:07:06 +0800 Subject: [PATCH] el-upload --- src/components/generator/config.js | 3 ++- src/components/parser/Parser.vue | 22 +++++++++++++------ src/components/render/render.js | 3 +++ src/components/render/slots/el-upload.js | 5 +++-- src/utils/convert.js | 12 ++++++++++- src/views/form/RightPanel.vue | 27 +++++++++++++----------- 6 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/components/generator/config.js b/src/components/generator/config.js index 7c7430a..d620331 100644 --- a/src/components/generator/config.js +++ b/src/components/generator/config.js @@ -494,7 +494,7 @@ export const selectComponents = [ buttonText: '点击上传', regList: [], changeTag: true, - fileSize: 2, + fileSize: 1, sizeUnit: 'MB', document: 'https://element.eleme.cn/#/zh-CN/component/upload' }, @@ -507,6 +507,7 @@ export const selectComponents = [ name: 'file', 'auto-upload': true, 'list-type': 'text', + limit: 2, multiple: false } ] diff --git a/src/components/parser/Parser.vue b/src/components/parser/Parser.vue index c659aa6..ea1290f 100644 --- a/src/components/parser/Parser.vue +++ b/src/components/parser/Parser.vue @@ -136,25 +136,24 @@ function renderChildren(h, scheme) { } function setUpload(config, scheme, response, file, fileList) { - debugger - console.log(this[this.formConf.formModel][scheme.__vModel__]) let newValue = JSON.parse(this[this.formConf.formModel][scheme.__vModel__]) if (!newValue) { newValue = [] } - newValue.push({name: file.name, url: response.data}) + newValue.push({fileName: file.name, url: response.data}) this.$set(config, 'defaultValue', JSON.stringify(newValue)) this.$set(this[this.formConf.formModel], scheme.__vModel__, JSON.stringify(newValue)) - + setValueLabel.call(this, {type: 'file', files: JSON.stringify(newValue)}, config, scheme) } -function deleteUpload(event, config, scheme, file, fileList) { +function deleteUpload(config, scheme, file, fileList) { let newValue = [] fileList.forEach(element => { - newValue.push({name: element.name, url: element.url}) + newValue.push({fileName: element.name, url: element.url}) }) this.$set(config, 'defaultValue', JSON.stringify(newValue)) this.$set(this[this.formConf.formModel], scheme.__vModel__, JSON.stringify(newValue)) + setValueLabel.call(this, {type: 'file', files: JSON.stringify(newValue)}, config, scheme) } function setValue(event, config, scheme) { @@ -177,6 +176,8 @@ function setValueLabel(event, config, scheme) { let item = _.find(_.get(scheme, tagOptionKey), {'value': event}) this.$set(this[this.formConf.labelFormModel], scheme.__vModel__, item.label) } + } else if (config.tag === 'el-upload') { + this.$set(this[this.formConf.labelFormModel], scheme.__vModel__, event) } else { this.$set(this[this.formConf.labelFormModel], scheme.__vModel__, event) } @@ -206,7 +207,7 @@ function buildListeners(scheme) { // 响应 render.js 中的 vModel $emit('input', val) listeners.input = event => setValue.call(this, event, config, scheme) listeners.upload = (response, file, fileList) => setUpload.call(this, config, scheme, response, file, fileList) - listeners.deleteUpload = event => setValue.call(this, event, config, scheme) + listeners.deleteUpload = (file, fileList) => deleteUpload.call(this, config, scheme, file, fileList) return listeners } @@ -283,6 +284,13 @@ export default { buildRules(componentList, rules) { componentList.forEach(cur => { const config = cur.__config__ + if (cur.tag === 'el-upload') { + config.regList.push({ + validator: () => { + console.log(cur.limit) + }, trigger: 'change' + }) + } if (Array.isArray(config.regList)) { if (config.required) { const required = {required: config.required, message: cur.placeholder} diff --git a/src/components/render/render.js b/src/components/render/render.js index 949a817..c64f476 100644 --- a/src/components/render/render.js +++ b/src/components/render/render.js @@ -25,6 +25,9 @@ function vModel(dataObject, defaultValue) { dataObject.attrs['on-remove'] = (file, fileList) => { this.$emit('deleteUpload', file, fileList) } + dataObject.attrs['on-exceed']=(file, fileList) => { + this.$emit('deleteUpload', file, fileList) + } } else { dataObject.props.value = defaultValue diff --git a/src/components/render/slots/el-upload.js b/src/components/render/slots/el-upload.js index 8ce3c35..757123e 100644 --- a/src/components/render/slots/el-upload.js +++ b/src/components/render/slots/el-upload.js @@ -7,11 +7,12 @@ export default { } else { list.push({config.buttonText}) } - if (config.showTip) { + if (config.showTip ) { list.push( -
只能上传不超过 {config.fileSize}{config.sizeUnit} 的{conf.accept}文件
+
只能上传不超过 {config.fileSize}{config.sizeUnit} 的{conf.accept}文件,最多不超过{conf.limit}个文件
) } + return list } } diff --git a/src/utils/convert.js b/src/utils/convert.js index efa9666..10dbe18 100644 --- a/src/utils/convert.js +++ b/src/utils/convert.js @@ -130,8 +130,18 @@ let dataParams = { 'max': 'max', 'step': 'step' },//时间选择 - 11: {} + 11: {}, + //文件上传 + 17: { + 'buttonText': '__config__.buttonText', + 'showTip': '__config__.showTip', + 'fileSize': '__config__.fileSize', + 'sizeUnit': '__config__.sizeUnit', + 'listType': 'list-type', + 'limit': 'limit', + 'multiple': 'multiple' + } } diff --git a/src/views/form/RightPanel.vue b/src/views/form/RightPanel.vue index 5e87099..d80bc1c 100644 --- a/src/views/form/RightPanel.vue +++ b/src/views/form/RightPanel.vue @@ -29,9 +29,9 @@ - - - + + + {{ activeData.__config__.componentName }} @@ -214,9 +214,9 @@ /> - - - + + + - - - + + + @@ -515,9 +515,12 @@ - - - + + + + + +