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