zjh
10 天以前 d123ca35bb3ec4982af44aeb1ffffa8a3569a21b
pages/QC/XJ/Add.vue
@@ -61,13 +61,8 @@
    </view>
    <!-- 操作按钮区 - 检验项目获取 -->
    <view v-if="isUpdate && !isShowTable" class="action-buttons">
      <button class="primary-btn" @click="getItem">创建检验单</button>
    </view>
    <view v-if="isShowTable" class="action-buttons">
      <button class="secondary-btn" @click="getTable">获取项目</button>
      <button v-if="isUpdate" class="primary-btn" @click="saveTable">生成项目</button>
    <view v-if="isUpdate" class="action-buttons">
      <button class="secondary-btn" @click="getTable">获取检验项目</button>
    </view>
    <!-- 检验项目表格 -->
@@ -126,11 +121,12 @@
            <view class="description-text">{{ item.itemMod }}</view>
          </td>
          <td>
            <button :class="{
                        'record-btn-fill': item.isCheck >= item.levelNum,
                        'record-btn-view': item.isCheck < item.levelNum
                     }" class="record-btn" @click="toDetail(item)">
              {{ item.isCheck >= item.levelNum ? '查看' : '填写' }}
            <button v-if="item.isCheck < item.levelNum" class="record-btn record-btn-fill"
                    @click="toDetail(item)">
              填写 ({{ item.isCheck }}/{{ item.levelNum }})
            </button>
            <button v-else class="record-btn record-btn-view" @click="toDetail(item)">
              查看 ({{ item.isCheck }}/{{ item.levelNum }})
            </button>
          </td>
        </tr>
@@ -138,27 +134,31 @@
      </table>
    </view>
    <!-- 操作按钮区 - 底部操作 -->
    <view v-if="!isUpdate && !isShowTable" class="action-buttons">
      <button class="secondary-btn" @click="toImage">图片管理</button>
      <button class="secondary-btn" @click="saveRemarks">添加描述</button>
      <button v-if="!formData.fcheckResu" class="primary-btn"
              style="background: linear-gradient(135deg, #e74c3c, #c0392b);" @click="removeXJ">删除单据
    <!-- 操作按钮区 -->
    <view class="action-buttons">
      <button v-if="isUpdate && !isShowTable" class="secondary-btn" @click="getItem">创建检验单并生成部分默认值</button>
      <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="toImage">上传/查看图片</button>
      <button v-if="!isUpdate && !formData.fsubmit && !isShowTable" class="secondary-btn" @click="removeXJ">
        删除单据
      </button>
      <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="saveRemarks">添加备注</button>
      <button v-if="!isUpdate && !isShowTable && formData.fsubmit !== 1 && getPendingCount() === 0 && tableData.length > 0" class="primary-btn" @click="submit">审核单据</button>
      <button v-if="isShowTable" class="secondary-btn" @click="getTable">获取检验项目</button>
      <button v-if="isShowTable && isUpdate" class="primary-btn" @click="saveTable">生成检验项目</button>
    </view>
    <!-- 不合格描述弹窗 -->
    <view v-if="remarksPopup" class="overlay">
      <view class="popup">
        <h3>修改不合格描述</h3>
        <view class="form-group">
          <label class="form-label">不合格描述:</label>
          <input v-model="remarks" class="form-input" placeholder="请输入不合格描述" type="text"/>
        </view>
        <view class="popup-buttons">
        <h3>修改备注</h3>
        <form>
          <view class="form-group">
            <label class="form-label">备注:</label>
            <textarea v-model="remarks" class="form-input form-textarea" placeholder="请输入备注信息..."></textarea>
          </view>
          <button class="updateBut" @click="editRemarks">修改</button>
          <button class="secondary-btn" @click="remarksPopup = !remarksPopup">取消</button>
        </view>
          <button @click="remarksPopup = !remarksPopup">取消</button>
        </form>
      </view>
    </view>
  </view>
@@ -179,11 +179,12 @@
        catQty: "",
        detailMem: "",
        taskNo: "",
        fcheckResu: "",
        fcheckResu: 0,
        boardModel: "",
        planQty: "",
        mocode: "",
        boardStyle: ""
        boardStyle: "",
        fSubmit: 0
      },
      DAA020List: [],
@@ -254,8 +255,51 @@
    },
    // 获取待检验项目数量
    getPendingCount() {
      return this.tableData.filter(item => !item.result || item.result === '').length;
      return this.tableData.filter(item => item.result === '未完成').length;
    },
    submit() {
      // 双重保险:检查是否还有未完成的检验项目
      const pendingCount = this.getPendingCount();
      if (pendingCount > 0) {
        this.$showMessage(`还有 ${pendingCount} 个检验项目未完成,请完成所有检验项目后再提交审核`);
        return;
      }
      // 检查是否有检验项目
      if (this.tableData.length === 0) {
        this.$showMessage("没有检验项目,无法提交审核");
        return;
      }
      this.$post({
        url: "/XJ/XJQaSubmit",
        data: {
          userNo: this.$loginInfo.account,
          gid: this.formData.id
        }
      }).then(res => {
        console.log("完整响应数据:", res);
        console.log("Status Code的值:", res.statusCode);
        console.log("返回的数据:", res.data);
        // 检查多种成功条件
        if (res.statusCode === 200 || res.status === 0 || res.data === true || res.data.tbBillList === true) {
          this.$showMessage("成功提交检验");
          // 提交成功后跳转到列表页面
          setTimeout(() => {
            uni.navigateTo({
              url: '/pages/QC/XJ/List'
            });
          }, 1500); // 1.5秒后跳转,让用户看到成功提示
        } else {
          this.$showMessage(res.data.message || res.message || "提交失败");
        }
      }).catch(err => {
        console.log("提交出错:", err);
        this.$showMessage("提交失败,请重试");
      })
    },
    removeXJ() {
      if (this.formData.id) {
        this.$post({
@@ -959,8 +1003,9 @@
  padding: 20px;
  border: 1px solid #ccc;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  width: 68vw;
  height: 25vh;
  width: 85vw;
  min-height: 35vh;
  max-height: 60vh;
  border-radius: 8px;
}
@@ -993,6 +1038,13 @@
  border-radius: 4px;
  font-size: 14px;
  box-sizing: border-box;
}
.popup .form-textarea {
  min-height: 120px;
  resize: vertical;
  font-family: inherit;
  line-height: 1.5;
}
.popup-buttons {
@@ -1033,5 +1085,17 @@
    display: block;
    overflow-x: auto;
  }
  /* 移动端弹出框优化 */
  .popup {
    width: 95vw;
    min-height: 40vh;
    max-height: 70vh;
    padding: 15px;
  }
  .popup .form-textarea {
    min-height: 100px;
  }
}
</style>