647556386
2026-01-08 e7dac9ecb16aa627f0603beec9930c75ee6aa3f7
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/extend/OrderStockTake.vue
@@ -61,6 +61,35 @@
            </el-input>
          </el-form-item>
          <!-- æ–°å¢žï¼šç«™å°é€‰æ‹©ä¸‹æ‹‰æ¡† -->
          <el-form-item
            label="回库站台:"
            name="station"
            :rules="[
              {
                required: true,
                message: '请选择回库站台',
                trigger: 'blur',
              },
            ]"
            class="form-item"
          >
            <el-select
              v-model="selectedStation"
              placeholder="请选择回库站台"
              :disabled="!formData.boxNo.trim() || loading"
              class="custom-input"
              :class="{ 'has-value': selectedStation }"
            >
              <el-option
                v-for="item in stations"
                :key="item.key || item.value"
                :label="item.label"
                :value="item.value"
              ></el-option>
            </el-select>
          </el-form-item>
          <!-- æ¡ç è¾“入框 -->
          <el-form-item
            label="盘点条码:"
@@ -147,7 +176,7 @@
            type="info"
            size="small"
            @click="handleBoxReturn"
            :disabled="!formData.boxNo.trim() || loading"
            :disabled="!formData.boxNo.trim() || !selectedStation || loading"
            class="return-btn"
          >
            <Return /> æ–™ç®±å›žåº“
@@ -188,6 +217,8 @@
import VolBox from "@/components/basic/VolBox.vue";
import http from "@/api/http";
// æ–°å¢žï¼šå¼•入站台管理工具(和示例代码保持一致)
import { stationManager, STATION_STORAGE_KEY } from "@/../src/uitils/stationManager";
// å“åº”式变量 - å•据号
const orderNo = ref("");
@@ -205,6 +236,13 @@
});
const loading = ref(false);
const formRef = ref(null);
// æ–°å¢žï¼šç«™å°ç›¸å…³å“åº”式数据(仿照示例代码)
const stations = ref([
  { label: "站台2", value: "2-1" },
  { label: "站台3", value: "3-1" },
]);
const selectedStation = ref(stationManager.getStation() || ""); // é»˜è®¤é€‰ä¸­ç¼“存的站台
// æ¨¡æ¿å¼•用
const boxNoInputRef = ref(null);
@@ -232,6 +270,8 @@
      formData.barcode = "";
      formData.stockQuantity = "";
      formData.actualQuantity = "";
      // æ–°å¢žï¼šæ–™ç®±å·æ¸…空时,重置站台选择
      selectedStation.value = stationManager.getStation() || "";
    }
  },
  { immediate: true }
@@ -257,6 +297,8 @@
  formData.barcode = "";
  formData.stockQuantity = "";
  formData.actualQuantity = "";
  // æ–°å¢žï¼šæ‰“开弹窗时重置站台选择(默认取缓存的站台)
  selectedStation.value = stationManager.getStation() || "";
  nextTick(() => {
    boxNoInputRef.value?.focus();
  });
@@ -468,16 +510,21 @@
  }
};
// æ–™ç®±å›žåº“功能
// æ–™ç®±å›žåº“功能(核心修改:增加站台验证 + ä¼ å…¥sourceAddress参数)
const handleBoxReturn = async () => {
  const boxNo = formData.boxNo.trim();
  // æ–°å¢žï¼šéªŒè¯ç«™å°æ˜¯å¦é€‰æ‹©
  if (!boxNo) {
    ElMessage.warning("请先输入或扫描料箱号");
    return;
  }
  if (!selectedStation.value) {
    ElMessage.warning("请选择回库站台");
    return;
  }
  try {
    await ElMessageBox.confirm(`确定将料箱【${boxNo}】回库吗?`, "回库确认", {
    await ElMessageBox.confirm(`确定将料箱【${boxNo}】回库至【${selectedStation.value}】站台吗?`, "回库确认", {
      confirmButtonText: "确定",
      cancelButtonText: "取消",
      type: "info",
@@ -488,19 +535,21 @@
    loading.value = true;
    // æ–°å¢žï¼šæ‹¼æŽ¥sourceAddress参数(站台数据)到接口请求中
    const res = await http.post(
      `/api/TakeStockOrder/ReturnBox?boxNo=${encodeURIComponent(boxNo)}&orderNo=${encodeURIComponent(
        orderNo.value
      )}`,
      )}&sourceAddress=${encodeURIComponent(selectedStation.value)}`, // æ–°å¢žsourceAddress参数
      "料箱回库中..."
    );
    if (res.status) {
      ElMessage.success(`料箱【${boxNo}】回库成功!`);
      ElMessage.success(`料箱【${boxNo}】回库至【${selectedStation.value}】站台成功!`);
      formData.boxNo = "";
      formData.barcode = "";
      formData.stockQuantity = "";
      formData.actualQuantity = "";
      selectedStation.value = stationManager.getStation() || ""; // é‡ç½®ç«™å°é€‰æ‹©
      nextTick(() => {
        boxNoInputRef.value?.focus();
      });
@@ -588,13 +637,15 @@
}
/* æœ‰å€¼æ—¶éšè—å ä½ç¬¦ + ä¼˜åŒ–边框 */
.custom-input.has-value :deep(.el-input__inner) {
.custom-input.has-value :deep(.el-input__inner),
.custom-input.has-value :deep(.el-select__wrapper) {
  --el-input-placeholder-color: transparent; /* éšè—å ä½ç¬¦ */
  border-color: #8cc5ff; /* æµ…蓝边框,区分无值状态 */
  background-color: #ffffff;
}
.custom-input :deep(.el-input__inner) {
.custom-input :deep(.el-input__inner),
.custom-input :deep(.el-select__wrapper) {
  border-radius: 8px;
  border-color: #e5f0fa;
  transition: all 0.2s ease;
@@ -606,7 +657,8 @@
}
/* èšç„¦æ ·å¼ä¼˜åŒ– */
.custom-input :deep(.el-input__inner:focus) {
.custom-input :deep(.el-input__inner:focus),
.custom-input :deep(.el-select__wrapper:focus) {
  border-color: #409eff;
  box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.1);
  background-color: #ffffff;
@@ -666,7 +718,8 @@
}
/* æœ‰å€¼æ—¶å³ä½¿éªŒè¯å¤±è´¥ï¼Œä¹Ÿä¸æ˜¾ç¤ºé”™è¯¯è¾¹æ¡† */
.custom-input.has-value :deep(.el-input__inner.el-input__inner--error) {
.custom-input.has-value :deep(.el-input__inner.el-input__inner--error),
.custom-input.has-value :deep(.el-select__wrapper.el-select__wrapper--error) {
  border-color: #8cc5ff;
  box-shadow: none;
}
@@ -807,22 +860,26 @@
}
/* å ä½ç¬¦æ ·å¼ - ç»Ÿä¸€é¢œè‰² */
.el-input__inner::-webkit-input-placeholder {
.el-input__inner::-webkit-input-placeholder,
.el-select__placeholder {
  color: #b3d8ff;
  font-size: 13px;
}
.el-input__inner::-moz-placeholder {
.el-input__inner::-moz-placeholder,
.el-select__placeholder {
  color: #b3d8ff;
  font-size: 13px;
}
.el-input__inner:-ms-input-placeholder {
.el-input__inner:-ms-input-placeholder,
.el-select__placeholder {
  color: #b3d8ff;
  font-size: 13px;
}
.el-input__inner::placeholder {
.el-input__inner::placeholder,
.el-select__placeholder {
  color: #b3d8ff;
  font-size: 13px;
}