diff --git a/src/views/modules/sampleTracking/projectProofTracking.vue b/src/views/modules/sampleTracking/projectProofTracking.vue
index d8a8f4f..e4fd410 100644
--- a/src/views/modules/sampleTracking/projectProofTracking.vue
+++ b/src/views/modules/sampleTracking/projectProofTracking.vue
@@ -66,6 +66,11 @@
同步打样到NPI
事业部进度设置
默认进度设置
+
+
+
@@ -118,6 +123,9 @@
{{ getTrackingRoleDisplayValue(scope.row, 'projectManagerName', 'projectManager') }}
+
+ {{ getTrackingRoleDisplayValue(scope.row, 'projectOwnerName', 'pic') }}
+
{{ getTrackingColumnDisplayValue(scope.row, item.columnProp) }}
@@ -159,15 +167,17 @@
placeholder=""
style="width: 122px"
@change="handleProcessDateChange(scope.row, item, $event)"
+ @dblclick.native.stop="handleProcessDateDoubleClick(scope.row, item)"
/>
√
+ >✓
@@ -1299,6 +1309,7 @@ export default {
proofingStatus: ''
},
trackingColumnList: cloneDefaultTrackingColumns(),
+ hasUserTrackingColumnConfig: false,
processColumns: cloneDefaultProcessColumns(),
processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()),
buProcessConfigDialogVisible: false,
@@ -1483,9 +1494,11 @@ export default {
},
computed: {
visibleTrackingColumns () {
- const sourceColumns = Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0
- ? this.trackingColumnList
- : this.buildDefaultTrackingColumns()
+ const sourceColumns = this.hasUserTrackingColumnConfig
+ ? (Array.isArray(this.trackingColumnList) ? this.trackingColumnList : [])
+ : ((Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0)
+ ? this.trackingColumnList
+ : this.buildDefaultTrackingColumns())
return sourceColumns.filter(item => this.isTrackingColumnVisible(item))
},
visibleProcessColumns () {
@@ -1571,7 +1584,8 @@ export default {
normalizeTrackingColumnItem (item, fallbackItem) {
const defaultItem = fallbackItem || {}
const mergedItem = Object.assign({}, defaultItem, item || {})
- const columnProp = mergedItem.columnProp == null ? '' : String(mergedItem.columnProp).trim()
+ const rawColumnProp = mergedItem.columnProp == null ? '' : String(mergedItem.columnProp).trim()
+ const columnProp = rawColumnProp.toLowerCase() === 'pic' ? 'pic' : rawColumnProp
const normalizedLabel = mergedItem.columnLabel == null ? '' : String(mergedItem.columnLabel).trim()
return Object.assign({}, mergedItem, {
columnProp: columnProp,
@@ -1585,7 +1599,7 @@ export default {
columnHidden: this.normalizeTrackingColumnBoolean(mergedItem.columnHidden, false)
})
},
- normalizeTrackingColumns (rows) {
+ normalizeTrackingColumns (rows, appendDefaultColumns) {
const defaultColumns = this.buildDefaultTrackingColumns()
const defaultColumnMap = {}
defaultColumns.forEach(item => {
@@ -1603,6 +1617,9 @@ export default {
mergedRows.push(this.normalizeTrackingColumnItem(item, defaultColumnMap[columnProp]))
})
}
+ if (appendDefaultColumns !== true) {
+ return mergedRows
+ }
// 用户旧配置可能缺少新加列,这里按系统默认顺序补齐,避免新增列永远看不到。
defaultColumns.forEach((defaultItem, defaultIndex) => {
if (usedColumnPropMap[defaultItem.columnProp]) {
@@ -1640,12 +1657,14 @@ export default {
}
return getTableDefaultListLanguage(queryTable).then(({ data }) => {
const rows = data && Array.isArray(data.rows) ? data.rows : []
+ this.hasUserTrackingColumnConfig = false
this.trackingColumnList = rows.length > 0
- ? this.normalizeTrackingColumns(rows)
+ ? this.normalizeTrackingColumns(rows, true)
: this.buildDefaultTrackingColumns()
this.refreshTrackingTableLayout()
return this.trackingColumnList
}).catch(() => {
+ this.hasUserTrackingColumnConfig = false
this.trackingColumnList = this.buildDefaultTrackingColumns()
this.refreshTrackingTableLayout()
return this.trackingColumnList
@@ -1663,12 +1682,14 @@ export default {
return getTableUserListLanguage(queryTableUser).then(({ data }) => {
const rows = data && Array.isArray(data.rows) ? data.rows : []
if (rows.length > 0) {
- this.trackingColumnList = this.normalizeTrackingColumns(rows)
+ this.hasUserTrackingColumnConfig = true
+ this.trackingColumnList = this.normalizeTrackingColumns(rows, false)
this.refreshTrackingTableLayout()
return this.trackingColumnList
}
return this.loadTrackingDefaultColumns(tableId)
}).catch(() => {
+ this.hasUserTrackingColumnConfig = false
this.trackingColumnList = this.buildDefaultTrackingColumns()
this.refreshTrackingTableLayout()
return this.trackingColumnList
@@ -4484,6 +4505,31 @@ export default {
remark: '表格一键完成'
}, false, '工序已标记为完成')
},
+ handleProcessDateDoubleClick (row, processCol) {
+ if (!row || !processCol || !this.isProcessStatusComplete(row, processCol)) {
+ return
+ }
+ // 按页面交互约定:已完成工序允许双击日期输入框进行回退。
+ this.rollbackProcessComplete(row, processCol)
+ },
+ rollbackProcessComplete (row, processCol) {
+ if (!row || !processCol || !this.isProcessStatusComplete(row, processCol)) {
+ return
+ }
+ const currentActualDate = this.formatDate(row[processCol.actualField])
+ this.$confirm('确定回退该工序状态为“未完成”吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ // 仅回退状态,保留当前实际完成日期,避免误回退时丢失用户已维护的日期信息。
+ this.updateProcessFromTable(row, processCol, {
+ status: '未完成',
+ actualDate: currentActualDate,
+ remark: '表格一键回退为未完成'
+ }, false, '工序状态已回退为未完成')
+ }).catch(() => {})
+ },
updateProcessFromTable (row, processCol, processData, silentSuccess, successMsg) {
if (!row || !processCol || !row.trackingId) {
this.$message.error('工序参数缺失')