cnf
12 小时以前 1dfbf152be9db7bc8c589a4d0bfba5df8d240585
首检,来料检修改
已修改2个文件
345 ■■■■■ 文件已修改
pages/QC/LLJ/Add.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/QC/SJ/Add.vue 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/QC/LLJ/Add.vue
@@ -136,6 +136,7 @@
            <button class="action-btn small" @click="addDestruction" v-if="this.current">破坏实验</button>
            <button class="action-btn small" @click="uploadImages">上传/查看图片</button>
            <button class="action-btn small" @click="fetchDrawingNumber">调取PLM图纸</button>
            <button class="action-btn small" @click="getBom">Bom用料清单</button>
            <button class="action-btn small" @click="viewAttachmentInfo">查看附件信息</button>
            <button class="action-btn small" @click="addDefectDescription" v-if="this.current">添加不良描述</button>
            <button class="action-btn small primary" @click="submitInspection" v-if="this.current">检验提交</button>
@@ -169,6 +170,32 @@
                <button @click="clearDestruction">清除</button>
                <button @click="destructionPopup = !destructionPopup">取消</button>
            </view>
        </view>
        <view class="barcode">
            <u-modal :show="itemShow" 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">名称</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" style="font-size:25px;">
                            <div >{{item.itemName}}</div>
                        </uni-td>
                        <uni-td align="center" style="font-size:25px;">
                            <div>{{item.itemModel}}</div>
                        </uni-td>
                        <uni-td align="center" class="click-wd">
                            <div @click="fetchDrawingNumber">调取图纸</div>
                        </uni-td>
                    </uni-tr>
                </uni-table>
            </u-modal>
        </view>
        
        <view class="barcode">
@@ -338,6 +365,7 @@
                current: true,
                drawing: [],
                drawingShow: false,
                itemShow: false,
                badreason: '',
                PSTYPE: '',
                WORKSHOP: '',
@@ -806,11 +834,13 @@
                this.drawingShow = false
                this.imageShow = false
                this.productionShow = false
                this.itemShow=false
            },
            drawingCancel() {
                this.drawingShow = false
                this.imageShow = false
                this.productionShow = false
                this.itemShow=false
            },
            fetchDrawingNumber() {
@@ -860,7 +890,7 @@
                });
                this.drawingShow = true
            },
            //图纸相关文档
            openDrawings(item) {
pages/QC/SJ/Add.vue
@@ -115,6 +115,12 @@
            <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">
                生成巡检
@@ -138,6 +144,61 @@
                提交检验
            </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" style="font-size:25px;">
                            <div >{{item.itemName}}</div>
                        </uni-td>
                        <uni-td align="center" style="font-size:25px;">
                            <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">
@@ -191,12 +252,17 @@
                womdaaList: [],
                tableData: [],
                drawing: [],
                isSubmit: true,
                isUpdate: true,
                isShowTable: false,
                drawingShow: false,
                itemShow: false,
                remarks: "",
                remarksPopup: false,
@@ -545,6 +611,253 @@
                    });
                }
            },
            drawingConfirm() {
                this.drawingShow = false
                this.imageShow = false
                this.productionShow = false
                this.itemShow=false
            },
            drawingCancel() {
                this.drawingShow = false
                this.imageShow = false
                this.productionShow = false
            },
            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("请先保存检验单!");