From cbb00d4729243e4949b3c921fc2f94cb03ca8aaa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 27 三月 2026 18:47:43 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/config/config.html |   74 +++++++++++++++++++++++++++++++++----
 1 files changed, 66 insertions(+), 8 deletions(-)

diff --git a/src/main/webapp/views/config/config.html b/src/main/webapp/views/config/config.html
index 02587dd..ba8fc6a 100644
--- a/src/main/webapp/views/config/config.html
+++ b/src/main/webapp/views/config/config.html
@@ -22,6 +22,7 @@
         html,
         body {
             margin: 0;
+            height: 100%;
             min-height: 100%;
             color: var(--text-main);
             font-family: "Avenir Next", "PingFang SC", "Microsoft YaHei", sans-serif;
@@ -34,12 +35,16 @@
         .page-shell {
             max-width: 1700px;
             margin: 0 auto;
+            height: 100%;
             padding: 14px;
             box-sizing: border-box;
+            display: flex;
         }
 
         .card-shell {
             position: relative;
+            flex: 1 1 auto;
+            display: flex;
             border-radius: 24px;
             border: 1px solid var(--card-border);
             background:
@@ -53,6 +58,12 @@
         .card-body {
             position: relative;
             z-index: 1;
+            flex: 1 1 auto;
+            min-height: 0;
+            min-width: 0;
+            width: 100%;
+            display: flex;
+            flex-direction: column;
         }
 
         .list-toolbar {
@@ -164,6 +175,11 @@
 
         .table-wrap {
             padding: 10px 16px;
+            flex: 1 1 auto;
+            min-height: 0;
+            min-width: 0;
+            width: 100%;
+            display: flex;
         }
 
         .table-shell {
@@ -171,6 +187,11 @@
             overflow: hidden;
             border: 1px solid rgba(217, 227, 238, 0.98);
             background: rgba(255, 255, 255, 0.95);
+            flex: 1 1 auto;
+            min-height: 0;
+            min-width: 0;
+            width: 100%;
+            max-width: 100%;
         }
 
         .table-shell .el-table {
@@ -348,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
@@ -436,6 +467,7 @@
                             <el-button slot="reference" size="small" plain icon="el-icon-setting">鍒楄缃�</el-button>
                         </el-popover>
                         <el-button size="small" plain icon="el-icon-download" :loading="exporting" @click="exportRows">瀵煎嚭</el-button>
+                        <el-button size="small" plain type="warning" icon="el-icon-refresh-right" @click="refreshCache">鍒锋柊缂撳瓨</el-button>
                     </div>
                 </div>
             </div>
@@ -459,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]"
@@ -510,7 +552,7 @@
                 </div>
             </el-collapse-transition>
 
-            <div class="table-wrap">
+            <div ref="tableWrap" class="table-wrap">
                 <div class="table-shell">
                     <el-table
                         ref="dataTable"
@@ -552,8 +594,9 @@
                                 <span v-else>{{ valueOrDash(getTableValue(scope.row, field)) }}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column label="鎿嶄綔" width="160" fixed="right" align="center">
+                        <el-table-column label="鎿嶄綔" width="190" fixed="right" align="center">
                             <template slot-scope="scope">
+                                <el-button type="text" @click="openDetailDialog(scope.row)">璇︽儏</el-button>
                                 <el-button type="text" @click="openEditDialog(scope.row)">淇敼</el-button>
                                 <el-button type="text" style="color:#f56c6c;" @click="removeRows([scope.row[primaryKeyField]])">鍒犻櫎</el-button>
                             </template>
@@ -562,7 +605,7 @@
                 </div>
             </div>
 
-            <div class="pager-bar">
+            <div ref="pagerBar" class="pager-bar">
                 <el-pagination
                     small
                     background
@@ -580,7 +623,7 @@
 
     <el-dialog
         class="dialog-panel"
-        :title="dialog.mode === 'create' ? '鏂板 Config' : '淇敼 Config'"
+        :title="dialog.mode === 'create' ? '鏂板绯荤粺閰嶇疆' : (dialog.mode === 'detail' ? '璇︽儏绯荤粺閰嶇疆' : '淇敼绯荤粺閰嶇疆')"
         :visible.sync="dialog.visible"
         width="760px"
         :close-on-click-modal="false">
@@ -594,7 +637,7 @@
                 <el-col
                     v-for="field in editableFields"
                     :key="'dialog-' + field.field"
-                    :span="field.textarea || field.kind === 'image' ? 24 : 12">
+                    :span="field.dialogSpan || (field.textarea || field.kind === 'image' ? 24 : 12)">
                     <el-form-item :label="field.label" :prop="field.field">
                         <el-date-picker
                             v-if="field.kind === 'date'"
@@ -602,12 +645,23 @@
                             type="datetime"
                             value-format="yyyy-MM-dd HH:mm:ss"
                             :placeholder="'璇烽�夋嫨' + field.label"
+                            :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]"
                             clearable
+                            :disabled="isDialogReadonly"
                             :placeholder="'璇烽�夋嫨' + field.label"
                             style="width: 100%;">
                             <el-option
@@ -622,6 +676,7 @@
                             v-model="dialogDisplay[field.field]"
                             :fetch-suggestions="getSuggestionFetcher(field)"
                             :placeholder="'璇疯緭鍏�' + field.label"
+                            :disabled="isDialogReadonly"
                             style="width: 100%;"
                             @select="handleForeignSelect(field, $event)"
                             @input="handleForeignInput(field)">
@@ -633,6 +688,7 @@
                         <el-switch
                             v-else-if="field.kind === 'checkbox'"
                             v-model="dialogForm[field.field]"
+                            :disabled="isDialogReadonly"
                             :active-value="normalizeOptionValue(field, field.checkboxActiveRaw)"
                             :inactive-value="normalizeOptionValue(field, field.checkboxInactiveRaw)"
                             active-color="#13ce66"
@@ -643,11 +699,13 @@
                             v-model.trim="dialogForm[field.field]"
                             type="textarea"
                             :rows="3"
+                            :disabled="isDialogReadonly"
                             :placeholder="'璇疯緭鍏�' + field.label">
                         </el-input>
                         <el-input
                             v-else
                             v-model.trim="dialogForm[field.field]"
+                            :disabled="isDialogReadonly"
                             :placeholder="'璇疯緭鍏�' + field.label">
                         </el-input>
                     </el-form-item>
@@ -656,7 +714,7 @@
         </el-form>
         <div slot="footer" class="dialog-footer">
             <el-button @click="dialog.visible = false">鍙栨秷</el-button>
-            <el-button type="primary" :loading="dialog.submitting" @click="submitDialog">淇濆瓨</el-button>
+            <el-button v-if="!isDialogReadonly" type="primary" :loading="dialog.submitting" @click="submitDialog">淇濆瓨</el-button>
         </div>
     </el-dialog>
 </div>
@@ -665,6 +723,6 @@
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/vue/js/vue.min.js"></script>
 <script type="text/javascript" src="../../static/vue/element/element.js"></script>
-<script type="text/javascript" src="../../static/js/config/config.js?v=20260310" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/config/config.js" charset="utf-8"></script>
 </body>
 </html>

--
Gitblit v1.9.1