浏览代码

feat: 增加逾期发货标识功能

xyh 2 年之前
父节点
当前提交
bb3da0a65f
共有 2 个文件被更改,包括 40 次插入11 次删除
  1. 36 0
      src/pages/list/item/hooks.js
  2. 4 11
      src/pages/list/item/index.jsx

+ 36 - 0
src/pages/list/item/hooks.js

@@ -1,4 +1,6 @@
 import {previewMedia} from '@tarojs/taro';
+import dayjs from 'dayjs';
+import {useEffect, useState} from 'react';
 
 export function usePreview() {
   return function (files) {
@@ -13,3 +15,37 @@ export function usePreview() {
     };
   };
 }
+
+export function useOrderState(states, anomaly, {time}) {
+  const [state, setState] = useState({className: '', msg: ''});
+
+  useEffect(
+    function () {
+      switch (true) {
+        case states === '0': {
+          const diffDay = dayjs(time).diff(
+            dayjs(dayjs().format('YYYY-MM-DD')),
+            'd',
+          );
+
+          if (diffDay < 0) {
+            setState({className: 'bg-red-400', msg: '送货逾期'});
+            break;
+          }
+
+          setState({className: 'bg-gray-400', msg: '正在送货'});
+          break;
+        }
+        case states === '1':
+          setState({
+            className: anomaly === '1' ? 'bg-red-500' : 'bg-primary',
+            msg: anomaly === '1' ? '订单异常' : '已送达',
+          });
+          break;
+      }
+    },
+    [states, anomaly, time],
+  );
+
+  return state;
+}

+ 4 - 11
src/pages/list/item/index.jsx

@@ -1,4 +1,4 @@
-import {usePreview} from './hooks';
+import {usePreview, useOrderState} from './hooks';
 import {View, Text, Button, Picker} from '@tarojs/components';
 import classNames from 'classnames';
 import {TextGroup} from '@components';
@@ -20,6 +20,7 @@ export default function Item({
   onEdit,
 }) {
   const onClick = usePreview();
+  const {className, msg} = useOrderState(states, anomaly, {time: arrivalTime});
 
   return (
     <View className='bg-white mx-4 rounded-lg px-3 py-4 mt-3 first:mt-0'>
@@ -35,18 +36,10 @@ export default function Item({
         <View
           className={classNames(
             'text-center w-20 h-7 leading-7 text-sm text-white rounded-md',
-            {
-              'bg-primary': states === '1' && anomaly === '0',
-              'bg-red-500': states === '1' && anomaly === '1',
-              'bg-gray-400': states === '0',
-            },
+            className,
           )}
         >
-          {states === '0'
-            ? '正在送货'
-            : anomaly === '1'
-            ? '订单异常'
-            : '已送达'}
+          {msg}
         </View>
       </View>