#
Junjie
22 小时以前 239265207c5dc60aa99b670da41eb34499c6020b
#
2个文件已修改
68 ■■■■■ 已修改文件
src/main/webapp/static/js/config/config.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/config/config.html 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/config/config.js
@@ -991,6 +991,7 @@
            textarea: false,
            minWidth: 140,
            dialogSpan: 24,
            suggestInput: true,
            enumOptions: [],
            foreignQuery: '',
            checkboxActiveRaw: 'Y',
@@ -1089,6 +1090,9 @@
        if (field.kind === 'date') {
            return [];
        }
        if (field.kind === 'enum' && field.suggestInput) {
            return '';
        }
        if (field.kind === 'enum' || field.kind === 'checkbox') {
            return null;
        }
@@ -1145,13 +1149,14 @@
    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;
@@ -1326,6 +1331,12 @@
                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([]);
@@ -1356,6 +1367,27 @@
                    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 : '');
@@ -1631,6 +1663,7 @@
                            applySelectTypeOptions(Array.isArray(res.data) ? res.data : []);
                            self.fieldMeta = fieldMeta.slice();
                            self.allColumns = fieldMeta.slice();
                            self.dialogRules = createFormRules();
                            self.requestTableLayout(80);
                        }
                    });
src/main/webapp/views/config/config.html
@@ -369,8 +369,18 @@
                                v-for="field in quickSearchableFields"
                                :key="'quick-' + field.field"
                                class="toolbar-search-item">
                                <el-autocomplete
                                    v-if="field.kind === 'enum' && field.suggestInput"
                                    v-model="searchForm[field.field]"
                                    size="small"
                                    clearable
                                    :fetch-suggestions="getEnumSuggestionFetcher(field)"
                                    :placeholder="field.label"
                                    style="width: 100%;"
                                    @keyup.enter.native="handleSearch">
                                </el-autocomplete>
                                <el-select
                                    v-if="field.kind === 'enum'"
                                    v-else-if="field.kind === 'enum'"
                                    v-model="searchForm[field.field]"
                                    size="small"
                                    clearable
@@ -481,6 +491,16 @@
                                value-format="yyyy-MM-dd HH:mm:ss"
                                style="width: 100%;">
                            </el-date-picker>
                            <el-autocomplete
                                v-else-if="field.kind === 'enum' && field.suggestInput"
                                v-model="searchForm[field.field]"
                                size="small"
                                clearable
                                :fetch-suggestions="getEnumSuggestionFetcher(field)"
                                :placeholder="field.label"
                                style="width: 100%;"
                                @keyup.enter.native="handleSearch">
                            </el-autocomplete>
                            <el-select
                                v-else-if="field.kind === 'enum'"
                                v-model="searchForm[field.field]"
@@ -628,6 +648,15 @@
                            :disabled="isDialogReadonly"
                            style="width: 100%;">
                        </el-date-picker>
                        <el-autocomplete
                            v-else-if="field.kind === 'enum' && field.suggestInput"
                            v-model="dialogForm[field.field]"
                            clearable
                            :fetch-suggestions="getEnumSuggestionFetcher(field)"
                            :placeholder="'请输入' + field.label"
                            :disabled="isDialogReadonly"
                            style="width: 100%;">
                        </el-autocomplete>
                        <el-select
                            v-else-if="field.kind === 'enum'"
                            v-model="dialogForm[field.field]"