| | |
| | | <span class="info-label">创建时间:</span> |
| | | <span class="info-value">{{formData.createTime}}</span> |
| | | <span class="info-label">检验类型:</span> |
| | | <span class="info-value">{{formData.SJ_MJ}}</span> |
| | | <span class="info-value">{{formData.sJ_MJ}}</span> |
| | | </view> |
| | | <view class="info-row" v-if="isUpdate"> |
| | | <span class="info-label">检验类型:</span> |
| | |
| | | </view> |
| | | |
| | | <view class="info-block"> |
| | | <view class="info-label">计划编号:</view> |
| | | <view class="info-label">工单单号:</view> |
| | | <picker v-if="isUpdate" class="info-picker" name="selector" :range="DAA001List" |
| | | @change="onDaa001Change"> |
| | | <text>{{ DAA001List[DAA001Index] }}</text> |
| | |
| | | <view v-else class="info-value">{{formData.daa001}}</view> |
| | | </view> |
| | | |
| | | <view class="info-block"> |
| | | <view class="info-label">销售订单号:</view> |
| | | <view class="info-value">{{formData.caa015}}</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="info-block"> |
| | | <view class="info-label">客户:</view> |
| | | <view class="info-value">{{formData.cust}}</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="info-block"> |
| | | <view class="info-label">产品名称:</view> |
| | |
| | | <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="toImage"> |
| | | 上传/查看图片 |
| | | </button> |
| | | <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="fetchDrawingNumber(formData.itemNo)"> |
| | | 调取PLM图纸 |
| | | </button> |
| | | <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="getBom"> |
| | | Bom用料清单 |
| | | </button> |
| | | <button class="action-btn secondary" v-if="!isUpdate && !isShowTable && formData.xjGenFlag == 0" |
| | | @click="saveXJ"> |
| | | 生成巡检 |
| | |
| | | <button class="action-btn primary" v-if="isShowTable && isUpdate" @click="saveTable"> |
| | | 生成检验项目 |
| | | </button> |
| | | <button class="action-btn success" v-if="!isUpdate && formData.fsubmit == 0 && !isShowTable" @click="getGenUpdate"> |
| | | 获取检验项目 |
| | | </button> |
| | | <button class="action-btn success" v-if="!isUpdate && formData.fsubmit ==0 && !isShowTable" @click="submitInspection"> |
| | | 提交检验 |
| | | </button> |
| | | </view> |
| | | |
| | | <view class="barcode"> |
| | | <u-modal :show="itemShow" title="物料明细" @confirm="drawingConfirm" @cancel="itemCancel" |
| | | showCancelButton :z-index="1000"> |
| | | <uni-table border stripe emptyText="暂无更多数据" style="margin-left: 5px;margin-right: 5px;height: 400px;max-height: 60vh;overflow-y: auto;"> |
| | | <uni-tr> |
| | | <uni-th align="center">料号</uni-th> |
| | | <uni-th align="center" width="90">名称</uni-th> |
| | | <uni-th align="center" width="90">规格型号</uni-th> |
| | | <uni-th align="center" width="150">调取PLM图纸</uni-th> |
| | | </uni-tr> |
| | | <uni-tr v-for="(item,index) in (drawing || [])" style="height: 100px;"> |
| | | <uni-td align="center">{{item.itemNo}}</uni-td> |
| | | <uni-td align="center" > |
| | | <div >{{item.itemName}}</div> |
| | | </uni-td> |
| | | <uni-td align="center" > |
| | | <div>{{item.itemModel}}</div> |
| | | </uni-td> |
| | | <uni-td align="center" class="click-wd"> |
| | | <div @click="fetchDrawingNumber(item.itemNo)">调取图纸</div> |
| | | </uni-td> |
| | | </uni-tr> |
| | | </uni-table> |
| | | </u-modal> |
| | | </view> |
| | | |
| | | <view class="barcode"> |
| | | <u-modal :show="drawingShow" title="图纸明细" @confirm="drawingConfirm" @cancel="drawingCancel" |
| | | showCancelButton :z-index="1000"> |
| | | <uni-table border stripe emptyText="暂无更多数据" style="margin-left: 5px;margin-right: 5px;height: 400px;max-height: 60vh;overflow-y: auto;"> |
| | | <uni-tr> |
| | | <uni-th align="center">相关文档</uni-th> |
| | | <uni-th align="center" width="90">有无关联PDF文件</uni-th> |
| | | <uni-th align="center" width="90">能否打开文件</uni-th> |
| | | <uni-th align="center" width="150">操作(点击)</uni-th> |
| | | </uni-tr> |
| | | <uni-tr v-for="(item,index) in (drawing || [])" style="height: 100px;"> |
| | | <uni-td align="center">{{item.fName}}</uni-td> |
| | | <uni-td align="center" style="font-size:25px;"> |
| | | <div v-if="item.fRelevantObject==' '" style="color: #E47470;">×</div> |
| | | <div style="color: #90BA87;" v-else>√</div> |
| | | </uni-td> |
| | | <uni-td align="center" style="font-size:25px;"> |
| | | <div v-if="item.isSupported || item.fRelevantObject!=' '" style="color: #90BA87;">√</div> |
| | | <div style="color: #E47470;" v-else>×</div> |
| | | </uni-td> |
| | | <uni-td align="center" class="click-wd"> |
| | | <div @click="openDrawings(item)">打开文档</div> |
| | | </uni-td> |
| | | </uni-tr> |
| | | </uni-table> |
| | | </u-modal> |
| | | </view> |
| | | |
| | | <!-- 弹出框 --> |
| | | <view v-if="remarksPopup" class="overlay"> |
| | | <view class="popup"> |
| | |
| | | comments: "", |
| | | statusUser: "", |
| | | SJ_MJ: '首检', |
| | | fsubmit:"", |
| | | }, |
| | | |
| | | DAA020List: [], |
| | |
| | | womdaaList: [], |
| | | |
| | | tableData: [], |
| | | |
| | | drawing: [], |
| | | |
| | | isSubmit: true, |
| | | |
| | | isUpdate: true, |
| | | |
| | | isShowTable: false, |
| | | |
| | | drawingShow: false, |
| | | itemShow: false, |
| | | |
| | | remarks: "", |
| | | remarksPopup: false, |
| | |
| | | } |
| | | }).then(res => { |
| | | if (res.data.tbBillList) { |
| | | this.$showMessage("巡检生成成功"); |
| | | this.$showMessage("首检生成成功"); |
| | | this.init(); |
| | | } |
| | | }); |
| | |
| | | }, |
| | | save() { |
| | | |
| | | if (this.tableData.length === 0) { |
| | | this.$showMessage(this.formData.itemNo + "物料没有检验项目"); |
| | | return; |
| | | } |
| | | //if (this.tableData.length === 0) { |
| | | //this.$showMessage(this.formData.itemNo + "物料没有检验项目"); |
| | | //return; |
| | | //} |
| | | |
| | | if (!this.formData.daa001) { |
| | | this.$showMessage("请选择计划编号"); |
| | |
| | | this.SJ_MJIndex = e.mp.detail.value; |
| | | this.formData.SJ_MJ = this.SJ_MJList[this.SJ_MJIndex]; |
| | | }, |
| | | submitInspection() { |
| | | if (this.formData.id) { |
| | | this.$post({ |
| | | url: "/SJ/SjSubmit", |
| | | data: { |
| | | id: this.formData.id, |
| | | userNo: this.$loginInfo.account |
| | | } |
| | | }).then(res => { |
| | | if (res.data.tbBillList) { |
| | | this.$showMessage("提交成功"); |
| | | this.init(); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | drawingConfirm() { |
| | | this.drawingShow = false |
| | | this.imageShow = false |
| | | this.productionShow = false |
| | | this.itemShow=false |
| | | }, |
| | | drawingCancel() { |
| | | this.drawingShow = false |
| | | this.imageShow = false |
| | | this.productionShow = false |
| | | // const item = '83040700101' |
| | | const item = this.formData.billNo; |
| | | console.log(this.formData.billNo ); |
| | | console.log('daa001:', item); |
| | | console.log('ItemNo:', this.formData.itemNo); |
| | | |
| | | const url = this.$store.state.serverInfo.serverAPI + "/LLJ/getWomdab"; |
| | | // 或者如果路径不同,请使用正确的端点 |
| | | // const url = "http://192.168.0.100:10054/api/getWomdab" |
| | | |
| | | let _this = this; |
| | | |
| | | uni.request({ |
| | | url: url, |
| | | method: 'POST', |
| | | header: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | data: { |
| | | daa001: item, // 根据DTO属性名传递 |
| | | ItemNo: this.formData.itemNo // 注意大小写匹配 |
| | | }, |
| | | success: (response) => { |
| | | console.log(response); |
| | | console.log("-------------------------------------"); |
| | | // 根据后端返回的数据结构进行调整 |
| | | if (response.data.status === 1) { |
| | | // 状态为1表示没有数据 |
| | | _this.drawing = []; |
| | | } else if (response.data.status === 0) { |
| | | // 状态为0表示成功 |
| | | if (response.data.data && response.data.data.tbBillList) { |
| | | _this.drawing = response.data.data.tbBillList; |
| | | |
| | | // 遍历数据,判断文件后缀并添加字段 |
| | | _this.drawing.forEach((file) => { |
| | | // 获取文件名的后缀 |
| | | const fileExtension = file.fName ? file.fName.split('.').pop().toLowerCase() : ''; |
| | | |
| | | // 定义支持的文件类型 |
| | | const supportedExtensions = ['jpg', 'pdf', 'xlsx', 'doc', 'docx', 'xls']; |
| | | |
| | | // 判断是否支持该文件类型 |
| | | file.isSupported = supportedExtensions.includes(fileExtension); |
| | | }); |
| | | } else { |
| | | _this.drawing = []; |
| | | } |
| | | } else { |
| | | // 其他状态码处理 |
| | | _this.drawing = []; |
| | | uni.showToast({ |
| | | title: response.data.message || '请求失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }, |
| | | fail: (error) => { |
| | | uni.showToast({ |
| | | title: '请求图纸链接失败', |
| | | icon: 'none' |
| | | }); |
| | | console.error('请求失败:', error); |
| | | } |
| | | }); |
| | | }, |
| | | itemCancel() { |
| | | this.itemShow=false |
| | | }, |
| | | |
| | | |
| | | fetchDrawingNumber(itemNo) { |
| | | // const item = '83040700101' |
| | | const item = itemNo; |
| | | console.log(itemNo) |
| | | // console.log(item) |
| | | const url = this.$store.state.serverInfo.serverAPI +"/PLM/RetrieveDrawings?ItemNo=" + item |
| | | |
| | | // const item = '5.06.04.4002'; |
| | | // const url = "http://192.168.0.100:10054/api/PLM/RetrieveDrawings?ItemNo=" + item |
| | | |
| | | let _this = this; |
| | | |
| | | uni.request({ |
| | | url: url, |
| | | method: 'POST', |
| | | success: (response) => { |
| | | console.log(response) |
| | | if (response.data.data == '返回结果为空') { |
| | | _this.drawing = [] |
| | | } else { |
| | | _this.drawing = response.data.data |
| | | // 遍历数据,判断文件后缀并添加字段 |
| | | _this.drawing.forEach((file) => { |
| | | // 获取文件名的后缀 |
| | | const fileExtension = file.fName.split('.').pop() |
| | | .toLowerCase(); |
| | | |
| | | // 定义支持的文件类型 |
| | | const supportedExtensions = ['jpg', 'pdf', 'xlsx', 'doc', |
| | | 'docx', |
| | | 'xls' |
| | | ]; |
| | | |
| | | // 判断是否支持该文件类型 |
| | | file.isSupported = supportedExtensions.includes(fileExtension); |
| | | }); |
| | | } |
| | | }, |
| | | fail: (error) => { |
| | | uni.showToast({ |
| | | title: '请求图纸链接失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }); |
| | | this.drawingShow = true |
| | | }, |
| | | |
| | | getBom(){ |
| | | // const item = '83040700101' |
| | | const item = this.formData.daa001; |
| | | console.log(this.formData.daa001 ); |
| | | console.log('daa001:', item); |
| | | console.log('ItemNo:', this.formData.itemNo); |
| | | |
| | | const url = this.$store.state.serverInfo.serverAPI + "/LLJ/getWomdab"; |
| | | // 或者如果路径不同,请使用正确的端点 |
| | | // const url = "http://192.168.0.100:10054/api/getWomdab" |
| | | |
| | | let _this = this; |
| | | |
| | | uni.request({ |
| | | url: url, |
| | | method: 'POST', |
| | | header: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | data: { |
| | | daa001: item, // 根据DTO属性名传递 |
| | | ItemNo: this.formData.itemNo // 注意大小写匹配 |
| | | }, |
| | | success: (response) => { |
| | | console.log(response); |
| | | console.log("-------------------------------------"); |
| | | // 根据后端返回的数据结构进行调整 |
| | | if (response.data.status === 1) { |
| | | // 状态为1表示没有数据 |
| | | _this.drawing = []; |
| | | uni.showToast({ |
| | | title: response.data.message || '该检验单未上传附件信息', |
| | | icon: 'none' |
| | | }); |
| | | } else if (response.data.status === 0) { |
| | | // 状态为0表示成功 |
| | | if (response.data.data && response.data.data.tbBillList) { |
| | | _this.drawing = response.data.data.tbBillList; |
| | | |
| | | // 遍历数据,判断文件后缀并添加字段 |
| | | _this.drawing.forEach((file) => { |
| | | // 获取文件名的后缀 |
| | | const fileExtension = file.fName ? file.fName.split('.').pop().toLowerCase() : ''; |
| | | |
| | | // 定义支持的文件类型 |
| | | const supportedExtensions = ['jpg', 'pdf', 'xlsx', 'doc', 'docx', 'xls']; |
| | | |
| | | // 判断是否支持该文件类型 |
| | | file.isSupported = supportedExtensions.includes(fileExtension); |
| | | }); |
| | | } else { |
| | | _this.drawing = []; |
| | | } |
| | | } else { |
| | | // 其他状态码处理 |
| | | _this.drawing = []; |
| | | uni.showToast({ |
| | | title: response.data.message || '请求失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }, |
| | | fail: (error) => { |
| | | uni.showToast({ |
| | | title: '请求图纸链接失败', |
| | | icon: 'none' |
| | | }); |
| | | console.error('请求失败:', error); |
| | | } |
| | | }); |
| | | this.itemShow = true |
| | | }, |
| | | |
| | | //图纸相关文档 |
| | | openDrawings(item) { |
| | | console.log("jkjoi", item) |
| | | if (item.fRelevantObject.length > 2) { |
| | | // 生成请求URL(简化编码逻辑) |
| | | const encodedName = encodeURIComponent(item.fName); |
| | | const url = this.$store.state.serverInfo.serverAPI+`/PLM/OpenDrawingsGet?fileId=${item.fRelevantObject}&fName=${encodedName}`; |
| | | console.log('请求URL:', url); |
| | | |
| | | const now = new Date(); |
| | | const timestamp = [ |
| | | now.getFullYear(), |
| | | String(now.getMonth() + 1).padStart(2, '0'), |
| | | String(now.getDate()).padStart(2, '0'), |
| | | String(now.getHours()).padStart(2, '0'), |
| | | String(now.getMinutes()).padStart(2, '0'), |
| | | String(now.getSeconds()).padStart(2, '0') |
| | | ].join(''); |
| | | |
| | | // 生成新文件名(基础名_时间戳.后缀) |
| | | this.fileName = `${item.fName}_${timestamp}.pdf`; |
| | | console.log('新文件名:', this.fileName); |
| | | |
| | | uni.downloadFile({ |
| | | url: url, |
| | | success: (res) => { |
| | | console.log(res); |
| | | let fileName = this.fileName; |
| | | let fileExt = fileName.split('.').pop(); |
| | | // let newFilePath = "_doc/uniapp_temp_1742877118745/download" + "/" + fileName; |
| | | // console.log('newFilePath', newFilePath) |
| | | if (fileExt === 'xls' || fileExt === 'xlsx' || fileExt === 'pdf'|| fileExt === 'jpg'|| fileExt === 'png') { |
| | | plus.io.resolveLocalFileSystemURL(res.tempFilePath, (entry) => { |
| | | // 获取文件所在的目录 |
| | | entry.getParent((parentEntry) => { |
| | | let newFileName = this.fileName; // 新的文件名 |
| | | |
| | | // 移动并重命名文件 |
| | | entry.moveTo( |
| | | parentEntry, |
| | | newFileName, |
| | | (newEntry) => { |
| | | console.log('重命名成功:', newEntry.fullPath); |
| | | |
| | | // 打开 Excel 文件 |
| | | plus.runtime.openFile(newEntry.fullPath, {}, (e) => { |
| | | console.error('无法打开 Excel 文件:', e); |
| | | }); |
| | | |
| | | // let pages = getCurrentPages(); |
| | | // let beforePage = pages[pages.length - 2]; |
| | | // uni.navigateBack({ |
| | | // delta: 1, //返回的页面数,如果为1表示返回上一页 |
| | | // success: (event) => { |
| | | // beforePage.$vm.reload() |
| | | // } |
| | | // }); |
| | | |
| | | }, |
| | | (err) => { |
| | | console.error('重命名失败:', err); |
| | | } |
| | | ); |
| | | }, (err) => { |
| | | console.error('获取父目录失败:', err); |
| | | }); |
| | | }, (err) => { |
| | | console.error('获取文件失败:', err); |
| | | }); |
| | | } else { |
| | | console.error('文件格式不匹配:', fileExt); |
| | | uni.showToast({ |
| | | title: '文件格式不支持', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | } |
| | | }) |
| | | uni.request({ |
| | | url: url, |
| | | method: 'POST', |
| | | responseType: 'arraybuffer', |
| | | success: (response) => { |
| | | console.log(response.data) |
| | | if (!response) { |
| | | uni.showToast({ |
| | | title: "协议预览失败", |
| | | duration: 2000 |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | fail: (error) => { |
| | | console.log(error) |
| | | uni.showToast({ |
| | | title: '请求预览链接失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | else |
| | | { |
| | | uni.showToast({ |
| | | title: '请求预览链接失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | getGenUpdate() { |
| | | if (!this.formData.id || !this.formData.billNo) { |
| | | this.$showMessage("请先保存检验单!"); |
| | | return; |
| | | } |
| | | this.$post({ |
| | | url: "/SJ/GenUpdate", |
| | | data: { |
| | | id: this.formData.id, |
| | | no: this.formData.billNo, |
| | | user: this.$loginInfo.account |
| | | } |
| | | }).then(res => { |
| | | if (res.data.result === 0) { |
| | | this.$showMessage("获取检验项目成功"); |
| | | this.init(); |
| | | } else { |
| | | this.$showMessage(res.data.message || "获取失败"); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | onShow() { |
| | | //每次进入页面都会执行的方法 |
| | |
| | | background-color: #c0392b; |
| | | } |
| | | |
| | | .action-btn.success { |
| | | background-color: #2ecc71; |
| | | color: white; |
| | | } |
| | | |
| | | .action-btn.success:hover { |
| | | background-color: #27ae60; |
| | | } |
| | | |
| | | /* 弹出框样式 */ |
| | | .overlay { |
| | | position: fixed; |