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:
@@ -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() {
|
||||
|
||||
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user