const plugobj = {
/**
*判断浏览器的innerText或textContent属性
*/
setcontent(element,content){
if(typeof element.innerText === "string"){
return element.innerText = content
}else {
return element.textContent = content
}
},
/**
* 获取页面的当中可视区域的宽高度的兼容函数
*/
getClient(){
return {
width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,
height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
}
},
/**
* 获取下一个兄弟元素的兼容函数
*/
getEleSibling(element){
if(element.nextElementSibling){
return element.nextElementSibling
}else {
var next = element.nextSibling
while(next && next.nodeType !== 1){
next = next.nextSibling
}
return next
}
},
/**
*获取上一个兄弟元素的兼容函数
*/
setprev(element){
if(element.previousElementSibling){
return element.previousElementSibling
}else {
var prev = element.previousSibling
while(prev && prev.nodeType !== 1){
prev = prev.previousSibling
}
return prev
}
},
/**
* 获取类名的兼容函数
*/
getClassName(ele,className){
if(ele.getElementsByClassName){
return ele.getElementsByClassName(className)
}else {
var elements = ele.getElementsByTagName("*")
var arr = []
for (var i = 0
if(elements[i].className.indexOf(className) !== -1){
arr.push(elements[i])
}
}
return arr
}
},
/**
* 匀速动画的封装函数
*/
animate(Obj,target){
clearInterval(Obj.timer)
Obj.timer = setInterval(function(){
var leader = Obj.offsetLeft,
step = 10,
step = leader < target ? step : -step
if(Math.abs(leader - target) > Math.abs(step)){
Obj.style.left = leader + step + "px"
}else {
Obj.style.left = target + "px"
clearInterval(Obj.timer)
}
},15)
},
/**
* 获取页面被卷去的头部高度和左侧宽度的 兼容函数
*/
scroll(){
return {
top : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
left : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0
}
},
/**
* 获取外部样式的兼容函数
*/
getStyle(obj,attr){
if(window.getComputedStyle){
return window.getComputedStyle(obj,null)[attr]
}else {
return obj.currentStyle[attr]
}
},
/**
* 用缓动动画封装一个回调函数(包含透明度和层级)
*/
setanimate3(obj,josn,fn){
clearInterval(obj.timer)
obj.timer = setInterval(function(){
var flag = true
for(var key in josn){
if(key === "opacity"){
var leader = getStyle(obj,key) * 100
var step = (josn[key] * 100 - leader) / 10
step = step > 0 ? Math.ceil(step) : Math.floor(step)
obj.style[key] = (leader + step) / 100
}else if(key === "zIndex"){
obj.style[key] = josn[key]
}else {
var leader = parseInt(getStyle(obj,key)) || 0
var step = (josn[key] - leader) / 10
step = step > 0 ? Math.ceil(step) : Math.floor(step)
obj.style[key] = leader + step + "px"
}
if(josn[key] !== leader){
flag = false
}
}
if(flag){
clearInterval(obj.timer)
if(fn){
fn()
}
}
},15)
},
/**
* 设置全屏的能力检测
*/
getStyle(obj,attr){
if(window.getComputedStyle){
return window.getComputedStyle(obj,null)[attr]
}else {
return obj.currentStyle[attr]
}
},
clickFull(){
btn1.onclick=function(){
//全屏
if(div.requestFullScreen){
div.requestFullScreen()
}else if(div.webkitRequestFullScreen){
div.webkitRequestFullScreen()
}else if(div.mozRequestFullScreen){
div.mozRequestFullScreen()
}else if(div.msRequestFullScreen){
div.msRequestFullScreen()
} else if(div.oRequestFullScreen){
div.oRequestFullScreen()
}
}
btn2.onclick=function(){
//退出全屏
if(document.cancelFullScreen){
document.cancelFullScreen()
}else if(document.webkitCancelFullScreen){
document.webkitCancelFullScreen()
}else if(document.mozCancelFullScreen){
document.mozCancelFullScreen()
}else if(document.msCancelFullScreen){
document.msCancelFullScreen()
}else if(document.oCancelFullScreen){
document.oCancelFullScreen()
}
}
btn3.onclick=function(){
//检测是否全屏
if(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.oFullscreenElement){
alert(true)
}else {
alert(false)
}
}
},
/**
* 拖拽任意元素
*/
dragdom(){
//被拖拽元素
document.ondragstart = function(event){
event.dataTransfer.setData("text/html",event.target.id)
}
//目标元素
document.ondragover = function(event){
event.preventDefault()
}
document.ondrop = function(event){
var x = event.dataTransfer.getData("text/html")
event.target.appendChild(document.getElementById(x))
}
},
/**
* 模拟jquery的ajax请求文件(跨域(jsonp)和不跨域(json)
*/
ajax(obj){
var defaus = {
type:"get",
url:"
async:true,
data:{},
jsonp:"callback",
dataType:"text",
success:function(data){
console.log(data)
}
}
for(var key in obj){
defaus[key] = obj[key]
}
if(defaus.dataType === "jsonp"){
ajaxJsonp(defaus)
}else {
ajaxJson(defaus)
}
function ajaxJsonp(){
var cbName = "jQuery" + ("1.11.1" + Math.random()).replace(/\D/g,"") + "_" + (new Date().getTime())
if(defaus.jsonpCallback){//这里是为了方便设置jsonp的默认名字
cbName = defaus.jsonpCallback
}
window[cbName] = function(data){//这里就是回调函数,调用方式服务器响应内容来调用,实际上时向window中添加了一个方法,方法名是变量cbname的值
try {//用try---finally将请求完数据的script标签从页面中删除
defaus.success(data)
}finally{
script.parentNode.removeChild(script)
delete window[cbName]
}
}
var parm = ""
for(var key in defaus.data){
parm += key + "=" + defaus.data[key] + "&"
}
if(parm){
parm += parm.substring(0,parm.length - 1)
parm = "&" + parm
}
var script = document.createElement("script")
script.src = defaus.url + "?" + defaus.jsonp + "=" + cbName + parm
var head = document.getElementsByTagName("head")[0]
head.appendChild(script)
}
function ajaxJson(){
var xhr
if(window.XMLHttpRequest){//处理兼容Ajax请求
xhr = new XMLHttpRequest()
}else {
xhr = new ActiveXObject("Microsoft.XMLHTTP")
}
var parm = ""
for(var key in defaus.data){//这里是用来将(get请求后边要传入的键值对)中的值赋值给parm
parm += key + "=" + defaus.data[key] + "&"
}
if(parm){//如果parm中有值,则将其提取出来,目的是为了去掉最后一个多余的&符号
parm = parm.substring(0,parm.length-1)
}
if(defaus.type === "get"){//处理get参数
defaus.url += "?"+ encodeURI(parm)
}
xhr.open(defaus.type,defaus.url,defaus.async)
var code = null
if(defaus.type === "post"){//处理post参数,且必须设置头信息
code = parm
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
}
xhr.send(code)
//处理同步请求,注意,同步的话就不使用回调函数了
if(!defaus.async){
if(defaus.dataType === "json"){
return JSON.parse(xhr.responseText)
}else {
return xhr.responseText
}
}
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status === 200){
var data = xhr.responseText
if(defaus.dataType === "json"){
data = JSON.parse(data)
}
defaus.success(data)
}
}
}
}
},
getSearchString(key) {//key就是要截取的参数的键
// 获取URL中?之后的字符
var str = location.search
str = str.substring(1,str.length)
// 以&分隔字符串,获得类似name=xiaoli这样的元素数组
var arr = str.split("&")
var obj = new Object()
// 将每一个数组元素以=分隔并赋给obj对象
for(var i = 0
var tmp_arr = arr[i].split("=")
obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1])
}
return obj[key]
},
getQueryString(name) {
try {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)")
var url = location.href.split("?")
r = url[1].match(reg)
if (r != null) return unescape(r[2])
return ""
} catch (e) {
return ""
}
},
/**
* 获取当前日期
*/
getDayTime() {
var d = new Date()
var year = d.getFullYear()
var month = d.getMonth() + 1
var date = d.getDate()
var day = d.getDay()
var h = d.getHours()
var m = d.getMinutes()
var s = d.getSeconds()
if (h < 10) { h = "0" + h
if (m < 10) { m = "0" + m
if (s < 10) { s = "0" + s
var week = ["日", "一", "二", "三", "四", "五", "六"]
//var str = year + "年" + month + "月" + date + "日 星期" + week[day] + " " + h + ":" + m + ":" + s
var str = year + "年" + month + "月" + date + "日 星期" + week[day] + " " + h + ":" + m
return str
},
/**
* 获取当前时间
*/
getDate() {
var myDate = new Date()
var dataStr = ""
dataStr += myDate.getFullYear() + "-"
var num = myDate.getMonth() + 1
if (num < 10) {
dataStr += "0" + num + "-"
} else {
dataStr += num + "-"
}
var day = myDate.getDate()
if (day < 10) {
dataStr += "0" + day + " "
} else {
dataStr += day + " "
}
var h = myDate.getHours()
var m = myDate.getMinutes()
var s = myDate.getSeconds()
if (h < 10) { dataStr += "0" + h + ":"
if (m < 10) { dataStr += "0" + m + ":"
if (s < 10) { dataStr += "0" + s
return dataStr
},
/**
* cookie设置,存取,删除
*/
setCookie(name, value, seconds) {//设置cookie
seconds = seconds || 0
var expires = ""
if (seconds != 0) { //设置cookie生存时间
var date = new Date()
date.setTime(date.getTime() + (seconds * 1000))
expires = "; expires=" + date.toGMTString()
}
document.cookie = name + "=" + escape(value) + expires + "; path=/"
},
getCookie(name) {//取得cookie
var nameEQ = name + "="
var ca = document.cookie.split(';')
for (var i = 0
var c = ca[i]
while (c.charAt(0) == ' ') { //判断一下字符串有没有前导空格
c = c.substring(1, c.length)
}
if (c.indexOf(nameEQ) == 0) { //如果含有我们要的name
return unescape(c.substring(nameEQ.length, c.length))
}
}
return false
},
clearCookie(name) {//清除cookie
setCookie(name, "", -1)
},
/**
* MD5加密
*/
md5(sMessage) {
function RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits))
function AddUnsigned(lX, lY) {
var lX4, lY4, lX8, lY8, lResult
lX8 = (lX & 0x80000000)
lY8 = (lY & 0x80000000)
lX4 = (lX & 0x40000000)
lY4 = (lY & 0x40000000)
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF)
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8)
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8)
}
else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8)
}
}
else {
return (lResult ^ lX8 ^ lY8)
}
}
function F(x, y, z) { return (x & y) | ((~x) & z)
function G(x, y, z) { return (x & z) | (y & (~z))
function H(x, y, z) { return (x ^ y ^ z)
function I(x, y, z) { return (y ^ (x | (~z)))
function FF(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac))
return AddUnsigned(RotateLeft(a, s), b)
}
function GG(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac))
return AddUnsigned(RotateLeft(a, s), b)
}
function HH(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac))
return AddUnsigned(RotateLeft(a, s), b)
}
function II(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac))
return AddUnsigned(RotateLeft(a, s), b)
}
function ConvertToWordArray(sMessage) {
var lWordCount
var lMessageLength = sMessage.length
var lNumberOfWords_temp1 = lMessageLength + 8
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16
var lWordArray = Array(lNumberOfWords - 1)
var lBytePosition = 0
var lByteCount = 0
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4
lBytePosition = (lByteCount % 4) * 8
lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount) << lBytePosition))
lByteCount++
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4
lBytePosition = (lByteCount % 4) * 8
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition)
lWordArray[lNumberOfWords - 2] = lMessageLength << 3
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29
return lWordArray
}
function WordToHex(lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount
for (lCount = 0
lByte = (lValue >>> (lCount * 8)) & 255
WordToHexValue_temp = "0" + lByte.toString(16)
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2)
}
return WordToHexValue
}
var x = Array()
var k, AA, BB, CC, DD, a, b, c, d
var S11 = 7, S12 = 12, S13 = 17, S14 = 22
var S21 = 5, S22 = 9, S23 = 14, S24 = 20
var S31 = 4, S32 = 11, S33 = 16, S34 = 23
var S41 = 6, S42 = 10, S43 = 15, S44 = 21
x = ConvertToWordArray(sMessage)
a = 0x67452301
for (k = 0
AA = a
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478)
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756)
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB)
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE)
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF)
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A)
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613)
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501)
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8)
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF)
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1)
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE)
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122)
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193)
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E)
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821)
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562)
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340)
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51)
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA)
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D)
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453)
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681)
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8)
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6)
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6)
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87)
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED)
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905)
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8)
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9)
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A)
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942)
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681)
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122)
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C)
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44)
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9)
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60)
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70)
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6)
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA)
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085)
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05)
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039)
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5)
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8)
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665)
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244)
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97)
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7)
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039)
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3)
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92)
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D)
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1)
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F)
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0)
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314)
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1)
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82)
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235)
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB)
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391)
a = AddUnsigned(a, AA)
c = AddUnsigned(c, CC)
}
var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d)
return temp.toUpperCase()
},
/**
* 常用正则验证
*/
regNum(number){
return /[\u4e00-\u9fa5]/.test(number)
},
regIDcard(regIDcard){
return /(^\d{18}$)|(^\d{17}(\d|[Xx])$)/.test(regIDcard)
},
regPhone(regPhone){
return /^1[34578]\d{9}$/.test(regPhone)
},
regNumsz(code){
return /^\d{4}$/.test(code)
},
regName() {
return /^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$|^[\u4E00-\u9FA5A-Za-z]+$|^[A-Za-z]+(·[A-Za-z]+)*$/.test(name)
},
regEmail() {
return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/
},
/**
* 验证码倒计时
*/
YZTimeOut() {
$("
lgmsgOutTime = null
var lgmsgTime = 60
//验证码倒计时
if (!lgmsgOutTime) {
lgmsgOutTime = setInterval(function () {
if (lgmsgTime > 0) {
lgmsgTime--
$("
} else {
clearInterval(lgmsgOutTime)
lgmsgTime = 60
$("
$("
lgmsgOutTime = null
}
}, 1000)
}
},
YzmLgReset() {//验证码复原
clearInterval(lgmsgOutTime)
var lgmsgTime = 60
$("
$("
$("
$("
lgmsgOutTime = null
},
/**
* 社会统一信用代码校验
*/
CheckCreditCode(creditCode, isSubtle) {
if (creditCode == null || creditCode == undefined || creditCode == "") return false
if (isSubtle != false) isSubtle = true
if (!isSubtle) creditCode = creditCode.toUpperCase()
var Ancode, Ancodevalue, total = 0
var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28]
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY'
for (var i = 0
Ancode = creditCode.substring(i, i + 1)
Ancodevalue = str.indexOf(Ancode)
total = total + Ancodevalue * weightedfactors[i]
}
var logiccheckcode = 31 - total % 31
if (logiccheckcode == 31) {
logiccheckcode = 0
}
var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y"
var Array_Str = Str.split(',')
logiccheckcode = Array_Str[logiccheckcode]
var checkcode = creditCode.substring(17, 18)
return logiccheckcode == checkcode
},
/**
* 判断是ios还是安卓系统
*/
IsIos() {
var u = navigator.userAgent, app = navigator.appVersion
//苹果
if (u.indexOf('AppleWebKit') > -1 && u.indexOf('MicroMessenger') > -1 && u.indexOf('iPhone') > -1 && !!u.match(/\(i[^;]+
return true
} else {
//安卓
return false
}
},
/**
* 判断是pc还是移动
*/
IsPC() {
var userAgentInfo = navigator.userAgent
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"]
var flag = true
for (var v = 0
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false
break
}
}
return flag
},
/**
* 营业执照注册号校验
*/
CheckRegCode(regCode) {
var result = -1
if (regCode.length > 1) {
var ti = 0, si = 0, cj = 0, pj = 10
for (var i = 0
ti = parseInt(regCode.substring(i, i + 1))
si = pj + ti
cj = (0 == si % 10 ? 10 : si % 10) * 2
pj = (cj % 11) == 0 ? 10 : (cj % 11)
if (i == regCode.length - 1) {
if (regCode.length == 14) {
pj = (cj % 11) == 0 ? 10 : (cj % 11)
result = 1 - pj < 0 ? 11 - pj : 1 - pj
} else if (regCode.length == 15) {
result = si % 10
}
}
}
}
return result == 1
},
/**
* 组织机构代码校验
*/
CheckOrgCode(orgCode, isSubtle) {
if (orgCode == null || orgCode == undefined || orgCode == "") return false
if (isSubtle != false) isSubtle = true
if (!isSubtle) orgCode = orgCode.toUpperCase()
var ws = [3, 7, 9, 10, 5, 8, 4, 2]
var str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
//判断是否有“-”,如果没有则添加“-”
var aaa = orgCode.slice(orgCode.length - 2, orgCode.length - 1)
if(aaa != "-"){
orgCode = orgCode.slice(0, orgCode.length - 1) + "-" + orgCode.slice(orgCode.length - 1)
}
if (!/^([0-9A-Z]){8}-[0-9|X]$/.test(orgCode)) return false
var sum = 0
for (var i = 0
var c = orgCode.substring(i, i + 1)
//var c = orgCode.ToCharArray()[i]
sum += str.indexOf(c) * ws[i]
}
var c9 = 11 - (sum % 11)
var sc9 = c9 + ""
if (11 == c9) {
sc9 = "0"
} else if (10 == c9) {
sc9 = "X"
}
var oc = orgCode.substring(9, 10)
return sc9 == oc
},
/**
* 循环获取多级字典
*/
getEjVal(dictory, arr) {
if(!arr.length) return
const newArr = []
dictory.forEach(v=>{
if(v instanceof Array){
arr.forEach(item=>{
if(v.id==item){
newArr.push(v.value)
}
})
}else{
getEjVal(v,arr)
}
})
return newArr
},
/**
* 兼容ie初始选择框和input框(placeholder提示)
*/
InitPlaceholder() {
$("select").each(function () {
if ($(this).val() == "" || $(this).val() == null) {
$(this).css({ "color": "
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "
} else {
$(this).css({ "color": "
}
})
$("select").change(function () {
if ($(this).val() == "") {
$(this).css({ "color": "
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "
} else {
$(this).css({ "color": "
}
})
$("input:button").each(function () {
if ($(this).val() == "") {
$(this).val($(this).attr("placeholder"))
$(this).css({ "color": "
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "
} else {
$(this).css({ "color": "
}
})
$("input:button").change(function () {
if ($(this).val() == "") {
$(this).val($(this).attr("placeholder"))
$(this).css({ "color": "
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "
} else {
$(this).css({ "color": "
}
})
},
/**
* 按出生日期算年龄
*/
birthDataChangeAge(date) {
if (date == "" || date == undefined) {
return ""
}
var r = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/)
var d = new Date(r[1], r[3] - 1, r[4])
if (r == null) {
return false
}
else if (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]) {
var Y = new Date().getFullYear()
return (Y - r[1])
}
else {
return false
}
},
/**
* 计算年龄(根据出生日期)
* 计算年份->计算月份->计算天数
* sDate1起始年
* sDate2结束年
*/
getDiffYmdBetweenDate(sDate1,sDate2){
var fixDate = function(sDate){
var aD = sDate.split('-')
for(var i = 0
aD[i] = fixZero(parseInt(aD[i]))
}
return aD.join('-')
}
var fixZero = function(n){
return n < 10 ? '0'+n : n
}
var fixInt = function(a){
for(var i = 0
a[i] = parseInt(a[i])
}
return a
}
var getMonthDays = function(y,m){
var aMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31]
if((y%400 == 0) || (y%4==0 && y%100!=0)){
aMonthDays[2] = 29
}
return aMonthDays[m]
}
var checkDate = function(sDate){
}
var y = 0
var m = 0
var d = 0
var sTmp
var aTmp
sDate1 = fixDate(sDate1)
sDate2 = fixDate(sDate2)
if(sDate1 > sDate2){
sTmp = sDate2
sDate2 = sDate1
sDate1 = sTmp
}
var aDate1 = sDate1.split('-')
aDate1 = fixInt(aDate1)
var aDate2 = sDate2.split('-')
aDate2 = fixInt(aDate2)
//计算相差的年份
/*aTmp = [aDate1[0]+1,fixZero(aDate1[1]),fixZero(aDate1[2])]
while(aTmp.join('-') <= sDate2){
y++
aTmp[0]++
}*/
y = aDate2[0] - aDate1[0]
if( sDate2.replace(aDate2[0],'') < sDate1.replace(aDate1[0],'')){
y = y - 1
}
//计算月份
aTmp = [aDate1[0]+y,aDate1[1],fixZero(aDate1[2])]
while(true){
if(aTmp[1] == 12){
aTmp[0]++
aTmp[1] = 1
}else{
aTmp[1]++
}
if(([aTmp[0],fixZero(aTmp[1]),aTmp[2]]).join('-') <= sDate2){
m++
} else {
break
}
}
//计算天数
aTmp = [aDate1[0]+y,aDate1[1]+m,aDate1[2]]
if(aTmp[1] > 12){
aTmp[0]++
aTmp[1] -= 12
}
while(true){
if(aTmp[2] == getMonthDays(aTmp[0],aTmp[1])){
aTmp[1]++
aTmp[2] = 1
} else {
aTmp[2]++
}
sTmp = ([aTmp[0],fixZero(aTmp[1]),fixZero(aTmp[2])]).join('-')
if(sTmp <= sDate2){
d++
} else {
break
}
}
return {y:y,m:m,d:d}
},
/**
* 获取两个日期之间的所有月份(包括区间)
*/
getMonthBetween(start, end) {//传入的格式YYYY-MM
var result = []
var s = start.split("-")
var e = end.split("-")
var min = new Date()
var max = new Date()
min.setFullYear(s[0], s[1] * 1 - 1, 1)
max.setFullYear(e[0], e[1] * 1 - 1, 1)
var curr = min
while (curr <= max) {
/**
* 单返回月份
*/
// var month = curr.getMonth()
// result.push(month + 1)
// curr.setMonth(month + 1)
/**
* 返回区间
*/
var month = curr.getMonth()
var str = curr.getFullYear()+'-'+(month+1)
var s = curr.getFullYear()+'-0'
if(str==s){
str = curr.getFullYear()+'-1'
}
//返回区间
result.push(str)
curr.setMonth(month + 1)
}
let arr = []
result.forEach(v=>{
const day = utility.getLastDay(v)
arr.push(v.replace('-','年')+'月1日'+'-'+v.replace('-','年')+'月'+day+'日')
})
return arr
// return result
},
/**
* 获取指定月份的最后一天
*/
getLastDay(date){
let nowyear = new Date(date).getFullYear()
let nowmonth = new Date(date).getMonth()+1
let nextmonth = nowmonth++
if(nowmonth>12){
nextmonth -= 12
nowyear++
}
var new_date = new Date(nowyear,nextmonth,1)
return (new Date(new_date.getTime()-1000*60*60*24)).getDate()
},
/**
* 将数字转化为大写金额
*/
changeNumMoneyToChinese(money){
var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
var cnIntRadice = new Array("", "拾", "佰", "仟")
var cnIntUnits = new Array("", "万", "亿", "兆")
var cnDecUnits = new Array("角", "分", "毫", "厘")
var cnInteger = "整"
var cnIntLast = "元"
var maxNum = 999999999999999.9999
var IntegerNum
var DecimalNum
var ChineseStr = ""
var parts
var Symbol=""
if (money == "") {
return ""
}
money = parseFloat(money)
if (money >= maxNum) {
alert('超出最大处理数字')
return ""
}
if (money == 0) {
ChineseStr = cnNums[0] + cnIntLast + cnInteger
return ChineseStr
}
if(money<0)
{
money=-money
Symbol="负 "
}
money = money.toString()
if (money.indexOf(".") == -1) {
IntegerNum = money
DecimalNum = ''
} else {
parts = money.split(".")
IntegerNum = parts[0]
DecimalNum = parts[1].substr(0, 4)
}
if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换
var zeroCount = 0
var IntLen = IntegerNum.length
for (var i = 0
var n = IntegerNum.substr(i, 1)
var p = IntLen - i - 1
var q = p / 4
var m = p % 4
if (n == "0") {
zeroCount++
}
else {
if (zeroCount > 0) {
ChineseStr += cnNums[0]
}
zeroCount = 0
ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
}
if (m == 0 && zeroCount < 4) {
ChineseStr += cnIntUnits[q]
}
}
ChineseStr += cnIntLast
//整型部分处理完毕
}
if (DecimalNum != '') { //小数部分
var decLen = DecimalNum.length
for (var i = 0
var n = DecimalNum.substr(i, 1)
if (n != '0') {
ChineseStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
if (ChineseStr == '') {
ChineseStr += cnNums[0] + cnIntLast + cnInteger
} else if (DecimalNum == '') {
ChineseStr += cnInteger
}
ChineseStr = Symbol +ChineseStr
return ChineseStr
},
/**
* js获取一段字符串中完整的url地址
*/
httpString(s){
try{
var reg= /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@
s = s.match(reg)
// console.log(s)
return s[0]
}catch(e){}
},
/**
* 多条件筛选
* condition:{name:'掌声',age:'13'}
* data:要筛选的数组
* 注意:此方式返回的数据是模糊数据,即包含的都算,例如:
* arr = [{name:'sales'},{name:'sales_bj'}]
* parm = {name:'sales'}
* 筛选结束返回为[{name:'sales'},{name:'sales_bj'}]
*/
selectParams(condition, data){
return data.filter(item => {
return Object.keys(condition).every(key => {
return String(item[key]).toLowerCase().includes(
String(condition[key]).trim().toLowerCase()
)
})
})
},
/**
* 将obj对象参数拆分成get请求后的参数
*/
splitObj(obj){
obj = JSON.stringify(obj)
if(obj=='{}'){
return ''
}
obj = obj.replace(/\{|\}|\'|\"+/g,'');
let arr = obj.split(',');
for(var i = 0;i<arr.length;i++){
arr[i] = arr[i].replace(/\:/g,'=') + '&';
};
let str = arr.join('');
str = str.slice(0,str.length-1);
str = '?' + str;
return str;
},
/**
* 比较时间大小
* 参数:startTime:开始时间 eTime:结束时间,
* 返回值:1.小于,2.大于,3.等于
*/
dateComptime(startTime,eTime) {
var beginTime = startTime;
var endTime = eTime;
var beginTimes = beginTime.substring(0, 10).split('-');
var endTimes = endTime.substring(0, 10).split('-');
beginTime = beginTimes[1] + '/' + beginTimes[2] + '/' + beginTimes[0] + ' ' + beginTime.substring(10, 19);
endTime = endTimes[1] + '/' + endTimes[2] + '/' + endTimes[0] + ' ' + endTime.substring(10, 19);
var returnDate = (Date.parse(endTime) - Date.parse(beginTime)) / 3600 / 1000;
if (returnDate < 0) {
return "1";
} else if (returnDate > 0) {
return "2";
} else if (returnDate == 0) {
return "3";
} else {
return 'exception';
}
},
/**
* 18位身份证号验证
*/
isIdCard(idcard) {
if (idcard.length != 18) {
return false
}
var num = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var total = 0;
for (i = 0; i < 17; i++) {
total = total + Number(idcard.substring(i, i + 1)) * num[i];
}
var mod = total % 11;
var charx = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
if (idcard.substring(17, 18).toUpperCase() == charx[mod]) {
console.log("身份证号正确");
return true;
} else {
console.log("身份证号错误");
return false
}
},
/**
* 检验身份证
*/
checkIdCard( num ){
num = num.toUpperCase();
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
return false;
}
//校验位按照,X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
//alert('输入的身份证号里出生日期不对!');
return false;
}
else {
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
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。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, 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 false;
},
/**
* 从身份证中获取生日 格式 YYYY-MM-DD
*/
getBirthday( idCard ){
var birthday = "";
if (idCard != null && idCard != "") {
if (idCard.length == 15) {
birthday = "19" + idCard.substr(6, 6);
} else if (idCard.length == 18) {
birthday = idCard.substr(6, 8);
}
birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
}
return birthday;
},
/**
*js中对当前日期加n天的实现
*/
AddDays(dayIn) {
var date=new Date();
var myDate=new Date(date.getTime()+dayIn*24*60*60*1000);
var year=myDate.getFullYear();
var month=myDate.getMonth()+1;
var day=myDate.getDate();
let CurrentDate=year+"-";
if(month>=10)
{
CurrentDate=CurrentDate+month+"-";
}
else
{
CurrentDate=CurrentDate+"0"+month+"-";
}
if(day>=10)
{
CurrentDate=CurrentDate+day;
}
else
{
CurrentDate=CurrentDate+"0"+day;
}
return CurrentDate;
},
// 比较两个时间的差值(返回剩余多少天,多少小时,多少分钟)
calcDate(val1: any, val2: any) {
const nowDate = new Date()
let startTime = new Date(nowDate - 24 * 60 * 60 * 1000).getTime() // 开始时间(昨天)
const eDate = date
let endTime = new Date(eDate).getTime() // 结束时间
let usedTime = endTime - startTime // 相差的毫秒数
let days = Math.floor(usedTime / (24 * 3600 * 1000)) // 计算出天数
let leavel = usedTime % (24 * 3600 * 1000) // 计算天数后剩余的时间
let hours = Math.floor(leavel / (3600 * 1000)) // 计算剩余的小时数
let leavel2 = leavel % (3600 * 1000) // 计算剩余小时后剩余的毫秒数
let minutes = Math.floor(leavel2 / (60 * 1000)) // 计算剩余的分钟数
let leavel3 = leavel2 % (60*1000) // 计算分钟数后剩余的毫秒数
let seconds = Math.round(leavel3 / 1000) // 计算剩余的秒数
if (days <= 0 && hours <= 0 && minutes <= 0) {
return '已结束'
}
return days + '天' + hours + '时' + minutes + '分' + seconds + '秒'
},
// 判断一组数字是否连续
isContinuityNum(num) {
let arr = [];
if (num instanceof Array) {
arr = [...num]
} else {
arr = Array.from(num.toString())
}
var i = arr [0]
var isContination = true;
for(var k in arr){
if (arr[k] != i) {
isContination = false;
break;
}
i++;
}
return isContination
},
/**
* 借助momentjs返回今天,明天,后天
* 格式为 xx-xx 今天, xx-xx 明天 xx-xx 后天
*/
backdate(d) {
var td = new Date();
td = new Date(td.getFullYear(),td.getMonth(),td.getDate());
var od =new Date(d);
od = new Date(od.getFullYear(),od.getMonth(),od.getDate());
var xc = (od - td)/1000/60/60/24;
// if (xc <- 2) {
// return -xc+"天前";
// } else if (xc == -2) {
// return "前天";
// } else if (xc == -1) {
// return "昨天";
// }
console.log(xc)
if (xc == 0) {
return {
name: '今天',
date: moment(d).format('MM-DD')
}
} else if (xc == 1) {
return {
name: '明天',
date: moment(d).format('MM-DD')
}
} else if (xc == 2) {
return {
name: '后天',
date: moment(d).format('MM-DD')
}
} else {
// return xc+"天后";
return {
name: '',
date: moment(d).format('MM-DD')
}
}
},
/**
* 小数计算
* calc.plus 加法运算
* calc.subtract 减法运算
* calc.multiply 乘法运算
* calc.divide 除法运算
*/
const calcmoney = (() => {
let operation = (num1, num2, op) => {
let l1, l2, max;
try {
l1 = num1.toString().split(".")[1].length;
} catch (e) {
l1 = 0;
}
try {
l2 = num2.toString().split(".")[1].length;
} catch (e) {
l2 = 0;
}
switch (op) {
case "plus":
max = Math.pow(10, Math.max(l1, l2));
return (num1 * max + num2 * max) / max;
case "subtract":
max = Math.pow(10, Math.max(l1, l2));
return (num1 * max - num2 * max) / max;
case "multiply":
return (Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", ""))) / Math.pow(10, l1 + l2);
case "divide":
return operation(Number(num1.toString().replace(".", "")) / Number(num2.toString().replace(".", "")), Math.pow(10, l2 - l1), "multiply");
}
};
let plus = (a, b) => {
return operation(a, b, "plus");
};
let subtract = (a, b) => {
return operation(a, b, "subtract");
};
let multiply = (a, b) => {
return operation(a, b, "multiply");
};
let divide = (a, b) => {
return operation(a, b, "divide");
};
return { plus, subtract, multiply, divide };
})()
};