xwt
2 天以前 7c2192a2f000d94add173b77b6bd4c8c4fc6a5e4
pages/QC/LLJ/Add.vue
@@ -1,14 +1,14 @@
<template>
   <view class="inspection-sheet">
      <!-- 头部信息 -->
      <view class="sheet-header">
         <h1>来料检验单</h1>
         <view class="inspection-number">检验单号:{{formData.releaseNo}}</view>
         <!--实验室送检 -->
         <view style="text-align: right;" class="action-buttons">
            <a class="sysLike" v-if="this.current" @click="toSysSubmitFrom(formData.releaseNo)">实验室送检</a>
         <!-- 头部信息 -->
         <view class="sheet-header">
            <h1>来料检验单</h1>
            <view class="inspection-number">检验单号:{{formData.releaseNo}}</view>
            <!--实验室送检 -->
            <view style="text-align: right;" class="action-buttons">
               <a class="sysLike" v-if="this.current" @click="toSysSubmitFrom(formData.releaseNo)">实验室送检</a>
            </view>
         </view>
      </view>
      <!-- 基本信息区 -->
      <view class="basic-info">
@@ -56,10 +56,6 @@
            <view class="info-label">不良描述:</view>
            <view class="info-value">{{formData.fngDesc}}</view>
         </view>
         <view class="info-block" v-if="formData.newFngDesc!=null">
            <view class="info-label">上次不良:</view>
            <view class="info-value">{{formData.newFngDesc}}</view>
         </view>
      </view>
      <view class="dropdown-row">
         <view class="info-label">不良原因:</view>
@@ -90,7 +86,7 @@
      </view>
      <view class="info-block" style="margin-top: 10px;">   
          <view class="info-label">破坏实验数量:</view>
          <view class="info-value highlight">{{formData.phsy}}</view>
          <view class="info-value highlight">{{formData.PHSY || formData.phsy || ''}}</view>
      </view>
      <!-- 表单上方操作按钮区 -->
@@ -140,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>
@@ -173,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">
@@ -342,6 +365,7 @@
            current: true,
            drawing: [],
            drawingShow: false,
            itemShow: false,
            badreason: '',
            PSTYPE: '',
            WORKSHOP: '',
