Forráskód Böngészése

Signed-off-by: 1004749546@qq.com <1004749546@qq.com>
订单导出增加时间限制

1004749546@qq.com 4 éve
szülő
commit
edc14820c1
2 módosított fájl, 135 hozzáadás és 114 törlés
  1. 121 112
      src/libs/tools.js
  2. 14 2
      src/views/Order/OrderCenter.vue

+ 121 - 112
src/libs/tools.js

@@ -1,9 +1,9 @@
 export const forEach = (arr, fn) => {
   if (!arr.length || !fn) return
   let i = -1
-  let len = arr.length
+  const len = arr.length
   while (++i < len) {
-    let item = arr[i]
+    const item = arr[i]
     fn(item, i, arr)
   }
 }
@@ -14,9 +14,9 @@ export const forEach = (arr, fn) => {
  * @description 得到两个数组的交集, 两个数组的元素为数值或字符串
  */
 export const getIntersection = (arr1, arr2) => {
-  let len = Math.min(arr1.length, arr2.length)
+  const len = Math.min(arr1.length, arr2.length)
   let i = -1
-  let res = []
+  const res = []
   while (++i < len) {
     const item = arr2[i]
     if (arr1.indexOf(item) > -1) res.push(item)
@@ -108,17 +108,26 @@ const getDate = (timeStamp, startType) => {
 export const formtDate = (timeStamp, fmt) => {
   const d = new Date(timeStamp)
   var o = {
-        'M+': d.getMonth() + 1, // 月份
-        'd+': d.getDate(), // 日
-        'h+': d.getHours(), // 小时
-        'm+': d.getMinutes(), // 分
-        's+': d.getSeconds(), // 秒
-        'q+': Math.floor((d.getMonth() + 3) / 3), // 季度
-        'S': d.getMilliseconds() // 毫秒
-    }
-    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length))
-    for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) }
-    return fmt
+    'M+': d.getMonth() + 1, // 月份
+    'd+': d.getDate(), // 日
+    'h+': d.getHours(), // 小时
+    'm+': d.getMinutes(), // 分
+    's+': d.getSeconds(), // 秒
+    'q+': Math.floor((d.getMonth() + 3) / 3), // 季度
+    'S': d.getMilliseconds() // 毫秒
+  }
+  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length))
+  for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) }
+  return fmt
+}
+//  获取三个月后的时间戳
+export const getThreeMonthsAfter = (dtstr) => {
+  var s = dtstr.split('-')
+  var yy = parseInt(s[0])
+  var mm = parseInt(s[1])
+  var dd = parseInt(s[2])
+  var dt = new Date(yy, mm + 2, dd)
+  return dt.valueOf()
 }
 /**
  * @param {String|Number} timeStamp 时间戳
@@ -160,13 +169,13 @@ export const formatSubmitDate = (val, type) => {
   if (val == null || val == '' || val == undefined) {
     return ''
   } else {
-    let _date = new Date(val)
-    let _year = _date.getFullYear()
-    let _montn = (_date.getMonth() + 1) < 10 ? '0' + (_date.getMonth() + 1) : (_date.getMonth() + 1)
-    let _day = _date.getDate() < 10 ? '0' + _date.getDate() : _date.getDate()
-    let _hour = _date.getHours() < 10 ? '0' + _date.getHours() : _date.getHours()
-    let _minutes = _date.getMinutes() < 10 ? '0' + _date.getMinutes() : _date.getMinutes()
-    let _seconds = _date.getSeconds() < 10 ? '0' + _date.getSeconds() : _date.getSeconds()
+    const _date = new Date(val)
+    const _year = _date.getFullYear()
+    const _montn = (_date.getMonth() + 1) < 10 ? '0' + (_date.getMonth() + 1) : (_date.getMonth() + 1)
+    const _day = _date.getDate() < 10 ? '0' + _date.getDate() : _date.getDate()
+    const _hour = _date.getHours() < 10 ? '0' + _date.getHours() : _date.getHours()
+    const _minutes = _date.getMinutes() < 10 ? '0' + _date.getMinutes() : _date.getMinutes()
+    const _seconds = _date.getSeconds() < 10 ? '0' + _date.getSeconds() : _date.getSeconds()
 
     if (type == 'minutes') return _year + '-' + _montn + '-' + _day + ' ' + _hour + ':' + _minutes
     else if (type == 'seconds') return _year + '-' + _montn + '-' + _day + ' ' + _hour + ':' + _minutes + ':' + _seconds
@@ -175,7 +184,7 @@ export const formatSubmitDate = (val, type) => {
 }
 // 正则验证车牌,验证通过返回true,不通过返回false
 export const isLicensePlate = function (str) {
-    return /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test(str)
+  return /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test(str)
 }
 // 车牌可输入字符
 export const isCarNumber = function (str) {
@@ -267,7 +276,7 @@ export const off = (function () {
 export const hasKey = (obj, key) => {
   if (key) return key in obj
   else {
-    let keysArr = Object.keys(obj)
+    const keysArr = Object.keys(obj)
     return keysArr.length
   }
 }
@@ -301,7 +310,7 @@ export const removeListById = (id, list) => {
  * @description 遍历赋值
 */
 export const objExtend = (obj1, obj2) => {
-  for (var a in obj1){
+  for (var a in obj1) {
     obj2[a] = obj1[a]
   }
   return obj2
@@ -311,8 +320,8 @@ export const objExtend = (obj1, obj2) => {
  * @description 浅拷贝
 */
 export const cloneObj = (obj) => {
-  let ret = {}
-  for (var a in obj){
+  const ret = {}
+  for (var a in obj) {
     ret[a] = obj[a]
   }
   return ret
@@ -322,98 +331,98 @@ export const cloneObj = (obj) => {
  * 校验身份证号合法性
  */
 export const checkIdNumberValid = (tex) => {
-    // var tip = '输入的身份证号有误,请检查后重新输入!'
-    let num = tex
-    num = num.toUpperCase()
+  // var tip = '输入的身份证号有误,请检查后重新输入!'
+  let num = tex
+  num = num.toUpperCase()
 
-    let len = num.length
-    let re
-    if (len == 0) return true
+  const len = num.length
+  let re
+  if (len == 0) return true
 
-    // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
-    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){
-        return false
-    }
+  // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
+  if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
+    return false
+  }
 
-    // 验证前两位地区是否有效
-    let aCity = {11: '北京',
-12: '天津',
-13: '河北',
-14: '山西',
-15: '内蒙古',
-21: '辽宁',
-22: '吉林',
-23: '黑龙江',
-31: '上海',
-32: '江苏',
-33: '浙江',
-34: '安徽',
-35: '福建',
-36: '江西',
-37: '山东',
-41: '河南',
-42: '湖北',
-43: '湖南',
-44: '广东',
-45: '广西',
-46: '海南',
-50: '重庆',
-51: '四川',
-52: '贵州',
-53: '云南',
-54: '西藏',
-61: '陕西',
-62: '甘肃',
-63: '青海',
-64: '宁夏',
-65: '新疆',
-71: '台湾',
-81: '香港',
-82: '澳门',
-91: '国外'}
+  // 验证前两位地区是否有效
+  const aCity = { 11: '北京',
+    12: '天津',
+    13: '河北',
+    14: '山西',
+    15: '内蒙古',
+    21: '辽宁',
+    22: '吉林',
+    23: '黑龙江',
+    31: '上海',
+    32: '江苏',
+    33: '浙江',
+    34: '安徽',
+    35: '福建',
+    36: '江西',
+    37: '山东',
+    41: '河南',
+    42: '湖北',
+    43: '湖南',
+    44: '广东',
+    45: '广西',
+    46: '海南',
+    50: '重庆',
+    51: '四川',
+    52: '贵州',
+    53: '云南',
+    54: '西藏',
+    61: '陕西',
+    62: '甘肃',
+    63: '青海',
+    64: '宁夏',
+    65: '新疆',
+    71: '台湾',
+    81: '香港',
+    82: '澳门',
+    91: '国外' }
 
-    if (aCity[parseInt(num.substr(0, 2))] == null){
-        return false
-    }
+  if (aCity[parseInt(num.substr(0, 2))] == null) {
+    return false
+  }
 
-    // 当身份证为15位时的验证出生日期。
-    if (len == 15){
-        re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/)
-        let arrSplit = num.match(re)
+  // 当身份证为15位时的验证出生日期。
+  if (len == 15) {
+    re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/)
+    const arrSplit = num.match(re)
 
-        // 检查生日日期是否正确
-        let dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4])
-        let bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]))
-        if (!bGoodDay){
-            return false
-        }
+    // 检查生日日期是否正确
+    const dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4])
+    const bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]))
+    if (!bGoodDay) {
+      return false
     }
