| | |
| | | textarea: false, |
| | | minWidth: 140, |
| | | dialogSpan: 24, |
| | | suggestInput: true, |
| | | enumOptions: [], |
| | | foreignQuery: '', |
| | | checkboxActiveRaw: 'Y', |
| | |
| | | if (field.kind === 'date') { |
| | | return []; |
| | | } |
| | | if (field.kind === 'enum' && field.suggestInput) { |
| | | return ''; |
| | | } |
| | | if (field.kind === 'enum' || field.kind === 'checkbox') { |
| | | return null; |
| | | } |
| | |
| | | function createFormRules() { |
| | | var rules = {}; |
| | | fieldMeta.forEach(function (field) { |
| | | var useInputRule = field.kind === 'enum' && field.suggestInput; |
| | | if (field.primaryKey || !field.required) { |
| | | return; |
| | | } |
| | | rules[field.field] = [{ |
| | | required: true, |
| | | message: (field.kind === 'date' || field.kind === 'enum' ? '请选择' : '请输入') + field.label, |
| | | trigger: (field.kind === 'date' || field.kind === 'enum') ? 'change' : 'blur' |
| | | message: (field.kind === 'date' || (field.kind === 'enum' && !useInputRule) ? '请选择' : '请输入') + field.label, |
| | | trigger: (field.kind === 'date' || (field.kind === 'enum' && !useInputRule)) ? 'change' : 'blur' |
| | | }]; |
| | | }); |
| | | return rules; |
| | |
| | | self.fetchForeignSuggestions(field, queryString, callback); |
| | | }; |
| | | }, |
| | | getEnumSuggestionFetcher: function (field) { |
| | | var self = this; |
| | | return function (queryString, callback) { |
| | | self.fetchEnumSuggestions(field, queryString, callback); |
| | | }; |
| | | }, |
| | | fetchForeignSuggestions: function (field, queryString, callback) { |
| | | if (!field.foreignQuery || !queryString) { |
| | | callback([]); |
| | |
| | | callback([]); |
| | | } |
| | | }); |
| | | }, |
| | | fetchEnumSuggestions: function (field, queryString, callback) { |
| | | var keyword = String(queryString || '').toLowerCase(); |
| | | var result = []; |
| | | var seen = {}; |
| | | (field && field.enumOptions ? field.enumOptions : []).forEach(function (option) { |
| | | var rawValue = option && option.rawValue !== undefined ? String(option.rawValue) : ''; |
| | | var label = option && option.label !== undefined ? String(option.label) : rawValue; |
| | | var haystack = (label + ' ' + rawValue).toLowerCase(); |
| | | if (keyword && haystack.indexOf(keyword) === -1) { |
| | | return; |
| | | } |
| | | if (!rawValue || seen[rawValue]) { |
| | | return; |
| | | } |
| | | seen[rawValue] = true; |
| | | result.push({ |
| | | value: rawValue |
| | | }); |
| | | }); |
| | | callback(result); |
| | | }, |
| | | handleForeignSelect: function (field, item) { |
| | | this.$set(this.displayTarget, field.field, item && item.value ? item.value : ''); |
| | |
| | | applySelectTypeOptions(Array.isArray(res.data) ? res.data : []); |
| | | self.fieldMeta = fieldMeta.slice(); |
| | | self.allColumns = fieldMeta.slice(); |
| | | self.dialogRules = createFormRules(); |
| | | self.requestTableLayout(80); |
| | | } |
| | | }); |