From 239265207c5dc60aa99b670da41eb34499c6020b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 19 三月 2026 19:24:50 +0800
Subject: [PATCH] #
---
src/main/webapp/views/config/config.html | 31 +++++++++++++++
src/main/webapp/static/js/config/config.js | 37 +++++++++++++++++-
2 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/src/main/webapp/static/js/config/config.js b/src/main/webapp/static/js/config/config.js
index 55aedab..d4594da 100644
--- a/src/main/webapp/static/js/config/config.js
+++ b/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);
}
});
diff --git a/src/main/webapp/views/config/config.html b/src/main/webapp/views/config/config.html
index 691e470..ba8fc6a 100644
--- a/src/main/webapp/views/config/config.html
+++ b/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]"
--
Gitblit v1.9.1