+  }
 
-    // 当身份证号为18位时,校验出生日期和校验位。
-    if (len == 18){
-        re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/)
-        let arrSplit = num.match(re)
-        // 检查生日日期是否正确
-        let dtmBirth = new Date(arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4])
-        let bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]))
-        if (!bGoodDay){
-            return false
-        } else {
-            // 检验18位身份证的校验码是否正确。
-            // 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
-            let valnum
-            let arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
-            let arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
-            let nTemp = 0
-            let i
-            for (i = 0; i < 17; i++){
-                nTemp += num.substr(i, 1) * arrInt[i]
-            }
-            valnum = arrCh[nTemp % 11]
-            if (valnum != num.substr(17, 1)){
-                return false
-            }
-        }
+  // 当身份证号为18位时,校验出生日期和校验位。
+  if (len == 18) {
+    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/)
+    const arrSplit = num.match(re)
+    // 检查生日日期是否正确
+    const dtmBirth = new Date(arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4])
+    const bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]))
+    if (!bGoodDay) {
+      return false
+    } else {
+      // 检验18位身份证的校验码是否正确。
+      // 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+      let valnum
+      const arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
+      const arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
+      let nTemp = 0
+      let i
+      for (i = 0; i < 17; i++) {
+        nTemp += num.substr(i, 1) * arrInt[i]
+      }
+      valnum = arrCh[nTemp % 11]
+      if (valnum != num.substr(17, 1)) {
+        return false
+      }
     }
