From 2825b82e8a4eca618ab3c2306de2db74a2ecbd1d Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 06 四月 2026 15:54:58 +0800
Subject: [PATCH] #任务取消优化

---
 src/main/webapp/static/js/wrkMastLog/wrkMastLog.js |  330 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 314 insertions(+), 16 deletions(-)

diff --git a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
index b6acfcf..34d2335 100644
--- a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
+++ b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
@@ -1302,6 +1302,219 @@
 
     ]);
 
+    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: 'enum',
+            tableProp: 'wrkSts$',
+            exportField: 'wrkSts$',
+            enumOptions: [],
+            searchable: true,
+            quickSearch: true,
+            minWidth: 160
+        },
+        ioType: {
+            label: '浠诲姟绫诲瀷',
+            kind: 'enum',
+            tableProp: 'ioType$',
+            exportField: 'ioType$',
+            enumOptions: [],
+            searchable: true,
+            quickSearch: true,
+            minWidth: 160
+        },
+        ioTime: {
+            label: '宸ヤ綔鏃堕棿',
+            tableProp: 'ioTime$',
+            exportField: 'ioTime$',
+            kind: 'date',
+            searchable: false,
+            quickSearch: false,
+            defaultVisible: false,
+            minWidth: 300
+        },
+        appeTime: {
+            label: '宸ヤ綔鏃堕棿',
+            tableProp: 'appeTime$',
+            exportField: 'appeTime$',
+            sortable: true,
+            minWidth: 168
+        },
+        ioPri: {
+            label: '浼樺厛绾�',
+            minWidth: 90
+        },
+        sourceStaNo: {
+            label: '婧愮珯',
+            kind: 'enum',
+            enumOptions: [],
+            searchable: false,
+            minWidth: 120
+        },
+        staNo: {
+            label: '鐩爣绔�',
+            kind: 'enum',
+            enumOptions: [],
+            searchable: false,
+            minWidth: 120
+        },
+        sourceLocNo: {
+            label: '婧愬簱浣�',
+            searchable: true,
+            minWidth: 120
+        },
+        locNo: {
+            label: '鐩爣搴撲綅',
+            searchable: true,
+            quickSearch: true,
+            minWidth: 120
+        },
+        crnNo: {
+            label: '鍫嗗灈鏈�',
+            searchable: true,
+            minWidth: 100
+        },
+        dualCrnNo: {
+            label: '鍙屽伐浣嶅爢鍨涙満',
+            searchable: true,
+            minWidth: 140
+        },
+        batch: {
+            label: '鎵规',
+            minWidth: 100
+        },
+        batchSeq: {
+            label: '鎵规搴忓垪',
+            minWidth: 110
+        },
+        barcode: {
+            label: '鎵樼洏鐮�',
+            searchable: true,
+            quickSearch: true,
+            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 +1576,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 +1633,9 @@
     }
 
     function createDefaultVisibleColumnKeys() {
-        return fieldMeta.map(function (field) {
+        return fieldMeta.filter(function (field) {
+            return field.defaultVisible !== false;
+        }).map(function (field) {
             return field.field;
         });
     }
@@ -1604,6 +1819,39 @@
         };
     }
 
+    function getFieldByName(fieldName) {
+        for (var i = 0; i < fieldMeta.length; i += 1) {
+            if (fieldMeta[i] && fieldMeta[i].field === fieldName) {
+                return fieldMeta[i];
+            }
+        }
+        return null;
+    }
+
+    function buildEnumOptions(records, valueField, labelField) {
+        var options = [];
+        var seen = {};
+        (records || []).forEach(function (item) {
+            if (!item) {
+                return;
+            }
+            var rawValue = item[valueField];
+            if (isEmptyValue(rawValue)) {
+                return;
+            }
+            var key = String(rawValue);
+            if (seen[key]) {
+                return;
+            }
+            seen[key] = true;
+            options.push({
+                rawValue: key,
+                label: isEmptyValue(item[labelField]) ? key : String(item[labelField])
+            });
+        });
+        return options;
+    }
+
     function handleForbidden(res) {
         if (res && res.code === 403) {
             top.location.href = baseUrl + '/';
@@ -1717,21 +1965,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 +1985,7 @@
                 },
                 editableFields: function () {
                     return this.fieldMeta.filter(function (field) {
-                        return !field.primaryKey;
+                        return !field.primaryKey && field.editable === true;
                     });
                 },
                 exportColumns: function () {
@@ -1769,6 +2009,7 @@
                 }
             },
             created: function () {
+                this.loadSearchEnumOptions();
                 this.loadTable();
             },
             mounted: function () {
@@ -1846,6 +2087,63 @@
                     }
                     this.$set(this.searchForm, field.field, '');
                 },
+                loadSearchEnumOptions: function () {
+                    var self = this;
+                    [
+                        {
+                            field: 'wrkSts',
+                            url: baseUrl + '/basWrkStatus/list/auth',
+                            valueField: 'wrkSts',
+                            labelField: 'wrkDesc',
+                            limit: 200
+                        },
+                        {
+                            field: 'ioType',
+                            url: baseUrl + '/basWrkIotype/list/auth',
+                            valueField: 'ioType',
+                            labelField: 'ioDesc',
+                            limit: 200
+                        },
+                        {
+                            field: 'staNo',
+                            url: baseUrl + '/basStation/list/auth',
+                            valueField: 'stationId',
+                            labelField: 'stationId',
+                            limit: 500
+                        },
+                        {
+                            field: 'sourceStaNo',
+                            url: baseUrl + '/basStation/list/auth',
+                            valueField: 'stationId',
+                            labelField: 'stationId',
+                            limit: 500
+                        }
+                    ].forEach(function (config) {
+                        $.ajax({
+                            url: config.url,
+                            method: 'GET',
+                            headers: self.authHeaders(),
+                            data: {
+                                curr: 1,
+                                limit: config.limit
+                            },
+                            success: function (res) {
+                                if (self.handleForbidden(res)) {
+                                    return;
+                                }
+                                if (!res || res.code !== 200) {
+                                    return;
+                                }
+                                var payload = res.data || {};
+                                var field = getFieldByName(config.field);
+                                if (!field) {
+                                    return;
+                                }
+                                self.$set(field, 'enumOptions', buildEnumOptions(payload.records, config.valueField, config.labelField));
+                            }
+                        });
+                    });
+                },
                 buildQueryParams: function () {
                     var self = this;
                     var params = {

--
Gitblit v1.9.1