cnf
18 小时以前 1dfbf152be9db7bc8c589a4d0bfba5df8d240585
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("请先保存检验单!");