| | |
| | | </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="çç¹æ¡ç ï¼" |
| | |
| | | type="info" |
| | | size="small" |
| | | @click="handleBoxReturn" |
| | | :disabled="!formData.boxNo.trim() || loading" |
| | | :disabled="!formData.boxNo.trim() || !selectedStation || loading" |
| | | class="return-btn" |
| | | > |
| | | <Return /> æç®±ååº |
| | |
| | | |
| | | import VolBox from "@/components/basic/VolBox.vue"; |
| | | import http from "@/api/http"; |
| | | // æ°å¢ï¼å¼å
¥ç«å°ç®¡çå·¥å
·ï¼å示ä¾ä»£ç ä¿æä¸è´ï¼ |
| | | import { stationManager, STATION_STORAGE_KEY } from "@/../src/uitils/stationManager"; |
| | | |
| | | // ååºå¼åé - åæ®å· |
| | | const orderNo = ref(""); |
| | |
| | | }); |
| | | 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); |
| | |
| | | formData.barcode = ""; |
| | | formData.stockQuantity = ""; |
| | | formData.actualQuantity = ""; |
| | | // æ°å¢ï¼æç®±å·æ¸
空æ¶ï¼éç½®ç«å°éæ© |
| | | selectedStation.value = stationManager.getStation() || ""; |
| | | } |
| | | }, |
| | | { immediate: true } |
| | |
| | | formData.barcode = ""; |
| | | formData.stockQuantity = ""; |
| | | formData.actualQuantity = ""; |
| | | // æ°å¢ï¼æå¼å¼¹çªæ¶éç½®ç«å°éæ©ï¼é»è®¤åç¼åçç«å°ï¼ |
| | | selectedStation.value = stationManager.getStation() || ""; |
| | | nextTick(() => { |
| | | boxNoInputRef.value?.focus(); |
| | | }); |
| | |
| | | } |
| | | }; |
| | | |
| | | // æç®±ååºåè½ |
| | | // æç®±ååºåè½ï¼æ ¸å¿ä¿®æ¹ï¼å¢å ç«å°éªè¯ + ä¼ å
¥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", |
| | |
| | | |
| | | 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(); |
| | | }); |
| | |
| | | } |
| | | |
| | | /* æå¼æ¶éèå ä½ç¬¦ + ä¼åè¾¹æ¡ */ |
| | | .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; |
| | |
| | | } |
| | | |
| | | /* èç¦æ ·å¼ä¼å */ |
| | | .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; |
| | |
| | | } |
| | | |
| | | /* æå¼æ¶å³ä½¿éªè¯å¤±è´¥ï¼ä¹ä¸æ¾ç¤ºéè¯¯è¾¹æ¡ */ |
| | | .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; |
| | | } |
| | |
| | | } |
| | | |
| | | /* å ä½ç¬¦æ ·å¼ - ç»ä¸é¢è² */ |
| | | .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; |
| | | } |