xwt
2025-08-12 c3c23631be761f336789f4cc11d33fab2ec9f125
pages/QC/XJ/Add.vue
@@ -24,28 +24,32 @@
              <view class="info-value">{{ formData.createDate }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">生产车间</view>
              <picker v-if="isUpdate" class="picker-input" name="selector" :range="departmentList" range-key="departmentname"
                      @change="onDepartmentChange">
                <view class="picker-value">{{ getSelectedDepartmentName() || '请选择车间' }}</view>
              </picker>
              <view v-else class="info-value">{{ WORKSHOP }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">线体编号</view>
              <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA020List"
              <picker v-if="isUpdate" class="picker-input" name="selector" :range="filteredDAA020List"
                      @change="onDaa020Change">
                <view class="picker-value">{{ DAA020List[DAA020Index] || '请选择' }}</view>
                <view class="picker-value">{{ filteredDAA020List[DAA020Index] || '请选择' }}</view>
              </picker>
              <view v-else class="info-value">{{ formData.daa020 }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">物料编码</view>
              <picker v-if="isUpdate" class="picker-input" name="selector" :range="ItemList"
                      @change="onItemChange">
                <view class="picker-value">{{ ItemList[ItemIndex] || '请选择' }}</view>
              </picker>
              <view v-else class="info-value">{{ formData.itemNo }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">计划编号</view>
              <view class="info-label">工单单号</view>
              <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA001List"
                      @change="onDaa001Change">
                <view class="picker-value">{{ DAA001List[DAA001Index] || '请选择' }}</view>
              </picker>
              <view v-else class="info-value">{{ formData.billNo }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">物料编码</view>
              <view class="info-value">{{ formData.itemNo }}</view>
            </view>
            <view class="info-item">
              <view class="info-label">物料名称</view>
@@ -114,6 +118,8 @@
        <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 v-if="remarksPopup" class="overlay">
@@ -161,17 +167,14 @@
  
        DAA020List: [],
        DAA020Index: -1,
        filteredDAA020List: [],
  
        DAA001List: [],
                DAA001List: [],
        DAA001Index: -1,
        schemeResult: [],
        isShowTable: false,
        ItemList: [],
        ItemIndex: -1,
        boardItems: [],
                isShowTable: false,
        lineList: [],
  
        lineNo: "",
@@ -184,6 +187,11 @@
  
        remarks: "",
        remarksPopup: false,
        // 部门选择相关
        departmentList: [],
        selectedDepartment: '',
        WORKSHOP: '',
      };
    },
    onLoad(options) {
@@ -213,7 +221,11 @@
        }).then(res => {
          this.lineList = res.data.tbBillList;
          this.DAA020List = res.data.tbBillList.map(item => item.lineName);
          this.filteredDAA020List = this.DAA020List; // 初始时显示所有线体
        })
        // 获取部门列表
        this.loadDepartments();
      }
    },
    methods: {
@@ -260,13 +272,10 @@
      },
      getItem() {
  
        if (this.isSubmit) {
          this.$showMessage("此物料无启用的检验项目,请维护!");
          return;
        }
  
        if (!this.formData.billNo) {
          this.$showMessage("请选择计划编号");
          this.$showMessage("请选择工单单号");
          return;
        }
  
@@ -284,86 +293,132 @@
          this.isUpdate = false;
        });
      },
      //生产线别选择并初始话工单号
      // 加载部门列表
      loadDepartments() {
        this.$post({
          url: "/XJ/getDepartmentsWithLines"
        }).then(res => {
          if (res.status === 0) {
            this.departmentList = res.data.tbBillList;
          } else {
            this.$showMessage("获取部门列表失败");
          }
        });
      },
      // 部门选择变化处理
      onDepartmentChange(e) {
        const index = e.detail.value;
        if (index >= 0 && index < this.departmentList.length) {
          const selectedDept = this.departmentList[index];
          this.selectedDepartment = selectedDept.departmentid;
          this.WORKSHOP = selectedDept.departmentname;
          // 根据选中的部门过滤线体列表
          this.filterLinesByDepartment(selectedDept.departmentid);
          // 保存部门选择
          this.saveDepartmentSelection();
        }
      },
      // 获取选中的部门名称
      getSelectedDepartmentName() {
        if (!this.selectedDepartment) return '';
        const dept = this.departmentList.find(item => item.departmentid === this.selectedDepartment);
        return dept ? dept.departmentname : '';
      },
      // 保存部门选择
      saveDepartmentSelection() {
        if (this.formData.id && this.selectedDepartment) {
          this.$post({
            url: "/XJ/saveDepartmentSelection",
            data: {
              id: this.formData.id,
              departmentId: this.selectedDepartment,
              departmentName: this.WORKSHOP
            }
          }).then(res => {
            if (res.status === 0) {
              this.$showMessage("部门选择已保存");
            }
          });
        }
      },
      // 根据部门过滤线体列表
      filterLinesByDepartment(departmentId) {
        this.$post({
          url: "/XJ/getLinesByDepartment",
          data: {
            departmentId: departmentId
          }
        }).then(res => {
          if (res.status === 0) {
            this.filteredDAA020List = res.data.tbBillList.map(item => item.lineName);
            this.lineList = res.data.tbBillList;
            // 重置线体选择索引
            this.DAA020Index = -1;
            this.formData.daa020 = '';
          } else {
            this.$showMessage("获取线体列表失败");
          }
        });
      },
            //生产线别选择并初始化工单号
      onDaa020Change(event) {
        //获取生产线别的下标地址
        this.DAA020Index = event.mp.detail.value;
        this.lineNo = this.lineList[this.DAA020Index].lineNo;
        this.$post({
          url: "/XJ/getBoardItem",
          data: {
            lineNo: this.lineNo
          }
        }).then(res => {
          //填充工单号的数据源
          this.boardItems = res.data.tbBillList;
          this.ItemList = this.boardItems.map(item => item.itemNo);
          //变为默认空值的状态
          this.ItemIndex = -1;
        })
      },
      onItemChange(event) {
        this.ItemIndex = event.mp.detail.value;
        this.formData.itemNo = this.boardItems[this.ItemIndex].itemNo;//主要是改这里
        this.formData.itemId = this.boardItems[this.ItemIndex].id;//主要是改这里
        this.formData.itemName = this.boardItems[this.ItemIndex].itemName;//主要是改这里
        this.formData.itemModel = this.boardItems[this.ItemIndex].itemModel;//主要是改这里
        this.$post({
          url: "/XJ/getDaa001",
          data: {
            daa020: this.lineNo,
            item: this.formData.itemNo
            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 = "";
        })
      },
      //选取工单填充物料号和其他信息
            //选取工单填充物料号和其他信息
      onDaa001Change(event) {
        this.DAA001Index = event.mp.detail.value;
        this.formData.billNo = this.schemeResult[this.DAA001Index].daa001;
        this.formData.planQty = this.schemeResult[this.DAA001Index].daa008;
        //表单中的部分字段赋值
        const selectedWorkOrder = this.schemeResult[this.DAA001Index];
        this.formData.billNo = selectedWorkOrder.Daa001;
        this.formData.planQty = selectedWorkOrder.Daa008;
        // 从工单数据中获取物料信息
        this.formData.itemNo = selectedWorkOrder.ItemNo; // 物料编码
        this.formData.itemName = selectedWorkOrder.ItemName; // 物料名称
        this.formData.itemModel = selectedWorkOrder.ItemModel; // 规格型号
        // 获取检验项目
        this.$post({
          url: "/XJ/getItem",
          url: "/XJ/setJYItem",
          data: {
            daa001: this.formData.billNo
            itemNo: this.formData.itemNo
          }
        }).then(res => {
          let data = res.data.tbBillList[0];
          //当返回的结果集为空时置空原有的值
          if (!data) {
            this.formData.billNo = "";
            this.formData.itemNo = "";
            this.formData.planQty = "";
          if (res.data.tbBillList.length > 0) {
            this.tableData = res.data.tbBillList;
            this.isSubmit = false;
          } else {
            this.$showMessage("此物料没有启用的检验项目,请维护!");
            this.isSubmit = true;
            this.tableData = [];
            return;
          }
          this.$post({
            url: "/XJ/setJYItem",
            data: {
              itemNo: this.formData.itemNo
            }
          }).then(res => {
            if (res.data.tbBillList.length > 0) {
              this.tableData = res.data.tbBillList; // 在箭头函数中,this 指向外层作用域的 this
              this.isSubmit = false;
            } else {
              this.$showMessage("此物料没有启用的检验项目,请维护!");
              this.isSubmit = true;
              this.tableData = [];
            }
          });
        });
      },
      init() {
@@ -480,6 +535,43 @@
          this.isUpdate = false;
          this.init();
        })
      },
      submitInspection() {
        if (this.formData.id) {
          this.$post({
            url: "/XJ/SjSubmit",
            data: {
              id: this.formData.id,
              userNo: this.$loginInfo.account
            }
          }).then(res => {
            if (res.data.tbBillList) {
              this.$showMessage("提交成功");
              this.init();
            }
          });
        }
      },
      getGenUpdate() {
        if (!this.formData.id || !this.formData.releaseNo) {
          this.$showMessage("请先保存检验单!");
          return;
        }
        this.$post({
          url: "/XJ/GenUpdate",
          data: {
            id: this.formData.id,
            no: this.formData.releaseNo,
            user: this.$loginInfo.account
          }
        }).then(res => {
          if (res.data.result === 0) {
            this.$showMessage("获取检验项目成功");
            this.init();
          } else {
            this.$showMessage(res.data.message || "获取失败");
          }
        });
      }
    },
    onShow() {
@@ -725,6 +817,11 @@
    color: white;
  }
  
  .action-btn.success {
    background-color: #2ecc71;
    color: white;
  }
  /* 弹出框样式 */
  .overlay {
    position: fixed;