From 8a50a90c91918b7a97ae778c0fc63480279598db Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 13 三月 2026 13:35:12 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/wrkMastLog/wrkMastLog.html   |  116 +++---------------
 src/main/webapp/static/js/wrkMastLog/wrkMastLog.js |  224 ++++++++++++++++++++++++++++++++++--
 2 files changed, 229 insertions(+), 111 deletions(-)

diff --git a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
index b6acfcf..1dd1f6c 100644
--- a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
+++ b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
@@ -1302,6 +1302,204 @@
 
     ]);
 
+    var wrkMastLogFieldOrder = [
+        'wrkNo',
+        'wmsWrkNo',
+        'wrkSts',
+        'ioType',
+        'ioTime',
+        'appeTime',
+        'ioPri',
+        'sourceStaNo',
+        'staNo',
+        'sourceLocNo',
+        'locNo',
+        'crnNo',
+        'dualCrnNo',
+        'batch',
+        'batchSeq',
+        'barcode',
+        'modiUser',
+        'modiTime',
+        'appeUser',
+        'systemMsg',
+        'errorTime',
+        'errorMemo',
+        'memo',
+        'id'
+    ];
+
+    var wrkMastLogFieldSettings = {
+        wrkNo: {
+            label: '宸ヤ綔鍙�',
+            searchable: true,
+            quickSearch: true,
+            sortable: true,
+            minWidth: 110
+        },
+        wmsWrkNo: {
+            label: 'WMS宸ヤ綔鍙�',
+            searchable: true,
+            quickSearch: true,
+            minWidth: 140
+        },
+        wrkSts: {
+            label: '宸ヤ綔鐘舵��',
+            kind: 'foreign',
+            tableProp: 'wrkSts$',
+            exportField: 'wrkSts$',
+            foreignQuery: 'basWrkStatus',
+            searchable: true,
+            quickSearch: true,
+            minWidth: 160
+        },
+        ioType: {
+            label: '鍏ュ嚭搴撶被鍨�',
+            kind: 'foreign',
+            tableProp: 'ioType$',
+            exportField: 'ioType$',
+            foreignQuery: 'basWrkIotype',
+            searchable: true,
+            quickSearch: true,
+            minWidth: 160
+        },
+        ioTime: {
+            label: '宸ヤ綔鏃堕棿',
+            tableProp: 'ioTime$',
+            exportField: 'ioTime$',
+            kind: 'date',
+            searchable: true,
+            quickSearch: true,
+            defaultVisible: false,
+            minWidth: 300
+        },
+        appeTime: {
+            label: '宸ヤ綔鏃堕棿',
+            tableProp: 'appeTime$',
+            exportField: 'appeTime$',
+            sortable: true,
+            minWidth: 168
+        },
+        ioPri: {
+            label: '浼樺厛绾�',
+            minWidth: 90
+        },
+        sourceStaNo: {
+            label: '婧愮珯'
+        },
+        staNo: {
+            label: '鐩爣绔�'
+        },
+        sourceLocNo: {
+            label: '婧愬簱浣�',
+            minWidth: 120
+        },
+        locNo: {
+            label: '鐩爣搴撲綅',
+            minWidth: 120
+        },
+        crnNo: {
+            label: '鍫嗗灈鏈�',
+            minWidth: 100
+        },
+        dualCrnNo: {
+            label: '鍙屽伐浣嶅爢鍨涙満',
+            minWidth: 140
+        },
+        batch: {
+            label: '鎵规',
+            minWidth: 100
+        },
+        batchSeq: {
+            label: '鎵规搴忓垪',
+            minWidth: 110
+        },
+        barcode: {
+            label: '鏉$爜',
+            minWidth: 140
+        },
+        modiUser: {
+            label: '淇敼浜哄憳',
+            tableProp: 'modiUser$',
+            exportField: 'modiUser$',
+            defaultVisible: false
+        },
+        modiTime: {
+            label: '淇敼鏃堕棿',
+            tableProp: 'modiTime$',
+            exportField: 'modiTime$',
+            defaultVisible: false,
+            minWidth: 168
+        },
+        appeUser: {
+            label: '鍒涘缓鑰�',
+            tableProp: 'appeUser$',
+            exportField: 'appeUser$',
+            defaultVisible: false
+        },
+        systemMsg: {
+            label: '绯荤粺娑堟伅',
+            textarea: true,
+            defaultVisible: false,
+            minWidth: 220
+        },
+        errorTime: {
+            label: '寮傚父鏃堕棿',
+            tableProp: 'errorTime$',
+            exportField: 'errorTime$',
+            defaultVisible: false,
+            minWidth: 168
+        },
+        errorMemo: {
+            label: '寮傚父璇存槑',
+            textarea: true,
+            defaultVisible: false,
+            minWidth: 220
+        },
+        memo: {
+            label: '澶囨敞',
+            textarea: true,
+            defaultVisible: false,
+            minWidth: 220
+        },
+        id: {
+            label: '缂栧彿',
+            defaultVisible: false,
+            minWidth: 90
+        }
+    };
+
+    fieldMeta = filterFieldMetaByOrder(fieldMeta, wrkMastLogFieldOrder, wrkMastLogFieldSettings);
+
+    function filterFieldMetaByOrder(list, order, settings) {
+        var metaMap = {};
+        (list || []).forEach(function (field) {
+            if (!field || !field.field) {
+                return;
+            }
+            metaMap[field.field] = Object.assign({}, field);
+        });
+        return (order || []).map(function (fieldName) {
+            if (!metaMap[fieldName]) {
+                return null;
+            }
+            var merged = Object.assign({}, metaMap[fieldName], settings && settings[fieldName] ? settings[fieldName] : {});
+            if (merged.searchable === undefined) {
+                merged.searchable = false;
+            }
+            if (merged.quickSearch === undefined) {
+                merged.quickSearch = false;
+            }
+            if (merged.editable === undefined) {
+                merged.editable = false;
+            }
+            if (merged.defaultVisible === undefined) {
+                merged.defaultVisible = true;
+            }
+            return merged;
+        }).filter(Boolean);
+    }
+
     function formatFieldLabel(field) {
         var raw = field && field.label ? String(field.label).trim() : '';
         if (raw) {
@@ -1363,15 +1561,15 @@
     }
 
     function isSearchableField(field) {
-        return !!field && field.kind !== 'image' && !field.textarea;
+        return !!field && field.searchable === true && field.kind !== 'image' && !field.textarea;
     }
 
     function isSortableField(field) {
         if (!field) {
             return false;
         }
-        if (field.primaryKey) {
-            return true;
+        if (typeof field.sortable === 'boolean') {
+            return field.sortable;
         }
         return field.kind !== 'image' && !field.textarea && field.kind !== 'foreign';
     }
@@ -1420,7 +1618,9 @@
     }
 
     function createDefaultVisibleColumnKeys() {
-        return fieldMeta.map(function (field) {
+        return fieldMeta.filter(function (field) {
+            return field.defaultVisible !== false;
+        }).map(function (field) {
             return field.field;
         });
     }
@@ -1717,21 +1917,13 @@
                     });
                 },
                 quickSearchableFields: function () {
-                    var result = [];
-                    this.searchableFields.forEach(function (field) {
-                        if (result.length >= 3 || field.kind === 'date') {
-                            return;
-                        }
-                        result.push(field);
+                    return this.searchableFields.filter(function (field) {
+                        return field.quickSearch === true;
                     });
-                    return result;
                 },
                 advancedSearchableFields: function () {
-                    var quickKeys = this.quickSearchableFields.map(function (field) {
-                        return field.field;
-                    });
                     return this.searchableFields.filter(function (field) {
-                        return quickKeys.indexOf(field.field) === -1;
+                        return field.quickSearch !== true;
                     });
                 },
                 hasAdvancedFilters: function () {
@@ -1745,7 +1937,7 @@
                 },
                 editableFields: function () {
                     return this.fieldMeta.filter(function (field) {
-                        return !field.primaryKey;
+                        return !field.primaryKey && field.editable === true;
                     });
                 },
                 exportColumns: function () {
diff --git a/src/main/webapp/views/wrkMastLog/wrkMastLog.html b/src/main/webapp/views/wrkMastLog/wrkMastLog.html
index 7eb29b9..1892b23 100644
--- a/src/main/webapp/views/wrkMastLog/wrkMastLog.html
+++ b/src/main/webapp/views/wrkMastLog/wrkMastLog.html
@@ -2,7 +2,7 @@
 <html lang="zh-CN">
 <head>
     <meta charset="utf-8">
-    <title>WrkMastLog 绠$悊</title>
+    <title>宸ヤ綔鍘嗗彶妗f煡璇�</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
@@ -92,6 +92,11 @@
         .toolbar-search-item.keyword {
             flex: 0 0 220px;
             min-width: 220px;
+        }
+
+        .toolbar-search-item.wide {
+            flex: 0 0 300px;
+            min-width: 300px;
         }
 
         .toolbar-query-actions,
@@ -347,9 +352,21 @@
                             <div
                                 v-for="field in quickSearchableFields"
                                 :key="'quick-' + field.field"
-                                class="toolbar-search-item">
+                                :class="['toolbar-search-item', field.kind === 'date' ? 'wide' : '']">
+                                <el-date-picker
+                                    v-if="field.kind === 'date'"
+                                    v-model="searchForm[field.field]"
+                                    size="small"
+                                    type="datetimerange"
+                                    unlink-panels
+                                    range-separator="鑷�"
+                                    :start-placeholder="field.label + '寮�濮�'"
+                                    :end-placeholder="field.label + '缁撴潫'"
+                                    value-format="yyyy-MM-dd HH:mm:ss"
+                                    style="width: 100%;">
+                                </el-date-picker>
                                 <el-select
-                                    v-if="field.kind === 'enum'"
+                                    v-else-if="field.kind === 'enum'"
                                     v-model="searchForm[field.field]"
                                     size="small"
                                     clearable
@@ -410,8 +427,6 @@
                         </div>
                     </div>
                     <div class="toolbar-ops">
-                        <el-button size="small" type="primary" plain icon="el-icon-plus" @click="openCreateDialog">鏂板</el-button>
-                        <el-button size="small" type="danger" plain icon="el-icon-delete" :disabled="selection.length === 0" @click="removeSelection">鍒犻櫎</el-button>
                         <el-popover
                             placement="bottom"
                             width="320"
@@ -436,6 +451,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 icon="el-icon-refresh-left" @click="loadTable">鍒锋柊</el-button>
                     </div>
                 </div>
             </div>
@@ -520,9 +536,7 @@
                         border
                         stripe
                         :height="tableHeight"
-                        @selection-change="handleSelectionChange"
                         @sort-change="handleSortChange">
-                        <el-table-column type="selection" width="52" align="center"></el-table-column>
                         <el-table-column
                             v-for="field in visibleColumns"
                             :key="field.field"
@@ -552,12 +566,6 @@
                                 <span v-else>{{ valueOrDash(getTableValue(scope.row, field)) }}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column label="鎿嶄綔" width="160" fixed="right" align="center">
-                            <template slot-scope="scope">
-                                <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>
-                        </el-table-column>
                     </el-table>
                 </div>
             </div>
@@ -577,88 +585,6 @@
             </div>
         </div>
     </section>
-
-    <el-dialog
-        class="dialog-panel"
-        :title="dialog.mode === 'create' ? '鏂板 WrkMastLog' : '淇敼 WrkMastLog'"
-        :visible.sync="dialog.visible"
-        width="760px"
-        :close-on-click-modal="false">
-        <el-form
-            ref="dialogForm"
-            :model="dialogForm"
-            :rules="dialogRules"
-            label-width="110px"
-            size="small">
-            <el-row :gutter="16">
-                <el-col
-                    v-for="field in editableFields"
-                    :key="'dialog-' + field.field"
-                    :span="field.textarea || field.kind === 'image' ? 24 : 12">
-                    <el-form-item :label="field.label" :prop="field.field">
-                        <el-date-picker
-                            v-if="field.kind === 'date'"
-                            v-model="dialogForm[field.field]"
-                            type="datetime"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            :placeholder="'璇烽�夋嫨' + field.label"
-                            style="width: 100%;">
-                        </el-date-picker>
-                        <el-select
-                            v-else-if="field.kind === 'enum'"
-                            v-model="dialogForm[field.field]"
-                            clearable
-                            :placeholder="'璇烽�夋嫨' + field.label"
-                            style="width: 100%;">
-                            <el-option
-                                v-for="option in field.enumOptions"
-                                :key="'dialog-' + field.field + '-' + option.rawValue"
-                                :label="option.label"
-                                :value="normalizeOptionValue(field, option.rawValue)">
-                            </el-option>
-                        </el-select>
-                        <el-autocomplete
-                            v-else-if="field.kind === 'foreign'"
-                            v-model="dialogDisplay[field.field]"
-                            :fetch-suggestions="getSuggestionFetcher(field)"
-                            :placeholder="'璇疯緭鍏�' + field.label"
-                            style="width: 100%;"
-                            @select="handleForeignSelect(field, $event)"
-                            @input="handleForeignInput(field)">
-                            <template slot-scope="{ item }">
-                                <div class="mono">{{ item.value }}</div>
-                                <div style="font-size:12px;color:#8a98ac;">ID: {{ item.id }}</div>
-                            </template>
-                        </el-autocomplete>
-                        <el-switch
-                            v-else-if="field.kind === 'checkbox'"
-                            v-model="dialogForm[field.field]"
-                            :active-value="normalizeOptionValue(field, field.checkboxActiveRaw)"
-                            :inactive-value="normalizeOptionValue(field, field.checkboxInactiveRaw)"
-                            active-color="#13ce66"
-                            inactive-color="#c0c4cc">
-                        </el-switch>
-                        <el-input
-                            v-else-if="field.textarea"
-                            v-model.trim="dialogForm[field.field]"
-                            type="textarea"
-                            :rows="3"
-                            :placeholder="'璇疯緭鍏�' + field.label">
-                        </el-input>
-                        <el-input
-                            v-else
-                            v-model.trim="dialogForm[field.field]"
-                            :placeholder="'璇疯緭鍏�' + field.label">
-                        </el-input>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-        </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>
-        </div>
-    </el-dialog>
 </div>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>

--
Gitblit v1.9.1