heshaofeng
2026-01-13 d741e7a7ad7de5045e5c6b6145d9da1783cadecd
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js
@@ -18,19 +18,6 @@
  buttons: { view: [], box: [], detail: [] }, // æ‰©å±•按钮
  methods: {
    onInit() {
      // åŽŸæœ‰ç›˜ç‚¹æŒ‰é’®é€»è¾‘ä¿ç•™
      let OrderStockTakeBtn = this.buttons.find(x => x.value === 'OrderStockTake');
      if (OrderStockTakeBtn) {
        OrderStockTakeBtn.onClick = function () {
          let rows = this.$refs.table.getSelected();
          if (rows.length === 0) return this.$error("请选择一条盘点单据数据!");
          if (rows.length > 1) return this.$error("只能选择一条盘点单据数据!");
          const selectedReceiptNo = rows[0].orderNo;
          if (!selectedReceiptNo) return this.$error("选中的单据缺少有效的单据号!");
          this.$refs.gridBody.open(selectedReceiptNo);
        };
      }
      // ç›‘听原有弹窗事件(保留)
      this.$nextTick(() => {
@@ -48,128 +35,9 @@
      });
      // ========== æ–°å¢žæ“ä½œåˆ—:人工平账 + æ‚收杂发平账 ==========
      this.columns.push({
        field: 'operation',
        title: '操作',
        width: 200,
        fixed: 'right',
        align: 'center',
        formatter: (row) => {
          return `
            <span style="cursor: pointer;color: #2d8cf0;margin-right: 10px;" class="manual-reconciliation">
              <i class="el-icon-check"></i>人工平账
            </span>
            <span style="cursor: pointer;color: #1989fa;" class="misc-reconciliation">
              <i class="el-icon-edit"></i>杂收杂发平账
            </span>
          `;
        },
        click: (row, column, event) => {
          const target = event.target;
          // åŒºåˆ†ç‚¹å‡»çš„æ˜¯äººå·¥å¹³è´¦è¿˜æ˜¯æ‚收杂发平账
          if (target.closest('.manual-reconciliation')) {
            this.handleManualReconciliation(row); // äººå·¥å¹³è´¦é€»è¾‘
          } else if (target.closest('.misc-reconciliation')) {
            this.handleMiscReconciliation(row); // æ‚收杂发平账逻辑
          }
        }
      });
    },
    // ========== äººå·¥å¹³è´¦æ ¸å¿ƒé€»è¾‘ ==========
    handleManualReconciliation(row) {
      // å¼¹å‡ºç¡®è®¤æ¡†
      ElMessageBox.confirm(
        '确认要执行人工平账操作吗?',
        '操作确认',
        {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        }
      ).then(async () => {
        // æ·»åŠ é®ç½©å±‚é˜²æ­¢é‡å¤ç‚¹å‡»
        const loading = ElLoading.service({
          lock: true,
          text: '处理中,请稍候...',
          background: 'rgba(0, 0, 0, 0.7)'
        });
        try {
          // è°ƒç”¨äººå·¥å¹³è´¦æŽ¥å£
          const response = await this.http.get(`/api/TakeStockOrder/ManualReconciliation?id=${row.id}`);
          if (response.status) {
            ElMessage.success('人工平账操作成功!');
            this.$refs.table.reload(); // åˆ·æ–°è¡¨æ ¼
          } else {
            ElMessage.error(`操作失败:${response.message || '未知错误'}`);
          }
        } catch (error) {
        } finally {
          // å…³é—­é®ç½©å±‚
          loading.close();
        }
      }).catch(() => {
        ElMessage.info('已取消人工平账操作');
      });
    },
    // ========== æ‚收杂发平账核心逻辑(修改后) ==========
    handleMiscReconciliation(row) {
      // é€‰ä¸­å½“前行
      const table = this.$refs.table.$refs.table;
      if (table) {
        table.clearSelection();
        table.toggleRowSelection(row, true);
      }
      // è°ƒç”¨æŽ¥å£èŽ·å–æ‚æ”¶æ‚å‘å¹³è´¦æ•°æ®
      const fetchMiscData = async () => {
        const loading = ElLoading.service({
          lock: true,
          text: '加载数据中...',
          background: 'rgba(0, 0, 0, 0.7)'
        });
        try {
          // è°ƒç”¨æŽ¥å£ï¼Œä¼ é€’row中的remark和id参数
          const response = await this.http.get(`/api/TakeStockOrder/SelectOrder?remark=${row.remark || ''}&id=${row.id}`);
          loading.close();
          if (response.status) {
            if (!Array.isArray(response.data) || response.data.length === 0) {
              ElMessage.warning("未查询到相关数据");
              // æ‰“开空数据的弹窗
              this.$refs.gridHeader.open(row, []);
              return;
            }
            // æå–需要展示的字段
            const displayData = response.data.map(item => ({
              id: item.id || '',
              materielCode: item.materielCode || '',
              materielName: item.materielName || '',
              batchNo: item.batchNo || '',
              orderQuantity: item.orderQuantity || 0,
              unit: item.unit || '',
              supplyCode: item.supplyCode || '',
              warehouseCode: item.warehouseCode || ''
            }));
            // æ‰“开弹窗并传递处理后的数据
            this.$refs.gridHeader.open(row, displayData);
          } else {
            ElMessage.error(`查询失败:${response.message || '未知错误'}`);
          }
        } catch (error) {
          loading.close();
          ElMessage.error(`网络异常:${error.message || '接口调用失败'}`);
        }
      };
      // æ‰§è¡Œæ•°æ®æŸ¥è¯¢å¹¶æ‰“开弹窗
      fetchMiscData();
    },
    onInited() {
      // æ¡†æž¶åˆå§‹åŒ–完成后执行