|
|
@ -344,7 +344,7 @@ |
|
|
<el-tab-pane label="审批信息-部门经理" name="departmentManagerInfo"> |
|
|
<el-tab-pane label="审批信息-部门经理" name="departmentManagerInfo"> |
|
|
<div style="height: 715px; overflow-y: auto;"> |
|
|
<div style="height: 715px; overflow-y: auto;"> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;"> |
|
|
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;"> |
|
|
<el-form-item label="备注(部门经理)" style="display: block;"> |
|
|
|
|
|
|
|
|
<el-form-item label="备注" style="display: block;"> |
|
|
<el-input type="textarea" :rows="4" v-model="modalData.departmentManagerComments" :disabled="isLabFieldDisabled('departmentManagerComments')" resize="none" style="width: 780px"></el-input> |
|
|
<el-input type="textarea" :rows="4" v-model="modalData.departmentManagerComments" :disabled="isLabFieldDisabled('departmentManagerComments')" resize="none" style="width: 780px"></el-input> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
@ -589,19 +589,99 @@ |
|
|
</el-form> |
|
|
</el-form> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
<el-tabs v-model="activeTable" type="border-card" style="margin-top: 6px; width: 100%; min-height: 300px;" @tab-click="tabClick"> |
|
|
|
|
|
|
|
|
<el-tabs v-model="activeTable" type="border-card" style="width: 100%; height: 100%;" @tab-click="tabClick" v-loading="currentDetailLoading" class="customer-tab"> |
|
|
<el-tab-pane label="基本信息" name="basicInfo"> |
|
|
<el-tab-pane label="基本信息" name="basicInfo"> |
|
|
<el-form :inline="true" label-position="top" :model="currentRow" style="margin-top: 5px;"> |
|
|
|
|
|
<el-form-item label="申请人"><el-input :value="currentRow.applicant || ''" disabled style="width: 150px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请人名称"><el-input :value="currentRow.applicantName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请日期"><el-input :value="normalizeDateOnly(currentRow.applicationDate)" disabled style="width: 150px"></el-input></el-form-item> |
|
|
|
|
|
|
|
|
<div :style="{height: secondHeight + 'px'}" style="margin-left: 5px;margin-top: 5px; overflow-y: auto;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="序列号"><el-input :value="currentDetail.referenceNo || ''" disabled style="width: 150px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请人"><el-input :value="currentDetail.applicant || ''" disabled style="width: 120px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请人名称"><el-input :value="currentDetail.applicantName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请日期"><el-input :value="normalizeDateOnly(currentDetail.applicationDate)" disabled style="width: 130px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="Site"><el-input :value="currentDetail.site || ''" disabled style="width: 110px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="申请部门"><el-input :value="currentDetail.applyDepartment || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="需求日期"><el-input :value="normalizeDateOnly(currentDetail.requestedDate)" disabled style="width: 130px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="客户"><el-input :value="currentDetail.customerId || ''" disabled style="width: 130px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="客户名称"><el-input :value="currentDetail.customerName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="项目"><el-input :value="currentDetail.projectId || ''" disabled style="width: 130px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="项目名称"><el-input :value="currentDetail.projectName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="样品名称"><el-input :value="currentDetail.sampleName || ''" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="样品型号"><el-input :value="currentDetail.sampleModel || ''" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="样品数量"><el-input :value="currentDetail.sampleQty || ''" disabled style="width: 140px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="测试目的"><el-input :value="currentDetail.testPurpose || ''" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="产品阶段"><el-input :value="currentDetail.productStage || ''" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="测试类型"><el-input :value="currentDetail.testType || ''" disabled style="width: 140px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="报告出具"><el-input :value="currentDetail.reportDocument || ''" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="样品退回"><el-input :value="displayYesNo(currentDetail.returnSample)" disabled style="width: 200px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="测试实验室"><el-input :value="currentDetail.testLab || ''" disabled style="width: 140px"></el-input></el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="应用表面" style="display: block;"> |
|
|
|
|
|
<el-input :value="currentDetail.applicationSurface || ''" disabled style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="注意事项" style="display: block;"> |
|
|
|
|
|
<el-input type="textarea" :rows="2" :value="currentDetail.attention || ''" disabled resize="none" style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail" style="margin-top: 30px"> |
|
|
|
|
|
<el-form-item label="属性信息" style="display: block;"> |
|
|
|
|
|
<el-table |
|
|
|
|
|
:data="currentDetail.propertyItemList || []" |
|
|
|
|
|
border |
|
|
|
|
|
:height="170" |
|
|
|
|
|
style="width: 810px;"> |
|
|
|
|
|
<el-table-column prop="itemNo" header-align="center" align="center" label="属性编码" width="160"></el-table-column> |
|
|
|
|
|
<el-table-column prop="itemDesc" header-align="center" align="left" label="属性名称" min-width="260"></el-table-column> |
|
|
|
|
|
<el-table-column prop="itemValue" header-align="center" align="left" label="属性值" min-width="300" show-overflow-tooltip></el-table-column> |
|
|
|
|
|
</el-table> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
<el-tab-pane label="结果信息" name="resultInfo"> |
|
|
|
|
|
<div :style="{height: secondHeight + 'px'}" style="margin-left: 5px;margin-top: 5px; overflow-y: auto;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="测试开始时间"><el-input :value="normalizeDateOnly(currentDetail.testStartDate)" disabled style="width: 170px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="测试完成日期"><el-input :value="normalizeDateOnly(currentDetail.completedDate)" disabled style="width: 170px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="测试编码"><el-input :value="currentDetail.testNumber || ''" disabled style="width: 170px"></el-input></el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-form :inline="true" label-position="top" :model="currentRow"> |
|
|
|
|
|
<el-form-item label="客户"><el-input :value="currentRow.customerId || ''" disabled style="width: 150px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="客户名称"><el-input :value="currentRow.customerName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="项目"><el-input :value="currentRow.projectId || ''" disabled style="width: 150px"></el-input></el-form-item> |
|
|
|
|
|
<el-form-item label="项目名称"><el-input :value="currentRow.projectName || ''" disabled style="width: 180px"></el-input></el-form-item> |
|
|
|
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="异常情况及说明" style="display: block;"> |
|
|
|
|
|
<el-input type="textarea" :rows="3" :value="currentDetail.unnormalSymptomAndDescription || ''" disabled resize="none" style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail" style="margin-top: 45px"> |
|
|
|
|
|
<el-form-item label="备注" style="display: block;"> |
|
|
|
|
|
<el-input type="textarea" :rows="3" :value="currentDetail.testerComments || ''" disabled resize="none" style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
<el-tab-pane label="审批信息-部门经理" name="departmentManagerInfo"> |
|
|
|
|
|
<div :style="{height: secondHeight + 'px'}" style="margin-left: 5px;margin-top: 5px; overflow-y: auto;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="备注" style="display: block;"> |
|
|
|
|
|
<el-input type="textarea" :rows="6" :value="currentDetail.departmentManagerComments || ''" disabled resize="none" style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
<el-tab-pane label="审批信息-实验室" name="labInfo"> |
|
|
|
|
|
<div :style="{height: secondHeight + 'px'}" style="margin-left: 5px;margin-top: 5px; overflow-y: auto;"> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail"> |
|
|
|
|
|
<el-form-item label="备注" style="display: block;"> |
|
|
|
|
|
<el-input type="textarea" :rows="3" :value="currentDetail.labComments || ''" disabled resize="none" style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="currentDetail" style="margin-top: 45px"> |
|
|
|
|
|
<el-form-item label="测试人"> |
|
|
|
|
|
<el-input :value="currentDetail.testerName || currentDetail.tester || ''" disabled style="width: 810px"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
|
|
|
|
</div> |
|
|
</el-tab-pane> |
|
|
</el-tab-pane> |
|
|
<el-tab-pane label="审批信息" name="approvalInformation"> |
|
|
<el-tab-pane label="审批信息" name="approvalInformation"> |
|
|
<approval-information v-model:data-list="approvalList" :height="secondHeight"></approval-information> |
|
|
<approval-information v-model:data-list="approvalList" :height="secondHeight"></approval-information> |
|
|
@ -672,6 +752,9 @@ export default { |
|
|
height: 400, |
|
|
height: 400, |
|
|
secondHeight: 200, |
|
|
secondHeight: 200, |
|
|
currentRow: {}, |
|
|
currentRow: {}, |
|
|
|
|
|
currentDetail: this.buildDefaultModalData(), |
|
|
|
|
|
currentDetailLoading: false, |
|
|
|
|
|
currentDetailRequestId: 0, |
|
|
nodeOptions: [], |
|
|
nodeOptions: [], |
|
|
approvalList: [], |
|
|
approvalList: [], |
|
|
plmLabAuthorityArr: [], |
|
|
plmLabAuthorityArr: [], |
|
|
@ -1556,13 +1639,79 @@ export default { |
|
|
return { cursor: 'pointer' } |
|
|
return { cursor: 'pointer' } |
|
|
}, |
|
|
}, |
|
|
changeClickRow (row) { |
|
|
changeClickRow (row) { |
|
|
this.currentRow = row || {} |
|
|
|
|
|
this.refreshCurrentTabTable() |
|
|
|
|
|
|
|
|
this.handleCurrentRowChange(row) |
|
|
}, |
|
|
}, |
|
|
currentChange (row) { |
|
|
currentChange (row) { |
|
|
this.currentRow = row || {} |
|
|
|
|
|
|
|
|
this.handleCurrentRowChange(row) |
|
|
|
|
|
}, |
|
|
|
|
|
handleCurrentRowChange (row) { |
|
|
|
|
|
const nextRow = row || {} |
|
|
|
|
|
const prevSite = (this.currentRow && this.currentRow.site) || '' |
|
|
|
|
|
const prevReferenceNo = (this.currentRow && this.currentRow.referenceNo) || '' |
|
|
|
|
|
const nextSite = nextRow.site || '' |
|
|
|
|
|
const nextReferenceNo = nextRow.referenceNo || '' |
|
|
|
|
|
this.currentRow = nextRow |
|
|
|
|
|
if (!nextSite || !nextReferenceNo) { |
|
|
|
|
|
this.currentDetailRequestId += 1 |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
|
|
|
this.currentDetail = this.buildDefaultModalData() |
|
|
|
|
|
this.refreshCurrentTabTable() |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (prevSite !== nextSite || prevReferenceNo !== nextReferenceNo) { |
|
|
|
|
|
this.loadCurrentDetail(nextRow) |
|
|
|
|
|
} |
|
|
this.refreshCurrentTabTable() |
|
|
this.refreshCurrentTabTable() |
|
|
}, |
|
|
}, |
|
|
|
|
|
loadCurrentDetail (row) { |
|
|
|
|
|
if (!row || !row.site || !row.referenceNo) { |
|
|
|
|
|
this.currentDetailRequestId += 1 |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
|
|
|
this.currentDetail = this.buildDefaultModalData() |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
const requestId = this.currentDetailRequestId + 1 |
|
|
|
|
|
this.currentDetailRequestId = requestId |
|
|
|
|
|
this.currentDetailLoading = true |
|
|
|
|
|
api.getLabDetail(row.site, row.referenceNo).then(({data}) => { |
|
|
|
|
|
if (requestId !== this.currentDetailRequestId) { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
const detail = data.data || {} |
|
|
|
|
|
const mergedDetail = { |
|
|
|
|
|
...this.buildDefaultModalData(), |
|
|
|
|
|
...row, |
|
|
|
|
|
...detail |
|
|
|
|
|
} |
|
|
|
|
|
this.fillDisplayFields(mergedDetail, row || {}) |
|
|
|
|
|
this.$set(mergedDetail, 'propertyItemList', (detail.propertyItemList || []).map(item => this.normalizePropertyItem(item))) |
|
|
|
|
|
this.$set(mergedDetail, 'testerList', this.normalizeTesterList(mergedDetail.tester)) |
|
|
|
|
|
this.currentDetail = mergedDetail |
|
|
|
|
|
} else { |
|
|
|
|
|
const fallbackDetail = { |
|
|
|
|
|
...this.buildDefaultModalData(), |
|
|
|
|
|
...row |
|
|
|
|
|
} |
|
|
|
|
|
this.fillDisplayFields(fallbackDetail, row || {}) |
|
|
|
|
|
this.currentDetail = fallbackDetail |
|
|
|
|
|
} |
|
|
|
|
|
}).catch(() => { |
|
|
|
|
|
if (requestId !== this.currentDetailRequestId) { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
const fallbackDetail = { |
|
|
|
|
|
...this.buildDefaultModalData(), |
|
|
|
|
|
...row |
|
|
|
|
|
} |
|
|
|
|
|
this.fillDisplayFields(fallbackDetail, row || {}) |
|
|
|
|
|
this.currentDetail = fallbackDetail |
|
|
|
|
|
}).finally(() => { |
|
|
|
|
|
if (requestId === this.currentDetailRequestId) { |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
tabClick () { |
|
|
tabClick () { |
|
|
this.refreshCurrentTabTable() |
|
|
this.refreshCurrentTabTable() |
|
|
}, |
|
|
}, |
|
|
@ -1596,6 +1745,9 @@ export default { |
|
|
this.dataList = [] |
|
|
this.dataList = [] |
|
|
this.totalPage = 0 |
|
|
this.totalPage = 0 |
|
|
this.currentRow = {} |
|
|
this.currentRow = {} |
|
|
|
|
|
this.currentDetailRequestId += 1 |
|
|
|
|
|
this.currentDetail = this.buildDefaultModalData() |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
this.approvalList = [] |
|
|
this.approvalList = [] |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@ -1635,11 +1787,17 @@ export default { |
|
|
this.dataList = [] |
|
|
this.dataList = [] |
|
|
this.totalPage = 0 |
|
|
this.totalPage = 0 |
|
|
this.currentRow = {} |
|
|
this.currentRow = {} |
|
|
|
|
|
this.currentDetailRequestId += 1 |
|
|
|
|
|
this.currentDetail = this.buildDefaultModalData() |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
this.approvalList = [] |
|
|
this.approvalList = [] |
|
|
} |
|
|
} |
|
|
this.dataListLoading = false |
|
|
this.dataListLoading = false |
|
|
}).catch(() => { |
|
|
}).catch(() => { |
|
|
this.currentRow = {} |
|
|
this.currentRow = {} |
|
|
|
|
|
this.currentDetailRequestId += 1 |
|
|
|
|
|
this.currentDetail = this.buildDefaultModalData() |
|
|
|
|
|
this.currentDetailLoading = false |
|
|
this.approvalList = [] |
|
|
this.approvalList = [] |
|
|
this.dataListLoading = false |
|
|
this.dataListLoading = false |
|
|
}) |
|
|
}) |
|
|
@ -2137,6 +2295,10 @@ export default { |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
<style scoped> |
|
|
<style scoped> |
|
|
|
|
|
/deep/ .customer-tab .el-tabs__content { |
|
|
|
|
|
padding: 0 !important; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.mod-config /deep/ .el-tabs--border-card > .el-tabs__content { |
|
|
.mod-config /deep/ .el-tabs--border-card > .el-tabs__content { |
|
|
padding-top: 8px; |
|
|
padding-top: 8px; |
|
|
} |
|
|
} |
|
|
|