Files
yl/MacroinfManage_MES/src/views/ProcessManagement/PartDrawing/index.vue
2026-05-23 14:07:11 +08:00

447 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="app-container">
<el-card class="topCard">
<div class="topDiv">
<span style="margin-left: 10px">物料名称:</span>
<el-select v-model="stationNumberValue" placeholder="请选择物料" filterable clearable remote :remote-method="getStationNumber" size="small" style="width: 250px" >
<el-option
v-for="item in stationNumber"
:key="item.物料编码"
:label="item.物料编码"
:value="item.物料编码"
size="mini">
</el-option>
</el-select>
<el-button type="primary" plain size="small" icon="el-icon-order" @click="getImgCheckDirectFileList">查询</el-button>
<el-button type="primary" icon="el-icon-circle-plus-outline" size="small" @click="uploadShowPDF(val = 2)" style="width: 100px;">零件图</el-button>
<el-button type="primary" icon="el-icon-circle-plus-outline" size="small" @click="uploadShowPDF(val = 0)" style="width: 155px;">选零件上传零件图</el-button>
<el-button type="primary" icon="el-icon-circle-plus-outline" size="small" @click="uploadShowPDF(val = 0)" style="width: 155px;">选订单上传零件图</el-button>
<el-button type="warning" icon="el-icon-document-delete" size="small" @click="showDeleteRecords" style="width: 140px;">查看删除记录</el-button>
</div>
<div class="main">
<el-table
ref="multipleTable"
:data="imgCheckDirectFileList"
:header-cell-style="{background:'#eef1f6',color:'#606266'}"
:cell-class-name="tableRowClassName"
element-loading-text="数据加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.2)"
class="main"
tooltip-effect="dark"
height="640px"
style="width: 90%"
border
size="mini"
@row-click="handleRowClick"
>
<el-table-column label="序号" type="index" align="center" width="80"/>
<el-table-column prop="num" label="物料编号" align="center" width="200"/>
<el-table-column prop="物料描述" label="物料名称" align="center" width="250"/>
<el-table-column prop="name" label="文件名称" align="center" width="100"/>
<el-table-column prop="worker" label="导入人" align="center" width="100"/>
<el-table-column prop="uploadTime" label="导入时间" align="center" width="150"/>
<el-table-column label="操作" align="center" width="250">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-view" size="mini" @click="imgCheckDirectFile(scope.row)" >查看</el-button>
<el-button type="text" icon="el-icon-delete" size="mini" style="color: #ff0000" @click="deleteImgCheckDirectFileSubmit(scope.row)" >删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<!--上传文件-->
<el-dialog :visible.sync="imgDialogFormVisible" title="上传指导文件" center style="height: 800px" width="700px">
<span v-if="itemupload" style="margin-left: 10px">物料名称:</span>
<el-select v-if="itemupload" v-model="uploadValue" placeholder="请选择" filterable clearable remote :remote-method="getStationNumber" size="small" style="width: 500px; margin-bottom: 20px;" >
<el-option
v-for="item in tabledata2"
:key="item.物料编码"
:label="item.物料编码"
:value="item.物料编码"
size="mini"/>
</el-select>
<el-upload
ref="uploadPDF"
:multiple="true"
:auto-upload="false"
:on-success="uploadSuccessPDF"
:before-upload="beforeUploadPdf"
:on-exceed="warningExceedPdf"
:limit="limit"
:data="DataPDF"
:on-change="handleChange"
:action="uploadPDF"
accept=".pdf"
style="margin-left: 130px"
drag>
<i class="el-icon-upload"/>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div slot="tip" class="el-upload__tip">只能上传一个pdf文件且不超过100mb</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button @click="imgDialogFormVisible=false">取消</el-button>
<el-button type="primary" style="width: 70px" @click="submitPicturePDF()">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="deleteRecordsVisible" title="删除记录" center width="1200px">
<el-table
:data="deleteRecordsList"
:header-cell-style="{background:'#eef1f6',color:'#606266'}"
element-loading-text="数据加载中"
border
size="mini"
height="500px"
>
<el-table-column label="序号" type="index" align="center" width="80"/>
<el-table-column prop="物料编号" label="物料编号" align="center" width="200"/>
<el-table-column prop="文件名称" label="文件名称" align="center" width="250"/>
<el-table-column prop="操作人" label="操作人" align="center" width="150"/>
<el-table-column prop="删除时间" label="删除时间" align="center" width="200"/>
<el-table-column prop="备注" label="备注" align="center" />
</el-table>
<div slot="footer" class="dialog-footer">
<el-button @click="deleteRecordsVisible = false">关闭</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { MESUploadFile } from '@/utils/request'
import { MESDownFile } from '@/utils/request'
export default {
data() {
return {
imgDialogFormVisible: false,
imgDialogObj: '', // 点检类型对象
stationNumberValue: '', // 点检指导文件选择的工位号
engineType: [], // 点检机型类型
engineTypeValue: '', // 点检机型类型
imgCheckDialogFormVisible: false, // 查看点检文件
stationNumber: [],
stationName: '',
limit: 1,
DataPDF: {},
uploadPDF: MESUploadFile,
downPDF:MESDownFile,
imgCheckDirectFileList: [],
dialogFormVisible: false,
selectedRow:{},
itemupload:false,
tabledata2:[],
tabledata3:[],
uploadValue:'',
currentTime:'',
Uploaddirectly:false,
filename:'',
deleteRecordsVisible: false, // 删除记录弹窗显示状态
deleteRecordsList: [], // 删除记录列表
}
},
computed: {
},
watch: {
},
created() {
this.searchTable()
this.getStationNumber()
this.getCurrentTime()
this.getImgCheckDirectFileList()
},
methods: {
showDeleteRecords() {
this.deleteRecordsVisible = true
this.getDeleteRecords()
},
// 获取删除记录
getDeleteRecords() {
var Data = this.CreateData('11', '工艺管理_图纸维护_查询删除记录', [])
this.ExecDatabase(Data).then(response => {
if (response.data && response.data.length > 0) {
this.deleteRecordsList = response.data
} else {
this.deleteRecordsList = []
this.$message.info('暂无删除记录')
}
}).catch(error => {
console.error('获取删除记录失败:', error)
this.$message.error('获取删除记录失败')
})
},
getCurrentTime() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始需要加1
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
this.currentTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
handleRowClick(row) {
this.selectedRow = row
},
searchTable(){
var param = []
this.imgCheckDirectFileList = []
param[0] = ['零件图号_check', 0]
param[1] = ['零件图号','']
var Data = this.CreateData('11', '工艺管理_图纸维护_零件图查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length > 0) {
this.imgCheckDirectFileList = response.data
}
})
},
getStationNumber(query='') {
this.stationNumber = []
var param = []
param.push(["过滤",query])
var Data = this.CreateData('11', '工艺管理_图纸维护_物料查询',param)
this.ExecDatabase(Data).then(response => {
this.stationNumber = response.data
this.tabledata2 = response.data
this.tabledata3 = response.data
})
},
// 表格颜色变化
tableRowClassName({ row, rowIndex }) {
// console.log(row, rowIndex)
if (rowIndex % 2 === 0) {
return 'black'
} else {
return 'red'
}
},
// 上传成功回调
uploadSuccessPDF(res) {
this.dialogFormVisible = false
this.$refs.uploadPDF.clearFiles()
this.$message.success('指导文件上传成功!')
this.searchTable()
},
handleChange(file){
const filename = file.name
const lastIndex = filename.lastIndexOf('.');
const name = filename.substring(0, lastIndex); // 结果: "1.2.3"
const target = name
this.filename = target
if(this.Uploaddirectly){
var param = []
param[0] = ['零件图号',target]
var Data = this.CreateData('11', '工艺管理_图纸维护_验证名称', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length == 0 ) {
this.imgDialogFormVisible = false
this.$message.error(`不存在物料编号'${target}'`)
this.$refs.uploadPDF.clearFiles()
}
})
}
const exists2 = this.imgCheckDirectFileList.some(item => item["num"] === target);
if(exists2){
this.imgDialogFormVisible = false
this.$message.error(`图纸上传重复,请先删除'${target}'`)
this.$refs.uploadPDF.clearFiles()
}
const exists3 = this.imgCheckDirectFileList.some(item => item["name"] === target);
if(exists3){
this.imgDialogFormVisible = false
this.$message.error(`图纸上传重复,请先删除'${target}'`)
this.$refs.uploadPDF.clearFiles()
}
},
// 上传前检测
beforeUploadPdf(file) {
let isJPG = /(\.|\/)(pdf)$/.test(file.type)
if (!isJPG) {
this.$message.error('只能上传PDF')
}
// if(!this.stationNumberValue){
// this.$message.error('请选择物料编号')
// isJPG = false
// }
return isJPG
},
warningExceedPdf() {
this.$message.error('仅可上传一份PDF指导文件')
},
// 预览指导文件按钮
imgCheckDirectFile(row) {
var param = []
console.log(row)
param[0] = ['物料编号',row.num]
var Data = this.CreateData('11', '工艺管理_图纸维护_查看图纸', param)
this.ExecDatabase(Data).then(response => {
console.log(response)
if (response.data.length > 0) {
var pdfSrc =""+this.downPDF+""+ response.data[0].uid+".pdf"
console.log(this.downPDF)
console.log(response.data[0].uid)
console.log(pdfSrc)
window.open(pdfSrc,'_blank')
}
})
},
// 删除指导文件
deleteImgCheckDirectFileSubmit(row) {
this.$confirm('此操作将永久删除该指导文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var param = []
param[0] = ['物料编号', row.num]
param[1] = ['文件名称', row.name || '']
param[2] = ['操作人', this.$store.state.user.name]
var Data = this.CreateData('12', '工艺管理_图纸维护_删除图纸', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result === '1') {
this.$message.success('删除指导文件成功!')
this.searchTable()
} else {
this.$message.error('删除指导文件失败!')
}
})
}).catch(() => {
})
},
// 添加指导文件
uploadShowPDF(val) {
if(val==1){
this.itemupload = false
this.Uploaddirectly = false
}else if(val==0){
this.itemupload = true
this.Uploaddirectly = false
}else if(val==2){
this.Uploaddirectly = true
this.itemupload = false
}
this.imgDialogFormVisible = true
},
// 保存文件
// submitPicturePDF() {
// if(!this.uploadValue & this.Uploaddirectly == false){
// return this.$message.error('请先选择物料')
// }
// if(this.Uploaddirectly == true){
// this.uploadValue = this.filename
// }
// var param = []
// param[0] = ['物料编号',this.uploadValue]
// var Data = this.CreateData('11', '工艺管理_图纸维护_查看图纸', param)
// this.ExecDatabase(Data).then(response => {
// if(response.data.length == 0){
// this.DataPDF = {
// num: this.uploadValue,
// // num:'a123',
// tableName: "物料基础数据_零件图纸",
// worker:this.$store.state.user.name,
// uploadTime:this.currentTime
// }
// console.log(JSON.stringify(this.DataPDF))
// this.$refs.uploadPDF.submit()
// this.imgDialogFormVisible = false
// }else{
// this.$refs.uploadPDF.clearFiles()
// this.imgDialogFormVisible = false
// this.$message.error('图纸上传重复,请先删除')
// }
// })
// },
// 保存文件
submitPicturePDF() {
if(!this.uploadValue & this.Uploaddirectly == false){
return this.$message.error('请先选择物料')
}
if(this.Uploaddirectly == true){
this.uploadValue = this.filename
}
var param = []
param[0] = ['物料编号',this.uploadValue]
var Data = this.CreateData('11', '工艺管理_图纸维护_查看图纸', param)
this.ExecDatabase(Data).then(response => {
if(response.data.length == 0){
// 修改这里:确保参数名与后台一致
this.DataPDF .params = JSON.stringify({
num: this.uploadValue, // 取消注释,使用实际值
tableName: '物料基础数据_零件图纸',
worker: this.$store.state.user.name, // 取消注释
uploadTime: this.currentTime // 取消注释
})
console.log('上传参数:', JSON.stringify(this.DataPDF))
this.$refs.uploadPDF.submit()
this.imgDialogFormVisible = false
this.searchTable()
}else{
this.$refs.uploadPDF.clearFiles()
this.imgDialogFormVisible = false
this.$message.error('图纸上传重复,请先删除')
}
})
},
// 查询指导文件列表
getImgCheckDirectFileList() {
var param = []
this.imgCheckDirectFileList = []
if (!this.stationNumberValue) {
param[0] = ['零件图号_check', 0]
param[1] = ['零件图号','']
var Data = this.CreateData('11', '工艺管理_图纸维护_零件图查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length > 0) {
this.imgCheckDirectFileList = response.data
} else {
this.$message.error('该工位无此点检指导文件,请添加后查看')
}
})
}else{
param[0] = ['零件图号_check', 1]
param[1] = ['零件图号',this.stationNumberValue]
var Data = this.CreateData('11', '工艺管理_图纸维护_零件图查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length > 0) {
this.imgCheckDirectFileList = response.data
} else {
this.$message.error('该工位无此点检指导文件,请添加后查看')
}
})
}
}
}
}
</script>
<style scoped lang="scss">
.NewlyAdded{
background:rgb(253,246,236);
border-color: #ff9759;
color: #ff9759;
&:hover{
background: #ff9759;
border-color: #ff9759;
color: white;
}
&:focus{
background: #ff9759;
border-color: #ff9759;
color: white;
}
}
.el-upload-dragger{
width: 210px;
//right: 30px;
}
</style>