2 Commits

  1. 86
      src/views/modules/sampleTracking/projectProofTracking.vue

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

@ -216,7 +216,7 @@
:height="trackingTableHeight" :height="trackingTableHeight"
v-loading="dataListLoading" v-loading="dataListLoading"
@sort-change="handleTrackingTableSortChange" @sort-change="handleTrackingTableSortChange"
@filter-change="handleTrackingTableFilterChange"
@header-dragend="handleTrackingColumnResize"
@selection-change="selectionChange" @selection-change="selectionChange"
@row-click="rowClick" @row-click="rowClick"
style="width: 100%; margin-top: 8px" style="width: 100%; margin-top: 8px"
@ -234,10 +234,6 @@
:show-overflow-tooltip="item.showOverflowTooltip" :show-overflow-tooltip="item.showOverflowTooltip"
:column-key="item.columnProp" :column-key="item.columnProp"
:class-name="item.columnProp === 'partDesc' ? 'proof-part-description-column' : ''" :class-name="item.columnProp === 'partDesc' ? 'proof-part-description-column' : ''"
:filters="getTrackingColumnFilters(item)"
:filter-multiple="false"
:filtered-value="getTrackingColumnFilteredValue(item)"
:filter-method="passthroughTrackingColumnFilter"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span <span
@ -1280,7 +1276,7 @@ import {
searchBusinessInfo8 searchBusinessInfo8
} from '@/api/factory/site.js' } from '@/api/factory/site.js'
import { queryCustomerList } from '@/api/customer/customer' import { queryCustomerList } from '@/api/customer/customer'
import { getTableUserListLanguage } from '@/api/table.js'
import { getTableUserListLanguage, updateColumnSize, saveTableUser } from '@/api/table.js'
import Chooselist from '@/views/modules/common/Chooselist_eam' import Chooselist from '@/views/modules/common/Chooselist_eam'
import Sortable from 'sortablejs' import Sortable from 'sortablejs'
@ -1715,6 +1711,8 @@ export default {
searchProjectManagerOptions: [], searchProjectManagerOptions: [],
searchPicOptions: [], searchPicOptions: [],
trackingColumnList: cloneDefaultTrackingColumns(), trackingColumnList: cloneDefaultTrackingColumns(),
trackingColumnsLoaded: false,
trackingColumnsPersisted: false,
processColumns: cloneDefaultProcessColumns(), processColumns: cloneDefaultProcessColumns(),
processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()), processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()),
trackingTableSortProp: '', trackingTableSortProp: '',
@ -2091,6 +2089,7 @@ export default {
return mergedRows return mergedRows
}, },
loadTrackingColumns () { loadTrackingColumns () {
this.trackingColumnsLoaded = false
const queryTableUser = { const queryTableUser = {
userId: this.$store.state.user.name, userId: this.$store.state.user.name,
functionId: this.getTrackingColumnFunctionId(), functionId: this.getTrackingColumnFunctionId(),
@ -2098,7 +2097,12 @@ export default {
languageCode: this.$i18n && this.$i18n.locale ? this.$i18n.locale : '' languageCode: this.$i18n && this.$i18n.locale ? this.$i18n.locale : ''
} }
return getTableUserListLanguage(queryTableUser).then(({ data }) => { return getTableUserListLanguage(queryTableUser).then(({ data }) => {
const rows = data && Array.isArray(data.rows) ? data.rows : []
if (!data || data.code !== 0 || !Array.isArray(data.rows)) {
throw new Error('加载用户动态列失败')
}
const rows = data.rows
this.trackingColumnsLoaded = true
this.trackingColumnsPersisted = rows.length > 0
// status // status
// 退 // 退
this.trackingColumnList = rows.length > 0 this.trackingColumnList = rows.length > 0
@ -2112,6 +2116,48 @@ export default {
return this.trackingColumnList return this.trackingColumnList
}) })
}, },
handleTrackingColumnResize (newWidth, oldWidth, column) {
// Comments
const item = column && this.trackingColumnList.find(row => row.columnProp === column.property)
const width = Math.round(Number(newWidth))
if (!item || !Number.isFinite(width) || width <= 0 || newWidth === oldWidth) {
return Promise.resolve()
}
const userId = this.$store.state.user.name
const functionId = this.getTrackingColumnFunctionId()
const tableId = this.getTrackingColumnTableId()
if (!this.trackingColumnsLoaded || this.isBlankValue(userId) || this.isBlankValue(functionId) || this.isBlankValue(tableId)) {
this.$message.warning('动态列配置尚未加载成功,列宽未保存,请刷新后重试')
return Promise.resolve()
}
this.$set(item, 'columnWidth', width)
//
const payload = { userId, functionId, tableId, columnProp: item.columnProp, columnWidth: width }
//
const queue = this._trackingColumnWidthSaveQueue || Promise.resolve()
this._trackingColumnWidthSaveQueue = queue.then(async () => {
let response
if (!this.trackingColumnsPersisted) {
// 使
const columns = this.trackingColumnList.map((row, index) => Object.assign({}, row, {
userId,
functionId,
tableId,
sortLv: row.sortLv == null ? index + 1 : row.sortLv
}))
response = await saveTableUser(columns)
} else {
response = await updateColumnSize(payload)
}
if (!response || !response.data || response.data.code !== 0) {
throw new Error('列宽保存失败')
}
this.trackingColumnsPersisted = true
}).catch(() => {
this.$message.warning('列宽保存失败,当前宽度仅临时生效,请重新拖动以重试')
})
return this._trackingColumnWidthSaveQueue
},
isTrackingColumnVisible (column) { isTrackingColumnVisible (column) {
if (!column) { if (!column) {
return false return false
@ -2202,32 +2248,6 @@ export default {
formatImportanceDisplay (value) { formatImportanceDisplay (value) {
return this.isImportanceChecked(value) ? '❗️' : '' return this.isImportanceChecked(value) ? '❗️' : ''
}, },
getTrackingColumnFilters (item) {
if (!item || item.columnProp !== 'importance') {
return null
}
return [
{ text: '√', value: 'Y' },
{ text: '', value: 'N' }
]
},
getTrackingColumnFilteredValue (item) {
if (!item || item.columnProp !== 'importance' || this.isBlankValue(this.searchData.importance)) {
return []
}
return [this.searchData.importance]
},
passthroughTrackingColumnFilter () {
return true
},
handleTrackingTableFilterChange (filters) {
if (!filters || !Object.prototype.hasOwnProperty.call(filters, 'importance')) {
return
}
const values = Array.isArray(filters.importance) ? filters.importance : []
this.searchData.importance = values.length === 1 ? values[0] : ''
this.getDataList('Y')
},
getTrackingColumnDisplayValue (row, columnProp) { getTrackingColumnDisplayValue (row, columnProp) {
if (!row || !columnProp) { if (!row || !columnProp) {
return '' return ''

Loading…
Cancel
Save