Browse Source

打样记录

master
han\hanst 2 days ago
parent
commit
3fe2d74fc5
  1. 145
      src/views/modules/eam/eamProjectPartInfo.vue
  2. 7
      src/views/modules/sampleTracking/projectProofTracking.vue

145
src/views/modules/eam/eamProjectPartInfo.vue

@ -1573,6 +1573,30 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="项目打样记录" name="projectProofRecord">
<el-table
:data="projectProofRecordList"
border
style="width: 100%; margin-top: 5px;"
:height="this.height + 250"
v-loading="dataListLoading">
<el-table-column
v-for="(item, index) in columnProjectProofRecordList"
:key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="true"
:align="item.align"
:fixed="item.fixed === '' ? false : item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs> </el-tabs>
<div slot="footer" class="dialog-footer" style="margin-top: 0px"> <div slot="footer" class="dialog-footer" style="margin-top: 0px">
<el-button @click="dialogVisible = false">关闭</el-button> <el-button @click="dialogVisible = false">关闭</el-button>
@ -1736,7 +1760,8 @@ import {
getExtraDocumentList, getProofDocument, getExtraDocumentList, getProofDocument,
projectDocumentSave, projectDocumentSave,
proofingDocumentNEW, proofingDocumentSave, proofingInformationSave, proofingDocumentNEW, proofingDocumentSave, proofingInformationSave,
searchProjectAllDocument
searchProjectAllDocument,
searchAllProofing
} from "../../../api/eam/eamProofing"; } from "../../../api/eam/eamProofing";
import { import {
deleteAndSaveHandle, deleteAndSaveHandle,
@ -1942,6 +1967,7 @@ import {uploadFileList} from '@/api/base/baseFunction.js';
projectANotDocumentConfirmatorList: [], projectANotDocumentConfirmatorList: [],
projectPartBomList: [],// 量产BOM原始平面数据数组 projectPartBomList: [],// 量产BOM原始平面数据数组
projectPartRoutingList: [],// 原始平面数据数组 projectPartRoutingList: [],// 原始平面数据数组
projectProofRecordList: [],
confirmatorySelection1: [], confirmatorySelection1: [],
confirmatorySelection2: [], confirmatorySelection2: [],
proofDocumentListDefinition: [], proofDocumentListDefinition: [],
@ -3489,6 +3515,47 @@ import {uploadFileList} from '@/api/base/baseFunction.js';
columnWidth: 150, columnWidth: 150,
}, },
], ],
// 与项目打样记录页表格列保持一致,详情里只按当前项目料号展示,不走列配置收藏。
columnProjectProofRecordList: [
{ columnProp: 'buDesc', headerAlign: 'center', align: 'center', columnLabel: 'BU', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'projectNo', headerAlign: 'center', align: 'center', columnLabel: '项目编码', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'projectDesc', headerAlign: 'center', align: 'center', columnLabel: '项目名称', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'testPartNo', headerAlign: 'center', align: 'center', columnLabel: '项目料号', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'partDesc', headerAlign: 'center', align: 'center', columnLabel: '料号描述', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'customerNo', headerAlign: 'center', align: 'left', columnLabel: '客户编码', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'customerDesc', headerAlign: 'center', align: 'left', columnLabel: '客户名称', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 150 },
{ columnProp: 'buildDate', headerAlign: 'center', align: 'center', columnLabel: '立项日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'priority', headerAlign: 'center', align: 'left', columnLabel: '优先级', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 80 },
{ columnProp: 'cProjectRegion', headerAlign: 'center', align: 'left', columnLabel: '区域', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'projectManagerName', headerAlign: 'center', align: 'left', columnLabel: 'PM/Sales', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'projectOwnerName', headerAlign: 'center', align: 'left', columnLabel: 'PjM', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'engineerName', headerAlign: 'center', align: 'left', columnLabel: 'Engineer', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cQualityEngineer1Name', headerAlign: 'center', align: 'left', columnLabel: 'IPQC-Lam/Pri/Etch/Slit', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 170 },
{ columnProp: 'cQualityEngineer2Name', headerAlign: 'center', align: 'left', columnLabel: 'IPQC-Converting', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 150 },
{ columnProp: 'cQualityEngineer3Name', headerAlign: 'center', align: 'left', columnLabel: 'FQC1', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cQualityEngineer5Name', headerAlign: 'center', align: 'left', columnLabel: 'FQC2', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cQualityEngineer6Name', headerAlign: 'center', align: 'left', columnLabel: 'IQC', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cManufactureEngineerName', headerAlign: 'center', align: 'left', columnLabel: 'MFG', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cQualityEngineer4Name', headerAlign: 'center', align: 'left', columnLabel: 'SQE', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'docEngineerName', headerAlign: 'center', align: 'left', columnLabel: '文档工程师', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'docEngineer2Name', headerAlign: 'center', align: 'left', columnLabel: '文档工程师2', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'ipqcHardTagName', headerAlign: 'center', align: 'left', columnLabel: 'IPQC-Hardtag', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'cQualityEngineer7Name', headerAlign: 'center', align: 'left', columnLabel: '前道工程师', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'status', headerAlign: 'center', align: 'left', columnLabel: '物料状态', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'proofingStatus', headerAlign: 'center', align: 'left', columnLabel: '打样状态', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'proofingResultStatus', headerAlign: 'center', align: 'left', columnLabel: '打样结论', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 100 },
{ columnProp: 'needDate', headerAlign: 'center', align: 'center', columnLabel: '项目物料预计完成日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 130 },
{ columnProp: 'closeDate', headerAlign: 'center', align: 'center', columnLabel: '转量产日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'finalPartNo', headerAlign: 'center', align: 'left', columnLabel: 'ERP正式料号', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'planStartDate', headerAlign: 'center', align: 'center', columnLabel: '打样开始日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 90 },
{ columnProp: 'proofingNo', headerAlign: 'center', align: 'center', columnLabel: '打样单号', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 80 },
{ columnProp: 'proofingNumber', headerAlign: 'center', align: 'center', columnLabel: '数量', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 80 },
{ columnProp: 'cProjectTypeDb', headerAlign: 'center', align: 'left', columnLabel: '项目分类', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 80 },
{ columnProp: 'requiredDeliveryDate', headerAlign: 'center', align: 'center', columnLabel: '打样预计完成日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 120 },
{ columnProp: 'actualityDeliveryDate', headerAlign: 'center', align: 'center', columnLabel: '实际完成日期', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 80 },
{ columnProp: 'createDate', headerAlign: 'center', align: 'center', columnLabel: '打样单创建时间', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 130 },
{ columnProp: 'createBy', headerAlign: 'center', align: 'center', columnLabel: '打样单创建人', columnHidden: false, columnSortable: false, fixed: '', columnWidth: 90 }
],
levelList: [], levelList: [],
rules:{ rules:{
projectNo:[ projectNo:[
@ -5182,6 +5249,7 @@ import {uploadFileList} from '@/api/base/baseFunction.js';
showProofDetailModal(row) { showProofDetailModal(row) {
this.activeModalTab = 'proofRecord' this.activeModalTab = 'proofRecord'
this.projectProofRecordList = []
// 保存当前行数据 // 保存当前行数据
this.proofingCurrentRow = JSON.parse(JSON.stringify(row)); this.proofingCurrentRow = JSON.parse(JSON.stringify(row));
// 打开模态框 // 打开模态框
@ -6726,6 +6794,76 @@ import {uploadFileList} from '@/api/base/baseFunction.js';
}) })
}, },
// 项目打样记录页存的是“账号-姓名”,列表只展示姓名;空值不能直接 split,否则整表渲染中断。
fillProofRecordPersonName (item) {
const nameFields = [
['projectManager', 'projectManagerName'],
['projectOwner', 'projectOwnerName'],
['engineer', 'engineerName'],
['cQualityEngineer1', 'cQualityEngineer1Name'],
['cQualityEngineer2', 'cQualityEngineer2Name'],
['cQualityEngineer3', 'cQualityEngineer3Name'],
['cManufactureEngineer', 'cManufactureEngineerName'],
['cQualityEngineer4', 'cQualityEngineer4Name'],
['cQualityEngineer5', 'cQualityEngineer5Name'],
['cQualityEngineer6', 'cQualityEngineer6Name'],
['docEngineer', 'docEngineerName'],
['docEngineer2', 'docEngineer2Name'],
['ipqcHardTag', 'ipqcHardTagName'],
['cQualityEngineer7', 'cQualityEngineer7Name']
]
nameFields.forEach(([source, target]) => {
const value = item[source]
if (value === null || value === undefined || value === '') {
item[target] = ''
return
}
const parts = String(value).split('-')
item[target] = parts.length > 1 ? parts[1] : String(value)
})
},
// 详情弹窗绑定的是当前项目物料,打样记录必须按该物料的项目料号收口,避免带出其他料号。
fetchProjectProofRecordList () {
const testPartNo = this.proofingCurrentRow && this.proofingCurrentRow.testPartNo
? String(this.proofingCurrentRow.testPartNo).trim()
: ''
if (!testPartNo) {
this.projectProofRecordList = []
return
}
this.dataListLoading = true
const inData = {
site: this.proofingCurrentRow.site,
username: this.$store.state.user.name,
testPartNo: testPartNo,
page: 1,
limit: 1000
}
searchAllProofing(inData).then(({data}) => {
// 切走页签后丢弃旧响应,避免慢请求把其他页签的加载状态和列表覆盖掉。
if (this.activeModalTab !== 'projectProofRecord') {
return
}
this.dataListLoading = false
if (data && data.code === 0 && data.page) {
// 打样查询接口按料号模糊匹配,详情页只保留与当前项目料号完全一致的记录。
const list = (data.page.list || []).filter(item => String(item.testPartNo || '').trim() === testPartNo)
list.forEach(item => this.fillProofRecordPersonName(item))
this.projectProofRecordList = list
} else {
this.projectProofRecordList = []
this.$message.error((data && data.msg) || '项目打样记录查询失败')
}
}).catch(() => {
if (this.activeModalTab !== 'projectProofRecord') {
return
}
this.dataListLoading = false
this.projectProofRecordList = []
})
},
copyFile (row) { copyFile (row) {
this.copyModalData = { this.copyModalData = {
...row, ...row,
@ -6853,6 +6991,11 @@ import {uploadFileList} from '@/api/base/baseFunction.js';
} else { } else {
this.projectPartRoutingList = [] this.projectPartRoutingList = []
} }
if (this.activeModalTab === 'projectProofRecord') {
this.fetchProjectProofRecordList()
} else {
this.projectProofRecordList = []
}
}, },
//获取按钮的权限数据 //获取按钮的权限数据
getButtonAuthData () { getButtonAuthData () {

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

@ -972,13 +972,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16">
<el-col :span="24" v-show="isOneKeyCreateFieldVisible('remark')">
<el-form-item label="备注">
<el-input v-model="oneKeyForm.remark" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<el-footer style="height: 40px; margin-top: 40px; text-align: center"> <el-footer style="height: 40px; margin-top: 40px; text-align: center">
<el-button @click="oneKeyDialogVisible = false">{{ isOneKeyDetailMode ? '关闭' : '取消' }}</el-button> <el-button @click="oneKeyDialogVisible = false">{{ isOneKeyDetailMode ? '关闭' : '取消' }}</el-button>

Loading…
Cancel
Save