Explorar o código

手机端时间选择问题 图片上传问题 点击输入框页面放大问题

chenc %!s(int64=3) %!d(string=hai) anos
pai
achega
2a113a7a87

+ 26 - 1
src/store/modules/user.js

@@ -1,5 +1,5 @@
 import Vue from 'vue'
-import { login, logout, phoneLogin } from '@/api/login'
+import { login, logout, phoneLogin,dingLogin } from '@/api/login'
 import { ACCESS_TOKEN, USER_NAME, USER_INFO, USER_AUTH, SYS_BUTTON_AUTH } from '@/store/mutation-types'
 import { welcome } from '@/utils/util'
 import { queryPermissionsByUser } from '@/api/api'
@@ -90,6 +90,31 @@ const user = {
                     })
             })
         },
+        //钉钉免登录
+        dingLogin ({ commit }, userInfo) {
+            return new Promise((resolve, reject) => {
+                dingLogin(userInfo)
+                    .then(response => {
+                        if (response.code == '200') {
+                            const result = response.result
+                            const userInfo = result.userInfo
+                            Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
+                            Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
+                            Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
+                            commit('SET_TOKEN', result.token)
+                            commit('SET_INFO', userInfo)
+                            commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname, welcome: welcome() })
+                            commit('SET_AVATAR', userInfo.avatar)
+                            resolve(response)
+                        } else {
+                            reject(response)
+                        }
+                    })
+                    .catch(error => {
+                        reject(error)
+                    })
+            })
+        },
 
         // 手机号登录 暂未使用
         PhoneLogin ({ commit }, userInfo) {

+ 7 - 2
src/views/activiti/form/demoForm2.vue

@@ -55,6 +55,7 @@
 import pick from 'lodash.pick'
 import todoManageOperation from '../operation/todoManageOperation'
 import { postAction, postFormDataAction } from '@/api/manage'
+import {getTotal,leaveTime} from './js/leave-date'
 export default {
   name: 'demoForm',
   props: {
@@ -310,7 +311,9 @@ export default {
         //判断结束时间是否存在
         if (this.$refs.KFB.form.getFieldValue('end_time')) {
           //获取时间差
-          let duration = startEndFun(value, this.$refs.KFB.form.getFieldValue('end_time'))
+          // let duration = startEndFun(value, this.$refs.KFB.form.getFieldValue('end_time'))
+          let duration =leaveTime(value,this.$refs.KFB.form.getFieldValue('end_time'));
+          
           if (duration) {
             // 使用k-form-design组件的form属性修改表单数据
             this.$refs.KFB.setData({
@@ -324,7 +327,9 @@ export default {
         //判断结束时间是否存在
         if (this.$refs.KFB.form.getFieldValue('start_time')) {
           //获取时间差
-          let duration = startEndFun(this.$refs.KFB.form.getFieldValue('start_time'), value)
+          // let duration = startEndFun(this.$refs.KFB.form.getFieldValue('start_time'), value)
+          let duration =leaveTime(this.$refs.KFB.form.getFieldValue('start_time'),value);
+          // alert(JSON.stringify(duration))
           if (duration) {
             // 使用k-form-design组件的form属性修改表单数据
             this.$refs.KFB.setData({

+ 230 - 0
src/views/activiti/form/js/leave-date.js

@@ -0,0 +1,230 @@
+/**
+ * 计算请假时长
+ * @param {Object} beginTime    开始时间
+ * @param {Object} endTime      结束时间
+ * @param {Object} stWorkTime   上班时间
+ * @param {Object} enWrokTime   下班时间
+ * @param {Object} isFreeTime  是否要去除午休工作时长
+ * @param {Object} freeTimeMon  午休开始时间
+ * @param {Object} freeTimeAft  午休结束时间
+ * 
+ */
+export function getTotal(beginTime, endTime, stWorkTime, enWrokTime, isFreeTime, freeTimeMon, freeTimeAft) {
+  var days;
+  var hours;
+  var hour
+  var date;
+  var freeTime = freeTimeAft - freeTimeMon;
+
+  beginTime = beginTime.replace(/-/g, '/');
+  var beginArr = beginTime.split(" ");
+  var beginMonth = parseInt(beginArr[0].split("/")[1]);
+  var beginDay = parseInt(beginArr[0].split("/")[2]);
+  var beginHours = parseInt(beginArr[1].split(":")[0]);
+  var beginMin = parseInt(beginArr[1].split(":")[1]);
+  var beginHoursMin = beginHours + beginMin / 60;
+
+  endTime = endTime.replace(/-/g, '/');
+  var endArr = endTime.split(" ");
+  var endMonth = parseInt(endArr[0].split("/")[1]);
+  var endDay = parseInt(endArr[0].split("/")[2]);
+  var endHours = parseInt(endArr[1].split(":")[0]);
+  var endMin = parseInt(endArr[1].split(":")[1]);
+  var endHoursMin = endHours + endMin / 60;
+
+
+  //如果beginHoursMin时间小于上班时间都算上班时间
+  if (beginHoursMin <= stWorkTime) {
+    beginHoursMin = stWorkTime;
+  }
+  //如果endHoursMin时间大于上班时间都算下班时间
+  if (endHoursMin >= enWrokTime) {
+    endHoursMin = enWrokTime;
+  }
+  //如果结束时间在freeTimeMon和freeTimeAft之间都算freeTimeMon
+  if (isFreeTime == true) {
+    if (endHoursMin >= freeTimeMon && endHoursMin <= freeTimeAft) {
+      endHoursMin = freeTimeMon;
+    }
+
+  }
+
+
+  //获取结束时间-开始时间的天数
+  var daysBetweens = daysBetween(beginTime, endTime);
+  if (daysBetweens.length > 0) {
+    var daysBetweenLen = daysBetweens.length;
+    //午休
+    if (isFreeTime == true) {
+      hour = enWrokTime - stWorkTime - freeTime;
+      if (daysBetweenLen == 1) {
+        //同一天
+        hours = (endHoursMin) - (beginHoursMin) - freeTime;
+      } else if (daysBetweenLen == 2) {
+        //跨一天   
+        //第一天的时长
+        hours = enWrokTime - beginHoursMin;
+        //是否有午休         
+        if (beginHoursMin <= freeTimeMon)
+          hours = hours - freeTime;
+        //第二天的时长    
+        hours += endHoursMin - stWorkTime;
+        //是否有午休 
+        if (endHoursMin >= freeTimeAft)
+          hours = hours - freeTime;
+
+      } else {
+        //跨两天以上 
+        //第一天的时长
+        hours = enWrokTime - beginHoursMin;
+        //是否有午休             
+        if (beginHoursMin <= freeTimeMon)
+          hours = hours - freeTime;
+        //中间时长
+        hours += (daysBetweenLen - 2) * (hour);
+        //最后一天时长
+        hours += endHoursMin - stWorkTime;
+        //是否有午休 
+        if (endHoursMin >= freeTimeAft)
+          hours = hours - freeTime;
+      }
+    //   days = Math.floor(hours / hour);
+    //   hours = hours % hour;
+    //   date = {
+    //     "days": days,
+    //     "hours": hours
+    //   };
+
+    } else {
+      //非午休   
+      hour = enWrokTime - stWorkTime;
+      if (daysBetweenLen == 1) {
+        //同一天
+        hours = (endHoursMin) - (beginHoursMin);
+      } else if (daysBetweenLen == 2) {
+        //跨一天   
+        hours = enWrokTime - beginHoursMin;
+        //第二天的时长
+        hours += endHoursMin - stWorkTime;
+      } else {
+        //跨两天以上 
+        //第一天的时长
+        hours = enWrokTime - beginHoursMin;
+        //中间时长
+        hours += (daysBetweenLen - 2) * (hour);
+        //最后一天时长
+        hours += endHoursMin - stWorkTime;
+      }
+    //   days = Math.floor(hours / hour);
+    //   hours = hours % hour;
+    //   date = {
+    //     "days": days,
+    //     "hours": hours
+    //   };
+    }
+
+
+  }
+  return Math.floor(hours);
+}
+
+/**
+ * 根据两个日期,判断相差天数
+ * @param sDate1 开始日期 如:2016-11-01
+ * @param sDate2 结束日期 如:2016-11-02
+ * @returns {number} 返回相差天数
+ */
+export function daysBetween(sDate1, sDate2) {
+  var arr = [];
+  sDate1 = sDate1.substring(0, 10);
+  sDate2 = sDate2.substring(0, 10);
+  var startTime = gDate(sDate1);
+  var endTime = gDate(sDate2);
+  while ((endTime.getTime() - startTime.getTime()) >= 0) {
+    var year = startTime.getFullYear();
+    var month = startTime.getMonth().toString().length == 1 ? "0" + startTime.getMonth().toString() : startTime.getMonth();
+    var day = startTime.getDate().toString().length == 1 ? "0" + startTime.getDate() : startTime.getDate();
+    arr.push(year + "/" + month + "/" + day);
+    startTime.setDate(startTime.getDate() + 1);
+  }
+  return arr;
+
+};
+
+export function gDate(datestr) {
+  datestr = datestr.replace(/-/g, '/');
+  var temp = datestr.split("/");
+  var date = new Date(temp[0], temp[1], temp[2]);
+  return date;
+}
+
+
+
+
+
+
+
+
+
+
+export function leaveTime(starttime, endtime) {
+    var start = new Date(starttime.replace(/\-/g,'/')); //start = Thu Mar 28 2019 16:02:00 GMT+0800 (中国标准时间)
+    var end = new Date(endtime.replace(/\-/g,'/'));
+    var startHour = start.getHours(); //16
+    var endHour = end.getHours();
+    var startDate = start.setHours(0, 0, 0); //startDate = 1553702400000
+    var endDate = end.setHours(0, 0, 0);
+    var dayNum = parseInt(Math.abs(endDate - startDate) / 1000 / 60 / 60 / 24);
+    var hour = 0;
+    if (startHour < 9) {
+        startHour = 9;
+    }
+    //如果开始时间大于18点,
+    if (startHour > 18) {
+        startDate += 60 * 60 * 24 * 1000;
+        starHour = 9;
+    }
+    if (endHour < 9) {
+        endDate -= 60 * 60 * 24 * 1000;
+        endHour = 18;
+    }
+    if (endHour > 18) {
+        endHour = 18;
+    }
+    if (startDate == endDate) {
+        var date = new Date(startDate);
+        var week = date.getDay();
+        if (week != 0 && week != 6) {
+            hour = endHour - startHour;
+            if (hour > 0 && hour < 4)
+                hour = 4;
+            if (hour > 4)
+                hour = 8;
+        }
+    } else {
+        for (var i = 0; i <= dayNum; i++) {
+            var DateTime = startDate + 60 * 60 * 24 * 1000*i
+            var date = new Date(DateTime);
+            var week = date.getDay();
+            if (week != 0 && week != 6) {
+                if (DateTime == startDate) {
+                    var timehour = 18 - startHour;
+                    if (timehour > 0 && timehour <= 4)
+                        hour =+ 4;
+                    if (timehour > 4)
+                        hour =+ 8;
+                } else if (DateTime > startDate && DateTime < endDate) {
+                    hour += 8;
+                } else if (DateTime == endDate){
+                    var timehour = endHour - 9;
+                    if (timehour > 0 && timehour <= 4)
+                        hour += 4;
+                    if (timehour > 4)
+                        hour += 8;
+                }
+            }
+        }
+    }
+    
+    return hour; 
+}

+ 1 - 0
src/views/user/Login.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="content">
+    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
     <div class="main">
       <!-- 待办 头部  -->
       <div class="todoContain">