From c3c6fd59cb6368a408fe6157eb9f8b8fbc852c0b Mon Sep 17 00:00:00 2001 From: 964269669 <964269669@qq.com> Date: Wed, 23 May 2018 09:08:04 +0800 Subject: [PATCH] form --- .../haomo/components/forms/HmComplexForm.vue | 77 ++++++++++++------- src/views/haomo/components/forms/index.vue | 14 ++-- 2 files changed, 57 insertions(+), 34 deletions(-) diff --git a/src/views/haomo/components/forms/HmComplexForm.vue b/src/views/haomo/components/forms/HmComplexForm.vue index fdf51df..3a0535d 100644 --- a/src/views/haomo/components/forms/HmComplexForm.vue +++ b/src/views/haomo/components/forms/HmComplexForm.vue @@ -21,8 +21,6 @@ :label="column.name" :rules="column.rule?column.rule:null" :prop="column.codeCamel"> - <!--el-input<el-input v-if="column.codeCamel==='password'" type="password" - v-model="formModel[column.codeCamel]"></el-input>--> <!-- 1 日期选择 --> <!-- --> <el-date-picker v-if="column.widgetType === 6 || column.type === 'datetime' || column.type === 'date'" @@ -32,9 +30,9 @@ :readonly="column.readonly" :type="column.dateType || 'date'" align="right" :disabled="column.disabled" - @change="column.change && column.change($event)" + @change="column.change && column.change($event, formModel)" :value-format="column.dateFormate || 'yyyy-MM-dd'" - :picker-options="pickerOptions"> + :picker-options="column.pickerOptions || pickerOptions"> </el-date-picker> <!-- 2 下拉框 --> <el-select v-else-if="column.widgetType === 2" @@ -72,7 +70,8 @@ :ref="column.ref || ''" :disabled="column.disabled" @change="column.change && column.change($event)" - true-label="1" false-label="0"></el-checkbox> + true-label="1" false-label="0"> + </el-checkbox> <el-checkbox-group v-else-if="column.widgetType === 3 && column.options" v-model="formModel[column.codeCamel]" :ref="column.ref || ''" @@ -105,7 +104,7 @@ <el-upload v-else-if="column.widgetType === 8" :accept="column.accept || '*/*'" :name="column.param || 'picture'" - :action=" column.url || '/api/upload'" + :action="column.url || '/api/upload'" :on-remove="handleRemove" :limit="column.limit || 3" :on-change="column.change || handleChange" @@ -142,21 +141,32 @@ :style="formStyle && formStyle.cascader && formStyle.cascader.style || {width: '70%'}" @change="column.change && column.change($event, formModel)"> </el-cascader> - <!-- 10 普通input || {width:'65%'}--> + <!--10 å¯†ç æ¡†--> + <el-input v-else-if="column.widgetType === 11" type="password" + @change="column.change && column.change($event,formModel)" + :style="formStyle && formStyle.input && formStyle.input.style || {width:'70%'}" + :disabled="column.disabled" + :readonly="column.readonly" + v-model="formModel[column.codeCamel]"> + + </el-input> + <!-- 11 普通input || {width:'65%'}--> <el-input v-else-if="column.widgetType === 1 && column.rule && column.rule.type && column.rule.type === 'number'" :style="formStyle && formStyle.input && formStyle.input.style || {width:'70%'}" v-model.number="formModel[column.codeCamel]" :disabled="column.disabled" :readonly="column.readonly" :ref="column.ref || ''" - @change="column.change && column.change($event,formModel)"></el-input> + @change="column.change && column.change($event,formModel)"> + </el-input> <el-input v-else :style="formStyle && formStyle.input && formStyle.input.style || {width:'70%'}" v-model="formModel[column.codeCamel]" :disabled="column.disabled" :readonly="column.readonly" :ref="column.ref || ''" - @change="column.change && column.change($event,formModel)"></el-input> + @change="column.change && column.change($event,formModel)"> + </el-input> </el-form-item> <!--按钮--> <el-form-item v-if="buttons && buttons.length > 0" class="hm-form_btn" style="margin-top: 40px"> @@ -225,8 +235,8 @@ * accept属性å¯é€‰,当表å•类型为文件类型时,å¯ä¼ å…¥acceptå—æ®µï¼Œé™åˆ¶é™åˆ¶ä¸Šä¼ 文件类型,å–值规范å‚考w3c * fileData属性å¯é€‰ï¼Œå½“表å•类型为文件类型时,å–值为all(表示返回路径+文件å),å–值为filePath(表示åªè¿”回路径),å–值fileName(表示åªè¿”回文件å),如果ä¸ä¼ ,默认åªè¿”回路径 * widgetType属性å¯é€‰ï¼Œè¡¨ç¤ºè¯¥å—æ®µè¦æ˜¾ç¤ºçš„表å•类型(æ™®é€šè¾“å…¥æ¡†ã€æ–‡æœ¬åŸŸã€å¯Œæ–‡æœ¬ã€ä¸‹æ‹‰æ¡†...),ä¸ä¼ 默认为普通input - * å–值1-10(1表示普通输入框,2表示普通下拉框,3表示å¤é€‰æ¡†,4表示文本域,5表示富文本,6表示日期,7表示å•选框,8è¡¨ç¤ºæ–‡ä»¶ä¸Šä¼ , - * 9è¡¨ç¤ºæ ‘çŠ¶æŽ§ä»¶ï¼Œ10表示级è”下拉框), + * å–值1-11(1表示普通输入框,2表示普通下拉框,3表示å¤é€‰æ¡†,4表示文本域,5表示富文本,6表示日期,7表示å•选框,8è¡¨ç¤ºæ–‡ä»¶ä¸Šä¼ , + * 9è¡¨ç¤ºæ ‘çŠ¶æŽ§ä»¶ï¼Œ10表示级è”下拉框,11bè¡¨ç¤ºå¯†ç æ¡†), * 若表å•类型为下拉框/å¤é€‰æ¡†/å•é€‰æ¡†ï¼Œè¿˜éœ€ä¼ å…¥optionså—æ®µï¼Œå€¼ä¸ºæ•°ç»„(æ•°ç»„å…ƒç´ æ˜¯ä¸‹æ‹‰æ¡†/å¤é€‰æ¡†/å•选框的选项), * 对于å¤é€‰æ¡†ï¼Œå¦‚æžœåªæœ‰ä¸€ä¸ªå¤‡é€‰é¡¹åˆ™ä¸å¿…ä¼ options, * 若表å•类型为下拉框,还å¯ä¼ å…¥multipleå—æ®µï¼Œå–值boolean类型,true/false,表示是å¦å¤šé€‰ï¼Œé»˜è®¤false @@ -664,14 +674,18 @@ if (response.visitName && response.saveName) { // 如果fileData值为all 则å˜è·¯å¾„+åç§° if (self.showUserColumns[i].fileData === 'all') { - self.formModel[key] = response.visitName + '' + response.fileName + '_' + response.saveName + // self.formModel[key] = response.visitName + '' + response.fileName + '_' + response.saveName + self.formModel[key].push(response.visitName + '' + response.fileName + '_' + response.saveName) } else if (self.showUserColumns[i].fileData === 'fileName') { - self.formModel[key] = response.saveName + // self.formModel[key] = response.saveName + self.formModel[key].push(response.saveName) } else { - self.formModel[key] = response.visitName + '' + response.fileName + // self.formModel[key] = response.visitName + '' + response.fileName + self.formModel[key].push(response.visitName + '' + response.fileName) } } else if (response.message) { - self.formModel[key] = file.name + '_' + response.message + // self.formModel[key] = file.name + '_' + response.message + self.formModel[key].push(file.name + '_' + response.message) // self.formModel[key].push(file.name + '_' + response.message) } break @@ -688,15 +702,26 @@ handleRemove(file, fileList) { const self = this console.log('æ–‡ä»¶åˆ é™¤', file, fileList) - console.log('åˆ é™¤åŽå‰', self.formModel) + console.log('åˆ é™¤å‰', self.formModel) // var reg = new RegExp('^' + file.response.message + '$', 'g') // console.log(reg) - // _.each(self.formModel[self.currentFile], function(item, index) { - // if (_.endsWith(item, file.response.message)) { - // self.$delete(self.formModel[self.currentFile], index) - // } - // }) - self.formModel[self.currentFile] = '' + if (file.response.message) { + _.each(self.formModel[self.currentFile], function(item, index) { + if (_.endsWith(item, file.response.message)) { + self.$delete(self.formModel[self.currentFile], index) + } + }) + } else if (file.response.fileName) { + _.each(self.formModel[self.currentFile], function(item, index) { + if (_.endsWith(item, file.response.fileName)) { + self.$delete(self.formModel[self.currentFile], index) + } else if (_.endsWith(item, file.response.saveName)) { + self.$delete(self.formModel[self.currentFile], index) + } + }) + } + + // self.formModel[self.currentFile] = '' console.log('åˆ é™¤åŽ', self.formModel) }, // æ–‡ä»¶çŠ¶æ€æ”¹å˜æ—¶çš„回调函数 @@ -706,7 +731,6 @@ }, // æ ‘å½¢é€‰æ‹©å™¨ handleCheckChange(data, checked, indeterminate) { - // console.log(data, checked, indeterminate) const self = this console.log('handleCheckChange函数') // console.log(this.$refs.tree[0].getCheckedNodes(true)) @@ -967,8 +991,8 @@ } }) } - // æ ‘å½¢æŽ§ä»¶ï¼Œå°†è¯·æ±‚å›žæ¥çš„å—ç¬¦ä¸²æ”¾æ•°ç»„ä¸ - if (item.widgetType === 9) { + // æ ‘å½¢æŽ§ä»¶ã€æ–‡ä»¶ä¸Šä¼ ,将请求回æ¥çš„å—ç¬¦ä¸²æ”¾æ•°ç»„ä¸ + if (item.widgetType === 9 || item.widgetType === 8 || item.widgetType === 10) { _.forEach(self.formModel, function(value, key) { if (item.codeCamel === key) { // console.log(11111, self.formModel[key]) @@ -1053,7 +1077,6 @@ // æäº¤ä¹‹å‰å¯¹è¡¨å•æ•°æ®è¿›è¡Œå¤„ç† self.formModelDeal = processData ? processData(self.formModel, self.isCancel) : self.formModel console.log('è¡¨å•æ•°æ®ç»è¿‡äº†å¤„ç†', self.formModel) - debugger // 如果在processDataä¸ç¦æ¢æäº¤äº†ï¼Œæ˜¾ç¤ºæç¤ºä¿¡æ¯ if (self.isCancel.cancelSubmit) { console.log('å–æ¶ˆæäº¤') @@ -1364,7 +1387,7 @@ cancel(callback) { const self = this if (typeof (callback) === 'function') { - callback(self.formModelDeal) + callback(self.formModel, self.formModelDeal) } // self.close() }, diff --git a/src/views/haomo/components/forms/index.vue b/src/views/haomo/components/forms/index.vue index 4159958..a9cd6f9 100644 --- a/src/views/haomo/components/forms/index.vue +++ b/src/views/haomo/components/forms/index.vue @@ -31,17 +31,17 @@ // widgetType值 1:普通input 2:下拉框 (如果是下拉框 å†ä¼ 一个options表示下拉框选项)3:å¤é€‰æ¡† 4:文本域 5:富文本 6:日期 7:å•选框 8: æ–‡ä»¶ä¸Šä¼ showUserColumns: [ // 1普通input - { name: '选择类型', codeCamel: 'type', widgetType: 9, ref: 'type', options: [] - // rule: { required: true, message: '用户åä¸èƒ½ä¸ºç©º', trigger: 'blur' } - // hide: true - // default: '默认值', - }, - // { name: '选择类型', codeCamel: 'type', widgetType: 1, disabled: false, - // change: this.inputChange + // { name: '选择类型', codeCamel: 'type', widgetType: 9, ref: 'type', options: [] // // rule: { required: true, message: '用户åä¸èƒ½ä¸ºç©º', trigger: 'blur' } // // hide: true // // default: '默认值', // }, + { name: '选择类型', codeCamel: 'type', widgetType: 1, disabled: false, + change: this.inputChange, + rule: { required: true, message: '用户åä¸èƒ½ä¸ºç©º', trigger: 'blur' } + // hide: true + // default: '默认值', + }, // 5富文本 { name: '电å邮件', codeCamel: 'email', widgetType: 5, disabled: false, change: this.inputChange, hide: false -- 2.21.0