Add all dashboard projects

This commit is contained in:
meswork764
2026-05-23 14:07:11 +08:00
commit ba82fbfc14
3550 changed files with 467904 additions and 0 deletions

View File

@@ -0,0 +1,446 @@
<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>