Browse Source

入库增加托盘类型和是否包装

liuyanpeng 5 months ago
parent
commit
9d496fe54d
2 changed files with 119 additions and 2 deletions
  1. 61 2
      src/components/StockIn.vue
  2. 58 0
      src/components/StockInPhoto.vue

+ 61 - 2
src/components/StockIn.vue

@@ -32,6 +32,15 @@
       <van-field v-model="formData.type" name="type" label="规格型号:" readonly />
       <van-field v-model="formData.batchNo" name="batchNo" label="批号:" placeholder="点击输入批号" />
       <van-field v-model="formData.num" name="num" label="入库数量:" placeholder="点击输入数量" />
+      <van-field name="inventoryPackaged" label="是否包装">
+        <template #input>
+          <van-switch v-model="formData.inventoryPackaged" size="20px" />
+        </template>
+      </van-field>
+      <van-field
+        v-model="formData.carrierTypeName" name="carrierTypeName" label="托盘类型:" placeholder="点击选择托盘类型" is-link
+        @click="showCarrierTypePicker = true"
+      />
       <van-field
         v-model="formData.transferName" is-link readonly name="transfer" label="中转区货位:" placeholder="点击选择中转区货位"
         @click="isShowTransfer = true"
@@ -59,8 +68,16 @@
   />
   <position-selector
     ref="idlePositionSelector" v-model:show="isShowIdle" position-type="idle" :is-default="true"
-    type="stockIn" :dialog-show="isShowStockIn" :default-selected-id="formData.idleId" @confirm="onIdlePositionSelected"
+    type="stockIn" :dialog-show="isShowStockIn" :default-selected-id="formData.idleId"
+    @confirm="onIdlePositionSelected"
   />
+
+  <van-popup v-model:show="showCarrierTypePicker" destroy-on-close round position="bottom">
+    <van-picker
+      :model-value="carrierType" :columns="columns" @cancel="showCarrierTypePicker = false"
+      @confirm="onConfirm"
+    />
+  </van-popup>
 </template>
 
 <script setup>
@@ -99,6 +116,9 @@ const formData = ref({
   idleName: '',
   idleId: '',
   idleNo: '',
+  inventoryPackaged: false,
+  carrierType: '',
+  carrierTypeName: '',
 });
 
 const isShowStockIn = ref(false);
@@ -106,7 +126,16 @@ const isShowTransfer = ref(false);
 const isShowIdle = ref(false);
 const warehouseId = ref(null);
 const warehouseName = ref(null);
