yangg 1 рік тому
батько
коміт
24e75228db

+ 20 - 5
src/views/InoutStorage/inStorage.vue

@@ -29,8 +29,14 @@
             <el-table :data="goodsExchangeAddForm.product_list" style="width: 100%">
                 <el-table-column prop="goods_vo.name" label="商品名称" />
                 <el-table-column prop="product_vo.sku" label="SKU" />
-                <el-table-column prop="num" label="入库数量" />
-                <el-table-column prop="orderNum" :style="{ color: 'red' }" label="待入库数量" />
+                <el-table-column prop="num" label="入库数量" >
+                    <template #default="scope">
+                            <span :style="{ color: scope.row.num > 0 ? 'red' : 'black' }">
+                                {{ scope.row.num }}
+                            </span>
+                        </template>
+                </el-table-column>
+                <el-table-column prop="orderNum"  label="待入库数量" />
             </el-table>
         </el-form>
         <el-dialog v-model="dialogVisible" :modal=false title="扫码入库" :close-on-click-modal="false" top="80px"
@@ -38,11 +44,11 @@
             <el-form :model="snCodeForm" label-width="auto" style="max-width: 600px">
                 <el-form-item label="SKU">
                     <el-input v-model="snCodeForm.bar_code" ref="inputRef" clearable :inputmode="inputmode" @keyup.enter="toSearch()">
-                        <template #append> <img src="../../assets/images/JP.png" @click="inputmode='text'" class="w-8 h-8" /> </template>
+                        <template #append> <img src="../../assets/images/JP.png" @click="getInfo" class="w-8 h-8" /> </template>
                     </el-input>
                 </el-form-item>
                 <el-form-item label="序列号">
-                    <el-input v-model="snCodeForm.sn_code" clearable ref="snInputRef" inputmode="none"
+                    <el-input v-model="snCodeForm.sn_code" clearable ref="snInputRef" :inputmode="inputmode"
                         @keyup.enter="toSnCode()" />
                 </el-form-item>
             </el-form>
