xwt
2025-09-05 cdc6decaadbc0abbe46167a0796fa7f701443d7f
pages/QC/LLJ/List.vue
@@ -78,6 +78,7 @@
                     <text class="info-label">数量</text>
                     <text class="info-content highlight">{{item.fcovertQty}}</text>
                  </view>
               </view>
               <view class="info-row">
                  <view class="info-item">
@@ -86,10 +87,7 @@
                  </view>
               </view>
               <view class="info-row">
                  <view class="info-item" v-if="item.newFngDesc!=null">
                     <text class="info-label">上次不良描述</text>
                     <text class="info-content">{{item.newFngDesc}}</text>
                  </view>
                  <view class="info-item" v-if="item.fngDesc!=null">
                     <text class="info-label">不良描述</text>
                     <text class="info-content">{{item.fngDesc}}</text>
@@ -120,7 +118,7 @@
      data() {
         return {
            projectIndex: 0,
            optionsIndex: 0,
            optionsIndex: 1, // 默认选择物料编号
            projects: ['当前', '全部'],
            activeTab: 0, // 0-未检验, 1-已检验
            uncheckedCount: 0,
@@ -136,6 +134,17 @@
      },
      onLoad() {
         //页面加载时调用的事件
         // 初始化selectedField,因为默认选择物料编号
         const fieldMap = {
            0: 'DEPARTMENTNAME', // 项目
            1: 'itemNo', // 物料编号
            2: 'itemName', // 物料名称
            3: 'suppName', // 供应商
            4: 'lotNo' ,// 到货单号
            5: 'releaseNo' ,// 检验单号
            6: 'itemModel',//物料规格
         };
         this.selectedField = fieldMap[this.optionsIndex];
         this.init();
      },
      methods: {
@@ -198,9 +207,12 @@
               // 去重处理 - 根据 releaseNo 去重
               const uniqueList = this.removeDuplicatesByReleaseNo(res.data.tbBillList);
               
               // 对数据进行排序处理
               const sortedList = this.sortInspectionList(uniqueList);
               if (this.pageIndex === 1) {
                  // 如果是第一页,直接覆盖原数据
                  this.inspectionList = uniqueList;
                  this.inspectionList = sortedList;
                  //添加Tab信息,判断是已检还是未检数据
                  this.inspectionList.forEach((item, index) => {
                     this.$set(item, 'activeTab', this.activeTab);
@@ -209,9 +221,9 @@
                  });
               } else {
                  if (uniqueList.length > 0) {
                  if (sortedList.length > 0) {
                     // 如果是下一页,追加新数据
                     this.inspectionList = [...this.inspectionList, ...uniqueList];
                     this.inspectionList = [...this.inspectionList, ...sortedList];
                     //添加Tab信息,判断是已检还是未检数据
                     this.inspectionList.forEach((item, index) => {
                        this.$set(item, 'activeTab', this.activeTab);
@@ -353,18 +365,18 @@
         
         // 根据检验项目数量获取状态文本
         getStatusText(item) {
            // 如果没有检验项目,显示"未维护"
            if (!item.inspectionItemCount || item.inspectionItemCount === 0) {
            // 使用JYXM字段判断是否维护了检验项目
            if (item.jyxm === 0 || item.jyxm === '0') {
               return '未维护';
            }
            // 如果有检验项目,显示"待检验"
            // 如果维护了检验项目,显示"待检验"
            return '待检验';
         },
         
         // 判断是否为未维护且非紧急放行
         isUnmaintainedAndNotEmergency(item) {
            // 检查是否为未维护(没有检验项目)
            const isUnmaintained = !item.inspectionItemCount || item.inspectionItemCount === 0;
            // 使用JYXM字段检查是否为未维护(0表示未维护)
            const isUnmaintained = item.jyxm === 0 || item.jyxm === '0';
            // 检查是否为非紧急放行
            const isNotEmergency = item.lotNo1 !== '紧急放行,请勿验退!';
            return isUnmaintained && isNotEmergency;
@@ -376,6 +388,50 @@
            // 如果item.fcode为null或undefined,说明该物料未在V_LLJ_USER视图中
            // 或者该物料没有维护检验员
            return !item.fcode || item.fcode === null || item.fcode === '';
         },
         // 对检验单列表进行排序
         sortInspectionList(list) {
            return list.sort((a, b) => {
               // 第一优先级:状态分组(未提交 vs 已提交)
               const aIsSubmitted = a.status === '已提交';
               const bIsSubmitted = b.status === '已提交';
               if (aIsSubmitted && !bIsSubmitted) return 1; // 已提交的排在后面
               if (!aIsSubmitted && bIsSubmitted) return -1; // 未提交的排在前面
               // 未提交单据的排序逻辑
               if (!aIsSubmitted && !bIsSubmitted) {
                  // 第一优先级:紧急放行
                  const aIsEmergency = a.lotNo1 === '紧急放行,请勿验退!';
                  const bIsEmergency = b.lotNo1 === '紧急放行,请勿验退!';
                  if (aIsEmergency && !bIsEmergency) return -1;
                  if (!aIsEmergency && bIsEmergency) return 1;
                  // 第二优先级:未维护检验项目(使用JYXM字段)
                  const aIsUnmaintained = a.jyxm === 0 || a.jyxm === '0';
                  const bIsUnmaintained = b.jyxm === 0 || b.jyxm === '0';
                  if (aIsUnmaintained && !bIsUnmaintained) return -1;
                  if (!aIsUnmaintained && bIsUnmaintained) return 1;
                  // 第三优先级:创建时间(创建时间越晚越靠后)
                  const aCreateTime = new Date(a.createDate || 0);
                  const bCreateTime = new Date(b.createDate || 0);
                  return aCreateTime - bCreateTime; // 升序:早的在前,晚的在后
               }
               // 已提交单据的排序逻辑
               if (aIsSubmitted && bIsSubmitted) {
                  // 按提交时间排序(提交的越晚越靠前)
                  const aIqcTime = new Date(a.iqcDate || 0);
                  const bIqcTime = new Date(b.iqcDate || 0);
                  return bIqcTime - aIqcTime; // 降序:晚的在前,早的在后
               }
               return 0;
            });
         }
      }
   }
@@ -404,7 +460,7 @@
   /* 新增搜索框样式 */
   .search-container {
      display: flex;
      flex: 1;
      width: 300px; /* 固定宽度 */
      margin: 0 10px;
      height: 36px;
      /* 与其他控件高度一致 */
@@ -417,6 +473,8 @@
      border-radius: 4px 0 0 4px;
      font-size: 14px;
      background-color: white;
      min-width: 200px; /* 最小宽度 */
      max-width: 250px; /* 最大宽度 */
   }
   .search-button {
@@ -604,6 +662,11 @@
      color: #2c3e50;
      line-height: 1.5;
   }
   .info-content.unmaintained {
      color: #e74c3c;
      font-weight: 600;
   }
   .highlight {
      font-weight: 600;