From 7293f89a4c641dd4385db73ba47f91790b53561d Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 24 Aug 2026 13:01:50 +0800 Subject: [PATCH] pic --- .../sampleTracking/projectProofTracking.vue | 66 ++++++++++++++++--- 1 file changed, 56 insertions(+), 10 deletions(-) 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('工序参数缺失')