fix(job-query,query-tool): align txn history column order with field_contracts

Replace dynamic Object.keys(row) column derivation with explicit display
column lists matching field_contracts.json txn_table definition, ensuring
consistent column order across job-query and query-tool transaction tables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
egg
2026-02-23 18:16:28 +08:00
parent 80a39c6145
commit fd78c02b2d
2 changed files with 16 additions and 28 deletions

View File

@@ -52,6 +52,16 @@ function buildStatusTone(status) {
return 'neutral';
}
const JOBS_DISPLAY_COLUMNS = Object.freeze([
'RESOURCENAME', 'JOBID', 'JOBSTATUS', 'JOBMODELNAME',
'CREATEDATE', 'COMPLETEDATE', 'CAUSECODENAME', 'REPAIRCODENAME',
]);
const TXN_DISPLAY_COLUMNS = Object.freeze([
'TXNDATE', 'FROMJOBSTATUS', 'JOBSTATUS', 'STAGENAME',
'CAUSECODENAME', 'REPAIRCODENAME', 'USER_NAME', 'COMMENTS',
]);
export function useJobQueryData() {
const resources = ref([]);
const loadingResources = ref(false);
@@ -89,13 +99,13 @@ export function useJobQueryData() {
const selectedResourceCount = computed(() => filters.resourceIds.length);
const jobsColumns = computed(() => {
const row = jobs.value[0] || {};
return Object.keys(row);
const available = new Set(Object.keys(jobs.value[0] || {}));
return JOBS_DISPLAY_COLUMNS.filter((col) => available.has(col));
});
const txnColumns = computed(() => {
const row = txnRows.value[0] || {};
return Object.keys(row);
const available = new Set(Object.keys(txnRows.value[0] || {}));
return TXN_DISPLAY_COLUMNS.filter((col) => available.has(col));
});
function resetDateRangeToLast90Days() {

View File

@@ -47,24 +47,14 @@ const JOB_COLUMN_PRIORITY = Object.freeze([
]);
const TXN_COLUMN_PRIORITY = Object.freeze([
'JOBTXNHISTORYID',
'JOBID',
'TXNDATE',
'FROMJOBSTATUS',
'JOBSTATUS',
'STAGENAME',
'TOSTAGENAME',
'CAUSECODENAME',
'REPAIRCODENAME',
'SYMPTOMCODENAME',
'USER_EMPNO',
'USER_NAME',
'EMP_EMPNO',
'EMP_NAME',
'COMMENTS',
'CDONAME',
'JOBMODELNAME',
'JOBORDERNAME',
]);
const selectedJobId = ref('');
@@ -73,20 +63,8 @@ const loadingTxn = ref(false);
const txnError = ref('');
function buildOrderedColumns(rows, preferred) {
const keys = Object.keys(rows?.[0] || {});
if (keys.length === 0) {
return [...preferred];
}
const keySet = new Set(keys);
const ordered = preferred.filter((column) => keySet.has(column));
const orderedSet = new Set(ordered);
keys.forEach((column) => {
if (!orderedSet.has(column)) {
ordered.push(column);
}
});
return ordered;
const keys = new Set(Object.keys(rows?.[0] || {}));
return preferred.filter((column) => keys.has(column));
}
const sortedRows = computed(() => {