@@ -372,6 +396,19 @@
            previewItemNo: '',
            previewType: '', // 'text', 'image', 'excel', 'unsupported'
            
         }
      },
      computed: {
         isUnmaintainedAndNotEmergency() {
            // 判断表单是否未维护且不是紧急放行
            // 未维护的条件:tableData为空或所有检验项目都未完成
            const isUnmaintained = this.tableData.length === 0 ||
               this.tableData.every(item => item.fcheckResu === null || item.fcheckResu === '');
            // 不是紧急放行的条件:emergencyStatus为false
            const isNotEmergency = !this.formData.emergencyStatus;
            return isUnmaintained && isNotEmergency;
         }
      },
      onLoad(options) {
@@ -577,7 +614,7 @@
                        // 统一推送给HMCS,不管哪个账号
                        this.QcIssueResultDetailes = {
                           fbatchQty: this.formData.fbatchQty,
                           fbatchQty: this.formData.fcovertQty,
                           itemName: this.formData.itemName,
                           itemNo: this.formData.itemNo,
                           suppName: this.formData.suppName,
@@ -725,9 +762,9 @@
                  this.pstypeIndex = this.pstypeOptions.indexOf(this.PSTYPE);
                  
                  // 确保PHSY字段被正确设置
                  this.formData.PHSY = data.PHSY;
                  this.PHSY = data.PHSY || ''; // 同时设置页面绑定的PHSY变量
                  // 确保PHSY字段被正确设置(兼容大小写)
                  this.formData.PHSY = data.PHSY || data.phsy;
                  this.PHSY = (data.PHSY || data.phsy || '').toString(); // 同时设置页面绑定的PHSY变量
                  
                  console.log("加载的紧急放行状态:", this.formData.emergencyStatus);
                  this.$post({
@@ -740,6 +777,16 @@
                     let tableData = res1.data.tbBillList
                     //当已检验个数都不为空时按照检测结构排序
                     tableData.sort((a, b) => {
                        // 首先按Fstand排序:Fstand不为空的排在前面
                        const aHasFstand = a.fstand !== null && a.fstand !== undefined;
                        const bHasFstand = b.fstand !== null && b.fstand !== undefined;
                        if (aHasFstand && !bHasFstand) {
                           return -1;
                        } else if (!aHasFstand && bHasFstand) {
                           return 1;
                        }
                        // 然后按检验结果排序
                        if (a.result === '合格' && b.result === '未完成') {
                           return -1;
                        } else if (a.result === '未完成' && b.result === '合格') {
@@ -787,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() {
@@ -841,7 +890,7 @@
            });
            this.drawingShow = true
         },
         //图纸相关文档
         openDrawings(item) {
@@ -1287,19 +1336,31 @@
         addDestruction() {
            // 添加破坏实验的逻辑
            this.destructionPopup = !this.destructionPopup;
            // 修复:确保PHSY变量正确初始化
            this.PHSY = this.formData.PHSY || '';
            this.isInteger = true;
         },
         editDestruction() {
            // 验证输入是否为整数或空字符串
            if(this.PHSY === '') {
               this.isInteger = true;
            } else {
               const isInteger = /^-?\d+$/.test(this.PHSY);
               this.isInteger = isInteger;
               if (!isInteger) {
                  uni.showToast({
                     title: '请输入整数值或留空',
                     icon: 'none',
                     duration: 2000
                  });
                  return;
               }
            }
            // 显示加载提示
            uni.showLoading({
               title: '保存中...'
            });
         
            this.$post({
               url: "/LLJ/savePhsyGid",
@@ -1309,20 +1370,42 @@
                  PHSY: this.PHSY
               }
            }).then(res => {
               if (res.data.tbBillList > 0) {
               uni.hideLoading();
               if (res.data && res.data.tbBillList > 0) {
                  this.formData.PHSY = this.PHSY === '' ? null : this.PHSY;
                  this.destructionPopup = false;
                  uni.showToast({
                     title: '保存成功',
                     icon: 'success',
                     duration: 2000
                  });
                  // 立即重新加载数据确保同步
                  setTimeout(() => {
                     this.init();
                  }, 500);
               } else {
                  uni.showToast({
                     title: '保存失败',
                     icon: 'none',
                     duration: 2000
                  });
               }
            }).catch(err => {
               uni.hideLoading();
               console.error('保存失败:', err);
               uni.showToast({
                  title: '保存失败,请重试',
                  icon: 'none',
                  duration: 2000
               });
            })
         },
         clearDestruction() {
            this.PHSY = '';
            // 显示加载提示
            uni.showLoading({
               title: '清除中...'
            });
            this.$post({
               url: "/LLJ/savePhsyGid",
               data: {
@@ -1331,16 +1414,35 @@
                  PHSY: ''
               }
            }).then(res => {
               if (res.data.tbBillList > 0) {
               uni.hideLoading();
               if (res.data && res.data.tbBillList > 0) {
                  this.formData.PHSY = null;
                  this.PHSY = '';
                  this.destructionPopup = false;
                  uni.showToast({
                     title: '清除成功',
                     icon: 'success',
                     duration: 2000
                  });
                  // 立即重新加载数据确保同步
                  setTimeout(() => {
                     this.init();
                  }, 500);
               } else {
                  uni.showToast({
                     title: '清除失败',
                     icon: 'none',
                     duration: 2000
                  });
               }
            }).catch(err => {
               uni.hideLoading();
               console.error('清除失败:', err);
               uni.showToast({
                  title: '清除失败,请重试',
                  icon: 'none',
                  duration: 2000
               });
            })
         },
         viewAttachmentInfo() {
@@ -1924,6 +2026,39 @@
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
      min-height: 100vh;
      position: relative;
      transition: all 0.3s ease;
   }
   /* 未维护且非紧急放行表单的紫色样式 */
   .inspection-sheet.unmaintained-form {
      background: linear-gradient(135deg, #f8f4ff 0%, #f0e6ff 100%);
      border: 2px solid #9c27b0;
      box-shadow: 0 0 20px rgba(156, 39, 176, 0.2);
   }
   .inspection-sheet.unmaintained-form .sheet-header {
      border-bottom: 2px solid #9c27b0;
   }
   .inspection-sheet.unmaintained-form .sheet-header h1 {
      color: #6a1b9a;
   }
   .inspection-sheet.unmaintained-form .inspection-number {
      color: #9c27b0;
   }
   .inspection-sheet.unmaintained-form .material-info {
      border: 1px solid #e1bee7;
      background-color: rgba(156, 39, 176, 0.05);
   }
   .inspection-sheet.unmaintained-form .info-label {
      color: #6a1b9a;
   }
   .inspection-sheet.unmaintained-form .info-value {
      color: #4a148c;
   }
   /* 头部样式 */