-    return true
+  }
+  return true
 }

+ 14 - 2
src/views/Order/OrderCenter.vue

@@ -6,7 +6,7 @@
         <a-row :gutter="48">
           <a-col :span="6">
             <a-form-item label="下单时间" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
-              <a-range-picker v-model="time" :format="dateFormat" :placeholder="['开始时间','结束时间']" @change="onChange" />
+              <a-range-picker v-model="time" :disabledDate="disabledDate" :format="dateFormat" :placeholder="['开始时间','结束时间']" @change="onChange" />
             </a-form-item>
           </a-col>
           <a-col :span="6">
@@ -94,6 +94,7 @@ import {
   VSelect
 } from '@/components'
 import getDate from '@/libs/getDate.js'
+import { getThreeMonthsAfter } from '@/libs/tools.js'
 import {
   orderCenterList,
   itemList,
@@ -228,6 +229,10 @@ export default {
   },
   methods: {
     moment,
+    // 不可选日期
+    disabledDate (date) {
+      return date && date.valueOf() > Date.now()
+    },
     // 创建时间change
     onChange (dates, dateStrings) {
       if ((dates, dateStrings)) {
@@ -329,7 +334,6 @@ export default {
     },
     // 导出
     handleExport () {
-      this.loading = true
       const params = {
         beginDate: this.searchForm.beginDate == null ? getDate.getToday().starttime : this.searchForm.beginDate,
         endDate: this.searchForm.endDate == null ? getDate.getToday().endtime : this.searchForm.endDate,
@@ -339,6 +343,14 @@ export default {
         customerMobile: this.searchForm.customerMobile,
         orderStatus: this.searchForm.orderStatus
       }
+      // 获取距开始日期3个月后的时间戳
+      const tVal = getThreeMonthsAfter(params.beginDate)
+      // 获取结束时间时间戳
+      const endVal = new Date(params.endDate.replace(/-/g, '/'))
+      if (endVal.valueOf() > tVal - 86400000) {
+        return this.$message.warning('单次最多只能导出3个月的数据,请缩小查询区间后再进行导出!')
+      }
+      this.loading = true
       exportOrder(params).then(res => {
         console.log(res)
         this.loading = false