|
|
@ -66,6 +66,11 @@ |
|
|
<el-button type="success" plain :loading="syncProofLoading" @click="syncProofToNpi()">同步打样到NPI</el-button> |
|
|
<el-button type="success" plain :loading="syncProofLoading" @click="syncProofToNpi()">同步打样到NPI</el-button> |
|
|
<el-button type="info" v-if="isAuth('833001005:set')" plain @click="openBuProcessConfigDialog">事业部进度设置</el-button> |
|
|
<el-button type="info" v-if="isAuth('833001005:set')" plain @click="openBuProcessConfigDialog">事业部进度设置</el-button> |
|
|
<el-button type="info" v-if="isAuth('833001005:set2')" plain @click="openDefaultProcessConfigDialog">默认进度设置</el-button> |
|
|
<el-button type="info" v-if="isAuth('833001005:set2')" plain @click="openDefaultProcessConfigDialog">默认进度设置</el-button> |
|
|
|
|
|
<el-tooltip style="margin-top: 2px;margin-left: 10px" |
|
|
|
|
|
content="已完成后,双击日期选择框可回退为未完成" |
|
|
|
|
|
placement="top"> |
|
|
|
|
|
<i class="el-icon-question default-process-tip-icon"></i> |
|
|
|
|
|
</el-tooltip> |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
@ -118,6 +123,9 @@ |
|
|
<span v-else-if="item.columnProp === 'projectManager'"> |
|
|
<span v-else-if="item.columnProp === 'projectManager'"> |
|
|
{{ getTrackingRoleDisplayValue(scope.row, 'projectManagerName', 'projectManager') }} |
|
|
{{ getTrackingRoleDisplayValue(scope.row, 'projectManagerName', 'projectManager') }} |
|
|
</span> |
|
|
</span> |
|
|
|
|
|
<span v-else-if="item.columnProp === 'pic'"> |
|
|
|
|
|
{{ getTrackingRoleDisplayValue(scope.row, 'projectOwnerName', 'pic') }} |
|
|
|
|
|
</span> |
|
|
<span v-else>{{ getTrackingColumnDisplayValue(scope.row, item.columnProp) }}</span> |
|
|
<span v-else>{{ getTrackingColumnDisplayValue(scope.row, item.columnProp) }}</span> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
@ -159,15 +167,17 @@ |
|
|
placeholder="" |
|
|
placeholder="" |
|
|
style="width: 122px" |
|
|
style="width: 122px" |
|
|
@change="handleProcessDateChange(scope.row, item, $event)" |
|
|
@change="handleProcessDateChange(scope.row, item, $event)" |
|
|
|
|
|
@dblclick.native.stop="handleProcessDateDoubleClick(scope.row, item)" |
|
|
/> |
|
|
/> |
|
|
<el-button |
|
|
<el-button |
|
|
|
|
|
v-if="!isProcessStatusComplete(scope.row, item)" |
|
|
class="process-complete-btn" |
|
|
class="process-complete-btn" |
|
|
type="success" |
|
|
type="success" |
|
|
size="mini" |
|
|
size="mini" |
|
|
plain v-show="!isProcessStatusComplete(scope.row, item)" |
|
|
|
|
|
:disabled="isProcessStatusComplete(scope.row, item)" |
|
|
|
|
|
|
|
|
plain |
|
|
|
|
|
title="标记为已完成" |
|
|
@click.stop="markProcessComplete(scope.row, item)" |
|
|
@click.stop="markProcessComplete(scope.row, item)" |
|
|
>√</el-button> |
|
|
|
|
|
|
|
|
>✓</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div v-else class="process-cell process-cell--masked"></div> |
|
|
<div v-else class="process-cell process-cell--masked"></div> |
|
|
@ -1299,6 +1309,7 @@ export default { |
|
|
proofingStatus: '' |
|
|
proofingStatus: '' |
|
|
}, |
|
|
}, |
|
|
trackingColumnList: cloneDefaultTrackingColumns(), |
|
|
trackingColumnList: cloneDefaultTrackingColumns(), |
|
|
|
|
|
hasUserTrackingColumnConfig: false, |
|
|
processColumns: cloneDefaultProcessColumns(), |
|
|
processColumns: cloneDefaultProcessColumns(), |
|
|
processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()), |
|
|
processCodeLabelMap: buildProcessCodeLabelMapByRows(cloneDefaultProcessColumns()), |
|
|
buProcessConfigDialogVisible: false, |
|
|
buProcessConfigDialogVisible: false, |
|
|
@ -1483,9 +1494,11 @@ export default { |
|
|
}, |
|
|
}, |
|
|
computed: { |
|
|
computed: { |
|
|
visibleTrackingColumns () { |
|
|
visibleTrackingColumns () { |
|
|
const sourceColumns = Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0 |
|
|
|
|
|
|
|
|
const sourceColumns = this.hasUserTrackingColumnConfig |
|
|
|
|
|
? (Array.isArray(this.trackingColumnList) ? this.trackingColumnList : []) |
|
|
|
|
|
: ((Array.isArray(this.trackingColumnList) && this.trackingColumnList.length > 0) |
|
|
? this.trackingColumnList |
|
|
? this.trackingColumnList |
|
|
: this.buildDefaultTrackingColumns() |
|
|
|
|
|
|
|
|
: this.buildDefaultTrackingColumns()) |
|
|
return sourceColumns.filter(item => this.isTrackingColumnVisible(item)) |
|
|
return sourceColumns.filter(item => this.isTrackingColumnVisible(item)) |
|
|
}, |
|
|
}, |
|
|
visibleProcessColumns () { |
|
|
visibleProcessColumns () { |
|
|
@ -1571,7 +1584,8 @@ export default { |
|
|
normalizeTrackingColumnItem (item, fallbackItem) { |
|
|
normalizeTrackingColumnItem (item, fallbackItem) { |
|
|
const defaultItem = fallbackItem || {} |
|
|
const defaultItem = fallbackItem || {} |
|
|
const mergedItem = Object.assign({}, defaultItem, item || {}) |
|
|
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() |
|
|
const normalizedLabel = mergedItem.columnLabel == null ? '' : String(mergedItem.columnLabel).trim() |
|
|
return Object.assign({}, mergedItem, { |
|
|
return Object.assign({}, mergedItem, { |
|
|
columnProp: columnProp, |
|
|
columnProp: columnProp, |
|
|
@ -1585,7 +1599,7 @@ export default { |
|
|
columnHidden: this.normalizeTrackingColumnBoolean(mergedItem.columnHidden, false) |
|
|
columnHidden: this.normalizeTrackingColumnBoolean(mergedItem.columnHidden, false) |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
normalizeTrackingColumns (rows) { |
|
|
|
|
|
|
|
|
normalizeTrackingColumns (rows, appendDefaultColumns) { |
|
|
const defaultColumns = this.buildDefaultTrackingColumns() |
|
|
const defaultColumns = this.buildDefaultTrackingColumns() |
|
|
const defaultColumnMap = {} |
|
|
const defaultColumnMap = {} |
|
|
defaultColumns.forEach(item => { |
|
|
defaultColumns.forEach(item => { |
|
|
@ -1603,6 +1617,9 @@ export default { |
|
|
mergedRows.push(this.normalizeTrackingColumnItem(item, defaultColumnMap[columnProp])) |
|
|
mergedRows.push(this.normalizeTrackingColumnItem(item, defaultColumnMap[columnProp])) |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
if (appendDefaultColumns !== true) { |
|
|
|
|
|
return mergedRows |
|
|
|
|
|
} |
|
|
// 用户旧配置可能缺少新加列,这里按系统默认顺序补齐,避免新增列永远看不到。 |
|
|
// 用户旧配置可能缺少新加列,这里按系统默认顺序补齐,避免新增列永远看不到。 |
|
|
defaultColumns.forEach((defaultItem, defaultIndex) => { |
|
|
defaultColumns.forEach((defaultItem, defaultIndex) => { |
|
|
if (usedColumnPropMap[defaultItem.columnProp]) { |
|
|
if (usedColumnPropMap[defaultItem.columnProp]) { |
|
|
@ -1640,12 +1657,14 @@ export default { |
|
|
} |
|
|
} |
|
|
return getTableDefaultListLanguage(queryTable).then(({ data }) => { |
|
|
return getTableDefaultListLanguage(queryTable).then(({ data }) => { |
|
|
const rows = data && Array.isArray(data.rows) ? data.rows : [] |
|
|
const rows = data && Array.isArray(data.rows) ? data.rows : [] |
|
|
|
|
|
this.hasUserTrackingColumnConfig = false |
|
|
this.trackingColumnList = rows.length > 0 |
|
|
this.trackingColumnList = rows.length > 0 |
|
|
? this.normalizeTrackingColumns(rows) |
|
|
|
|
|
|
|
|
? this.normalizeTrackingColumns(rows, true) |
|
|
: this.buildDefaultTrackingColumns() |
|
|
: this.buildDefaultTrackingColumns() |
|
|
this.refreshTrackingTableLayout() |
|
|
this.refreshTrackingTableLayout() |
|
|
return this.trackingColumnList |
|
|
return this.trackingColumnList |
|
|
}).catch(() => { |
|
|
}).catch(() => { |
|
|
|
|
|
this.hasUserTrackingColumnConfig = false |
|
|
this.trackingColumnList = this.buildDefaultTrackingColumns() |
|
|
this.trackingColumnList = this.buildDefaultTrackingColumns() |
|
|
this.refreshTrackingTableLayout() |
|
|
this.refreshTrackingTableLayout() |
|
|
return this.trackingColumnList |
|
|
return this.trackingColumnList |
|
|
@ -1663,12 +1682,14 @@ export default { |
|
|
return getTableUserListLanguage(queryTableUser).then(({ data }) => { |
|
|
return getTableUserListLanguage(queryTableUser).then(({ data }) => { |
|
|
const rows = data && Array.isArray(data.rows) ? data.rows : [] |
|
|
const rows = data && Array.isArray(data.rows) ? data.rows : [] |
|
|
if (rows.length > 0) { |
|
|
if (rows.length > 0) { |
|
|
this.trackingColumnList = this.normalizeTrackingColumns(rows) |
|
|
|
|
|
|
|
|
this.hasUserTrackingColumnConfig = true |
|
|
|
|
|
this.trackingColumnList = this.normalizeTrackingColumns(rows, false) |
|
|
this.refreshTrackingTableLayout() |
|
|
this.refreshTrackingTableLayout() |
|
|
return this.trackingColumnList |
|
|
return this.trackingColumnList |
|
|
} |
|
|
} |
|
|
return this.loadTrackingDefaultColumns(tableId) |
|
|
return this.loadTrackingDefaultColumns(tableId) |
|
|
}).catch(() => { |
|
|
}).catch(() => { |
|
|
|
|
|
this.hasUserTrackingColumnConfig = false |
|
|
this.trackingColumnList = this.buildDefaultTrackingColumns() |
|
|
this.trackingColumnList = this.buildDefaultTrackingColumns() |
|
|
this.refreshTrackingTableLayout() |
|
|
this.refreshTrackingTableLayout() |
|
|
return this.trackingColumnList |
|
|
return this.trackingColumnList |
|
|
@ -4484,6 +4505,31 @@ export default { |
|
|
remark: '表格一键完成' |
|
|
remark: '表格一键完成' |
|
|
}, false, '工序已标记为完成') |
|
|
}, 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) { |
|
|
updateProcessFromTable (row, processCol, processData, silentSuccess, successMsg) { |
|
|
if (!row || !processCol || !row.trackingId) { |
|
|
if (!row || !processCol || !row.trackingId) { |
|
|
this.$message.error('工序参数缺失') |
|
|
this.$message.error('工序参数缺失') |
|
|
|