Bläddra i källkod

拣货任务超过两小时数量标红

zhaohuanhuan 1 år sedan
förälder
incheckning
60100a1baf

+ 13 - 0
src/utils/date.ts

@@ -7,3 +7,16 @@ export function formatDateTime(date:any) {
   const seconds = String(date.getSeconds()).padStart(2, '0'); // 获取秒钟
   return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
 }
+/*
+ *计算时间与当前的小时
+ */
+export function getTimeHours(date: Date | string): number | undefined {
+  if (!date) return undefined;
+
+  const targetTime = new Date(date);
+  if (isNaN(targetTime.getTime())) return undefined; // 检查日期是否有效
+
+  const currentTime = new Date();
+  const timeDiff = currentTime.getTime() - targetTime.getTime(); // 获取毫秒差
+  return Math.floor(timeDiff / (1000 * 60 * 60)); // 转换为小时
+}

+ 1 - 1
src/views/outbound/components/BigPicking.vue

@@ -10,7 +10,7 @@
         <div class="big-task-content"  >
           <div class="big-content">{{item.orderNo}}</div>
           <div class="big-carrier"><van-notice-bar :background="'none'" :speed="10" :text="item.carrierName" /></div>
-          <div class="big-content">{{item.totalItemNum}}<span style="font-size: 12px">件</span></div>
+          <div class="big-content" :style="item.hours>=2?'color:#ee0a24;font-weight: 500':''">{{item.totalItemNum}}<span style="font-size: 12px">件</span></div>
         </div>
         <div class="big-task-button">
           <div class="big-button" @click="onTypeOrder(item,'LOCATION_PICK')"  >按库位查看</div>

+ 14 - 0
src/views/outbound/picking/task/hooks/task.ts

@@ -3,6 +3,8 @@ import { ref } from 'vue';
 import { showToast } from 'vant'
 // @ts-ignore
 import { getPickingTask } from '@/api/picking'
+// @ts-ignore
+import { getTimeHours } from '@/utils/date'
 interface pickingListResponse {
   data: any; // API 返回的数据类型
 }
@@ -16,6 +18,18 @@ export const getTaskList = (warehouse:string) => {
       data.sort((a:any, b:any) => {
         return a.owner.localeCompare(b.owner)
       });
+      interface Item {
+        earliestOrderTime: Date | string | null;
+        hours?: number;
+      }
+      data.forEach((item: Item) => {
+          if (item.earliestOrderTime) {
+            const hours = getTimeHours(item.earliestOrderTime);
+            if (hours !== undefined) {
+              item.hours = hours;
+            }
+          }
+        })
     taskList.value = data
   };
 

+ 27 - 4
src/views/outbound/picking/task/index.vue

@@ -32,7 +32,10 @@
           <td style="word-wrap: break-word" v-if="isFirstInGroup(row, rowIndex)" :rowspan="getRowspan(row, rowIndex)">
             {{ ownerMap[row.owner] || row.owner }}
           </td>
-          <td style="word-wrap: break-word;">{{ row.ruleName }}</td>
+          <td style="word-wrap: break-word;" >
+            <div>{{ row.ruleName }}</div>
+            <span @click="onProvince(row)" v-if="row.ruleName && row.province"><van-icon name="eye-o" size="20" color="#1989fa" /></span>
+          </td>
           <td style="word-wrap: break-word;">
              <div v-if="row.carrier.split(',').length" @click="onMore(row)">
                 <div v-if="row.carrier.split(',').length > 5"  >
@@ -43,7 +46,7 @@
               </div>
           </td>
           <td style="word-wrap: break-word;">{{ row.typeDescribe }}</td>
-          <td>{{ row.count }}</td>
+          <td><span :style="row.hours>=2?'color:#ee0a24;font-weight: 500':''">{{ row.count }}</span></td>
           <td>
             <van-button type="primary" v-if="row.type=='Y'|| row.type=='N'" @click="onCreateTask(row)">获取</van-button>
             <van-button type="success" v-else-if="row.type=='M'" @click="onTaskList(row,'M')">查看</van-button>
@@ -72,7 +75,7 @@
             <template #title>
               <div style="display: flex;justify-content:space-evenly;">
                 <div style="width: 65%">{{item.carrierName}}</div>
-                <div style="flex: 1">{{item.residualOrderQty}}单</div>
+                <div style="flex: 1"><span :style="item.hours>=2?'color:#ee0a24;font-weight: 500':''">{{item.residualOrderQty}}单</span></div>
               </div>
             </template>
           </van-cell>
@@ -82,7 +85,7 @@
             <van-checkbox class="order-item" v-for="(item,index) in taskDetailList" :key="index" :name="item">
               <div  style="display: flex;flex: 1;flex-direction: column" >
                 <div class="order-item-detail">
-                  <div><span style="font-size: 12px">订单号:</span>{{ item.orderNo }}</div>
+                  <div><span style="font-size: 12px">订单号:</span><span :style="item.hours>=2?'color:#ee0a24;font-weight: 500':''">{{item.orderNo}}</span></div>
                   <div>{{item.itemQty}}<span style="font-size: 12px">件</span></div>
                 </div>
                 <div  v-if="item.remark!=='' && item.remark!=null"><van-notice-bar :background="'none'" style="font-size: 12px" :speed="20" :text="item.remark" /></div>
@@ -157,6 +160,7 @@ import SelectOwner from '@/views/outbound/components/SelectOwner.vue'
 import { closeLoading, showLoading } from '@/utils/loading'
 import { toMap } from '@/utils/dataType'
 import { getCarrierList } from '@/hooks/basic/carrier'
+import { getTimeHours } from '@/utils/date'
 
 const router = useRouter()
 const store = basicStore()
@@ -225,9 +229,19 @@ const onTaskList=async (row:Object,type)=>{
   if (type === 'M') {
     params.type='ORDER'
     const res = await getBigPickingTaskDetail(params)
+    res.data.records.forEach((item,index)=>{
+      if(item.addTime){
+        item.hours=getTimeHours(item.addTime)
+      }
+    })
     data=res.data.records
   }else {
     const res = await getPickingTaskDetail(params)
+    res.data.forEach((item,index)=>{
+      if(item.earliestOrderTime){
+        item.hours=getTimeHours(item.earliestOrderTime)
+      }
+    })
     data=res.data
   }
   closeLoading()
@@ -423,6 +437,15 @@ const onMore= async (row)=>{
     // on close
   });
 }
+//查看城市
+const onProvince= async (row)=>{
+  showDialog({
+    title: `${ownerMap.value[row.owner]?ownerMap.value[row.owner]:row.owner}`+`《${row.typeDescribe}》省份规则`,
+    message: row.province,
+  }).then(() => {
+    // on close
+  });
+}
 //选择货主
 const selectOwnerRef=ref(null)
 const onClickRightIcon = () => {