UNPKG

manage-client

Version:

经营管控模块前台组件

368 lines (345 loc) 12.3 kB
import Vue from 'vue' // 登录后获取的所有数据,需要自行获取 export var f export function getAttendanceState (item, timeToWork, timeToGo) { item.f_state = '' if (!item.f_signin_time || !item.f_knockoff_time) { item.f_state = '缺勤' } else { let signin_time = item.f_signin_time.substring(11, 16) let knockoff_time = item.f_knockoff_time.substring(11, 16) if (signin_time > timeToWork) { item.f_state = '迟到' } if (knockoff_time < timeToGo) { item.f_state = item.f_state + '早退' } } if (!item.f_state) { item.f_state = '正常' } } export function toStandardYearMonth () { let dt = new Date() let month = dt.getMonth() + 1 return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) } export function toStandardYearMonth1 () { let dt = new Date() let month = dt.getMonth() + 1 return dt.getFullYear() + (month < 10 ? '0' + month : month) } export function toStandardDateString () { let dt = new Date() let month = dt.getMonth() + 1 let date = dt.getDate() return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date) } export function toStartAndEndDateString () { let dt = new Date() let month = dt.getMonth() + 1 // let date = dt.getDate() return [dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-01', dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (new Date(dt.getFullYear(), month, 0).getDate())] // return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date) } export function toStandardTimeString () { let dt = new Date() let month = dt.getMonth() + 1 let date = dt.getDate() let hour = dt.getHours() let min = dt.getMinutes() let sec = dt.getSeconds() return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date) + ' ' + (hour < 10 ? '0' + hour : hour) + ':' + (min < 10 ? '0' + min : min) + ':' + (sec < 10 ? '0' + sec : sec) } export function to3339TimeString () { let dt = new Date() let month = dt.getMonth() + 1 let date = dt.getDate() let hour = dt.getHours() let min = dt.getMinutes() let sec = dt.getSeconds() return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date) + 'T' + (hour < 10 ? '0' + hour : hour) + ':' + (min < 10 ? '0' + min : min) + ':' + (sec < 10 ? '0' + sec : sec) } export function parse3339String (strDate) { return new Date( strDate.substr(0, 4), strDate.substr(5, 2) - 1, strDate.substr(8, 2), strDate.substr(11, 2), strDate.substr(14, 2), strDate.substr(17, 2) ) } export function format3339TimeString (dt) { let month = dt.getMonth() + 1 let date = dt.getDate() let hour = dt.getHours() let min = dt.getMinutes() let sec = dt.getSeconds() return dt.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date) + 'T' + (hour < 10 ? '0' + hour : hour) + ':' + (min < 10 ? '0' + min : min) + ':' + (sec < 10 ? '0' + sec : sec) } export function guid () { let buf = new Uint16Array(8) window.crypto.getRandomValues(buf) let S4 = function (num) { let ret = num.toString(16) while (ret.length < 4) { ret = '0' + ret } return ret } return (S4(buf[0]) + S4(buf[1]) + S4(buf[2]) + S4(buf[3]) + S4(buf[4]) + S4(buf[5]) + S4(buf[6]) + S4(buf[7])) } export function choices (role, param, hasBlank = false, blankHint = '请选择') { if (role == 'view') { Vue.getParams(param, [null]) } else { let result = [] if (hasBlank) result.push({label: blankHint, value: null}) if (!Vue.param || !Vue.param[param]) result.push({label: '请在系统设置里更新参数', value: '请在系统设置里更新参数'}) else { let p = Vue.param[param] p.forEach(function (item) { result.push({label: item.name, value: item.name}) }) } return result } } export function required (param) { if (typeof param === 'number' && param == 0) return false if (!param) return true param = param + '' param = param.trim() if (!param) return true return false } export function isInt (n) { return !window.isNaN(n) && n % 1 === 0 } export function isFloat (n) { return !window.isNaN(n) } // this will convert all true/false to boolean export function booleanFilter (paper) { for (let key in paper) { if (!paper.hasOwnProperty(key)) continue if (typeof paper[key] == 'object' && paper[key] != null) { booleanFilter(paper[key]) } else { if (paper[key] === 'true' || paper[key] == 'false') paper[key] = (paper[key] === 'true') } } } // recursively traverse through each path export function ratifyPics (paper) { for (let key in paper) { if (key.endsWith('_path')) { if (!paper[key]) { paper[key] = 'rs/db/file/nopic.png' } else { paper[key] = 'rs/db/file/' + paper[key] } } else if (paper[key] !== null && typeof (paper[key]) == 'object') { ratifyPics(paper[key]) } } } // load script and other stuff export function loadscript (type, fileName) { return new Promise((resolve, reject) => { let element if (type == 'css') { element = document.createElement('link') element.setAttribute('rel', 'stylesheet') element.setAttribute('type', 'text/css') element.setAttribute('href', fileName) } else if (type == 'js') { element = document.createElement('script') element.setAttribute('type', 'text/javascript') element.setAttribute('src', fileName) } if (element) { element.setAttribute('async', '') element.setAttribute('defer', '') element.addEventListener('load', function () { resolve(element) }, false) element.addEventListener('error', function () { reject(element) }, false) document.body.appendChild(element) } }) } // 不能选择器中截取掉多余的字符 export function orgName (name) { return name.substring(10) } export function getNowDate (name) { // 求取当前时间的工具 let myweekday = '' let year = '' let mydate = new Date() myweekday = mydate.getDay() let mymonth = mydate.getMonth() + 1 let myday = mydate.getDate() let myyear = mydate.getYear() year = (myyear > 200) ? myyear : 1900 + myyear let week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期日', '星期六'] // document.write("<font color=#ffffff>今天是 "+year+"年"+mymonth+"月"+myday+"日 "+weekday+"</font>"); return year + '年' + mymonth + '月' + myday + '日 ' + week[myweekday] } export function addDate (date, days) { // 求取当前时间的工具 let endDate = new Date(date) endDate = endDate.valueOf() endDate = endDate + days * 24 * 60 * 60 * 1000 endDate = new Date(endDate) let month = endDate.getMonth() + 1 let day = endDate.getDate() let hour = endDate.getHours() let min = endDate.getMinutes() let sec = endDate.getSeconds() return endDate.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day) + ' ' + (hour < 10 ? '0' + hour : hour) + ':' + (min < 10 ? '0' + min : min) + ':' + (sec < 10 ? '0' + sec : sec) // return a } // 通过地址栏的参数获取参数内容 export function getUrlParames (param) { var query = window.location.search var iLen = param.length var iStart = query.indexOf(param) if (iStart === -1) { return '' } iStart += iLen + 1 var iEnd = query.indexOf('&', iStart) if (iEnd === -1) { return query.substring(iStart) } return query.substring(iStart, iEnd) } // 从地址栏获取加密的参数 export function getUrlCompileParames (param) { var query = uncompileStr(window.location.search.slice(1, window.location.search.length)) var iLen = param.length var iStart = query.indexOf(param) if (iStart === -1) { return '' } iStart += iLen + 1 var iEnd = query.indexOf('&', iStart) if (iEnd === -1) { return query.substring(iStart) } return query.substring(iStart, iEnd) } // 对字符串进行加密 export function compileStr (code) { let c = String.fromCharCode(code.charCodeAt(0) + code.length) for (let i = 1; i < code.length; i++) { c += String.fromCharCode(code.charCodeAt(i) + code.charCodeAt(i - 1)) } return escape(c) } // 字符串进行解密 export function uncompileStr (code) { code = unescape(code) let c = String.fromCharCode(code.charCodeAt(0) - code.length) for (var i = 1; i < code.length; i++) { c += String.fromCharCode(code.charCodeAt(i) - c.charCodeAt(i - 1)) } return c } export function dateDescripte (date) { let nowTime = new Date().getTime() let oldTime = new Date(date).getTime() let timeDiff = nowTime - oldTime // 规则说明 // 小于等于2分钟为刚刚 // 大于2分钟小于等于1小时为取整的分钟前(例如:35分钟前) // 大于1小时小于等于24小时为取整的小时前(例如:15小时前) // 大于24小时小于等于30天为取整的天前(例如:12天前) // 大于30天小于等于12月为取整的月前,月份统一为30天一月,不做额外处理(例如:3个月前) // 大于365取整的年前,(例如:2年前) let minute = 1000 * 60 let hour = minute * 60 let day = hour * 24 let month = day * 30 let year = month * 12 let des = '' if (timeDiff <= minute * 2) { des = '刚刚' } else if (minute * 2 < timeDiff && timeDiff < hour) { des = `${Math.floor(timeDiff / minute)}分钟前` } else if (hour < timeDiff && timeDiff <= day) { des = `${Math.floor(timeDiff / hour)}小时前` } else if (day < timeDiff && timeDiff <= month) { des = `${Math.floor(timeDiff / day)}天前` } else if (month < timeDiff && timeDiff <= year) { des = `${Math.floor(timeDiff / month)}个月前` } else if (year < timeDiff) { des = `${Math.floor(timeDiff / year)}年前` } return des } export function nextMonth20 (date) { let ds = date.split('-') let nextMonth = ds[1] - 0 + 1 return ds[0] + '-' + (nextMonth < 10 ? '0' + nextMonth : nextMonth) + '-20 00:00:00' } // export function dateSwitch(fmt,dateStr,times){ let date=new Date(dateStr).getTime()+times return this.dateFormat(fmt,new Date(date)) } // 时间格式化 export function dateFormat(fmt, date) { let ret; const opt = { "y+": date.getFullYear().toString(), // 年 "M+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "h+": date.getHours().toString(), // 时 "m+": date.getMinutes().toString(), // 分 "s+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 } for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) } } return fmt } // export function getNowDate () { // // 求取当前时间的工具 // let myweekday = '' // let year = '' // let mydate = new Date() // myweekday = mydate.getDay() // let mymonth = mydate.getMonth() + 1 // let myday = mydate.getDate() // let myyear = mydate.getYear() // year = (myyear > 200) ? myyear : 1900 + myyear // let week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期日','星期六'] // let weekday = week[myweekday] // // // document.write("<font color=#ffffff>今天是 "+year+"年"+mymonth+"月"+myday+"日 "+weekday+"</font>"); // return year + '年' + mymonth + '月' + myday + '日 ' + weekday // } // // export function getImgsrc (name) { // return "http://127.0.0.1:8081/images/"+name+".gif" // } // // export var f;