xwt
3 天以前 62cb247da5cc1cc097c5afea402aabee05260431
pages/QC/XJ/Add.vue
@@ -110,17 +110,24 @@
        </view>
      </view>
  
      <!-- 操作按钮 -->
      <view class="action-buttons">
        <button class="action-btn primary" v-if="isUpdate && !isShowTable" @click="getItem">创建检验单并生成部分默认值</button>
        <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="toImage">上传/查看图片</button>
        <button class="action-btn danger" v-if="!isUpdate && !formData.fcheckResu && !isShowTable" @click="removeXJ">删除单据</button>
        <button class="action-btn warning" v-if="!isUpdate && !isShowTable" @click="saveRemarks">添加不合格描述</button>
        <button class="action-btn primary" v-if="isShowTable" @click="getTable">获取检验项目</button>
        <button class="action-btn primary" v-if="isShowTable && isUpdate" @click="saveTable">生成检验项目</button>
        <button class="action-btn success" v-if="!isUpdate && !isShowTable" @click="getGenUpdate">获取检验项目</button>
        <button class="action-btn success" v-if="!isUpdate && !isShowTable" @click="submitInspection">提交检验</button>
      </view>
             <!-- 操作按钮 -->
       <view class="action-buttons">
         <!-- 新建单据时的创建按钮 -->
         <button class="action-btn primary" v-if="isUpdate && !isShowTable" @click="save">
           创建检验单并生成部分默认值
         </button>
         <!-- 已有单据的操作按钮 -->
         <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="toImage">上传/查看图片</button>
         <button class="action-btn danger" v-if="!isUpdate && !formData.fcheckResu && !isShowTable && formData.fsubmit !== 1" @click="removeXJ">删除单据</button>
         <button class="action-btn warning" v-if="!isUpdate && !isShowTable && formData.fsubmit !== 1" @click="saveRemarks">添加不合格描述</button>
         <!-- 检验项目管理按钮 -->
         <button class="action-btn primary" v-if="isShowTable" @click="getTable">获取检验项目</button>
         <button class="action-btn primary" v-if="isShowTable && isUpdate" @click="saveTable">生成检验项目</button>
         <button class="action-btn success" v-if="!isUpdate && !isShowTable && formData.fsubmit !== 1" @click="getGenUpdate">获取检验项目</button>
         <button class="action-btn success" v-if="!isUpdate && !isShowTable && formData.fsubmit !== 1" @click="submitInspection">提交检验</button>
       </view>
      <!-- 修改不合格描述弹出框 -->
      <view v-if="remarksPopup" class="overlay">
        <view class="popup">
