cnf
3 天以前 7c803e1ce6c6d9765a99203544bf200ecd52aa2d
首检巡检入库检修改,增加bom物料plm图纸查看
已修改3个文件
3935 ■■■■■ 文件已修改
pages/QC/RKJ/Add.vue 3465 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/QC/SJ/Add.vue 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/QC/XJ/Add.vue 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/QC/RKJ/Add.vue
ÎļþÌ«´ó
pages/QC/SJ/Add.vue
@@ -157,10 +157,10 @@
                    </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;">
                        <uni-td align="center" >
                            <div >{{item.itemName}}</div>
                        </uni-td>
                        <uni-td align="center" style="font-size:25px;">
                        <uni-td align="center" >
                            <div>{{item.itemModel}}</div>
                        </uni-td>
                        <uni-td align="center" class="click-wd">
@@ -622,10 +622,76 @@
                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'
@@ -748,10 +814,10 @@
                this.itemShow = true
            },
            
        //图纸相关文档
        openDrawings(item) {
            console.log("jkjoi", item)
            if (item.fRelevantObject.length > 2) {
            //图纸相关文档
            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}`;
@@ -849,14 +915,15 @@
                    }
                });
            }
            else
            {
              else
              {
                uni.showToast({
                    title: '请求预览链接失败',
                    icon: 'none'
                });
            }
        },
              }
            },
            
            getGenUpdate() {
                if (!this.formData.id || !this.formData.billNo) {
pages/QC/XJ/Add.vue
@@ -119,6 +119,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" @click="viewAttachmentInfo">查看附件信息</button>
         <button class="action-btn danger" v-if="!isUpdate && !formData.fcheckResu && !isShowTable && formData.fsubmit !== 1" @click="removeXJ">删除单据</button>
@@ -268,6 +274,61 @@
          </div>
        </view>
      </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="showFilePreviewPopup" class="overlay">
@@ -356,10 +417,16 @@
        lineNo: "",
  
        tableData: [],
        drawing: [],
  
        isSubmit: true,
        isSubmit: true,
  
        isUpdate: true,
        isUpdate: true,
        isShowTable: false,
        drawingShow: false,
        itemShow: false,
  
        remarks: "",
        remarksPopup: false,
@@ -1028,6 +1095,318 @@
          }
        });
      },
      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.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 = [];
                      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'
          });
        }
      },
      
      previewOfficeFile(url, fileName) {
        this.previewTitle = fileName;