|
|
|
@ -28,7 +28,22 @@ |
|
|
|
<el-form-item :label="' '"> |
|
|
|
<el-button v-if="authSearch" @click="getDataList">查询</el-button> |
|
|
|
<el-button v-if="authUpdate" @click="addOrUpdateHandle()">新增</el-button> |
|
|
|
<el-button v-if="authSearch" @click="exportHandle()">导出</el-button> |
|
|
|
<download-excel |
|
|
|
v-if="authSearch" |
|
|
|
:fields="exportFieldMap" |
|
|
|
:data="exportData" |
|
|
|
type="xls" |
|
|
|
:name="exportName" |
|
|
|
:header="exportHeader" |
|
|
|
:footer="exportFooter" |
|
|
|
:fetch="createExportData" |
|
|
|
:before-generate="startDownload" |
|
|
|
:before-finish="finishDownload" |
|
|
|
worksheet="导出信息" |
|
|
|
:class="['el-button', 'el-button--primary', 'el-button--medium', {'is-loading': exportLoading}]"> |
|
|
|
<i v-if="exportLoading" class="el-icon-loading"></i> |
|
|
|
<span>{{ "导出" }}</span> |
|
|
|
</download-excel> |
|
|
|
<el-button v-if="authSearch" @click="searchHandle()">搜索</el-button> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
@ -54,7 +69,7 @@ |
|
|
|
<el-table-column prop="pm" header-align="center" align="center" label="PM编码" width="130"></el-table-column> |
|
|
|
<el-table-column prop="pmName" header-align="center" align="center" label="PM名称" width="150"></el-table-column> |
|
|
|
<el-table-column prop="applicationDate" header-align="center" align="center" label="申请日期" width="165"></el-table-column> |
|
|
|
<el-table-column header-align="center" align="center" label="计划转量产时间" width="165"> |
|
|
|
<el-table-column prop="plannedMassProductionDate" header-align="center" align="center" label="计划转量产时间" width="165"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ normalizeDateOnly(scope.row.plannedMassProductionDate) }}</span> |
|
|
|
</template> |
|
|
|
@ -88,7 +103,7 @@ |
|
|
|
<el-table-column prop="expectReportTime" header-align="center" align="center" label="报告时间(月)" width="200"></el-table-column> |
|
|
|
<el-table-column prop="sgsReportNumber" header-align="center" align="center" label="SGS报告编号" width="190" :show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="expiredDate" header-align="center" align="center" label="报告日期" width="165"></el-table-column> |
|
|
|
<el-table-column header-align="center" align="center" label="有效期" width="170" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column prop="validUntilDisplay" header-align="center" align="center" label="有效期" width="170" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ getValidUntilDisplay(scope.row.validUntilValue, scope.row.validUntil) }}</span> |
|
|
|
</template> |
|
|
|
@ -951,6 +966,13 @@ export default { |
|
|
|
currentApprover: '', |
|
|
|
nodeId: '' |
|
|
|
}, |
|
|
|
exportLoading: false, |
|
|
|
exportData: [], |
|
|
|
exportFieldMap: {}, |
|
|
|
exportName: '', |
|
|
|
exportHeader: ['RoHs记录'], |
|
|
|
exportFooter: [], |
|
|
|
resultList: [], |
|
|
|
dataList: [], |
|
|
|
pageIndex: 1, |
|
|
|
pageSize: 20, |
|
|
|
@ -1930,7 +1952,7 @@ export default { |
|
|
|
if (!target) { |
|
|
|
return |
|
|
|
} |
|
|
|
const fields = ['applicantName', 'pmName', 'npdEngineerName', 'technicalPlanName', 'buyerName', 'endCustomerName', 'projectName', 'commGroup1Desc', 'commGroup2Desc', 'commGroup3Desc'] |
|
|
|
const fields = ['nodeId', 'nodeName', 'currentApprover', 'applicantName', 'pmName', 'npdEngineerName', 'technicalPlanName', 'buyerName', 'endCustomerName', 'projectName', 'commGroup1Desc', 'commGroup2Desc', 'commGroup3Desc'] |
|
|
|
fields.forEach(field => { |
|
|
|
const value = target[field] || fallbackData[field] || '' |
|
|
|
this.$set(target, field, value) |
|
|
|
@ -2060,6 +2082,73 @@ export default { |
|
|
|
this.pageIndex = 1 |
|
|
|
this.getDataList() |
|
|
|
}, |
|
|
|
buildExportName () { |
|
|
|
const now = new Date() |
|
|
|
const year = String(now.getFullYear()) |
|
|
|
const month = String(now.getMonth() + 1).padStart(2, '0') |
|
|
|
const day = String(now.getDate()).padStart(2, '0') |
|
|
|
const hour = String(now.getHours()).padStart(2, '0') |
|
|
|
const minute = String(now.getMinutes()).padStart(2, '0') |
|
|
|
const second = String(now.getSeconds()).padStart(2, '0') |
|
|
|
return 'RoHs记录' + year + month + day + hour + minute + second |
|
|
|
}, |
|
|
|
async createExportData () { |
|
|
|
const params = { |
|
|
|
...this.searchData, |
|
|
|
site: this.$store.state.user.site, |
|
|
|
menuId: this.menuId, |
|
|
|
page: 1, |
|
|
|
limit: -1 |
|
|
|
} |
|
|
|
this.resultList = [] |
|
|
|
await api.getRohsList(params).then(({data}) => { |
|
|
|
if (data && data.code === 0 && data.page && Array.isArray(data.page.list)) { |
|
|
|
this.resultList = (data.page.list || []).map(item => { |
|
|
|
const row = { |
|
|
|
...item |
|
|
|
} |
|
|
|
row.applicationDate = this.normalizeDateOnly(row.applicationDate) |
|
|
|
row.plannedMassProductionDate = this.normalizeDateOnly(row.plannedMassProductionDate) |
|
|
|
row.materialValidityTime = this.normalizeDateOnly(row.materialValidityTime) |
|
|
|
row.expiredDate = this.normalizeDateOnly(row.expiredDate) |
|
|
|
row.validUntilDisplay = this.getValidUntilDisplay(row.validUntilValue, row.validUntil) |
|
|
|
return row |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.$message.warning((data && data.msg) || '导出数据获取失败') |
|
|
|
} |
|
|
|
}).catch(() => { |
|
|
|
this.$message.error('导出数据获取失败') |
|
|
|
}) |
|
|
|
return this.resultList |
|
|
|
}, |
|
|
|
startDownload () { |
|
|
|
this.exportName = this.buildExportName() |
|
|
|
this.exportFieldMap = this.buildExportFields() |
|
|
|
if (!this.exportFieldMap || Object.keys(this.exportFieldMap).length === 0) { |
|
|
|
this.$message.warning('未获取到可导出的列,请稍后重试') |
|
|
|
} |
|
|
|
this.exportLoading = true |
|
|
|
}, |
|
|
|
finishDownload () { |
|
|
|
this.exportLoading = false |
|
|
|
}, |
|
|
|
buildExportFields () { |
|
|
|
const tableRef = this.$refs.rohsTable |
|
|
|
if (!tableRef || !Array.isArray(tableRef.columns)) { |
|
|
|
return {} |
|
|
|
} |
|
|
|
const fields = {} |
|
|
|
tableRef.columns.forEach(column => { |
|
|
|
const label = column && column.label ? String(column.label).trim() : '' |
|
|
|
const property = column && column.property ? String(column.property).trim() : '' |
|
|
|
if (!label || !property || label === '操作') { |
|
|
|
return |
|
|
|
} |
|
|
|
fields[label] = property |
|
|
|
}) |
|
|
|
return fields |
|
|
|
}, |
|
|
|
// 单选可取消 |
|
|
|
radioClick (field, value) { |
|
|
|
if (this.modalData[field] === value) { |
|
|
|
@ -2068,13 +2157,6 @@ export default { |
|
|
|
this.modalData[field] = value |
|
|
|
} |
|
|
|
}, |
|
|
|
// 导出 |
|
|
|
exportHandle () { |
|
|
|
if (!this.authSearch) { |
|
|
|
return |
|
|
|
} |
|
|
|
this.$message.info('导出功能开发中') |
|
|
|
}, |
|
|
|
// 新增 / 修改 |
|
|
|
addOrUpdateHandle (row) { |
|
|
|
if (!row && !this.authUpdate) { |
|
|
|
|