@@ -147,23 +154,27 @@
  export default {
    data() {
      return {
        formData: {
          id: "",
          releaseNo: "",
          createBy: "",
          createDate: "",
          daa020: "",
          itemNo: "",
          billNo: "",
          catQty: "",
          detailMem: "",
          taskNo: "",
          fcheckResu: "",
          boardModel: "",
          planQty: "",
          mocode: "",
          boardStyle: ""
        },
                 formData: {
           id: "",
           releaseNo: "",
           createBy: "",
           createDate: "",
           daa020: "",
           daa002: "", // 添加产品ID字段
           itemNo: "",
           itemName: "", // 添加物料名称
           itemModel: "", // 添加规格型号
           billNo: "",
           catQty: "",
           detailMem: "",
           taskNo: "",
           fcheckResu: "",
           fsubmit: 0, // 添加提交状态字段
           boardModel: "",
           planQty: "",
           mocode: "",
           boardStyle: ""
         },
  
        DAA020List: [],
        DAA020Index: -1,
@@ -270,29 +281,75 @@
          this.$showMessage("请先选择检验单号");
        }
      },
      getItem() {
             save() {
         // 验证必填字段 - 借鉴SJ的验证逻辑,但保持XJ的字段验证
         if (!this.formData.billNo) {
           this.$showMessage("请选择工单单号");
           return;
         }
         if (!this.formData.itemNo) {
           this.$showMessage("物料信息获取失败,请重新选择工单");
           return;
         }
         if (!this.tableData || this.tableData.length === 0) {
           this.$showMessage("此物料没有启用的检验项目,请维护!");
           return;
         }
        if (!this.formData.billNo) {
          this.$showMessage("请选择工单单号");
          return;
        }
        this.$post({
          url: "/XJ/save",
          data: {
            from: this.formData,
            userNo: this.$loginInfo.account,
            items: this.tableData
          }
        }).then(res => {
          this.formData.id = res.data.tbBillList;
          this.$showMessage("生成检验项目成功");
          this.init();
          this.isUpdate = false;
        });
      },
         const saveData = {
           ReleaseNo: this.formData.releaseNo,
           ItemNo: this.formData.itemNo,
           BillNo: this.formData.billNo,
           DepartmentId: this.selectedDepartment, // 只使用部门ID
           WorkShop: null, // 明确设置为null,避免数据库字段错误
           ItemId: this.formData.daa002, // 使用工单中的产品ID
           PlanQty: this.formData.planQty,
           CreateBy: this.formData.createBy,
           CreateDate: this.formData.createDate,
           FcheckDate: new Date(),
           Remarks: this.formData.remarks || ""
         };
         // 调试信息
         console.log("创建检验单数据:", {
           formData: this.formData,
           selectedDepartment: this.selectedDepartment,
           WORKSHOP: this.WORKSHOP,
           saveData: saveData,
           tableData: this.tableData
         });
         this.$post({
           url: "/XJ/save",
           data: {
             from: saveData,
             userNo: this.$loginInfo.account,
             items: this.tableData
           }
         }).then(res => {
           if (res.data.tbBillList) {
             this.formData.id = res.data.tbBillList;
             // 如果返回了完整的检验项目信息,更新tableData
             if (res.data.xjDto && res.data.xjDto.items) {
               this.tableData = res.data.xjDto.items;
             }
             this.$showMessage("创建检验单并生成默认值成功");
             this.isUpdate = false;
             // 更新formData的其他字段
             this.formData = { ...this.formData, ...saveData };
           } else {
             this.$showMessage("创建检验单失败,请检查数据");
           }
         }).catch(err => {
           console.error("创建检验单错误:", err);
           this.$showMessage("创建检验单失败:" + (err.message || "未知错误"));
         });
       },
      
      // 加载部门列表
      loadDepartments() {
@@ -374,20 +431,28 @@
        this.DAA020Index = event.mp.detail.value;
        this.lineNo = this.lineList[this.DAA020Index].lineNo;
        // 设置线体编号到formData
        this.formData.daa020 = this.lineList[this.DAA020Index].lineName;
        this.$post({
          url: "/XJ/getDaa001",
          url: "/XJ/getWorkOrderWithItem", // 调用新的API获取工单详细信息
          data: {
            daa020: this.lineNo
          }
        }).then(res => {
          //填充工单号的数据源
          this.schemeResult = res.data.tbBillList;
          this.DAA001List = this.schemeResult.map(s => s.Daa001);
          this.DAA001List = this.schemeResult.map(s => s.daa001); // 修改为小写
          //变为默认空值的状态
          this.DAA001Index = -1;
          this.formData.billNo = "";
          // 清空物料信息
          this.formData.itemNo = "";
          this.formData.itemName = "";
          this.formData.itemModel = "";
          this.formData.planQty = "";
          this.tableData = [];
        })
      },
@@ -396,13 +461,16 @@
      onDaa001Change(event) {
        this.DAA001Index = event.mp.detail.value;
        const selectedWorkOrder = this.schemeResult[this.DAA001Index];
        this.formData.billNo = selectedWorkOrder.Daa001;
        this.formData.planQty = selectedWorkOrder.Daa008;
                 // 设置工单信息
         this.formData.billNo = selectedWorkOrder.daa001; // 修改为小写
         this.formData.planQty = selectedWorkOrder.daa008; // 修改为小写
         this.formData.daa002 = selectedWorkOrder.daa002; // 设置产品ID
        
        // 从工单数据中获取物料信息
        this.formData.itemNo = selectedWorkOrder.ItemNo; // 物料编码
        this.formData.itemName = selectedWorkOrder.ItemName; // 物料名称
        this.formData.itemModel = selectedWorkOrder.ItemModel; // 规格型号
        this.formData.itemNo = selectedWorkOrder.itemNo; // 修改为小写
        this.formData.itemName = selectedWorkOrder.itemName; // 修改为小写
        this.formData.itemModel = selectedWorkOrder.itemModel; // 修改为小写
        
        // 获取检验项目
        this.$post({
@@ -419,46 +487,53 @@
            this.isSubmit = true;
            this.tableData = [];
          }
        }).catch(err => {
          console.error("获取检验项目错误:", err);
          this.$showMessage("获取检验项目失败");
          this.tableData = [];
        });
      },
      init() {
        this.$post({
          url: "/XJ/getPage",
          data: {
            id: this.formData.id,
            pageIndex: 1,
            limit: 1,
          }
        }).then(res => {
          let data = res.data.tbBillList[0];
          if (data) {
            this.formData = data;
            this.$post({
              url: "/XJ/getJYItem",
              data: {
                pid: this.formData.id
              }
            }).then(res1 => {
              let tableData = res1.data.tbBillList
              //当已检验个数都不为空时按照检测结构排序
              tableData.sort((a, b) => {
                if (a.result === '未完成' && b.result === '合格') {
                  return -1;
                } else if (a.result === '合格' && b.result === '未完成') {
                  return 1;
                } else {
                  return 0;
                }
              });
              this.tableData = tableData;
              if (this.tableData.length === 0) {
                this.isShowTable = true;
              }
            })
          }
        });
      },
                         init() {
         this.$post({
           url: "/XJ/getPage",
           data: {
             id: this.formData.id,
             pageIndex: 1,
             limit: 1,
           }
         }).then(res => {
           let data = res.data.tbBillList[0];
           if (data) {
             this.formData = data;
             // 不再根据fsubmit字段修改isUpdate状态
             // 而是通过按钮的v-if条件来控制显示
             this.$post({
               url: "/XJ/getJYItem",
               data: {
                 pid: this.formData.id
               }
             }).then(res1 => {
               let tableData = res1.data.tbBillList
               //当已检验个数都不为空时按照检测结构排序
               tableData.sort((a, b) => {
                 if (a.result === '未完成' && b.result === '合格') {
                   return -1;
                 } else if (a.result === '合格' && b.result === '未完成') {
                   return 1;
                 } else {
                   return 0;
                 }
               });
               this.tableData = tableData;
               if (this.tableData.length === 0) {
                 this.isShowTable = true;
               }
             })
           }
         });
       },
      toDetail(item) {
        if (this.isUpdate) {
          uni.showToast({