Ver código fonte

修改时间选择逻辑

HW 3 anos atrás
pai
commit
3f96339423

+ 15 - 16
src/components/common/DateTimePicker/index.jsx

@@ -74,32 +74,31 @@ export default class DateTimePicker extends Component {
     // 确定
     okHandel = () => {
         const { year, month, day, hour, minute } = this.state;
-        const current = formatDate(year, month, day, hour, minute);
+        let current = formatDate(year, month, day, hour, minute);
+        let currentValue = formatDate(year, month, day, hour, minute);
         const {start,restStart,restEnd,end} = getUserWordTimes();
+        let startArr = start.split(':');
+        let endArr = end.split(':');
+        let restEndArr = restEnd.split(':');
 
         if(dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isBefore(dayjs(dayjs(current).format('YYYY-MM-DD')+start))){
-          Taro.showToast({title:'不能选择'+start+'之前的时间',icon:'none'})
-          return ;
-        }
-        if(dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isAfter(dayjs(dayjs(current).format('YYYY-MM-DD')+end))){
-          Taro.showToast({title:'不能选择'+end+'之后的时间',icon:'none'})
-          return ;
+          currentValue = formatDate(year, month, day,parseInt(startArr[0]), parseInt(startArr[1]));
+        }else if(dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isAfter(dayjs(dayjs(current).format('YYYY-MM-DD')+end))){
+          currentValue = formatDate(year, month, day,parseInt(endArr[0]), parseInt(endArr[1]));
+        }else if(
+          dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isAfter(dayjs(dayjs(current).format('YYYY-MM-DD')+restStart))
+          &&
+          dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isBefore(dayjs(dayjs(current).format('YYYY-MM-DD')+restEnd))
+        ){
+          currentValue = formatDate(year, month, day,parseInt(restEndArr[0]), parseInt(restEndArr[1]));
         }
-      if(
-        dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isAfter(dayjs(dayjs(current).format('YYYY-MM-DD')+restStart))
-        &&
-        dayjs(dayjs(current).format('YYYY-MM-DD HH:mm')).isBefore(dayjs(dayjs(current).format('YYYY-MM-DD')+restEnd))
-      ){
-        Taro.showToast({title:'不能选择'+restStart+'到'+restEnd+'之间的时间',icon:'none'})
-        return ;
-      }
 
         this.setState({
             current,
             hasChange: false,
             visible: false,
         });
-        this.props.onOk && this.props.onOk({ current });
+        this.props.onOk && this.props.onOk({ current:currentValue });
     };
     // 切换
     changeHandel = (e) => {

+ 1 - 1
src/pages/applyDepart/publicContent.jsx

@@ -364,7 +364,7 @@ class PublicContent extends Component{
               <AtIcon value='chevron-right' size='30' color='#bbbbbb'/>
           </View>
         </View>
-        <View className='tips'>以地图中红标为中心{wxConfig.clockInRange}米范围为可打卡区域,移动红标只需要拖动地图即可</View>
+        <View className='tips'>移动红标只需要拖动地图即可</View>
         <View className='formItem' style={{display:'block',paddingTop:'15px'}}>
           <View className='formName'>公出事由:</View>
           <View className='formValue' style={{paddingTop:'10px',textAlign:'left'}}>

+ 1 - 1
src/pages/egressDetails/publicContent.jsx

@@ -398,7 +398,7 @@ class PublicContent extends Component{
               <AtIcon value='chevron-right' size='30' color='#bbbbbb'/>
           </View>
         </View>
-        <View className='tips'>以地图中红标为中心{wxConfig.clockInRange}米范围为可打卡区域,移动红标只需要拖动地图即可</View>
+        <View className='tips'>移动红标只需要拖动地图即可</View>
         <View className='formItem' style={{display:'block',paddingTop:'15px'}}>
           <View className='formName'>公出事由:</View>
           <View className='formValue' style={{paddingTop:'10px',textAlign:'left'}}>

+ 5 - 6
src/pages/login/index.jsx

@@ -10,6 +10,8 @@ import { AtButton,AtIcon,AtModal  } from 'taro-ui'
 
 import NavBar from '../../components/common/NavBar';
 
+import '../../image/bg.jpg';
+
 import 'taro-ui/dist/style/components/button.scss';
 import 'taro-ui/dist/style/components/loading.scss';
 import 'taro-ui/dist/style/components/icon.scss';
@@ -145,9 +147,6 @@ class Login extends Component {
                 this.setUsernameList(this.state.username,this.state.password);
                 Taro.eventCenter.trigger('getStorageSync');
                 this.getWorkingHours(msg.data.departmentId);
-                Taro.switchTab({
-                  url: '/pages/punchClock/index',
-                })
               }else{
                 Taro.showToast({
                   title:v.error[0].message,
@@ -164,9 +163,6 @@ class Login extends Component {
         this.setUsernameList(this.state.username,this.state.password);
         Taro.eventCenter.trigger('getStorageSync');
         this.getWorkingHours(msg.data.departmentId);
-        Taro.switchTab({
-          url: '/pages/punchClock/index',
-        })
       }
     }).catch((err)=>{
       console.log(err)
@@ -184,6 +180,9 @@ class Login extends Component {
         let obj = Taro.getStorageSync('userInfor');
         obj.workTimeInfor = msg.data;
         Taro.setStorageSync('userInfor', obj);
+        Taro.switchTab({
+          url: '/pages/punchClock/index',
+        })
       }else{
         Taro.showToast({title:msg.error[0].message,icon:'none'})
       }

+ 28 - 4
src/utils/tools/index.js

@@ -62,14 +62,38 @@ export const getHours = (startTime,endTime) => {
 }
 
 //获取总时长
-export const getNumHourse = (startTime,endTime,days) =>{
+export const getNumHourse = (startTimeValue,endTimeValue,days) =>{
   const {start,end} = getUserWordTimes();
+
+  //开始时间 向下取整   结束时间向上取整
+  let startTimeArr = [parseInt(dayjs(startTimeValue).format('HH')),parseInt(dayjs(startTimeValue).format('mm'))];
+  let endTimeArr = [parseInt(dayjs(endTimeValue).format('HH')),parseInt(dayjs(endTimeValue).format('mm'))];
+
+  if(startTimeArr[1]>0 && startTimeArr[1]<30){
+    startTimeArr[1] = 30;
+  }else if(startTimeArr[1]>30){
+    startTimeArr[0] = startTimeArr[0]+1;
+    startTimeArr[1] = 0;
+  }
+
+  if(endTimeArr[1]>0 && endTimeArr[1]<30){
+    endTimeArr[1] = 0;
+  }else if(startTimeArr[1]>30){
+    endTimeArr[1] = 30;
+  }
+
+  let startTime = dayjs(startTimeValue).format('YYYY-MM-DD') + ' '+startTimeArr.join(':')
+  let endTime = dayjs(endTimeValue).format('YYYY-MM-DD') + ' '+endTimeArr.join(':')
+
   if(dayjs(dayjs(startTime).format('YYYY-MM-DD')).isSame(dayjs(dayjs(endTime).format('YYYY-MM-DD')))){
     return getHours(startTime,endTime)
   }else{
-    let a = getHours(startTime,dayjs(startTime.format('YYYY-MM-DD')+end));
-    let b = getHours(dayjs(endTime.format('YYYY-MM-DD')+start),endTime);
-    let c = (days-2)*7.5;
+    let a = getHours(startTime,dayjs(dayjs(startTime).format('YYYY-MM-DD')+end));
+    let b = getHours(dayjs(dayjs(endTime).format('YYYY-MM-DD')+start),endTime);
+
+    let totalDuration = getHours(dayjs(startTime).format('YYYY-MM-DD')+start,dayjs(dayjs(startTime).format('YYYY-MM-DD')+end));   //一天工作时长
+
+    let c = (days-2)*totalDuration;
     return a+b+c;
   }
 }