@@ -170,6 +176,7 @@ const toSearch = async () => {
 };
 //扫描序列号
 const toSnCode = async () => {
+    if(!sku.value) return  ElMessage.error('请先扫描sku!')
     try {
         const res: any = await orderApi.getsnCode(
             "in",
@@ -197,7 +204,15 @@ const toSnCode = async () => {
         console.error('Error fetching SN code:', error);
     }
 }
-
+const getInfo = () => {
+    if (inputmode.value == 'none') {
+        inputmode.value = 'text'
+        inputRef.value.focus();
+    } else {
+        inputmode.value = 'none'
+        inputRef.value.focus();
+    }
+}
 //关闭弹窗
 const handleClose = (done: () => void) => {
     done()

+ 20 - 5
src/views/InoutStorage/outStorage.vue

@@ -29,8 +29,14 @@
             <el-table :data="goodsExchangeAddForm.product_list" style="width: 100%;font-size: 12px;">
                 <el-table-column prop="goods_vo.name" label="商品名称" />
                 <el-table-column prop="product_vo.sku" label="SKU" />
-                <el-table-column prop="out_num" label="出库数量" />
-                <el-table-column prop="orderNum" :style="{ color: 'red' }" label="待出库数量" />
+                <el-table-column prop="out_num" label="出库数量">
+                    <template #default="scope">
+                            <span :style="{ color: scope.row.out_num > 0 ? 'red' : 'black' }">
+                                {{ scope.row.out_num }}
+                            </span>
+                        </template>
+                </el-table-column>
+                <el-table-column prop="orderNum" label="待出库数量" />
                 <el-table-column label="操作">
                     <template #default="scope">
                         <el-button size="mini" type="danger" @click="
@@ -45,11 +51,11 @@
             <el-form :model="snCodeForm" label-width="auto" style="max-width: 600px">
                 <el-form-item label="SKU">
                     <el-input v-model="snCodeForm.bar_code" ref="inputRef" clearable :inputmode="inputmode" @keyup.enter="toSearch()" >
-                        <template #append> <img src="../../assets/images/JP.png" @click="inputmode='text'" class="w-8 h-8" /> </template>
+                        <template #append> <img src="../../assets/images/JP.png" @click="getInfo" class="w-8 h-8" /> </template>
                     </el-input>
                 </el-form-item>
                 <el-form-item label="序列号">
-                    <el-input v-model="snCodeForm.sn_code" ref="snInputRef" clearable inputmode="none"
+                    <el-input v-model="snCodeForm.sn_code" ref="snInputRef" clearable :inputmode="inputmode"
                         @keyup.enter="toSnCode()" />
                 </el-form-item>
             </el-form>
@@ -135,7 +141,15 @@ watch(activeTab, (newValue, oldValue) => {
     console.log(`Tab changed from ${oldValue} to ${newValue}`);
     // 这里可以添加一些逻辑,但要确保不会再次修改 activeTab
 });
-
+const getInfo = () => {
+    if (inputmode.value == 'none') {
+        inputmode.value = 'text'
+        inputRef.value.focus();
+    } else {
+        inputmode.value = 'none'
+        inputRef.value.focus();
+    }
+}
 /* 扫sku */
 const toSearch = async () => {
     activeTab.value = 'product-info'
@@ -178,6 +192,7 @@ const toSearch = async () => {
 };
 //扫描序列号
 const toSnCode = async () => {
+    if(!sku.value) return  ElMessage.error('请先扫描sku!')
     try {
         const res: any = await orderApi.getsnCode(
             "out",

+ 20 - 5
src/views/Inventory/addInventory.vue

@@ -28,8 +28,14 @@
             <el-table :data="goodsInventoryAddForm.product_list" style="width: 100%">
                 <el-table-column prop="goods_vo.name" label="商品名称" />
                 <el-table-column prop="product_vo.sku" label="SKU" />
-                <el-table-column prop="inventory_num" label="盘点数量" />
-                <el-table-column prop="actual_stock" :style="{ color: 'red' }" label="库存数量">
+                <el-table-column prop="inventory_num" label="盘点数量">
+                    <template #default="scope">
+                            <span :style="{ color: scope.row.inventory_num > 0 ? 'red' : 'black' }">
+                                {{ scope.row.inventory_num }}
+                            </span>
+                        </template>
+                </el-table-column>
+                <el-table-column prop="actual_stock"  label="库存数量">
                     <!-- <template #default="scope">
                         <span style="color: red;">{{ scope.actual_stock }}</span>
                     </template> -->
@@ -41,11 +47,11 @@
             <el-form :model="snCodeForm" label-width="auto" style="max-width: 600px">
                 <el-form-item label="SKU">
                     <el-input v-model="snCodeForm.bar_code" ref="inputRef" clearable :inputmode="inputmode" @keyup.enter="toSearch()" >
-                        <template #append> <img src="../../assets/images/JP.png" @click="inputmode='text'" class="w-8 h-8" /> </template>
+                        <template #append> <img src="../../assets/images/JP.png" @click="getInfo" class="w-8 h-8" /> </template>
                     </el-input>
                 </el-form-item>
                 <el-form-item label="序列号">
-                    <el-input v-model="snCodeForm.sn_code" ref="snInputRef" clearable inputmode="none"
+                    <el-input v-model="snCodeForm.sn_code" ref="snInputRef" clearable :inputmode="inputmode"
                         @keyup.enter="toSnCode()" />
                 </el-form-item>
             </el-form>
@@ -133,7 +139,15 @@ watch(activeTab, (newValue, oldValue) => {
     console.log(`Tab changed from ${oldValue} to ${newValue}`);
     // 这里可以添加一些逻辑,但要确保不会再次修改 activeTab
 });
-
+const getInfo = () => {
+    if (inputmode.value == 'none') {
+        inputmode.value = 'text'
+        inputRef.value.focus();
+    } else {
+        inputmode.value = 'none'
+        inputRef.value.focus();
+    }
+}
 /* 扫sku */
 const toSearch = async () => {
     activeTab.value = 'product-info'
@@ -176,6 +190,7 @@ const toSearch = async () => {
 };
 //扫描序列号
 const toSnCode = async () => {
+    if(!sku.value) return  ElMessage.error('请先扫描sku!')
     try {
         const res: any = await orderApi.getsnCode(
             "inventory",

+ 25 - 11
src/views/apps/shippingPage.vue

@@ -72,7 +72,13 @@
                     <el-table-column prop="goods_vo.name" label="商品名称" />
                     <el-table-column prop="product_vo.sku" label="SKU" />
                     <el-table-column prop="orderNum" label="订单数量" />
-                    <el-table-column prop="num" :style="{ color: 'red' }" label="出库数量" />
+                    <el-table-column prop="num" label="出库数量">
+                        <template #default="scope">
+                            <span :style="{ color: scope.row.num > 0 ? 'red' : 'black' }">
+                                {{ scope.row.num }}
+                            </span>
+                        </template>
+                    </el-table-column>
                 </el-table>
             </el-tab-pane>
 
@@ -81,12 +87,14 @@
             width="90%" style="height: 200px" :before-close="handleClose">
             <el-form :model="snCodeForm" label-width="auto" style="max-width: 600px">
                 <el-form-item label="SKU">
-                    <el-input class="hidden-input" v-model="snCodeForm.bar_code" @keyup.enter="toSearch()" clearable :inputmode="inputmode"   ref="inputRef">
-                        <template #append> <img src="../../assets/images/JP.png" @click="inputmode='text'" class="w-8 h-8" /> </template>
+                    <el-input class="hidden-input" v-model="snCodeForm.bar_code" @keyup.enter="toSearch()" clearable
+                        :inputmode="inputmode" ref="inputRef">
+                        <template #append> <img src="../../assets/images/JP.png" @click="getInfo" class="w-8 h-8" />
+                        </template>
                     </el-input>
                 </el-form-item>
                 <el-form-item label="序列号">
-                    <el-input v-model="snCodeForm.sn_code" clearable inputmode="none" ref="snInputRef"
+                    <el-input v-model="snCodeForm.sn_code" clearable :inputmode="inputmode" ref="snInputRef"
                         @keyup.enter="toSnCode()" />
                 </el-form-item>
             </el-form>
@@ -99,7 +107,7 @@
                 </div>
             </template> -->
         </el-dialog>
-        <div class="flex justify-center pt-2 pb-2 mt-4 w-full fixed bottom-0 bg-white left-0"
+        <div class="flex justify-center pt-2 pb-2 mt-4 w-full fixed bottom-0 bg-white left-0 z-50"
             v-if="send_type.value !== 'EXPRESS_DELIVERY'">
             <el-button type="primary" size="large" @click="scanCode">扫码出库</el-button>
             <el-button type="primary" size="large"
@@ -107,7 +115,7 @@
                 @click="getOrderNumber">获取运单号</el-button>
             <el-button type="primary" size="large" v-else @click="ship">发货</el-button>
         </div>
-        <div class="flex justify-center pt-2 pb-2 mt-4 w-full fixed bottom-0 bg-white left-0" v-else>
+        <div class="flex justify-center pt-2 pb-2 mt-4 w-full fixed bottom-0 bg-white left-0 z-50" v-else>
             <el-button type="primary" size="large" @click="scanCode">扫码出库</el-button>
             <el-button type="primary" size="large" @click="ship">发货</el-button>
         </div>
@@ -115,7 +123,7 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, onMounted, watch, reactive, nextTick } from 'vue';
+import { ref, onMounted, watch, reactive, nextTick, onBeforeUnmount } from 'vue';
 import { useRouter, useRoute } from 'vue-router';
 import { orderApi, infoApi, dictionaryAPI } from '@/api/api'
 import { regionData, codeToText } from 'element-china-area-data'
@@ -219,8 +227,13 @@ const enableVirtualKeyboard = (event) => {
     event.target.readOnly = false;
 };
 const getInfo = () => {
-    inputmode.value = 'text'
-    inputRef.value.focus();
+    if (inputmode.value == 'none') {
+        inputmode.value = 'text'
+        inputRef.value.focus();
+    } else {
+        inputmode.value = 'none'
+        inputRef.value.focus();
+    }
 }
 /* 扫sku */
 const toSearch = async () => {
@@ -280,7 +293,7 @@ const toSearch = async () => {
 };
 //扫描序列号
 const toSnCode = async () => {
-    alert(snCodeForm.sn_code);
+    if(!sku.value) return  ElMessage.error('请先扫描sku!')
     try {
         const res: any = await orderApi.getsnCode(
             "out",
@@ -344,7 +357,7 @@ const scanCode = () => {
                         // 首先,让输入框失去焦点,这会阻止键盘的唤起
                         //inputRef.value.removeAttribute('readonly');
                         inputRef.value.focus();
-                        inputmode.value='none'
+                        inputmode.value = 'none'
                     }
                 }, 100);
             } catch (error) {
@@ -581,6 +594,7 @@ const getInforList = async () => {
 .p-4 {
     padding: 1rem;
 }
+
 .hidden-input .el-input__inner {
     width: 0;
     padding: 0;