diff --git a/src/api/base/site.js b/src/api/base/site.js index d585b86..d14c98e 100644 --- a/src/api/base/site.js +++ b/src/api/base/site.js @@ -165,3 +165,15 @@ export const updateRevNoData= data => createAPI(`/base/updateRevNoData`,'post',d // 获取当前物料最大工序 export const getPartNoRouteInMaxItemNo= data => createAPI(`/base/getPartNoRouteInMaxItemNo`,'post',data) + +// 获取当前机台的SOP文件 +export const sopFileListSearch= data => createAPI(`/base/sopFileListSearch`,'post',data) + +// 删除当前机台的SOP文件 +export const deleteSOPFile= data => createAPI(`/base/deleteSOPFile`,'post',data) + +// 上传SOP文件 +export const uploadSOPFile= data => createAPI(`/base/uploadSOPFile`,'post',data) + +// 编辑SOP文件信息 +export const sopFileEdit= data => createAPI(`/base/sopFileEdit`,'post',data) diff --git a/src/api/shopOrder/shopOrder.js b/src/api/shopOrder/shopOrder.js index 7fda8c1..5b541dc 100644 --- a/src/api/shopOrder/shopOrder.js +++ b/src/api/shopOrder/shopOrder.js @@ -95,5 +95,6 @@ export const deleteShopOrderToolData = data => createAPI('/shopOrder/deleteShopO // 更改生产工单工艺路线 export const shopOrderUpdateRoutingViaRev = data => createAPI('/shopOrder/shopOrderUpdateRoutingViaRev', 'post', data) - +// 查询工单的工具信息 +export const shopNoticeSearch = data => createAPI('/shopOrder/shopNoticeSearch', 'post', data) diff --git a/src/views/modules/base/workCenter.vue b/src/views/modules/base/workCenter.vue index 69366de..ad566c1 100644 --- a/src/views/modules/base/workCenter.vue +++ b/src/views/modules/base/workCenter.vue @@ -109,6 +109,7 @@ {{buttons.update}} {{buttons.delete}} {{buttons.setResource}} + 上传SOP - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SOP文件(点击上传) + + + 保存 + + + + + + + + + + + + + {{buttons.close}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 保存 + {{buttons.close}} + + + + @@ -342,7 +488,9 @@ import { deleteWorkCenterData, saveResource, deleteResource, - setResourceFlag + setResourceFlag, + sopFileListSearch, + deleteSOPFile, }from "@/api/base/site.js" import { searchPartNoData, @@ -353,6 +501,7 @@ import { searchFunctionButtonList, } from "@/api/sysLanguage.js" +import {uploadSOPFile,sopFileEdit} from "../../../api/base/site"; var functionId='103004'; export default { @@ -452,6 +601,15 @@ export default { download2:'导出机台' }, + rules: { + effectiveDate: [ + { + required: true, + message: ' ', + trigger: ['blur','change'] + } + ] + }, queryButton: { functionId: functionId, table_id: '*', @@ -497,6 +655,36 @@ export default { modelFlag2:false, modelFlag:false, modelInputFlag:true, + fileName:'', + uploadSOPFlag:false, + uploadSOPEditFlag:false, + uploadSOPDisableFlag:true, + sopFileList:[], + fileList:[], + sopModelData:{ + flag:'', + id : '', + workCenterNo:'', + workCenterDesc: '', + site:'', + resourceID:'', + resourceDesc:'', + versionNumber:'', + effectiveDate:'', + expiryDate:'', + }, + sopUpdateModelData:{ + flag:'', + id : '', + workCenterNo:'', + workCenterDesc: '', + site:'', + resourceID:'', + resourceDesc:'', + versionNumber:'', + effectiveDate:'', + expiryDate:null, + }, selectList:[], modelData: { add:'', @@ -1021,6 +1209,134 @@ export default { columnWidth: 80 } ], + columnSopFileList:[ + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4VersionNumber', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "versionNumber", + headerAlign: "center", + align: "center", + columnLabel: "版本号", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 80 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4FileName', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "fileName", + headerAlign: "center", + align: "left", + columnLabel: "文件名称", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 200 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4CreatedBy', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "createdBy", + headerAlign: "center", + align: "left", + columnLabel: "上传人", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 100 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4CreateDate', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "createDate", + headerAlign: "center", + align: "center", + columnLabel: "上传时间", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 100 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4EffectiveDate', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "effectiveDate", + headerAlign: "center", + align: "center", + columnLabel: "生效日期", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 100 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4ExpiryDate', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "expiryDate", + headerAlign: "center", + align: "center", + columnLabel: "失效日期", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 100 + }, + { + userId: this.$store.state.user.name, + functionId: 103004, + serialNumber: '103004Table4Status', + tableId: "103004Table3", + tableName: "SOP文件表", + columnProp: "status", + headerAlign: "center", + align: "center", + columnLabel: "状态", + columnHidden: false, + columnImage: false, + columnSortable: false, + sortLv: 0, + status: true, + fixed: '', + columnWidth: 80 + }, + ], authEdit: false, authAdd: false, authDelete: false, @@ -1181,6 +1497,203 @@ export default { }) }) }, + formatDate(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + }, + uploadSOP(){ + if(this.currentRow2==null){ + this.$alert(this.labels.resourceIn, this.labels.error, { + confirmButtonText: this.labels.true + }) + return false; + } + this.sopModelData={ + workCenterNo:this.currentRow2.workCenterNo, + workCenterDesc: this.currentRow2.workCenterDesc, + site:this.currentRow2.site, + resourceID:this.currentRow2.resourceID, + resourceDesc:this.currentRow2.resourceDesc, + versionNumber:'A01', + effectiveDate:this.formatDate(new Date()), + expiryDate:'', + }; + this.sopFileListSearch(); + this.uploadSOPFlag=true; + }, + updateSOPFile(row){ + this.sopUpdateModelData= { + id: row.id, + workCenterNo: this.currentRow2.workCenterNo, + workCenterDesc: this.currentRow2.workCenterDesc, + site: this.currentRow2.site, + resourceID: this.currentRow2.resourceID, + resourceDesc: this.currentRow2.resourceDesc, + versionNumber: row.versionNumber, + effectiveDate: new Date(row.effectiveDate), + expiryDate: row.expiryDate, + } + this.fileName = row.fileName; + this.uploadSOPDisableFlag=false + this.uploadSOPEditFlag=true; + }, + sopFileListSearch(){ + let inData={ + orderRef1:this.currentRow2.site, + orderRef2:this.currentRow2.workCenterNo, + orderRef3:this.currentRow2.resourceID, + orderRef4:'', + fileType: 'SOP' + } + sopFileListSearch(inData).then(({data}) => { + // 遍历data + for (let i = 0; i < data.rows.length; i++) { + if (data.rows[i].expiryDate != null) { + if (data.rows[i].expiryDate < this.dayjs().format('YYYY-MM-DD')) { + data.rows[i].status = '失效' + } else { + data.rows[i].status = '有效' + } + } else { + data.rows[i].status = '有效' + } + this.sopFileList.push(data.rows[i]); + this.sopFileList[i].versionNumber = data.rows[i].orderRef4 + + } + // 如果this.sopFileList不为空,拿到versionNumber的最后一个并给versionNumber赋值(versionNumber由 A + 两位数组成,赋值时给数字+1) + if (this.sopFileList.length > 0) { + let versionNumber = this.sopFileList[this.sopFileList.length - 1].versionNumber; + // 如果A后面的数字小于10则为A0+数字加一,否则为A+数字加一 + if (versionNumber.substring(1) < 9) { + this.sopModelData.versionNumber = 'A0' + (parseInt(versionNumber.substring(1)) + 1); + } else { + this.sopModelData.versionNumber = 'A' + (parseInt(versionNumber.substring(1)) + 1); + } + } else { + this.sopModelData.versionNumber = 'A01'; + } + }) + }, + triggerUpload() { + this.$refs.uploadFile.$el.querySelector('input').click() + }, + /*选择上传文件时*/ + onChange(file,fileList){ + const newFileName = file.name; + if (this.fileName) { + this.fileName += ', ' + newFileName; + } else { + this.fileName = newFileName; + } + this.fileList.push(file); + }, + closeFileUpdate() { + this.fileName = ''; + //this.fileRemark = '' + this.$refs.uploadFile.clearFiles() + this.fileList = [] + }, + uploadSOPSave() { + if (this.sopModelData.effectiveDate === '' || this.sopModelData.effectiveDate == null) { + this.$alert('请选择生效日期!', this.labels.error, { + confirmButtonText: this.labels.true + }) + return false; + } + if (this.fileList.length === 0) { + this.$alert('上传的SOP文件不能为空!', this.labels.error, { + confirmButtonText: this.labels.true + }) + return false; + } + const formData = new FormData(); + //片接文件 + for (let i = 0; i < this.fileList.length; i++) { + formData.append("file", this.fileList[i].raw) + } + formData.append("orderRef2", this.sopModelData.workCenterNo) + formData.append("orderRef1", this.sopModelData.site) + formData.append("orderRef3", this.sopModelData.resourceID) + formData.append("orderRef4", this.sopModelData.versionNumber) + formData.append("effectiveDate", this.sopModelData.effectiveDate) + if (this.sopModelData.expiryDate != null && this.sopModelData.expiryDate !== '') { + formData.append("expiryDate", this.sopModelData.expiryDate) + } + formData.append("fileType", 'SOP') + console.log(this.sopModelData.expiryDate) + uploadSOPFile(formData).then(({data}) => { + if (data && data.code === 0) { + this.uploadSOPFlag = false + this.$message.success(this.labels.doYes) + //清空文件上传记录 + this.$refs.uploadFile.clearFiles(); + this.closeFileUpdate(); + this.sopFileList = [] + } else { + this.$alert(data.msg, this.labels.error, { + confirmButtonText: this.labels.true + }) + } + }) + }, + updateSopFile(){ + if (this.sopModelData.effectiveDate === '' || this.sopModelData.effectiveDate == null) { + this.$alert('请选择生效日期!', this.labels.error, { + confirmButtonText: this.labels.true + }) + return false; + } + let inData = { + id: this.sopUpdateModelData.id, + effectiveDate: this.sopUpdateModelData.effectiveDate, + expiryDate: this.sopUpdateModelData.expiryDate, + } + sopFileEdit(inData).then(({data}) => { + if (data && data.code === 0) { + this.sopFileList = []; + this.sopFileListSearch(); + this.uploadSOPEditFlag = false + this.fileName = ''; + this.$message.success(this.labels.doYes) + } else { + this.$alert(data.msg, this.labels.error, { + confirmButtonText: this.labels.true + }) + } + }) + }, + deleteSOPFile(row){ + this.$confirm('确认删除该文件?', this.labels.point, { + confirmButtonText: this.labels.true, + cancelButtonText: this.labels.cancel, + type: 'warning' + }).then(() => { + deleteSOPFile(row).then(({data}) => { + if (data && data.code === 0) { + this.sopFileList = []; + this.sopFileListSearch(); + this.$message.success(this.labels.doYes) + } else { + this.$alert(data.msg, this.labels.error, { + confirmButtonText: this.labels.true + }) + } + }) + }) + }, + closeUploadFileVisible(){ + this.uploadSOPFlag=false; + this.sopFileList=[]; + this.fileList = []; + this.closeFileUpdate(); + }, + closeUploadFileEditVisible(){ + this.uploadSOPEditFlag=false; + this.fileName = ''; + }, deleteCalendar(){ if(this.currentRow2==null){ this.$alert(this.labels.resourceIn, this.labels.error, { diff --git a/src/views/modules/shopOrder/shopOrder/shopNotice.vue b/src/views/modules/shopOrder/shopOrder/shopNotice.vue new file mode 100644 index 0000000..52edb08 --- /dev/null +++ b/src/views/modules/shopOrder/shopOrder/shopNotice.vue @@ -0,0 +1,557 @@ + + + + +