Browse Source

物料管理优化

master
shenzhouyu 1 month ago
parent
commit
109abb8739
  1. 16
      cclqms-vue/src/api/qc/qc.js
  2. 22
      cclqms-vue/src/i18n/locales/qc.cn.js
  3. 22
      cclqms-vue/src/i18n/locales/qc.en.js
  4. 170
      cclqms-vue/src/views/modules/qc/IQCBatchPurchaseAdd.vue
  5. 1
      cclqms-vue/src/views/modules/qc/IQCResultEntry.vue
  6. 133
      cclqms-vue/src/views/modules/qc/file_collect_upload.vue
  7. 1193
      cclqms-vue/src/views/modules/qc/qcPartAttribute.vue
  8. 44
      cclqms-vue/src/views/modules/qc/qc_spec_upload.vue

16
cclqms-vue/src/api/qc/qc.js

@ -1,4 +1,5 @@
import { createAPI } from "@/utils/httpRequest.js";
import httpRequest from '@/utils/httpRequest'
// ===================================== 检验方法 =====================================
export const qcMethodSearch = data => createAPI(`/pms/qc/qcMethodSearch`,'post',data)
@ -103,6 +104,14 @@ export const qcPartFileCollectBatchAdd = data => createAPI(`/pms/qc/qcPartFileCo
export const qcPartFileCollectBatchSave = data => createAPI(`/pms/qc/qcPartFileCollectBatchSave`,'post',data)
export const qcPartFileCollectBatchDelete = data => createAPI(`/pms/qc/qcPartFileCollectBatchDelete`,'post',data)
export const qcPartFileCollectReplace = data => createAPI(`/pms/qc/qcPartFileCollectReplace`,'post',data)
export const qcPartFileCollectUpload = data => createAPI(`/pms/qc/qcPartFileCollectUpload`,'post',data)
export const downloadQcPartFileCollectTemplate = () => {
return httpRequest({
url: httpRequest.adornUrl('/pms/qc/downloadQcPartFileCollectTemplate'),
method: 'get',
responseType: 'blob'
})
}
export const queryFileId = data => createAPI(`/pms/qc/queryFileId`,'post',data)
export const getPartDefectTracking = data => createAPI(`/pms/qc/getPartDefectTracking`,'post',data)
export const saveDefectTracking = data => createAPI(`/pms/qc/saveDefectTracking`,'post',data)
@ -120,6 +129,13 @@ export const deletePatrolConfig = data => createAPI(`/pms/qc/deletePatrolConfig`
export const getAllOperationDescList = data => createAPI(`/pms/qc/getAllOperationDescList`,'post',data)
export const patrolConfigUpload = data => createAPI(`/pms/qc/patrolConfigUpload`,'post',data)
export const qcSpecUpload = data => createAPI(`/pms/qc/qcSpecUpload`,'post',data)
export const downloadQcSpecTemplate = () => {
return httpRequest({
url: httpRequest.adornUrl('/pms/qc/downloadQcSpecTemplate'),
method: 'get',
responseType: 'blob'
})
}
export const updateLabelTemplate = data => createAPI(`/pms/qc/updateLabelTemplate`,'post',data)
// ===================================== FAI检验 =====================================

22
cclqms-vue/src/i18n/locales/qc.cn.js

@ -148,7 +148,13 @@ module.exports = {
},
specImport: {
dialogTitle: '检验标准导入',
dragHintComma: '将文件拖到此处,或'
dragHintComma: '将文件拖到此处,或',
templateFileName: '质检项目导入模板.xlsx'
},
fileCollectImport: {
dialogTitle: '文件采集配置导入',
dragHintComma: '将文件拖到此处,或',
templateFileName: '文件采集配置导入模板.xlsx'
},
patrolImport: {
dialogTitle: '巡检配置导入',
@ -1100,6 +1106,7 @@ module.exports = {
detail: '详情',
uploadFile: '上传文件',
projectImport: '项目导入',
fileCollectImport: '配置导入',
colIpqcMethod: 'IPQC检验方式',
colSupplierId: '供应商编码',
colSupplierNameCol: '供应商名称',
@ -1121,7 +1128,7 @@ module.exports = {
selectQcSpecCopyRow: '请先勾选要复制的质检项目!',
selectQcSpecCopyTarget: '请选择目标物料!',
dialogQcSpecCopy: '复制质检项目',
qcSpecCopyHint: '将当前主物料下勾选的质检项目复制到所选其它物料(已存在则覆盖)',
qcSpecCopyHint: '将当前主物料下勾选的质检项目复制到所选物料(均新增一行,不覆盖已有项目)',
qcSpecCopyAvailableParts: '可选物料',
qcSpecCopyAddSelected: '加入已选({count})',
qcSpecCopyAddedParts: '已选物料({count})',
@ -1132,6 +1139,7 @@ module.exports = {
selectQcSpecCopyAddedTarget: '请先将目标物料加入已选清单!',
qcSpecCopyConfirm: '确认将 {itemCount} 个质检项目复制到 {targetCount} 个物料吗?',
qcSpecCopySuccess: '复制成功',
qcSpecCopySourcePart: '原物料',
colSort: '排序',
dragToSort: '拖拽调整排序',
qcSpecRowNoMissing: '当前项目缺少排序号,无法移动!',
@ -1187,7 +1195,15 @@ module.exports = {
updateSuccess: '更新成功',
updateFail: '更新失败',
addSelectedTooltip: '添加选中项目',
removeSelectedTooltip: '移除选中项目'
removeSelectedTooltip: '移除选中项目',
qcSpecAddSelected: '添加选中({count})',
qcSpecAddPendingItems: '本次新增({count})',
qcSpecAddRemovePending: '从本次新增中移除',
dialogQcSpecAddFill: '填写项目信息',
qcSpecAddSameInspectionTypeOnly: '请勾选相同检验类型的项目',
qcSpecAddEmptyPending: '请先添加项目',
qcSpecAddDiscardPending: '本次新增尚未保存,确定关闭吗?',
qcSpecAddSaveSuccess: '新增成功'
},
deviceMaintenancePage: {
exportPrefix: '外采设备维护',

22
cclqms-vue/src/i18n/locales/qc.en.js

@ -148,7 +148,13 @@ module.exports = {
},
specImport: {
dialogTitle: 'Inspection standard import',
dragHintComma: 'Drag file here, or '
dragHintComma: 'Drag file here, or ',
templateFileName: 'QC_Spec_Import_Template.xlsx'
},
fileCollectImport: {
dialogTitle: 'File collection config import',
dragHintComma: 'Drag file here, or ',
templateFileName: 'File_Collect_Import_Template.xlsx'
},
patrolImport: {
dialogTitle: 'Patrol configuration import',
@ -1101,6 +1107,7 @@ module.exports = {
detail: 'Detail',
uploadFile: 'Upload file',
projectImport: 'Project import',
fileCollectImport: 'Config import',
colIpqcMethod: 'IPQC inspection method',
colSupplierId: 'Supplier code',
colSupplierNameCol: 'Supplier name',
@ -1122,7 +1129,7 @@ module.exports = {
selectQcSpecCopyRow: 'Please select QC items to copy first!',
selectQcSpecCopyTarget: 'Please select target material(s)!',
dialogQcSpecCopy: 'Copy QC items',
qcSpecCopyHint: 'Copy selected QC items from the current main material to other selected materials (overwrite if exists)',
qcSpecCopyHint: 'Copy selected QC items from the current main material to selected materials (always add a new row, do not overwrite existing items)',
qcSpecCopyAvailableParts: 'Available materials',
qcSpecCopyAddSelected: 'Add selected ({count})',
qcSpecCopyAddedParts: 'Selected materials ({count})',
@ -1133,6 +1140,7 @@ module.exports = {
selectQcSpecCopyAddedTarget: 'Add target material(s) to the selected list first!',
qcSpecCopyConfirm: 'Copy {itemCount} QC item(s) to {targetCount} material(s)?',
qcSpecCopySuccess: 'Copied successfully',
qcSpecCopySourcePart: 'Source',
colSort: 'Sort',
dragToSort: 'Drag to reorder',
qcSpecRowNoMissing: 'The selected item has no sort number and cannot be moved!',
@ -1188,7 +1196,15 @@ module.exports = {
updateSuccess: 'Updated successfully',
updateFail: 'Update failed',
addSelectedTooltip: 'Add selected items',
removeSelectedTooltip: 'Remove selected items'
removeSelectedTooltip: 'Remove selected items',
qcSpecAddSelected: 'Add selected ({count})',
qcSpecAddPendingItems: 'Added this time ({count})',
qcSpecAddRemovePending: 'Remove from added list',
dialogQcSpecAddFill: 'Fill item details',
qcSpecAddSameInspectionTypeOnly: 'Please select items with the same inspection type',
qcSpecAddEmptyPending: 'Please add items first',
qcSpecAddDiscardPending: 'Added items are not saved yet. Close anyway?',
qcSpecAddSaveSuccess: 'Added successfully'
},
deviceMaintenancePage: {
exportPrefix: 'External equipment maintenance',

170
cclqms-vue/src/views/modules/qc/IQCBatchPurchaseAdd.vue

@ -6,20 +6,6 @@
@keyup.enter.native="searchList">
<el-row :gutter="12">
<el-col :span="4">
<el-form-item label="BU">
<el-select v-model="searchData.bu" :placeholder="$t('qc.common.selectPlaceholder')" clearable
style="width: 100%">
<el-option v-for="i in userBuList" :key="i.buNo" :label="i.sitename + ' ' + i.buDesc" :value="i.buNo">
<span style="float: left;width: 100px">{{ i.sitename }}</span>
<span
style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
{{ i.buDesc }}
</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="Site">
<el-select v-model="searchData.site" :placeholder="$t('qc.common.selectPlaceholder')" clearable
style="width: 100%">
@ -27,27 +13,27 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-col :span="4">
<el-form-item :label="$t('qc.iqcPage.purchaseOrder')">
<el-input v-model="searchData.poOrderNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-col :span="3">
<el-form-item :label="$t('qc.iqcPage.orderItemNo')">
<el-input v-model="searchData.poItemNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-col :span="3">
<el-form-item :label="$t('qc.table.releaseNo')">
<el-input v-model="searchData.releaseNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-col :span="3">
<el-form-item :label="$t('qc.iqcPage.receiptNo')">
<el-input v-model="searchData.receiptNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="7">
<el-form-item :label="$t('qc.iqcPage.receiptDateRange')">
<el-date-picker v-model="searchData.startDate" type="datetime" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" :placeholder="$t('qc.outboundPage.startDate')" style="width: 46%">
@ -148,21 +134,34 @@
<el-dialog :title="$t('qc.iqcPage.batchCreateTasks')" :close-on-click-modal="false" append-to-body
:visible.sync="createDialogVisible" width="480px">
<el-form label-position="top" :model="createForm">
<el-form-item :label="$t('qc.iqcPage.selectedRows')">
<el-input :value="selectedRows.length" disabled></el-input>
</el-form-item>
<el-form-item :label="$t('qc.iqcPage.supplier')">
<el-input :value="selectedSupplierText" disabled></el-input>
</el-form-item>
<el-form-item required>
<span slot="label" style="cursor: pointer" @click="openSenderDialog">
<a>{{ $t('qc.table.sender') }}</a>
</span>
<el-input v-model="createForm.inspectorByName" readonly></el-input>
</el-form-item>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="BU" required>
<el-select v-model="createForm.bu" :placeholder="$t('qc.common.selectPlaceholder')" style="width: 100%">
<el-option v-for="i in userBuList" :key="i.buNo" :label="i.sitename + ' ' + i.buDesc" :value="i.buNo">
<span style="float: left;width: 100px">{{ i.sitename }}</span>
<span
style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
{{ i.buDesc }}
</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item required>
<span slot="label" style="cursor: pointer" @click="openSenderDialog">
<a>{{ $t('qc.table.sender') }}</a>
</span>
<el-input v-model="createForm.inspectorByName" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer">
<el-button type="primary" :loading="createLoading" @click="confirmCreate">{{ $t('qc.common.confirm') }}</el-button>
<el-button type="primary" :loading="createLoading"
@click="confirmCreate">{{ $t('qc.common.confirm') }}</el-button>
<el-button @click="createDialogVisible = false">{{ $t('qc.common.close') }}</el-button>
</span>
</el-dialog>
@ -222,9 +221,7 @@ export default {
userBuList: [],
dataList: [],
selectedRows: [],
selectionSyncing: false,
searchData: {
bu: '',
site: '',
poOrderNo: '',
poItemNo: '',
@ -239,6 +236,7 @@ export default {
},
createDialogVisible: false,
createForm: {
bu: '',
inspectorBy: '',
inspectorByName: '',
},
@ -267,11 +265,6 @@ export default {
sitename,
}))
},
selectedSupplierText() {
if (!this.selectedRows.length) return ''
const row = this.selectedRows[0]
return [row.supplierNo, row.supplierDesc].filter(Boolean).join(' / ')
},
},
created() {
this.calcTableHeight()
@ -288,29 +281,32 @@ export default {
},
methods: {
calcTableHeight() {
this.tableHeight = Math.max(320, window.innerHeight - (this.embedded ? 280 : 320))
this.tableHeight = Math.max(
320,
window.innerHeight - (this.embedded ? 280 : 320)
)
},
loadBuList() {
getSiteAndBuByUserName({ userName: this.$store.state.user.name }).then(({ data }) => {
if (data && data.code === 0) {
this.userBuList = data.rows || []
this.initDefaultBuSite()
getSiteAndBuByUserName({ userName: this.$store.state.user.name }).then(
({ data }) => {
if (data && data.code === 0) {
this.userBuList = data.rows || []
this.initDefaultBuSite()
}
}
})
)
},
initDefaultBuSite() {
if (!this.searchData.bu && this.userBuList.length) {
this.searchData.bu = this.userBuList[0].buNo
}
if (!this.searchData.site && this.poSiteList.length) {
this.searchData.site = this.poSiteList[0].site
}
if (!this.createForm.bu && this.userBuList.length) {
this.createForm.bu = this.userBuList[0].buNo
}
},
resetSearch() {
const bu = this.searchData.bu
const site = this.searchData.site
this.searchData = {
bu,
site,
poOrderNo: '',
poItemNo: '',
@ -327,10 +323,6 @@ export default {
this.selectedRows = []
},
searchList() {
if (!this.searchData.bu) {
this.$message.warning(this.$t('qc.common.pleaseSelectBu'))
return
}
if (!this.searchData.site) {
this.$message.warning(this.$t('qc.iqcPage.selectSite'))
return
@ -353,7 +345,6 @@ export default {
this.searchLoading = true
this.selectedRows = []
searchPoOrderInfoForBatch({
bu: this.searchData.bu,
site: this.searchData.site,
userName: this.$store.state.user.name,
poOrderNo: this.searchData.poOrderNo,
@ -372,7 +363,8 @@ export default {
this.dataList = (data.rows || []).map((row, index) => {
const pending = Number(row.pendingInspectQty)
const arrival = Number(row.currentArrivalQty)
let defaultQty = !Number.isNaN(pending) && pending > 0 ? pending : arrival
let defaultQty =
!Number.isNaN(pending) && pending > 0 ? pending : arrival
if (Number.isNaN(defaultQty)) defaultQty = undefined
return {
...row,
@ -390,7 +382,9 @@ export default {
}
})
} else {
this.$message.error((data && data.msg) || this.$t('qc.common.systemError'))
this.$message.error(
(data && data.msg) || this.$t('qc.common.systemError')
)
}
this.searchLoading = false
})
@ -399,47 +393,20 @@ export default {
})
},
handleSelectionChange(rows) {
if (this.selectionSyncing) return
if (!rows.length) {
this.selectedRows = []
return
}
const supplierSet = new Set(rows.map((r) => String(r.supplierNo || '')))
if (supplierSet.size <= 1) {
this.selectedRows = rows
return
}
//
this.$message.warning(this.$t('qc.iqcPage.batchSupplierDiff'))
const keepSupplier = this.selectedRows.length
? String(this.selectedRows[0].supplierNo || '')
: String(rows[0].supplierNo || '')
const keepRows = rows.filter((r) => String(r.supplierNo || '') === keepSupplier)
this.selectedRows = keepRows
this.selectionSyncing = true
this.$nextTick(() => {
if (this.$refs.batchTable) {
this.$refs.batchTable.clearSelection()
keepRows.forEach((row) => this.$refs.batchTable.toggleRowSelection(row, true))
}
this.$nextTick(() => {
this.selectionSyncing = false
})
})
this.selectedRows = rows || []
},
openCreateDialog() {
if (!this.selectedRows.length) {
this.$message.warning(this.$t('qc.iqcPage.batchSelectRows'))
return
}
const supplierSet = new Set(this.selectedRows.map((r) => String(r.supplierNo || '')))
if (supplierSet.size > 1) {
this.$message.warning(this.$t('qc.iqcPage.batchSupplierDiff'))
return
}
for (let i = 0; i < this.selectedRows.length; i++) {
const row = this.selectedRows[i]
if (row.sendInspectQty === '' || row.sendInspectQty == null || Number(row.sendInspectQty) <= 0) {
if (
row.sendInspectQty === '' ||
row.sendInspectQty == null ||
Number(row.sendInspectQty) <= 0
) {
this.$message.warning(
this.$t('qc.iqcPage.batchSendQtyRequired', {
po: row.poOrderNo,
@ -450,19 +417,22 @@ export default {
}
}
this.createForm = {
bu:
this.createForm.bu ||
(this.userBuList.length ? this.userBuList[0].buNo : ''),
inspectorBy: '',
inspectorByName: '',
}
this.createDialogVisible = true
},
openSenderDialog() {
if (!this.searchData.bu) {
if (!this.createForm.bu) {
this.$message.warning(this.$t('qc.common.pleaseSelectBu'))
return
}
this.operatorData = {
flag: '3',
bu: this.searchData.bu,
bu: this.createForm.bu,
roleId: '',
adminID: '',
adminName: '',
@ -477,7 +447,9 @@ export default {
this.operatorList = data.rows || []
} else {
this.operatorList = []
this.$message.error((data && data.msg) || this.$t('qc.common.systemError'))
this.$message.error(
(data && data.msg) || this.$t('qc.common.systemError')
)
}
})
},
@ -498,12 +470,16 @@ export default {
this.operatorModelFlag = false
},
confirmCreate() {
if (!this.createForm.bu) {
this.$message.warning(this.$t('qc.common.pleaseSelectBu'))
return
}
if (!this.createForm.inspectorBy) {
this.$message.warning(this.$t('qc.entry.selectSender'))
return
}
const submitList = this.selectedRows.map((row) => ({
bu: this.searchData.bu,
bu: this.createForm.bu,
site: row.site || this.searchData.site,
inspectionTypeNo: '105',
inspectionTypeName: 'IQC',
@ -531,7 +507,7 @@ export default {
}))
this.createLoading = true
batchSaveIQCInspection({
bu: this.searchData.bu,
bu: this.createForm.bu,
inspectorBy: this.createForm.inspectorBy,
userName: this.createForm.inspectorBy,
taskSource: '任务新增',
@ -545,7 +521,9 @@ export default {
this.$emit('created')
this.searchList()
} else {
this.$message.error((data && data.msg) || this.$t('qc.common.systemError'))
this.$message.error(
(data && data.msg) || this.$t('qc.common.systemError')
)
}
this.createLoading = false
})

1
cclqms-vue/src/views/modules/qc/IQCResultEntry.vue

@ -4190,6 +4190,7 @@ export default {
},
onBatchPurchaseCreated() {
this.batchPurchaseAddFlag = false
this.getDataList()
},

133
cclqms-vue/src/views/modules/qc/file_collect_upload.vue

@ -0,0 +1,133 @@
<template>
<div class="customer-css">
<el-dialog :title="$t('qc.fileCollectImport.dialogTitle')" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog">
<el-form :inline="true" label-position="top" label-width="80px">
<el-button type="primary" @click="downloadFile()">{{ $t('qc.uploadCommon.downloadTemplate') }}</el-button>
<el-row>
<el-col :span="24">
<el-upload class="customer-upload" drag action="javascript:void(0);" ref="uploadFile" :limit="1" accept=".xlsx,.xls"
:before-upload="beforeUploadHandle" :on-change="onChange" :auto-upload="false" style="text-align: left;">
<i class="el-icon-upload"></i>
<div class="el-upload__text">{{ $t('qc.fileCollectImport.dragHintComma') }}<em>{{ $t('qc.common.clickUpload') }}</em></div>
</el-upload>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveUploadFile()">{{ $t('qc.common.save') }}</el-button>
<el-button type="primary" @click="closeDialog">{{ $t('qc.common.close') }}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
qcPartFileCollectUpload,
downloadQcPartFileCollectTemplate,
} from '@/api/qc/qc.js'
export default {
data() {
return {
visible: false,
fileList: [],
pageData: {
site: '',
partNo: '',
createBy: ''
},
}
},
methods: {
init(currentRow) {
this.pageData = JSON.parse(JSON.stringify(currentRow))
this.fileList = []
this.visible = true
this.$nextTick(() => {
if (this.$refs.uploadFile) {
this.$refs.uploadFile.clearFiles()
}
})
},
beforeUploadHandle(file) {
let extName = file[0].name.substring(file[0].name.lastIndexOf('.')).toLowerCase()
if (!(extName === '.xlsx' || extName === '.xls')) {
this.$message.error(this.$t('qc.common.badXlsxTemplate'))
return false
}
},
onChange(file) {
this.fileList.push(file)
},
closeDialog() {
this.fileList = []
if (this.$refs.uploadFile) {
this.$refs.uploadFile.clearFiles()
}
this.visible = false
},
saveUploadFile() {
if (null == this.fileList || this.fileList.length === 0) {
this.$message.error(this.$t('qc.common.pleaseUploadFile'))
return false
}
const formData = new FormData()
formData.append('file', this.fileList[0].raw)
formData.append('site', this.pageData.site)
formData.append('partNo', this.pageData.partNo)
formData.append('createBy', this.pageData.createBy)
qcPartFileCollectUpload(formData).then(({ data }) => {
if (data.code === 0) {
this.$message.success(data.msg)
this.$refs.uploadFile.clearFiles()
this.fileList = []
this.visible = false
this.$emit('refreshFileCollectList')
} else {
let message = data.msg.split(';')
this.$alert(message[0] + '<br/>' + (message[1] || ''), this.$t('qc.common.importFailTitle'), {
confirmButtonText: this.$t('qc.common.confirm'),
dangerouslyUseHTMLString: true
})
}
}).catch(() => {
this.$message.error(this.$t('qc.entry.importFailContent'))
})
},
downloadFile() {
downloadQcPartFileCollectTemplate().then((response) => {
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
const fileName = this.$t('qc.fileCollectImport.templateFileName')
const linkNode = document.createElement('a')
linkNode.download = fileName
linkNode.style.display = 'none'
linkNode.href = URL.createObjectURL(blob)
document.body.appendChild(linkNode)
linkNode.click()
URL.revokeObjectURL(linkNode.href)
document.body.removeChild(linkNode)
}).catch(() => {
this.$message.error(this.$t('qc.common.downloadTemplateFail'))
})
}
}
}
</script>
<style scoped>
.customer-dialog {
display: flex;
justify-content: center;
align-items: center;
}
.customer-upload {
margin-top: 10px;
}
</style>

1193
cclqms-vue/src/views/modules/qc/qcPartAttribute.vue
File diff suppressed because it is too large
View File

44
cclqms-vue/src/views/modules/qc/qc_spec_upload.vue

@ -2,7 +2,7 @@
<div class="customer-css">
<el-dialog :title="$t('qc.specImport.dialogTitle')" :close-on-click-modal="false" :visible.sync="visible" width="390px" style="height: 520px;" class="customer-dialog">
<el-form :inline="true" label-position="top" label-width="80px">
<!-- <el-button type="primary" @click="downloadFile()">{{ $t('qc.uploadCommon.downloadTemplate') }}</el-button> -->
<el-button type="primary" @click="downloadFile()">{{ $t('qc.uploadCommon.downloadTemplate') }}</el-button>
<el-row>
<el-col :span="24">
<el-upload class="customer-upload" drag action="javascript:void(0);" ref="uploadFile" :limit="1" accept=".xlsx,.xls"
@ -24,9 +24,8 @@
<script>
import {
qcSpecUpload, //
queryFileId, // ID
downloadQcSpecTemplate, //
} from "@/api/qc/qc.js"
import { downLoadObjectFile } from '@/api/eam/eam_object_list.js'
export default {
data() {
@ -45,7 +44,13 @@ export default {
//
init (currentRow) {
this.pageData = JSON.parse(JSON.stringify(currentRow))
this.fileList = []
this.visible = true
this.$nextTick(() => {
if (this.$refs.uploadFile) {
this.$refs.uploadFile.clearFiles()
}
})
},
//
@ -65,6 +70,9 @@ export default {
// modal
closeDialog () {
this.fileList = []
if (this.$refs.uploadFile) {
this.$refs.uploadFile.clearFiles()
}
this.visible = false
},
@ -104,29 +112,11 @@ export default {
})
},
//
async downloadFile () {
let file = {
id: 0,
fileName: ''
}
let tempData = {
orderRef1: 'qc',
orderRef2: 'qcSpecUpload'
}
await queryFileId(tempData).then(({data}) => {
if (data && data.code === 0) {
file.id = data.data.id
file.fileName = data.data.fileName
} else {
this.$alert(data.msg, this.$t('qc.common.errorTitle'), {
confirmButtonText: this.$t('qc.common.confirm')
})
}
})
await downLoadObjectFile(file).then(({data}) => {
const blob = new Blob([data], {type: "application/octet-stream"})
const fileName = file.fileName
// qcItem
downloadFile () {
downloadQcSpecTemplate().then((response) => {
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
const fileName = this.$t('qc.specImport.templateFileName')
const linkNode = document.createElement('a')
linkNode.download = fileName
linkNode.style.display = 'none'
@ -135,6 +125,8 @@ export default {
linkNode.click()
URL.revokeObjectURL(linkNode.href)
document.body.removeChild(linkNode)
}).catch(() => {
this.$message.error(this.$t('qc.common.downloadTemplateFail'))
})
}
}

Loading…
Cancel
Save