-const title  = ref('');
+const title = ref('');
+
+const columns = ref([]);
+const showCarrierTypePicker = ref(false);
+const carrierType = ref([]);
+const onConfirm = ({ selectedValues, selectedOptions }) => {
+  showCarrierTypePicker.value = false;
+  formData.value.carrierType = selectedValues[0];
+  formData.value.carrierTypeName = selectedOptions[0].text;
+};
 
 const goBack = () => {
   router.push('/warehouse-selector?page=stock-in&warehouseId=' + warehouseId.value);
@@ -160,6 +189,10 @@ const stockInConfirm = () => {
     showFailToast('请选择入库货位');
     return;
   }
+  if (!formData.value.carrierType) {
+    showFailToast('请选择托盘类型');
+    return;
+  }
   showConfirmDialog({
     title: '确认要入库吗?',
     message: '如果确认要入库,请点击【确认】按钮,否则点击【取消】按钮。',
@@ -227,6 +260,27 @@ const getList = (page, pageSize) => {
   });
 };
 
+const getCarrierTypeList = () => {
+  const url = '/api/CarrierTypeResource/queryAllType';
+  ajaxApiGet(url).then(
+    success => {
+      const { errorCode, errorMessage, datas, total } = success;
+      if (errorCode === 0) {
+        if (datas && datas.length) {
+          columns.value = datas.map(item => ({ text: item.name, value: item.id }));
+        } else {
+          columns.value = [];
+        }
+      } else {
+        showFailToast(errorMessage);
+      }
+    },
+    error => {
+      processException(error);
+    },
+  );
+};
+
 // 提交API
 const submitStockIn = () => {
   const url = '/api/stockInResource/scanGeneratorStockIn';
@@ -270,7 +324,11 @@ const clearFormData = () => {
     idleId: '',
     idleName: '',
     idleNo: '',
+    inventoryPackaged: false,
+    carrierType: '',
+    carrierTypeName: '',
   };
+  carrierType.value = [];
   transferPositionSelector.value.clearSelected();
   idlePositionSelector.value.clearSelected();
   isShowStockIn.value = false;
@@ -286,6 +344,7 @@ onMounted(() => {
   warehouseName.value = route.query.warehouseName || '';
   title.value = route.query.warehouseName ? '入库 - ' + route.query.warehouseName : '入库';
   loadStockInList();
+  getCarrierTypeList();
 });
 
 </script>

+ 58 - 0
src/components/StockInPhoto.vue

@@ -27,6 +27,13 @@
       <van-field v-model="stockData.batchNo" name="batchNo" label="批号:" placeholder="点击输入批号" />
 
       <van-field v-model="stockData.num" name="num" label="生产数量:" placeholder="点击输入生产数量" />
+      <van-field name="inventoryPackaged" label="是否包装">
+        <template #input>
+          <van-switch v-model="stockData.inventoryPackaged" size="20px" />
+        </template>
+      </van-field>
+
+      <van-field v-model="stockData.carrierTypeName" name="carrierTypeName" label="托盘类型:" placeholder="点击选择托盘类型" is-link @click="showCarrierTypePicker = true" />
 
       <van-field
         v-model="stockData.transferName" is-link readonly name="transfer" label="中转区货位:"
@@ -53,6 +60,14 @@
       :is-default="true" @confirm="onIdlePositionSelected"
     />
   </div>
+  <van-popup v-model:show="showCarrierTypePicker" destroy-on-close round position="bottom">
+    <van-picker
+      :model-value="carrierType"
+      :columns="columns"
+      @cancel="showCarrierTypePicker = false"
+      @confirm="onConfirm"
+    />
+  </van-popup>
 </template>
 
 <script setup>
@@ -89,6 +104,9 @@ const stockData = ref({
   idleId: '',
   idleName: '',
   idleNo: '',
+  inventoryPackaged: false,
+  carrierType:'',
+  carrierTypeName: '',
 });
 
 const warehouseId = ref('');
@@ -97,8 +115,18 @@ const title  = ref('');
 onMounted(() => {
   warehouseId.value = route.query.warehouseId || '';
   title.value = route.query.warehouseName ? '入库拍照 - ' + route.query.warehouseName : '入库拍照';
+  getCarrierTypeList();
 });
 
+const columns = ref([]);
+const showCarrierTypePicker = ref(false);
+const carrierType = ref([]);
+const onConfirm = ({ selectedValues, selectedOptions }) => {
+  showCarrierTypePicker.value = false;
+  stockData.value.carrierType = selectedValues[0];
+  stockData.value.carrierTypeName = selectedOptions[0].text;
+};
+
 const goBack = () => {
   router.back();
 };
@@ -150,15 +178,20 @@ const clearFormData = () => {
     idleId: '',
     idleName: '',
     idleNo: '',
+    inventoryPackaged: false,
+    carrierType:'',
+    carrierTypeName:'',
   };
   imageUrl.value = '';
   photoFile.value = null;
+  carrierType.value = [];
   transferPositionSelector.value.clearSelected();
   idlePositionSelector.value.clearSelected();
 };
 
 // 提交入库
 const submit = () => {
+  console.log(stockData.value);
   if (!stockData.value.no) {
     showFailToast({ duration: 4000, message: '请先拍摄并识别图片确认入库信息后再提交' });
     return;
@@ -175,6 +208,10 @@ const submit = () => {
     showFailToast('请选择入库货位');
     return;
   }
+  if (!stockData.value.carrierType) {
+    showFailToast('请选择托盘类型');
+    return;
+  }
   showConfirmDialog({
     title: '确认要入库吗?',
     message: '如果确认要入库,请点击【确认】按钮,否则点击【取消】按钮。',
@@ -269,6 +306,27 @@ const submitStockIn = () => {
     },
   );
 };
+
+const getCarrierTypeList = () => { 
+  const url = '/api/CarrierTypeResource/queryAllType';
+  ajaxApiGet(url).then(
+    success => {
+      const { errorCode, errorMessage, datas, total } = success;
+      if (errorCode === 0) {
+        if (datas && datas.length) {
+          columns.value = datas.map(item => ({ text: item.name, value: item.id }));
+        } else {
+          columns.value = [];
+        }
+      } else {
+        showFailToast(errorMessage);
+      }
+    },
+    error => {
+      processException(error);
+    },
+  );
+};
 </script>
 
 <style scoped>