Browse Source

日期排序

ecss-tx
han\hanst 3 weeks ago
parent
commit
908f4da90e
  1. 82
      src/views/modules/sampleTracking/projectProofTracking.vue

82
src/views/modules/sampleTracking/projectProofTracking.vue

@ -89,6 +89,7 @@
stripe highlight-current-row
height="700"
v-loading="dataListLoading"
@sort-change="handleTrackingTableSortChange"
@selection-change="selectionChange"
@row-click="rowClick"
style="width: 100%; margin-top: 8px"
@ -140,8 +141,10 @@
<el-table-column
v-for="(item, processColumnIndex) in visibleProcessColumns"
:key="`${item.code}_${item.sortNo || ''}_${processColumnIndex}`"
:prop="item.actualField"
:label="item.label"
:width="getProcessColumnWidth(item)"
sortable="custom"
align="center"
header-align="center"
>
@ -1431,6 +1434,8 @@ export default {
hasUserTrackingColumnConfig: false,
processColumns: cloneDefaultProcessColumns(),
processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()),
trackingTableSortProp: '',
trackingTableSortOrder: '',
buProcessCategoryOptionsMap: {},
buProcessConfigLoading: false,
buProcessConfigDialogVisible: false,
@ -1560,7 +1565,7 @@ export default {
syncBatchNpiLoading: false,
syncBatchProofLoading: false,
pageIndex: 1,
pageSize: 20,
pageSize: 50,
totalPage: 0,
currentRow: null,
manualSelectedTrackingId: null,
@ -3647,6 +3652,8 @@ export default {
if (data && data.code === 0) {
this.dataList = (data.page && data.page.list) || []
this.syncDataListProcessValues()
this.resetDataListPageOrderIndexes()
this.applyTrackingTableSort()
this.totalPage = (data.page && data.page.totalCount) || 0
if (this.commentsEditingTrackingId) {
const hasEditingRow = this.dataList.some(item => item.trackingId === this.commentsEditingTrackingId)
@ -3871,6 +3878,79 @@ export default {
this.$message.error('Comments保存异常')
})
},
handleTrackingTableSortChange (sortData) {
this.trackingTableSortProp = sortData && sortData.prop ? String(sortData.prop) : ''
this.trackingTableSortOrder = sortData && sortData.order ? String(sortData.order) : ''
this.applyTrackingTableSort()
this.refreshTrackingTableLayout()
},
resolveTrackingTableSortValue (row, prop) {
if (!row || !prop) {
return ''
}
const rawValue = row[prop]
const formattedValue = this.formatDate(rawValue)
if (formattedValue) {
return formattedValue
}
return rawValue == null ? '' : String(rawValue).trim()
},
compareDataListOrderIndex (a, b) {
const aOrderIndex = Number(a && a._pageOrderIndex != null ? a._pageOrderIndex : Number.MAX_SAFE_INTEGER)
const bOrderIndex = Number(b && b._pageOrderIndex != null ? b._pageOrderIndex : Number.MAX_SAFE_INTEGER)
return aOrderIndex - bOrderIndex
},
resetDataListPageOrderIndexes () {
if (!Array.isArray(this.dataList) || this.dataList.length === 0) {
return
}
this.dataList.forEach((row, index) => {
if (!row) {
return
}
this.$set(row, '_pageOrderIndex', index)
})
},
restoreDataListPageOrder () {
if (!Array.isArray(this.dataList) || this.dataList.length <= 1) {
return
}
this.dataList = this.dataList.slice().sort((a, b) => this.compareDataListOrderIndex(a, b))
},
applyTrackingTableSort () {
if (!Array.isArray(this.dataList) || this.dataList.length <= 1) {
return
}
const sortProp = this.trackingTableSortProp
const sortOrder = this.trackingTableSortOrder
if (!sortProp || !sortOrder) {
this.restoreDataListPageOrder()
return
}
const isAscending = sortOrder === 'ascending'
this.dataList = this.dataList.slice().sort((a, b) => {
const aValue = this.resolveTrackingTableSortValue(a, sortProp)
const bValue = this.resolveTrackingTableSortValue(b, sortProp)
const aEmpty = !aValue
const bEmpty = !bValue
if (aEmpty && bEmpty) {
return this.compareDataListOrderIndex(a, b)
}
if (aEmpty) {
return 1
}
if (bEmpty) {
return -1
}
if (aValue === bValue) {
return this.compareDataListOrderIndex(a, b)
}
if (isAscending) {
return aValue > bValue ? 1 : -1
}
return aValue < bValue ? 1 : -1
})
},
rowClick (row) {
this.currentRow = row
this.manualSelectedTrackingId = row && row.trackingId ? row.trackingId : null

Loading…
Cancel
Save